{"version":3,"mappings":"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,SACA,gBACA,gBACA,2BAEJoD,EAAWnD,kBAAoB,CAC3B,uBACA,gCACA,6BACA,YACA,eACA,qBACA,wBACA,aACA,sBACA,mBACA,iCACA,8BACA,kBACA,eACA,mBACA,kBACA,2BACA,wBACA,0BACA,gCACA,mCACA,0BACA,mBACA,yBACA,4BACA,UACA,qBAEJmD,EAAWlD,iBAAmB,CAC1B,WACA,eACA,kBACA,WACA,sBACA,iBACA,SAEJkD,EAAWjD,kBAAoB,CAC3B,WACA,YACA,mBACA,OACA,cACA,QACA,eACA,WACA,WACA,gBACA,uBACA,aACA,qBAEJiD,EAAWhD,mBAAqB,CAC5B,oBACA,2BACA,2BACA,gBACA,gBACA,OACA,cACA,WACA,kBACA,QACA,eACA,oBACA,0BACA,sCACA,eACA,kBACA,eACA,cACA,aACA,aACA,oBACA,mBACA,iBACA,cACA,cACA,WACA,gBACA,oBACA,wBACA,UACA,YACA,aACA,WACA,WACA,YACA,kBACA,iBACA,kBACA,sBAgCJgD,EAAW/C,eA/J2B,WACtC,QAASjkB,EAAK,GAAI7mI,EAAI,EAAGA,EAAInb,UAAU9H,OAAQijB,IAAK6mI,EAAKA,EAAG34I,OAAO04I,GAAO/hJ,UAAUmb,KACpF,OAAO6mI,EA6JqBC,CAAS+mB,EAAWlD,iBAAkBkD,EAAWnD,kBAAmBmD,EAAWpD,kBAAmBoD,EAAWjD,kBA9BzIiD,EAAW9C,oBAAsB,CAC7B,qBACA,cACA,cACA,oBACA,aACA,wBACA,iBACA,0BACA,cACA,aACA,SACA,kBACA,wBACA,8BACA,UACA,UACA,qBACA,kBACA,qBACA,gBACA,sBACA,oBACA,cACA,qBACA,mBACA,4BACA,uBACA,sBAEwL8C,EAAWhD,oBAGvMgD,EAAW7C,qBAAuB,CAC9B,SACA,WACA,eACA,yBACA,kBACA,WACA,8BAEG6C,EAvKqB,GCpB5BjnB,GAAkC,SAAU1iE,EAAGjkE,GAC/C,IAAI6J,EAAsB,mBAAX1F,QAAyB8/D,EAAE9/D,OAAOC,UACjD,IAAKyF,EAAG,OAAOo6D,EACf,IAAmBs5C,EAAYp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,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC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AAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,GAAG,GAAG,EAAE,GAAG,KAAK,IAAI,EAAE,GAAG,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,IAAI,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,E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pB7qpB,EAAMh6C,KAAK8hF,OAASlvE,GAAIyxrB,KAAKrksB,KAAK8hF,SAG7ClvE,GAAI+xrB,cAAgB,IAAIf,WAAW,CAAC,YAAY,WAAY,WAAa,YACzEhxrB,GAAIuyrB,iBAAmB,IAAIvB,WAAW,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IACpFhxrB,GAAI2xrB,SAAW,mBACf3xrB,GAAI6xrB,OAAS,GAEb7xrB,GAAIqxrB,cAAgB,IAAIrxrB,GACjBA,GApVc,GAuVzB,GADA0if,KAAc1if,EACe,qCAAzBA,EAAIoxrB,QAAQ,SACZ,MAAM,IAAI7yrB,MAAM,kDC/YpB,OACA,YACA,KACA,MAEA,YACA,MACA,MAEA,YACA,MACA,MAEA,aACA,MACA,MAEA,YACA,KACA,MAEA,YACA,MACA,MAEA,eACA,MACA,MAEA,YACA,MACA,MAEA,eACA,MACA,MAEA,eACA,MACA,MAEA,eACA,MACA,MAEA,eACA,MACA,MAEA,YACA,MACA,MAEA,YACA,MACA,MAEA,eACA,MACA,MAEA,eACA,MACA,MAEA,eACA,KACA,MAEA,eACA,MACA,KAEA,eACA,MACA,MAEA,eACA,MACA,MAEA,eACA,MACA,MAEA,eACA,MACA,MAEA,YACA,MACA,MAEA,gBACA,MACA,MAEA,eACA,MACA,KAEA,eACA,MACA,MAEA,eACA,MACA,MAEA,eACA,MACA,MAEA,YACA,MACA,MAEA,YACA,MACA,MAEA,kBACA,MACA,MAEA,kBACA,MACA,MAEA,kBACA,MACA,MAEA,mBACA,MACA,MAEA,kBACA,MACA,MAEA,kBACA,MACA,MAEA,qBACA,KACA,MAEA,kBACA,MACA,MAEA,qBACA,GACA,IAEA,qBACA,MACA,MAEA,qBACA,MACA,MAEA,qBACA,MACA,MAEA,kBACA,KACA,MAEA,kBACA,MACA,MAEA,qBACA,MACA,KAEA,qBACA,MACA,MAEA,qBACA,MACA,MAEA,qBACA,MACA,MAEA,qBACA,MACA,KAEA,qBACA,KACA,MAEA,qBACA,MACA,MAEA,qBACA,MACA,MAEA,kBACA,MACA,MAEA,sBACA,MACA,MAEA,qBACA,MACA,MAEA,qBACA,MACA,KAEA,qBACA,MACA,MAEA,qBACA,MACA,MAEA,kBACA,MACA,MAEA,kBACA,MACA,MAEA,kBACA,MACA,MAEA,kBACA,MACA,MAEA,qBACA,MACA,MAEA,qBACA,MACA,KAEA,qBACA,KACA,MAEA,qBACA,MACA,MAEA,kBACA,MACA,MAEA,mBACA,MACA,MAEA,kBACA,MACA,MAEA,kBACA,MACA,MAEA,kBACA,MACA,MAEA,qBACA,MACA,MAEA,kBACA,MACA,MAEA,kBACA,MACA,KAEA,mBACA,MACA,MAEA,kBACA,MACA,MAEA,kBACA,MACA,MAEA,kBACA,MACA,KAEA,kBACA,MACA,MAEA,kBACA,KACA,MAEA,qBACA,MACA,KAEA,kBACA,KACA,MAEA,kBACA,KACA,MAEA,uBACA,MACA,MAEA,kBACA,MACA,MAEA,qBACA,MACA,MAEA,kBACA,MACA,KAEA,qBACA,MACA,MAEA,kBACA,KACA,MAEA,kBACA,MACA,MAEA,mBACA,MACA,MAEA,kBACA,MACA,MAEA,kBACA,MACA,MAEA,kBACA,MACA,MAEA,qBACA,MACA,MAEA,qBACA,MACA,MAEA,kBACA,MACA,MAEA,kBACA,MACA,MAEA,kBACA,KACA,MAEA,kBACA,MACA,MAEA,YACA,MACA,MAEA,YACA,MACA,MAEA,eACA,MACA,MAEA,eACA,MACA,MAEA,eACA,MACA,MAEA,eACA,MACA,MAEA,YACA,MACA,MAEA,aACA,MACA,MAEA,YACA,KACA,MAEA,YACA,MACA,MAEA,YACA,MACA,MAEA,eACA,MACA,MAEA,YACA,KACA,MAEA,YACA,MACA,MAEA,aACA,MACA,MAEA,YACA,MACA,MAEA,YACA,MACA,MAEA,YACA,MACA,KAEA,YACA,MACA,MAEA,YACA,MACA,MAEA,eACA,MACA,MAEA,YACA,KACA,MAEA,YACA,MACA,MAEA,iBACA,MACA,MAEA,YACA,MACA,MAEA,eACA,MACA,MAEA,YACA,MACA,MAEA,eACA,MACA,MAEA,YACA,MACA,MAEA,YACA,MACA,MAEA,aACA,MACA,MAEA,YACA,MACA,KAEA,YACA,MACA,MAEA,YACA,MACA,MAEA,eACA,MACA,MAEA,eACA,MACA,KAEA,YACA,MACA,MAEA,YACA,MACA,MAEA,YACA,MACA,MAEA,YACA,MACA,OAGA,eACA,aACA,yCACA,8CACA,gCACAiO,IAIA,kBACA,iCACA,cAGAqB,mBAAwC,uBACxCA,YACAoviB,uCClkBA,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,eACA,WACA,YAEA,cACA,cACA,8CACA,gCACA7sf,EAEA,YAEAviD,mBACA,uBAEAA,aACAoviB,cACApviB,qCn7BnSAoviB,0DAqEO,qBAEP,yCACA,eAAoC,IAAM9vB,sBAA+BriC,IAAYlvc,OACrF,gBAAmC,IAAMuxe,uBAAmCriC,IAAYlvc,OACxF,gBAAgCikc,oBAJhC,cAA4B,0CAA+Djkc,OAI3DuvY,sBAChCgiG,oCAmGO,cACP,kDAGO,kBACP,qFACA,+BACA,YAAiBvxe,oEAAuF,aAAcuvY,EACtH,eAAuBvla,4BAAgC,kCAAqC+2B,qCAC5F,kBAA4B,KAC5B,gBAAuB81oB,6EADW7yI,mBAAiBpvc,GAAYs6Y,eAE/D,gBAA8BppV,aAC9B,gBAA6BA,cAC7B,mBAA4B+whB,+CASrB,cACP,qFACA,gCACA,sBAhFO,eACP,gEACA,sBACA,uCACAjxrB,gBACA,mCACA,CAAqB7D,4BAGrB,mFAuEAgqB,SAA2G/B,uEAAuF,aAAc5jB,GAChN,eAAuBA,uBAA8B,mCACrD,qBAA6CpG,sCAAsC+gD,G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,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,OAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV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","names":["TokenValidityState","AuthService","sessionService","httpClient","A","this","refreshingToken","token","username","password","clearUserData","doClassicLogin","grant_type","code","returnUrl","doAuth365Login","user","no","expired","includes","checkTokenValidity","authData","accessToken","refreshing","Date","getTime","expires","requiresRefresh","valid","auth365Config","auth365Refresh","Login","refresh_token","refreshToken","features","length","undefined","split","find","feature","Y","hasSingleFeature","get","API_ROOT","jsonString","Object","keys","map","key","encodeURIComponent","join","body","bodyUrlEnc","jsonToUrlEncoded","post","headers","pipe","mergeMap","dto","loginResponse","getLoggedInUserDetails","catchError","error","throwError","T","auth365","getLoggedInUser","userDto","isAuth365","_a","U","currentFeatures","featuresStringList","of","indexOf","login","I","i0","factory","FeatAuthGuard","router","authService","settingsService","route","state","isLoggedIn","data","expectedFeature","hasFeature","navigate","getValue","queryParams","url","V","access_token","loggedIn","expires_in","target","window","Cypress","agr","constructor","name","ContextLine","contextLineDto","objectType","object_type","actionJson","parseActionJson","action_json","actionType","action_type","aggregation","available","caption","TranslationsService","config","parseConfig","description","format","groupCaption","group_caption","groupName","group_name","lookup","lookupColumn","lookup_column","lowCardinality","low_cardinality","objectDependency","object_dependency","periodGroup","period_group","readOnly","read_only","refreshProfile","refresh_profile","selectedByDefault","selected_by_default","seriesAffected","series_affected","seriesJsFormulaValue","series_js_formula_value","seriesType","series_type","summary","type","migrateDisplayDiv","JSON","parse","handleIrregularWhiteSpaces","location","console","warn","toString","replace","default_display_div","set","S","Context","contextLines","arguments","sortBy","filter","contextLine","line","getAllColumns","WorkspaceColumn","sort","a","b","getColumns","getSeries","WorkspaceSerie","getActions","WorkspaceAction","columnFilters","getFilters","flatMap","filterContext","filters","WorkspaceBooleanFilter","WorkspacePeriodFilter","push","WorkspaceDateFilter","WorkspaceNumberFilter","WorkspaceLookupFilter","WorkspaceAdvancedFilter","columnContext","WorkspaceDrilldown","ContextService","indexDbCacheService","query","tableSetId","getContextLines","allActions","workspaceId","params","getContextLineDtos","getContextLinesFromApi","switchMap","dtos","stringify","deWorkspaceId","typeId","N","DeQueryService","deQuery","label","fixMaxLimitColumns","type_id","apiRequest","execQuery","getFromCache","isEqual","values","apiObservable","getGridColumnMetaDataDtos","GridColumnMetaData","action","args","testDelay","cancellationTokenNone","delay","series","cloneDeep","pivot","paging","limit","NgxIndexedDB","dbName","version","utils","Utils","dbWrapper","DbWrapper","upgradeCallback","Promise","resolve","reject","dbVersion","request","indexedDB","open","onsuccess","db","result","onerror","e","errorCode","onupgradeneeded","storeName","validateBeforeTransaction","createTransaction","optionsGenerator","DBMode","readonly","objectStore","event","keyRange","indexDetails","D","index","indexName","openCursor","order","evt","cursor","value","continue","readwrite","add","count","put","delete","M","close","deleteDBRequest","deleteDatabase","onblocked","Error","cursorCallback","clear","mozIndexedDB","webkitIndexedDB","msIndexedDB","objectStoreNames","contains","validateStoreName","options","trans","transaction","dbMode","oncomplete","complete","onabort","abort","IndexDbCacheService","Map","openPromise","openDatabase","oldVersion","createObjectStore","then","hash","Md5","getThroughCacheStore","stringifyDeQueryAvailabilityParams","hashString","isNaN","concat","catch","subscribe","stripQueryFilterValues","queryType","columns","column","operator","store","notFoundObservable","activeRequests","has","asObservable","subject","Subject","from","getCachedItemValue","getCacheItem","itemValue","next","B","storeCacheItem","finally","cacheItemPromise","cacheItem","isValid","obj","$","cachedAt","cached","today","AgrUtils","getDb","getByKey","existingValue","update","f","aggrAs","aggr_as","colIdValue","col_id_value","columnType","column_type","isColIdRange","is_col_id_range","num","relIdValue","rel_id_value","periodType","y","FormatService","storeService","availableLocales","Set","initialLocales","defaultLocales","id","int","integer","number","decimal","float","currency","percent","percentage","date","datetime","time","duration","durationHuman","loadPersistent","initialLocaleRegistration","getNumberLocale","getLocale","getLocaleNumberSymbol","numberLocale","NumberSymbol","formatString","getFormatType","formatType","formatNumber","Number","getNumberDigitsInfo","formatPercent","getPercentageDigitsInfo","toFixed","formatCurrency","z","isValidDate","formatDate","parseDate","getDateFormat","String","getDateTimeFormat","getTimeFormat","formatDuration","getDurationFormat","formatHumanizedDuration","localeCode","locale","isAvailableLocale","registerLocaleData","some","isRegisteredLocale","registeredLocales","savePersistent","Q","module","default","formatStringToType","getCurrencyLocale","currencySymbol","getCurrencySymbol","currencyCode","getCurrencyCode","digitsInfo","getCurrencyDigitsInfo","currencyLocale","toUpperCase","getCurrency","fractionDigits","moment","input","isDateOnlyString","substr","isExpectedInput","toDate","indexOfColon","substring","getDateFormatString","localeDateFormat","localeDateTimeFormat","localeTimeFormat","localeDurationFormat","minFractionDigits","Math","abs","maxFractionDigits","getGlobalMaxNumberFractionDigits","maxNumberFractionDigits","getGlobalMaxPercentageFractionDigits","maxPercentageFractionDigits","asMilliseconds","dateLocale","humanize","isAvailable","persistent","load","persistentKey","j","language","region","regionString","GlobalEventsService","BehaviorSubject","EventEmitter","debounce","itemId","nt","triggerRefreshItemCard","leading","trailing","orderId","triggerUpdateItemCard","triggerRefreshItemCardDetailsColumn","self","hasBroadcastChannel","itemBroadcastChannel","BroadcastChannel","onmessage","itemMessageReceived","bind","showNavBarEvent$","redrawNavBarEvent$","emit","postMessage","refresh","message","isBroadcast","refreshItemCardEvent$","updateItemCardEvent$","refreshOtherItemCards","refreshOtherItemCardsDetailsColumns","Feature","featureDto","featureRef","enabled","system","workspaceFeature","workspace_feature","Role","createdAt","TimezoneService","updatedAt","toDto","R","AccessGroup","accessGroupName","refTableId","accessType","isInclusive","C","User","email","created_at","roles","Array","isArray","role","accessGroups","deleted","group","currentPassword","passwordConfirmation","SessionService","globalEventsService","tt","validateAuthData","remove","baseConfig","showNavBar","userAndAppConfigMismatch","err","alert","sessionKeys","notDeletedKeys","tempStore","forEach","localStorage","isValidModel","Setting","setting","settingKey","dataType","parseValue","settingValue","defaultValue","groupKey","settingDto","stringifyValue","SettingsService","settings","searchString","toLowerCase","getSetting","settingDTO","groupNames","uniqBy","getFiltered","cellCount","lowerLimit","upperLimit","isNil","MainNavigation","SettingsNavigation","defaultModule","homepage","extendStatics","__extends","setPrototypeOf","__proto__","d","p","hasOwnProperty","prototype","create","__","HttpError","_super","errorMessage","statusCode","_this","trueProto","call","TimeoutError","LogLevel","Trace","Debug","Information","Warning","Critical","None","__assign","assign","t","s","i","n","HttpResponse","statusText","content","HttpClient","send","method","DefaultHttpClient","logger","xhr","XMLHttpRequest","withCredentials","setRequestHeader","header","responseType","abortSignal","timeout","onload","status","response","responseText","log","ontimeout","TextMessageFormat","write","output","RecordSeparator","messages","pop","RecordSeparatorCode","fromCharCode","NullLogger","_logLevel","_message","instance","Arg","isRequired","val","isIn","includeContent","isArrayBuffer","byteLength","view","Uint8Array","str","formatArrayBuffer","transportName","accessTokenFactory","logMessageContent","thisArg","_arguments","P","generator","step","throw","done","fulfilled","rejected","apply","__awaiter","g","_","sent","trys","ops","verb","return","Symbol","iterator","v","op","TypeError","__generator","_b","Authorization","getDataDetail","cancelCallback","observers","item","_i","observer","SubjectSubscription","dispose","splice","ConsoleLogger","minimumLogLevel","logLevel","info","ArrayBuffer","HandshakeProtocol","writeHandshakeRequest","handshakeRequest","parseHandshakeResponse","messageData","remainingData","binaryData","separatorIndex","responseLength","slice","buffer","textData","responseMessage","MessageType","Invocation","StreamItem","Completion","StreamInvocation","CancelInvocation","Ping","Close","HubConnection","connection","protocol","serverTimeoutInMilliseconds","handshakeProtocol","onreceive","processIncomingData","onclose","connectionClosed","callbacks","methods","closedCallbacks","start","receivedHandshakeResponse","transferFormat","cleanupTimeout","configureTimeout","stop","stream","methodName","invocationDescriptor","createStreamInvocation","cancelInvocation","createCancelInvocation","invocationId","cancelMessage","writeMessage","invocationEvent","Ne","createInvocation","invoke","completionMessage","on","newMethod","off","handlers","removeIdx","callback","processHandshakeResponse","messages_1","parseMessages","invokeClientMethod","inherentKeepAlive","timeoutHandle","setTimeout","serverTimeout","invocationMessage","m","c","clearTimeout","nonblocking","HttpTransportType","WebSockets","ServerSentEvents","LongPolling","TransferFormat","Text","Binary","AbortController","isAborted","defineProperty","enumerable","configurable","LongPollingTransport","shutdownTimeout","pollAbort","aborted","connect","pollOptions","closeError","pollUrl","signal","updateHeaderToken","now","running","poll","e_1","stopped","shutdownTimer","sendMessage","deleteOptions","ServerSentEventsTransport","EventSource","opened","eventSource","onopen","WebSocketTransport","WebSocket","webSocket","binaryType","_event","wasClean","reason","readyState","OPEN","HttpConnection","createLogger","baseUrl","resolveUrl","connectionState","startPromise","startInternal","transport","stopError","negotiateResponse","redirects","_loop_1","this_1","state_1","e_2","skipNegotiation","constructTransport","accessToken_1","getNegotiationResponse","createTransport","stopConnection","changeState","negotiateUrl","e_3","resolveNegotiateUrl","createConnectUrl","connectionId","requestedTransport","requestedTransferFormat","connectUrl","transports_1","endpoint","ex_1","isITransport","availableTransports","resolveTransport","transferFormats","actualTransport","transportMatches","to","lastIndexOf","document","aTag","createElement","href","JsonHubProtocol","hubMessages","parsedMessage","isInvocationMessage","isStreamItemMessage","isCompletionMessage","assertNotEmptyString","HubConnectionBuilder","configureLogging","logging","isLogger","withUrl","transportTypeOrOptions","httpConnectionOptions","withHubProtocol","build","SignalRStatus","SignalRService","ngZone","runOutsideAngular","Ve","statusSubject","signalR","onSignalRclose","startSignalr","register","lost","retryConnection","retryIntervalMs","ex","xe","ProxyStorageService","defaultTranscoder","decoder","encoder","transcoder","BaseStorageService","getItem","decode","setItem","encode","JsonStorageTranscoder","StringStorageTranscoder","BooleanStorageTranscoder","NumberStorageTranscoder","parsedNumber","isFinite","DateIsoStorageTranscoder","toISOString","timestamp","DateEpochStorageTranscoder","valueOf","parseInt","StorageTranscoders","STRING","BOOLEAN","NUMBER","DATE_ISO_STRING","DATE_EPOCH_TIME","InMemoryStorageService","storage","WebStorageService","ot","removeItem","testItemKey","testItemValue","retrievedItemValue","InjectionToken","providedIn","sessionStorage","isStorageAvailable","isSessionStorageAvailable","LOCAL_STORAGE","isLocalStorageAvailable","StoreService","storageService","getKey","object","overwrite","stored","hasSameProperties","model","storedModel","aKeys","bKeys","sessionUser","formatService","timezone","serverTimezone","serverOffset","utcOffset","getTimezoneOffset","millisecondsDate","ft","dateToString","toTimeString","translateService","getLanguage","forkJoin","setFallbackTranslations","setTranslations","lang","defaultLanguage","isLocal","cloudTranslations","translations","setTranslation","toTranslationsObj","activateLanguage","languages","finalize","x","setDefaultLang","use","storeLanguage","reduce","acc","translation","instant","translateAndReplacePlaceholder","keySplit","keyBase","param","AgGridBitRendererComponent","setIsTrue","isUndefined","isTrue","bgClass","selectors","AgGridClosedRendererComponent","setIsClosed","isClosed","AgGridOptionsService","agGridService","toasterService","accentedSort","autoGroupColumnDef","comparator","groupComparator","enableRangeSelection","groupSelectsFiltered","pivotMode","suppressRowDeselection","rowGroupPanelShow","suppressAggFuncInHeader","sideBar","toolPanels","defaultToolPanel","statusBar","statusPanels","statusPanel","align","suppressCopyRowsToClipboard","excelStyles","popupParent","querySelector","postProcessPopup","menuWidth","ePopup","offsetWidth","offsetLeft","innerWidth","style","left","components","gridTooltipComponent","AgGridTooltipComponent","onDisplayedColumnsChanged","autoResizeColumnHeaders","api","onColumnResized","onRowDataChanged","defaultColDef","enableRowGroup","floatingFilter","enableValue","resizable","sortable","tooltipComponent","cellClassRules","colDef","aligning","getColumnType","editable","columnApi","getColumn","node","locked","columnTypes","bit","filterParams","valueGetter","field","cellRenderer","closed","allowedAggFuncs","checkbox","aggFunc","valueParser","parseNumeric","valueFormatter","formatNumeric","inRangeInclusive","buttons","filterOptions","formatTime","string","translateString","overlayLoadingTemplate","overlayNoRowsTemplate","localeText","page","more","last","first","previous","loadingOoo","selectAll","searchOoo","blanks","filterOoo","applyFilter","notEqual","blank","notBlank","equals","lessThan","greaterThan","lessThanOrEqual","greaterThanOrEqual","inRange","inRangeStart","inRangeEnd","notContains","startsWith","endsWith","rowGroupColumns","rowGroupColumnsEmptyMessage","valueColumns","groups","pivots","valueColumnsEmptyMessage","pivotColumnsEmptyMessage","toolPanelButton","noRowsToShow","pinColumn","valueAggregation","autosizeThiscolumn","autosizeAllColumns","groupBy","ungroupBy","resetColumns","expandAll","collapseAll","toolPanel","export","csvExport","excelExport","pinLeft","pinRight","noPin","avg","sum","min","max","distinct","none","average","rowCount","copy","copyWithHeaders","ctrlC","paste","ctrlV","processCellForClipboard","getColDef","rowSelection","rowHeight","enableCellChangeFlash","getContextMenuItems","selectAllFiltered","deselectAllFiltered","subMenu","suppressRowClickSelection","groupSelectsChildren","rowClassRules","level","icon","merge","commonOptions","listOptions","listMultiSelectOptions","dataOptions","getDataOptions","simpleOptions","columnFormat","types","isDate","sortDate","sortString","localeCompare","matchesDistinctAggregation","formatVal","newValue","match","exec","AgGridStateService","grid","setInputFocus","loadAlignModel","loadColumnState","loadFilterModel","loadFocusedCell","alignModel","getAlignModelKey","setAlignModel","columnStates","getColumnKey","fixRowSelectColumn","applyColumnState","applyOrder","filterModel","getFilterModelKey","setFilterModel","rowIndex","X","getFocusedCellRowIndexKey","colKey","getFocusedCellColKeyKey","ensureIndexVisible","gridOptions","setFocusedCell","getDisplayedRowAtIndex","setSelected","addEventListener","saveFocusedCell","saveGridState","saveFilterModel","getAlignModel","columnGroupState","getColumnGroupState","columnState","getColumnState","getFilterModel","J","colId","gridApi","dispatchEvent","focusedCell","getFocusedCell","getId","visibleColumns","getAllDisplayedColumns","getColId","rowSelectState","hide","unshift","AgGridService","agGridStateService","gridId","getModel","gridOptionsWrapper","environment","eGridDiv","selector","setHeaderHeight","headerCells","querySelectorAll","minHeight","cell","scrollHeight","addAggFunc","groupSize","getMainMenuItems","menuItems","defaultItems","alignColumn","clearFilters","autoSizeThisColumnSkipHeader","autoSizeColumn","autoSizeAllColumnsSkipHeader","autoSizeAllColumns","sizeColumnsToFit","editing","shiftKey","navigateDown","colDefs","headerName","width","minWidth","maxWidth","suppressMenu","pinned","headerComponentFramework","AgGridCheckboxHeaderComponent","checkboxSelection","setColumnDefs","isActive","setFloatingFiltersHeight","fileName","customParams","exportParams","processCellCallback","getSerieName","getExcelDateValue","isExceptionGroupColumn","cellRendererParams","exceptionDefsMap","isGrouped","getOrderExceptionsValue","exportDataAsExcel","exportDataAsCsv","serie","context","gridData","gridQuery","seriesByName","exceptionIds","currentCell","finalRowIndex","getDisplayedRowCount","nextRowIndex","clearRangeSelection","saveAlignModel","redrawRows","agIconCheckboxClass","addSelectionChangedEvent","getSelectedRows","getRowCount","selectedRowsCount","forEachNodeAfterFilter","hasChildren","ctx","AgGridLinkRendererComponent","pathRoot","urlFields","path","allLeafChildren","isHeader","DatepickerI18n","weekday","getLocaleDayNames","FormStyle","TranslationWidth","month","getLocaleMonthNames","getMonthShortName","year","day","toDateString","NgbDatepickerI18n","AgrRendererService","platformId","eleRef","isPlatformBrowser","element","nativeElement","PLATFORM_ID","AgrAutofocusDirective","el","agrRendererService","agrAutoFocus","focus","invokeElementMethod","AgrResizableDirective","renderer2","elementRef","resizeSubscription","resizing","agrResizable","onHorizontalResizeEnd","onVerticalResizeEnd","validateResize","that","validateHorizontal","validateVertical","unsubscribe","ref","rectangle","height","isWithinBounds","maxHeight","innerHeight","renderer","setStyle","elm","Event","ResizableDirective","FeaturePipe","pure","FilterPipe","items","search","FormatPipe","FromNowPipe","fromNow","TranslatePipe","SharedModule","ResizeHandleDirective","imports","AgGridModule","CommonModule","FormsModule","HttpClientModule","NgbModule","NgJsonEditorModule","NgSelectModule","ReactiveFormsModule","ResizableModule","RouterModule","TranslateModule","SyncButtonComponent","ctx_r6","ctx_r10","autosync","badge","border","primary","warning","disabled","displayCellCount","pers","hasRowCount","hasCellCount","hasCellAndRowCount","ToolbarBtnComponent","calendar","chart","confirm","edit","excel","history","image","itemCard","newWindow","recalculate","redo","save","sync","unconfirm","undo","initializeProperties","btnTypes","btnType","translationKey","postfix","btnId","btnClass","entries","deleteEmpty","likelyDecimalSeparator","rawValue","extractRawNumber","nonDigits","getFirstAndLastNonDigitIdx","firstIdx","lastIdx","convertToNumber","second","getFullYear","getMonth","getDate","idxOfDecimalPoint","numString","place","idx","charCodeAt","splitRawValue","findIndex","reverse","splitValue","idxOfFirst","idxOfLast","Expression","exprOrString","jsExpression","parseTree","parseExpression","identifiers","uniq","flatten","extractIdsFromNode","pc","oldVal","newVal","getDateInt","null","retVal","expr","replacementFun","elements","replaceIdentifiers","right","argument","callee","test","consequent","alternate","raw","computed","property","prefix","subNode","ctx_r7","ctx_r8","$event","EditableDateColumnsComponent","itemCardDetailsService","formGroup","setValue","getMinDate","getMaxDate","overwriteValue","reset","markAsDirty","bulkUpdate","dirty","markAsPristine","useGlobal","updateValues","changed","minDate","dateConditions","datePickerToday","setDate","datePickerPast","maxDate","datePickerFuture","_r3","EditableLookupColumnsComponent","indexOfCurrent","lookupOptions","option","getValueUsed","hasOverwriteValue","getBitId","globalSettingValue","lookupId","isNumber","EditableNumberColumnsComponent","markAsTouched","validate","blur","k","EditableStringColumnsComponent","DetailsColumn","globalValue","itemDetails","isEditable","bulkEnabled","lookupConfig","ItemCardDetailsService","contextService","deQueryService","getContext","allColumns","allDetailColumns","details","detailsData","getLookupOptions","getDetails","isBulkUpdateEnabled","undeliveredColumns","undeliveredOrders","undeliveredOrder","orderRouteColumns","orderRoutes","orderRoute","expStockColumn","expStocks","expStock","isLookupColumn","fixedOptions","getLookupOptionsByQuery","idColumn","nameColumn","updateColumn","execAction","oldValue","targetColumn","targetIdColumn","targetColumnChanged","ItemOrderRoute","orderRouteDTO","isPrimary","primaryRoute","minOrder","costPrice","leadTimeDays","quantityPerUnit","orderMultiple","quantityPerLayer","qtyLayer","quantityPerPallet","qtyPallet","EventModel","eventModelDto","ItemDetails","articleNo","itemGroup","abcGrouping","imageId","size","color","weight","volume","salePrice","additionalLeadTime","getAdditionalLeadTime","additionalLeadTimeOverwrite","itemDetail","additionalLeadTimeDaysOverwrite","orderFrequency","getOrderFrequency","orderFrequencyOverwrite","orderFrequencyDaysOverwrite","stock","totalStock","undelivered","totalUndelivered","wastageDays","minStock","getMinStock","minStockOverwrite","maxStock","getMaxStock","maxStockOverwrite","confidenceFactor","getConfidenceFactor","confidenceFactorOverwrite","skipForecastToDate","getSkipForecastToDate","skipForecastToDateOverwrite","skipForcToDateOverwrite","forecastFromDate","getForecastFromDate","forecastFromDateOverwrite","forecastToDate","getForecastToDate","forecastToDateOverwrite","eventModel","getEventModel","eventModels","eventModelOptions","primaryOrderRoute","itemOrderRoutes","selectedOrderRouteIndex","selectedOrderRoute","itemDto","selectedEventModel","et","eventModelOverwrite","setMinStock","setMaxStock","setConfidenceFactor","overwriteConfidenceFactor","newConfidenceFactor","overwriteSkipForcToDate","newSkipForcToDate","overwriteForecastFromDate","newForecastFromDate","overwriteForecastToDate","newForecastToDate","overwriteOrderFrequency","newOrderFrequency","overwriteAdditionalLeadTime","newAdditionalLeadTime","overwriteMinStock","newMinStock","overwriteMaxStock","newMaxStock","historyLength","forecastLength","additionalLeadTimeDays","fallback","additionalLeadTimeDaysDefault","orderFrequencyDays","orderFrequencyDaysDefault","minStockDefault","maxStockDefault","confidenceFactorDefault","skipForcToDate","skipForcToDateDefault","forecastFromDateDefault","forecastToDateDefault","ln","ItemLabel","Location","locationNo","locationType","ItemSimple","itemNo","locationId","itemDTO","camelCase","ItemUndeliveredOrder","purchaseReference","referenceNo","quantity","units","estimatedDeliveryDate","expiryDate","expireDate","erpUnits","connectedUndeliveredUnits","ItemCardService","http","getItemCardDto","itemCardDTO","itemSimpleDTO","orderDTOs","itemOrderRouteDTO","labelDTOs","ee","chartElementId","serieDataUpdate","chartUrl","EMPTY","toUpdateForecastSettingsDto","chartParams","chartOptions","chartElementTypes","elementType","highchartsSeriesOptions","chartData","chart_date","Tt","ChartDataParams","forecast","ItemCardState","visible","week","showChart","showGrid","showDetails","showTitleItemNo","imageSidebar","sidebar","charts","activeChartIndex","activeCard","activeCardIndex","periodTypes","cards","hideAllTabs","tab","updateActiveCard","interval","jumpInterval","remainder","reassignChart","showDeDetails","LoadingDotsComponent","agrDefaultChartOptions","animation","zoomType","spacingBottom","panning","panKey","fontFamily","credits","exporting","tooltip","crosshairs","shared","valueDecimals","plotOptions","groupPadding","pointWidth","borderWidth","opacity","area","marker","states","hover","turboThreshold","inactive","yAxis","title","text","tickPixelInterval","xAxis","labels","rotation","overflow","legend","layout","verticalAlign","emptyChartOptions","Highcharts","noData","editableColumnSeriesOptions","dragDrop","draggableY","dragMinY","dragPrecisionY","minPointLength","shadow","stickyTracking","distance","zIndex","resetColumnSeriesOptions","ItemCardChartService","itemCardService","getItemChart","pe","getChartDefaultOptions","getChartSeriesOptions","removeEmptySeries","fixForecastDataPosition","fixSafetyStockForOrderPeriod","setMinMaxAxisValues","elementTypes","updateSerieData","setChartPeriodTickInterval","setForecastBackground","chart_element_id","point","isCurrentWeek","getStartOfWeekForDate","currentWeekFirstDate","setHours","nextWeekFirstDate","dateOffset","getDay","startOfWeek","W","period","gridLineWidth","tickInterval","minTickInterval","weekFormat","hideWeekNumber","dateTimeLabelFormats","main","millisecond","endDate","UTC","plotBands","safetyStockSeries","safetyStockValue","q","ItemDataPoint","chartDataDTO","changeComment","saleComment","chartItemSelect","getAdjustedSale","utcDataInt","chartElementType","isAggregatedOverPeriod","aggregatedOverPeriod","setIsToday","undefinedSale","sale","originalSale","isToday","NoDataToDisplayComponent","ctx_r4","draggablePoints","ChartState","chartState","serieVisibility","ItemCardChartComponent","itemCardChartService","applicationRef","globalEventService","legendEnabled","showNegative","isLoadingChart","loadState","refreshItemSubscription","refreshItemEvent","dt","updateChart","refreshDetailsColumnSubscription","refreshDetailsColumnEvent","changes","editMode","startEditingChart","stopEditingChart","saveState","applyNegativeValuesVisibility","stateDto","stateKey","createChart","isEmpty","tick","applyChartSeriesVisibility","reflow","addChartEventCallbacks","chartContainerEl","onChartInstance","events","onLegendItemToggle","show","allItems","getEditableSeries","setChartEditMode","addEditableSeriesEventCallbacks","resetChartEditMode","enableMouseTracking","serieId","zoomOut","click","determineClick","drop","onPointDrop","doubleClicker","resetDoubleClick","clickedOnce","timer","onPointDoubleClick","St","timeBetweenClicks","resetSale","setVisible","getOriginalSaleAtPoint","saleUpdateDto","refreshChartSeries","dataUpdateDTO","originalSaleSeries","getItemChartSeries","currentSerie","setData","ItemCardGridService","agGridOptionsService","dayOfWeek","getGridData","itemCardGridData","addStockValues","itemDataPoints","aggregateSummedSeriesForPeriod","itemDataPoint","weekFilter","monthFilter","itemData","toSerieDataUpdateDto","edited","isEdited","getColumnDefs","itemsMap","chartLabel","headerTooltip","adjustedSale","lastStock","stockHistory","summedSeries","aggregationCalcFunc","periodSum","periodItem","currItem","isFirstOfMonth","isMonthAhead","isNextPeriod","ItemCardGridComponent","itemCardGridService","AllModules","initializeGrid","updateGrid","currentValue","previousValue","emptyGrid","showGridLoadingOverlay","setFloatingFilter","agGrid","addEnterBtnEvents","loadGridState","persKey","monitorChanges","cellEvent","updateItemDataPoint","rowNode","getRowNode","getGridDataByPeriod","updateForecast","refreshCells","getGridOptions","addCustomColumnMenu","setColumnVisibility","rowData","hideOverlay","setRowData","forEachNode","showLoadingOverlay","columnsWithValues","curr","setColumnVisible","ItemCardDetailsPers","sidebarHiddenColumns","sidebarHiddenGroups","hideExpStock","isHidden","showColumn","showGroup","hideColumn","groupColumns","hideGroup","showColumns","hideColumns","NonEditableColumnsComponent","ctx_r5","ctx_r9","ctx_r30","ctx_r35","ctx_r39","ctx_r44","ctx_r51","ctx_r53","ctx_r55","ctx_r70","ctx_r72","ctx_r77","ctx_r81","ctx_r92","ctx_r96","ctx_r100","ctx_r104","ctx_r108","ctx_r112","ctx_r123","ctx_r127","ctx_r131","ctx_r135","ctx_r139","ctx_r145","ctx_r156","ctx_r160","ctx_r164","ctx_r168","ctx_r172","ItemCardDetailsComponent","FormGroup","loadPers","getItemDetails","columnHasChanged","form","addControl","FormControl","initUndeliveredOrderLogic","isLoadingDetails","refreshComponent","columnName","contextColumn","updateColumns","columnChangedEvent","undeliveredOrderColumns","findColumn","orderLogicUndeliveredDate","sidebarEditMode","closeSidebar","orderRouteIndex","orderRoutesColumns","isSidebar","toggleColumn","allGroupColumns","getGroupColumns","every","toggleGroup","savePers","itemCardDetailColumns","setFormValues","getOrderRoutes","orderRouteDetails","getExpiringStock","expStockDetails","expiringStockColumns","getUndeliveredOrders","undeliveredOrdersDetails","undeliveredOrdersColumns","newColumn","oldColumn","orderLogicUndeliveredDays","provide","NgbDateAdapter","useClass","NgbDateNativeAdapter","ctx_r15","ctx_r25","ctx_r27","ctx_r28","ctx_r29","ctx_r31","ctx_r33","ctx_r37","ctx_r45","ctx_r49","ctx_r50","ItemCardComponent","activatedRoute","setupPopout","checkHasImage","subscriptions","updateItemCard","refreshItem","subscription","reflowChart","toggleItemTitle","isLocked","refreshDetailsColumn","toggle","nextCard","nextChart","stepIncrementHistory","stepIncrementForecast","updateForecastLength","updateHistoryLength","isRecalculating","recalculatePurchasePlan","refreshItemCard","closeItemCard","screenTop","screenLeft","origin","isPage","imageUrl","getSimpleItem","setImageUrl","getItemLabelList","itemLabels","loadedState","snapshot","routeConfig","hideNavBar","updateMessage","hasImage","imageLookupProperty","lookupProperty","getPropertyValue","imagePrefix","imagePostfix","windowWidth","imageContainer","imageMaxHeight","offsetHeight","ItemCardModule","HighchartsChartModule","ExecutionListService","signalRService","cypressExpose","ExecutionNotification","actionExecutionDTO","actions","clearAction","progressPercent","success","round","durationMinutes","getUrl","loginName","userName","userId","queueId","referenceId","w","navDto","modules","isValidNav","nav","ModularNav","defaultAppNav","validateModules","moduleName","mm","addNav","mod","navigation","AgrNav","defaultSettingsNav","navigationAll","navigationDropdown","submenu","addMoreDropdown","moreDropdown","submenuAll","navItem","moreDropdownNav","divider","hasCaptionOrIcon","UsersModalService","formValue","newPassword","confirmPassword","mismatch","control","currentUser","userType","apiPath","exists","ConfigCheckboxes","trueValue","falseValue","disableIfNull","ConfigCond","row","cellValue","getCellValue","idColumnName","list","ui","selectedSubtypeId","fixed","class","filterType","trim","WorkspaceFilter","queryFilter","filterTypes","emptyPeriodDict","DAY","WEEK","MONTH","YEAR","isRelative","setupPeriodValues","nextPeriodIndex","nextTypeIndex","lastKnownDateTo","dateTo","lastKnownDateToRelative","dateToRelative","lastKnownDateFrom","dateFrom","lastKnownDateFromRelative","dateFromRelative","updateMinMaxDate","syncFixed","syncRelative","updateMinMaxNgbDate","updateDateFromPeriodValues","updateDateToPeriodValues","ngSelectDateFrom","periodValues","ngSelectDateTo","infiniteRelativeValues","getRelativeValues","datePeriod","dateType","dateString","updateDateFrom","updateDateTo","ceil","zeroIndex","floor","dateFromPeriodValue","dateToPeriodValue","maxNgbDateFrom","minNgbDateTo","dateFromPeriodValues","dateToPeriodValues","startDate","setFullYear","startMonday","weekShort","startMonth","setMonth","startYear","contextType","deQueryFilter","toDeQueryFilter","WorkspaceLookupFilterValue","selectedType","selectedValues","excludeSelected","deQuerySelected","lookupValues","lookupValue","getRange","getOperatorFromType","BETWEEN","NOTIN","rangeFrom","rangeTo","NUMBER_RANGE","GREATER_THAN","GREATER_THAN_OR_EQUALS","LESS_THAN","LESS_THAN_OR_EQUALS","EQUALS","NOT_EQUALS","range","WorkspacePeriodFilterValue","periodFilter","setType","setDefaultValues","dates","prev","isWithin","minDateFromRelative","maxDateFromRelative","minDateToRelative","maxDateToRelative","fixInvalid","updateMinNgbDateFrom","updateMaxNgbDateFrom","updateMinNgbDateTo","updateMaxNgbDateTo","updateMinDateFromRelative","updateMaxDateToRelative","minDateString","maxDateString","minNgbDateFrom","before","after","maxNgbDateTo","actionConfig","WorkspaceActionConfig","actionArgs","clientData","gridSelection","includeAffected","refreshGridAfterAction","serieOverrideFromArg","serieOverride","readFromArg","longRunningAction","operations","operation","WorkspaceActionOperation","setCaptionPostfix","hasModal","modalOperation","fields","inputFields","captionPostfix","WorkspaceActionModalField","required","optionsQuery","multiple","optionValues","optionsFrom","captionColumn","optionsLoaded","ClientData","ActionArgs","SerieOverride","override","ConfigColumnAggregation","distMethod","ConfigColumnEditLookup","valueColumn","fixedOptionsAtStart","translateOptions","cache","ConfigColumnEdit","cond","checkboxes","gridRowData","lookupQuery","findFilterLookupValue","rowName","ConfigColumnFormat","agGridColumnProperties","ConfigColumnLink","targetView","drilldownsToClose","ConfigColumnRow","autoRefresh","refreshWholeGrid","appConfig","excluded","link","targetColumnId","agrFormat","ConfigColumn","viewConfigDto","defaultConfigDto","ConfigColumnBase","viewConfig","defaultConfig","sanitized","configDto","cleanOnDefault","doCleanUp","getAgGridColumnProperties","jsFormula","hasViewConfig","getViewConfigClean","jsonColumns","viewDto","setDefaultConfig","isCalculatedColumn","updateFromViewDto","setCalculatedData","filterMap","inserted","getAggregatedValue","getViewConfig","setViewConfig","colName","minMaxValue","maxValue","minValue","WorkspaceDrilldownOption","updateFromDto","resetLevel","selected","prevFilters","deQueryFilters","menuPending","lastSelectedValue","urlValue","select","findMatchingOption","drilldownDto","menu","additionalQueryFilter","selectedOption","foundSelected","ConfigSerieEdit","readOnlyIfNull","toggleEditableRelativeToCurrent","ConfigSerieFormat","displayDiv","ConfigSerie","ConfigSerieBase","serieAggregation","serieType","ApiVersion","ClientVersion","buildInfo","versionName","getName","versionLabel","getLabel","imageVersion","Wt","DBVersion","AppInfo","clientVersion","client","project","versions","setProjectVersion","determineHasNewPatch","poolVersions","matchingVersion","poolVersion","xt","databases","database","currentMajor","currentMinor","currentPatch","hasNewPatch","versionObj","major","minor","patch","packageJson","production","VersionService","appInfo","getClientVersion","getApiVersion","getDbVersion","getAllVersions","updateFromVersionList","jt","AboutModalComponent","modal","versionService","bowser","navigator","userAgent","getVersionInfo","getBrowserInfo","setSettings","getAppInfo","browserName","parser","getBrowserName","notChrome","browserVersion","getBrowserVersion","userLocale","clientTimezone","Intl","DateTimeFormat","resolvedOptions","timeZone","ClearDataModalComponent","formBuilder","clearLocalStorage","clearIndexedDb","ctx_r12","ExecutionListComponent","changeDetectorRef","executionListService","showActionsFromOtherUsers","initializeNotifications","startNotificationsListener","startSignalrStatusListener","stopEvent","ve","setVisibleActions","clearMultipleActions","allUserActions","te","stopPropagation","preventDefault","connectionStatus","activeExecutionsCount","setupActions","listenForActions","detectChanges","userActionsCount","ctx_r20","ctx_r24","ctx_r26","MyProfileComponent","ngbModal","translationsService","usersModalService","getAvailableLanguages","disableFallbackTranslations","editingPassword","addPasswordValidators","removePasswordValidators","clearPasswordFields","submitted","buildForm","setFormData","accessGroupsActive","backdrop","invalid","pending","pristine","verifyPassword","res","isVerified","updateProfile","cleanUp","setErrors","incorrect","updateLocale","resetLocale","dismiss","availableLanguages","validators","passwordMismatch","Validators","userRoles","userAccessGroups","accessGroup","setValidators","updateValueAndValidity","newPass","cleanLocalStorage","reload","CustomActionParameter","actionParameter","paramValue","customActionId","procedureParameterName","procParamName","orderNumber","orderNum","CustomAction","storedProcedure","requiredRole","customActionParameters","parameter","actionParam","toCustomActionParameter","CustomActionsService","customActions","customAction","toActionExecutionRequest","tap","createActionResponseMessage","toastType","ActionExecutionId","toastTitle","LockedStatus","ctx_r14","ctx_r16","CustomActionsComponent","modalService","customActionsService","customActions$","getAllCustomActions","selectedCustomAction","setActionValuesFromForm","executeCustomAction","_r15","ctx_r68","_r13","NavComponent","activeModuleName","listenForChanges","setModularNavigation","setSettingsNavigation","listenForRouteChanges","loadActiveModule","setCssColors","setInfoDropdown","userlaneEnabled","routerEvent","NavigationStart","currentUrl","mainNav","filterText","resetDropdownNavigation","flattenDropdownNavigation","hasAssistant","Userlane","appNavigation","modularNav","filterFeatureless","settingsNav","settingsNavigation","infoDropdown","setCustomUserManual","setUserManual","setTechnicalManual","setServiceDeskDropdownItem","isEnabled","customUserManual","urlEnding","isEnterprise","agrNav","selectModule","activeModule","barColor","menuItem","_r12","rf","ɵngcc0","ctx_r2","ctx_r3","NgProgressComponent_ng_container_0_div_4_Template","NgProgressComponent_ng_container_0_div_5_Template","state_r1","$implicit","ctx_r0","speed","ease","active","transform","meteor","spinner","NgProgressRef","customConfig","deleteInstance","_trickling","_worker","Subscription","_state","_config","combineLatest","durationSelector","operate","source","subscriber","hasValue","lastValue","durationSubscriber","createOperatorSubscriber","noop","innerFrom","debounceTime","onTrickling","onComplete","currState","distinctUntilChanged","skip","amount","isStarted","trickleFunc","setState","clamp","trickleSpeed","inc","CONFIG","thick","direction","spinnerPosition","NgProgress","_instances","progressRef","setConfig","destroy","ɵfac","ɵprov","ngInjectableDef","defineInjectable","inject","NgProgressComponent","_ngProgress","_started","_completed","started","completed","state$","ɵcmp","hostAttrs","hostVars","hostBindings","inputs","outputs","decls","vars","consts","template","NgProgressComponent_ng_container_0_Template","directives","ɵngcc1","pipes","styles","encapsulation","changeDetection","NgProgressModule","ngModule","providers","useValue","ɵmod","ɵinj","AppComponent","componentFactoryResolver","ngbDatepickerConfig","ngbModalConfig","ngbPopoverConfig","ngbTooltipConfig","ngSelectConfig","titleService","viewContainerRef","ToasterConfig","positionClass","mouseoverTimerStop","container","showWeekNumbers","firstDayOfWeek","getLocaleFirstDayOfWeek","jquery","createConnection","onbeforeunload","notFoundText","appendTo","setNavBarEvents","setDocumentTitle","setDemoMode","initializeUserlane","initializeHeap","onlineCheck","showNavbar","navRef","resolveComponentFactory","createComponent","require","loadUserlane","win","doc","elCollection","UserlaneCommandObject","getElementsByTagName","async","src","parentNode","insertBefore","heap","appid","heapScript","o","RoutesRecognized","setTitle","titles","ViewContainerRef","NG_DEV_MODE$1","exp","ɵRuntimeError","errors","process","players","NoopAnimationPlayer","ɵAnimationGroupPlayer","driver","normalizer","keyframes","preStyles","postStyles","normalizedKeyframes","previousOffset","previousKeyframe","offset","kf","isSameOffset","normalizedKeyframe","normalizedProp","prop","normalizedValue","normalizePropertyName","ɵPRE_STYLE","AUTO_STYLE","normalizeStyleValue","animationFailed","player","eventName","onStart","copyAnimationEvent","onDone","onDestroy","phaseName","totalTime","makeAnimationEvent","triggerName","fromState","toState","_data","command","separatorPos","_contains","elm1","elm2","_query","multi","_documentElement","parent","host","isNode","Element","isBrowser","documentElement","getParentElement","elem","_CACHED_BODY","_IS_WEBKIT","getBodyNode","containsVendorPrefix","charAt","containsElement","invokeQuery","NoopAnimationDriver","validateStyleProperty","_element","_selector","easing","AnimationDriver","NOOP","ENTER_CLASSNAME","LEAVE_CLASSNAME","NG_TRIGGER_CLASSNAME","NG_TRIGGER_SELECTOR","NG_ANIMATING_CLASSNAME","NG_ANIMATING_SELECTOR","matches","_convertTimeValueToMS","parseFloat","unit","timings","allowNegativeValues","invalidTimingValue","delayMatch","easingVal","containsErrors","startIndex","negativeStepValue","negativeDelayValue","parseTimeExpression","destination","readPrototype","copyObj","styleAttrValue","getStyleAttributeString","camelCaseToDashCase","setAttribute","formerStyles","camelProp","dashCaseToCamelCase","writeStyleAttribute","steps","sequence","PARAM_REGEX","RegExp","lastIndex","original","varName","localVal","invalidParamValue","arr","DASH_CASE_REGEXP","previousStyles","previousStyleProps","startingKeyframe","missingStyleProps","qe","computeStyle","visitor","visitTrigger","visitState","visitTransition","visitSequence","visitGroup","visitAnimate","visitKeyframes","visitStyle","visitReference","visitAnimateChild","visitAnimateRef","visitQuery","visitStagger","nodeType","invalidNodeType","getComputedStyle","transitionValue","expressions","eventStr","alias","invalidTransitionAlias","parseAnimationAlias","invalidExpression","separator","makeLambdaFromStates","parseInnerTransitionStr","TRUE_BOOLEAN_VALUES","FALSE_BOOLEAN_VALUES","lhs","rhs","LHS_MATCH_BOOLEAN","RHS_MATCH_BOOLEAN","lhsMatch","rhsMatch","SELF_TOKEN_REGEX","metadata","warnings","AnimationAstBuilderVisitor","_driver","AnimationAstBuilderContext","_resetContextStyleTimingState","ast","visitDslNode","normalizeAnimationEntry","unsupportedCSSPropertiesFound","Qn","currentQuerySelector","collectedStyles","currentTime","queryCount","depCount","transitions","invalidTrigger","definitions","def","stateDef","transition","invalidDefinition","styleAst","astParams","containsDynamicStyles","missingSubs","isObject","stylesObj","extractStyleParams","sub","iteratorToArray","metadataName","invalidState","matchers","parseTransitionExpr","normalizeAnimationOptions","furthestTime","innerAst","timingAst","makeTimingAst","resolveTiming","strValue","isDynamic","dynamic","constructTimingAst","currentAnimateTimings","styleMetadata","newStyleData","_styleAst","isEmptyStep","_makeStyleAst","_validateStyleAst","styleTuple","invalidStyleValue","collectedEasing","styleData","styleMap","endTime","startTime","tuple","collectedEntry","updateCollectedStyle","firstStart","firstEnd","secondStart","secondEnd","invalidParallelAnimation","invalidStyleParams","validateStyleParams","invalidKeyframes","totalKeyframesWithOffsets","offsets","offsetsOutOfOrder","keyframesOutOfRange","offsetVal","consumeOffset","invalidOffset","keyframeOffsetsOutOfOrder","generatedOffset","keyframesMissingOffsets","animateDuration","durationUpToThisFrame","parentSelector","currentQuery","hasAmpersand","normalizeSelector","wn","includeSelf","getOrSetAsInMap","optional","originalSelector","invalidStagger","currentTransition","normalizeParams","preStyleProps","postStyleProps","subTimeline","ElementInstructionMap","_map","instructions","existingInstructions","ENTER_TOKEN_REGEX","LEAVE_TOKEN_REGEX","rootElement","enterClassName","leaveClassName","startingStyles","finalStyles","subInstructions","AnimationTimelineBuilderVisitor","buildKeyframes","AnimationTimelineContext","currentTimeline","setStyles","timelines","timeline","containsAnimation","lastRootTimeline","allowOnlyTimelineStyles","createTimelineInstruction","elementInstructions","innerContext","createSubContext","_visitSubInstructions","transformIntoNewTimeline","previousNode","resolveTimingValue","instructionTimings","appendInstructionToTimeline","instruction","updateOptions","subContextCount","snapshotCurrentStyles","DEFAULT_NOOP_PREVIOUS_NODE","delayNextStep","applyStylesToKeyframe","innerTimelines","mergeTimelineCollectedStyles","interpolateParams","_visitTiming","incrementTime","getCurrentStyleProperties","forwardFrame","applyEmptyStep","innerTimeline","forwardTime","elms","currentQueryTotal","sameElementTimeline","currentQueryIndex","parentContext","tl","maxTime","staggerTransformer","currentStaggerTime","startingTime","_enterClassName","_leaveClassName","initialTimeline","TimelineBuilder","skipIfExists","newOptions","optionsToUpdate","newParams","paramsToUpdate","oldParams","newTime","fork","_copyOptions","updatedTimings","builder","SubTimelineBuilder","stretchStartingKeyframe","results","invalidQuery","_elementTimelineStylesLookup","_previousKeyframe","_currentKeyframe","_keyframes","_styleSummary","_pendingStyles","_backFill","_currentEmptyStepKeyframe","_localTimelineStyles","_globalTimelineStyles","_loadKeyframe","hasPreStyleStep","allStyles","allProperties","copyStyles","flattenStyles","_updateStyle","props","_t","properties","details0","details1","finalKeyframes","keyframe","finalKeyframe","preProps","postProps","kf0","kf1","_stretchStartingKeyframe","tr","newKeyframes","startingGap","newFirstKeyframe","oldFirstKeyframe","roundOffset","decimalPoints","mult","pow","AnimationStyleNormalizer","WebAnimationsStyleNormalizer","propertyName","userProvidedProperty","normalizedProperty","strVal","DIMENSIONAL_PROP_MAP","valAndSuffixMatch","invalidCssUnitValue","makeBooleanMap","isRemovalTransition","fromStyles","toStyles","queriedElements","EMPTY_OBJECT","AnimationTransitionFactory","_triggerName","_stateStyles","currentState","nextState","matchFns","fn","oneOrMoreTransitionsMatch","stateName","backupStateStyler","stateStyler","backupStyles","buildStyles","currentOptions","nextOptions","skipAstBuild","transitionAnimationParams","currentStateStyles","nextAnimationParams","nextStateStyles","preStyleMap","postStyleMap","isRemoval","animationOptions","buildAnimationTimelines","createTransitionInstruction","queriedElementsList","AnimationStateStyles","defaultParams","combinedParams","styleObj","AnimationTrigger","_normalizer","transitionFactories","balanceProperties","fallbackTransition","createFallbackTransition","key1","key2","EMPTY_INSTRUCTION_MAP","TimelineAnimationEngine","bodyNode","_animations","_playersById","buildAnimationAst","registerFailed","normalizeKeyframes","animate","autoStylesMap","inst","missingOrDestroyedAnimation","createAnimationFailed","_buildPlayer","optimizeGroupPlayer","_getPlayer","missingPlayer","baseEvent","listenOnPlayer","play","pause","restart","finish","init","setPosition","QUEUED_CLASSNAME","DISABLED_CLASSNAME","STAR_CLASSNAME","EMPTY_PLAYER_ARRAY","NULL_REMOVAL_STATE","namespaceId","setForRemoval","setForMove","hasAnimation","removedBeforeQueried","NULL_REMOVED_QUERIED_STATE","REMOVAL_FLAG","StateValue","isObj","normalizeTriggerValue","VOID_VALUE","DEFAULT_STATE_VALUE","AnimationTransitionNamespace","hostElement","_engine","_triggers","_queue","_elementListeners","_hostClassName","addClass","phase","missingTrigger","missingEvent","isTriggerEventValid","unsupportedTriggerEvent","listeners","triggersWithStates","statesByElement","afterFlush","trigger","unregisteredTrigger","defaultToFallback","_getTrigger","TransitionAnimationPlayer","absorbOptions","playersOnElement","playersByElement","queued","matchTransition","isFallbackTransition","totalQueuedPlayers","removeClass","objEquals","matchStyles","reportError","eraseStyles","stateMap","entry","elementPlayers","namespaces","fetchNamespacesByElement","ns","triggerLeaveAnimation","clearElementCache","afterFlushAnimationsDone","destroyAfterComplete","triggerStates","previousTriggersValues","markElementAsRemoved","processLeaveNode","elementStates","visitedTriggers","listener","engine","childElementCount","_signalRemovalForInnerTriggers","containsPotentialParentTransition","totalAnimations","currentPlayers","playersByQueriedElement","prepareLeaveAnimationListeners","removalFlag","destroyInnerAnimations","_onRemovalComplete","microtaskId","destroyed","markedForDestroy","d0","d1","containsData","TransitionAnimationEngine","newHostElements","disabledNodes","_namespaceLookup","_namespaceList","_flushFns","_whenQuietFns","namespacesByHostElement","collectedEnterElements","collectedLeaveElements","onRemovalComplete","_balanceNamespaceList","collectEnterElement","namespaceList","found","ancestor","ancestorNs","createNamespace","_fetchNamespace","nsId","isElementNode","insertNode","isHostElement","removeNode","hostNS","listen","subTimelines","skipBuildAst","containerElement","destroyActiveAnimationsForElement","finishActiveQueriedAnimationOnElement","classList","markElementAsDisabled","cleanupFns","_flushAnimations","quietFns","triggerTransitionsFailed","skippedPlayers","skippedPlayersMap","queuedInstructions","allPreStyleElements","allPostStyleElements","disabledElementsSet","nodesThatAreDisabled","allTriggerElements","enterNodeMap","buildRootMap","enterNodeMapIds","nodes","root","className","allLeaveNodes","mergedLeaveNodes","leaveNodesWithoutAnimations","leaveNodeMapIds","leaveNodeMap","allPlayers","erroneousTransitions","drainQueuedTransitions","nodeIsOrphaned","_buildInstruction","append","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","elementContainsData","isQueriedElement","toStateValue","queriedElementPlayers","isRemovalAnimation","targetNameSpaceId","targetTriggerName","fr","Gr","realPlayer","getRealPlayer","beforeDestroy","yo","Bo","allQueriedPlayers","allConsumedElements","allSubElements","allNewPlayers","timelineInstruction","previousPlayers","finalPlayers","_flattenGroupPlayersRecur","flattenGroupPlayers","Ln","wrappedPlayer","currentValues","deleteOrUnsetInMap","_player","_containsRealPlayer","_queuedCallbacks","triggerCallback","_queueEvent","hasStarted","getPosition","display","valuesMap","elementPropsMap","defaultStyle","cloakVals","cloakElement","failedElements","roots","rootMap","nodeSet","localRootMap","getRoot","k1","k2","postEntry","preEntry","AnimationEngine","_triggerCache","_transitionEngine","_timelineEngine","componentId","cacheKey","triggerBuildFailed","buildTrigger","registerTrigger","disable","parseTimelineCommand","eventPhase","flush","whenRenderingDone","startStyles","endStyles","filterNonAnimatableStyles","SpecialCasedStyles","_startStyles","_endStyles","initialStyles","initialStylesByElement","_initialStyles","WeakMap","isNonAnimatableStyle","WebAnimationsPlayer","_specialStyles","_onDoneFns","_onStartFns","_onDestroyFns","_initialized","_finished","_destroyed","currentSnapshot","_duration","_delay","_preparePlayerBeforeStart","domPlayer","_triggerWebAnimation","_finalKeyframe","_onFinish","_resetDomPlayerState","cancel","WebAnimationsDriver","fill","playerOptions","previousWebAnimationPlayers","allowPreviousPlayerStylesMerge","specialStyles","packageNonAnimatableStyles","balancePreviousStylesIntoKeyframes","BrowserAnimationBuilder","rootRenderer","_nextAnimationId","_renderer","createRenderer","ViewEncapsulation","issueAnimationCommand","BrowserAnimationFactory","AnimationBuilder","DOCUMENT","_id","RendererAnimationPlayer","AnimationFactory","_command","_listen","setProperty","DISABLE_ANIMATIONS_FLAG","AnimationRendererFactory","delegate","_zone","_currentId","_microtaskId","_animationCallbacksBuffer","_rendererCache","_cdRecurDepth","promise","removeChild","BaseAnimationRenderer","animationTriggers","AnimationRenderer","begin","run","_scheduleCountTask","end","i1","destroyNode","namespace","createComment","createText","newChild","appendChild","onInsert","refChild","isMove","oldChild","onRemove","selectorOrNode","preserveContent","selectRootElement","nextSibling","removeAttribute","flags","removeStyle","disableAnimations","resolveElementFromTarget","dotIndex","parseTriggerCallbackName","scheduleListenerCallback","InjectableAnimationEngine","ɵAnimationEngine","ANIMATION_MODULE_TYPE","SHARED_ANIMATION_PROVIDERS","ɵAnimationStyleNormalizer","useFactory","ɵWebAnimationsStyleNormalizer","RendererFactory2","zone","deps","ɵDomRendererFactory2","NgZone","BROWSER_ANIMATIONS_PROVIDERS","ɵWebAnimationsDriver","BROWSER_NOOP_ANIMATIONS_PROVIDERS","ɵNoopAnimationDriver","BrowserAnimationsModule","BrowserModule","NgProgressRouter","progress","startEvents","completeEvents","NavigationEnd","NavigationCancel","NavigationError","startProgress","completeProgress","filterEvents","eventExists","ɵngcc2","Router","NgProgressRouterModule","ngProgressRouter","LoaderInterceptor","ngProgress","req","requests","updateLoadingProgress","Observable","handle","removeRequest","requestIndex","TokenInterceptor","requiresToken","handleState","rerouteLogin","waitForRefresh","addToken","whiteList","isRefreshingToken","restrictedAccess","noPermission","resource","skipReportingError","Message","logout","refreshOnGoingSubject","take","intercept","clone","CoreModule","parentModule","throwIfAlreadyLoaded","HTTP_INTERCEPTORS","NoAccessComponent","LoginComponent","checkLogout","setReturnUrl","check365Authentication","enterApp","queryParamMap","navigateByUrl","hasNoMatchingProject","showVersionDetails","auth365Login","getAzureRedirectUrl","ok","loginError","buildAuth365Url","credentials","classicLogin","checkLanguage","hasChanged","homePage","initializePendo","pendo","initialize","full_name","account","userLanguage","auth365Info","tokenEndpoint","appId","encodeURI","port","hostname","NotFoundComponent","routes","redirectTo","pathMatch","component","loadChildren","DashboardModule","ReportsModule","OrdersModule","SchedulerModule","SettingsModule","ExecutionsModule","WorkspacesModule","SetupModule","TranslationsModule","AppRoutingModule","relativeLinkResolution","NavModule","AppModule","bootstrap","Title","APP_INITIALIZER","appInit","ToasterModule","useDefaultLang","enableProdMode","__NgCli_bootstrap_1","bootstrapModule","LicenseManager","It","AgGridColumn_1","AgGridColumn","childColumns","createColDefFromGridColumn","hasChildColumns","children","getChildColDefs","toColDef","Lt","Vt","Mt","__rest","F","contentQueries","dirIndex","filterFramework","floatingFilterComponent","floatingFilterComponentParams","floatingFilterComponentFramework","floatingFilterFramework","headerValueGetter","headerClass","suppressHeaderKeyboardEvent","columnGroupShow","toolPanelClass","suppressColumnsToolPanel","suppressFiltersToolPanel","tooltipComponentFramework","tooltipComponentParams","groupId","openByDefault","marryChildren","headerGroupComponent","headerGroupComponentFramework","headerGroupComponentParams","refData","keyCreator","tooltipField","tooltipValueGetter","icons","suppressNavigable","suppressKeyboardEvent","suppressPaste","suppressFillHandle","initialHide","lockVisible","lockPosition","suppressMovable","valueSetter","cellEditor","cellEditorFramework","cellEditorParams","cellEditorSelector","singleClickEdit","newValueHandler","cellEditorPopup","cellEditorPopupPosition","onCellValueChanged","onCellClicked","onCellDoubleClicked","onCellContextMenu","getQuickFilterText","filterValueGetter","headerComponent","headerComponentParams","menuTabs","columnsMenuParams","headerCheckboxSelection","headerCheckboxSelectionFilteredOnly","chartDataType","initialPinned","lockPinned","pinnedRowCellRenderer","pinnedRowCellRendererFramework","pinnedRowCellRendererParams","pinnedRowValueFormatter","initialPivot","pivotIndex","initialPivotIndex","pivotComparator","enablePivot","cellStyle","cellClass","cellRendererFramework","cellRendererSelector","autoHeight","wrapText","suppressCellFlash","rowDrag","rowDragText","dndSource","dndSourceOnRowDrag","rowGroup","initialRowGroup","rowGroupIndex","initialRowGroupIndex","initialAggFunc","showRowGroup","initialSort","sortIndex","initialSortIndex","sortingOrder","unSortIcon","sortedAt","colSpan","rowSpan","initialWidth","flex","initialFlex","suppressSizeToFit","suppressAutoSize","__decorate","ContentChildren","__metadata","QueryList","Input","AgGridModule_1","AngularFrameworkOverrides","_ngZone","wt","isEmitterUsed","AgPromise","setInterval","eventType","useCapture","isOutsideAngular","global","comp","Gt","VanillaFrameworkOverrides","AngularFrameworkComponentWrapper","OriginalConstructor","DynamicAgNg2Component","_componentRef","wrapper","getFrameworkComponentInstance","componentRef","At","BaseGuiComponent","componentType","BaseComponentWrapper","ɵAngularFrameworkComponentWrapper_BaseFactory","_params","_agAwareComponent","_frameworkComponentInstance","_eGui","agInit","AgGridAngular","elementDef","angularFrameworkOverrides","frameworkComponentWrapper","_initialised","_fullyReady","suppressContextMenu","preventDefaultOnContextMenu","allowContextMenuWithControlKey","suppressMenuHide","enableBrowserTooltips","tooltipShowDelay","tooltipHideDelay","tooltipMouseTrack","copyHeadersToClipboard","copyGroupHeadersToClipboard","clipboardDelimiter","suppressLastEmptyLineOnPaste","suppressClipboardPaste","suppressClipboardApi","columnDefs","defaultColGroupDef","maintainColumnOrder","suppressFieldDotNotation","deltaColumnMode","applyColumnDefOrder","immutableColumns","suppressSetColumnStateEvents","suppressColumnStateEvents","colWidth","minColWidth","maxColWidth","headerHeight","groupHeaderHeight","floatingFiltersHeight","pivotHeaderHeight","pivotGroupHeaderHeight","allowDragFromColumnsToolPanel","suppressMovableColumns","suppressColumnMoveAnimation","suppressDragLeaveHidesColumns","colResizeDefault","autoSizePadding","skipHeaderOnAutoSize","frameworkComponents","reactUi","suppressReactUi","editType","suppressClickEdit","readOnlyEdit","stopEditingWhenCellsLoseFocus","enterMovesDown","enterMovesDownAfterEdit","undoRedoCellEditing","undoRedoCellEditingLimit","stopEditingWhenGridLosesFocus","defaultCsvExportParams","suppressCsvExport","defaultExcelExportParams","suppressExcelExport","defaultExportParams","quickFilterText","cacheQuickFilter","excludeChildrenWhenTreeDataFiltering","enableCharts","chartThemes","customChartThemes","chartThemeOverrides","loadingCellRenderer","loadingCellRendererFramework","loadingCellRendererParams","loadingCellRendererSelector","masterDetail","keepDetailRows","keepDetailRowsCount","detailCellRenderer","detailCellRendererFramework","detailCellRendererParams","detailRowHeight","detailRowAutoHeight","alignedGrids","tabIndex","rowBuffer","valueCache","valueCacheNeverExpires","enableCellExpressions","suppressParentsInRowNodes","suppressTouch","suppressFocusAfterRefresh","suppressAsyncEvents","suppressBrowserResizeObserver","suppressPropertyNamesCheck","suppressChangeDetection","debug","loadingOverlayComponent","loadingOverlayComponentFramework","loadingOverlayComponentParams","suppressLoadingOverlay","noRowsOverlayComponent","noRowsOverlayComponentFramework","noRowsOverlayComponentParams","suppressNoRowsOverlay","pagination","paginationPageSize","paginationAutoPageSize","paginateChildRows","suppressPaginationPanel","pivotPanelShow","pivotColumnGroupTotals","pivotRowTotals","pivotSuppressAutoColumn","suppressExpandablePivotGroups","functionsReadOnly","aggFuncs","suppressAggAtRootLevel","aggregateOnlyChangedColumns","suppressAggFilteredOnly","animateRows","cellFlashDelay","cellFadeDelay","domLayout","ensureDomOrder","enableRtl","suppressColumnVirtualisation","suppressMaxRenderedRowRestriction","suppressRowVirtualisation","rowDragManaged","suppressRowDrag","suppressMoveWhenRowDragging","rowDragEntireRow","rowDragMultiRow","fullWidthCellRenderer","fullWidthCellRendererFramework","fullWidthCellRendererParams","embedFullWidthRows","deprecatedEmbedFullWidthRows","groupDisplayType","groupDefaultExpanded","groupMaintainOrder","groupIncludeFooter","groupIncludeTotalFooter","groupSuppressBlankHeader","showOpenedGroup","groupRemoveSingleChildren","groupRemoveLowestSingleChildren","groupHideOpenParents","groupRowRenderer","groupRowRendererFramework","groupRowRendererParams","suppressMakeColumnVisibleAfterUnGroup","treeData","groupRowInnerRenderer","groupRowInnerRendererFramework","groupMultiAutoColumn","groupUseEntireRow","groupSuppressAutoColumn","rememberGroupStateWhenNewData","pinnedTopRowData","pinnedBottomRowData","rowModelType","immutableData","asyncTransactionWaitMillis","suppressModelUpdateAfterUpdateTransaction","deltaRowDataMode","batchUpdateWaitMillis","datasource","cacheOverflowSize","infiniteInitialRowCount","serverSideStoreType","cacheBlockSize","maxBlocksInCache","maxConcurrentDatasourceRequests","blockLoadDebounceMillis","purgeClosedRowNodes","serverSideDatasource","serverSideSortingAlwaysResets","serverSideFilteringAlwaysResets","suppressEnterpriseResetOnNewColumns","viewportDatasource","viewportRowModelPageSize","viewportRowModelBufferSize","alwaysShowHorizontalScroll","alwaysShowVerticalScroll","debounceVerticalScrollbar","suppressHorizontalScroll","suppressScrollOnNewData","suppressScrollWhenPopupsAreOpen","suppressAnimationFrame","suppressMiddleClickScrolls","suppressPreventDefaultOnMouseWheel","scrollbarWidth","rowMultiSelectWithClick","suppressCellSelection","suppressCellFocus","suppressMultiRangeSelection","enableCellTextSelection","enableRangeHandle","enableFillHandle","fillHandleDirection","suppressClearOnFillReduction","suppressMultiSort","multiSortKey","suppressMaintainUnsortedOrder","rowStyle","rowClass","suppressRowHoverHighlight","suppressRowTransform","columnHoverHighlight","deltaSort","treeDataDisplayType","angularCompileRows","angularCompileFilters","functionsPassive","enableGroupEdit","processHeaderForClipboard","processGroupHeaderForClipboard","processCellFromClipboard","sendToClipboard","processDataFromClipboard","isExternalFilterPresent","doesExternalFilterPass","getChartToolbarItems","createChartContainer","navigateToNextHeader","tabToNextHeader","navigateToNextCell","tabToNextCell","localeTextFunc","getDocument","paginationNumberFormatter","groupRowAggNodes","isGroupOpenByDefault","defaultGroupOrderComparator","processSecondaryColDef","processSecondaryColGroupDef","getDataPath","defaultGroupSortComparator","getChildCount","getServerSideStoreParams","isServerSideGroupOpenByDefault","isApplyServerSideTransaction","isServerSideGroup","getServerSideGroupKey","getBusinessKeyForNode","getRowNodeId","getRowId","processRowPostCreate","isRowSelectable","isRowMaster","fillOperation","postSort","getRowStyle","getRowClass","getRowHeight","isFullWidthCell","toolPanelVisibleChanged","pasteStart","pasteEnd","columnVisible","columnPinned","columnResized","columnMoved","columnValueChanged","columnPivotModeChanged","columnPivotChanged","columnGroupOpened","newColumnsLoaded","gridColumnsChanged","displayedColumnsChanged","virtualColumnsChanged","columnEverythingChanged","componentStateChanged","cellValueChanged","cellEditRequest","rowValueChanged","cellEditingStarted","cellEditingStopped","rowEditingStarted","rowEditingStopped","filterOpened","filterChanged","filterModified","chartCreated","chartRangeSelectionChanged","chartOptionsChanged","chartDestroyed","cellKeyDown","cellKeyPress","gridReady","firstDataRendered","gridSizeChanged","modelUpdated","virtualRowRemoved","viewportChanged","bodyScroll","bodyScrollEnd","dragStarted","dragStopped","paginationChanged","rowDragEnter","rowDragMove","rowDragLeave","rowDragEnd","columnRowGroupChanged","rowGroupOpened","expandOrCollapseAll","pinnedRowDataChanged","rowDataChanged","rowDataUpdated","asyncTransactionsFlushed","cellClicked","cellDoubleClicked","cellFocused","cellMouseOver","cellMouseOut","cellMouseDown","rowClicked","rowDoubleClicked","rowSelected","selectionChanged","cellContextMenu","rangeSelectionChanged","sortChanged","columnRowGroupChangeRequest","columnPivotChangeRequest","columnValueChangeRequest","columnAggFuncChangeRequest","_nativeElement","setViewContainerRef","setComponentFactoryResolver","setEmitterUsedCallback","ComponentUtil","gridParams","globalEventListener","frameworkOverrides","providedBeanInstances","Grid","resolveNow","emitter","hasEmitter","asEventName","Output","ElementRef","ComponentFactoryResolver","ANALYZE_FOR_ENTRY_COMPONENTS","allowEmptyString","valueParsed","val1","val2","valueA","valueB","accentedCompare","valueAMissing","valueBMissing","toNumber","doQuickCompare","arr_1","ColumnKeyCreator","existingKeys","addExistingKeys","getUniqueKey","colField","toStringOrNull","idToTry","r","keysToSkip","sourceIsSimpleObject","isNonNullObject","deepCloneDefinition","copyPropertyIfPresent","getProperty","objects","allValues","anyObject","ret","propertyIsEnumerable","dest","copyUndefined","makeCopyOfSimpleObjects","iterateObject","sourceValue","destValue","mergeDeep","missing","expression","objectToRead","shift","objectToUpdate","freeze","deepFreeze","fieldContainsDots","currentObject","objectName","proto","getPrototypeOf","writable","defineProperties","FUNCTION_STRIP_COMMENTS","FUNCTION_ARGUMENT_NAMES","doOnceFlags","func","funcConstructor","fnStr","funcs","executeAfter","executeNextVMTurnFuncs","executeNextVMTurnPending","funcsCopy","milliseconds","wait","immediate","callNow","condition","timeoutMessage","timeStamp","executed","internalCallback","reachedTimeout","clearInterval","fns","arg","composed","beanWrappers","beanClasses","contextParams","createBeans","beanInstances","getBeanInstances","wireBeans","beanEntry","beanInstance","createBean","bean","afterPreCreateCallback","autoWireBeans","methodWireBeans","callLifeCycleMethods","createBeanWrapper","constructorParamsMeta","__agBeanMetaData","autowireMethods","agConstructor","constructorParams","getBeansForParameters","newInstance","argArray","applyToConstructor","createdBeanNames","BeanClass","metaData","beanName","getFunctionName","forEachMetaDataInHierarchy","attributes","agClassAttributes","attribute","otherBean","lookupBeanInstance","attributeName","wireParams","initParams","getBeanName","constructorString","parameters","beansList","paramIndex","otherBeanName","wiringBean","lifeCycleMethod","callLifeCycleMethodsOnBean","methodToIgnore","allMethods","getBean","destroyBeans","destroyBean","beans","descriptor","getOrCreateProps","preConstructMethods","postConstructMethods","preDestroyMethods","classConstructor","propertyKey","autowiredFunc","classPrototype","methodOrAttributeName","decorators","desc","getOwnPropertyDescriptor","Reflect","decorate","__param","decorator","EventService","allSyncListeners","allAsyncListeners","globalSyncListeners","globalAsyncListeners","asyncFunctionsQueue","scheduled","firedEvents","setBeans","loggerFactory","useAsyncEvents","addGlobalListener","getListeners","autoCreateListenerCollection","listenerMap","noRegisteredListenersExist","removeEventListener","removeGlobalListener","dispatchToListeners","dispatchEventOnce","dispatchAsync","flushAsyncQueue","queueCopy","Qualifier","Bean","Constants","ROW_BUFFER_SIZE","LAYOUT_INTERVAL","BATCH_WAIT_MILLIS","EXPORT_TYPE_DRAG_COPY","EXPORT_TYPE_CLIPBOARD","EXPORT_TYPE_EXCEL","EXPORT_TYPE_CSV","ROW_MODEL_TYPE_INFINITE","ROW_MODEL_TYPE_VIEWPORT","ROW_MODEL_TYPE_CLIENT_SIDE","ROW_MODEL_TYPE_SERVER_SIDE","ALWAYS","ONLY_WHEN_GROUPING","PINNED_TOP","PINNED_BOTTOM","DOM_LAYOUT_NORMAL","DOM_LAYOUT_PRINT","DOM_LAYOUT_AUTO_HEIGHT","GROUP_AUTO_COLUMN_ID","SOURCE_PASTE","PINNED_RIGHT","PINNED_LEFT","SORT_ASC","SORT_DESC","INPUT_SELECTOR","FOCUSABLE_SELECTOR","FOCUSABLE_EXCLUDE","ModuleNames","CommunityCoreModule","CommunityAllModules","InfiniteRowModelModule","ClientSideRowModelModule","CsvExportModule","EnterpriseCoreModule","EnterpriseAllModules","RowGroupingModule","ColumnToolPanelModule","FiltersToolPanelModule","MenuModule","SetFilterModule","MultiFilterModule","StatusBarModule","SideBarModule","RangeSelectionModule","MasterDetailModule","RichSelectModule","GridChartsModule","ViewportRowModelModule","ServerSideRowModelModule","ExcelExportModule","ClipboardModule","SparklinesModule","AngularModule","ReactModule","VueModule","PolymerModule","ModuleRegistry","moduleBased","modulesMap","doOnce","registerModules","assertRegistered","isRegistered","warningMessage","getRegisteredModules","isPackageBased","instanceIdSequence","Column","userProvidedColDef","instanceId","moving","menuVisible","filterActive","eventService","rowGroupActive","pivotActive","aggregationActive","getInstanceId","attrToNumber","attrToBoolean","setPinned","setColDef","initMinAndMaxWidths","initDotNotation","getUserProvidedColDef","setParent","getParent","setOriginalParent","originalParent","getOriginalParent","initialise","resetActualWidth","suppressDotNotation","isSuppressFieldDotNotation","tooltipFieldContainsDots","columnUtils","calculateColMinWidth","calculateColMaxWidth","calculateColInitialWidth","setActualWidth","isEmptyGroup","isRowGroupDisplayed","isFilterAllowed","isFieldContainsDots","isTooltipFieldContainsDots","colDefAny","msg","isRowModelDefault","warnOnce","isTreeData","pinnedRowValueGetter","createColumnFunctionCallbackParams","getApi","getColumnApi","isSuppressNavigable","userFunc","isCellEditable","isEnableGroupEdit","isColumnFunc","isSuppressFillHandle","isAutoHeight","isRowDrag","isDndSource","isCellCheckboxSelection","isSuppressPaste","isResizable","setMoving","createColumnEvent","EVENT_MOVING_CHANGED","isMoving","getSort","setSort","EVENT_SORT_CHANGED","setMenuVisible","EVENT_MENU_VISIBLE_CHANGED","isMenuVisible","isSortAscending","isSortDescending","isSortNone","isSorting","getSortIndex","setSortIndex","sortOrder","setAggFunc","getAggFunc","getLeft","getOldLeft","oldLeft","getRight","actualWidth","setLeft","EVENT_LEFT_CHANGED","isFilterActive","setFilterActive","additionalEventAttributes","EVENT_FILTER_ACTIVE_CHANGED","filterChangedEvent","EVENT_FILTER_CHANGED","setFirstRightPinned","firstRightPinned","EVENT_FIRST_RIGHT_PINNED_CHANGED","setLastLeftPinned","lastLeftPinned","EVENT_LAST_LEFT_PINNED_CHANGED","isFirstRightPinned","isLastLeftPinned","isPinned","isPinnedLeft","isPinnedRight","getPinned","EVENT_VISIBLE_CHANGED","isVisible","getColumnGroupShow","getUniqueId","getDefinition","getActualWidth","createBaseColDefParams","getColSpan","getRowSpan","silent","fireColumnWidthChangedEvent","EVENT_WIDTH_CHANGED","isGreaterThanMax","getMinWidth","getMaxWidth","getFlex","setFlex","setMinimum","setRowGroupActive","EVENT_ROW_GROUP_CHANGED","isRowGroupActive","setPivotActive","EVENT_PIVOT_CHANGED","isPivotActive","isAnyFunctionActive","isValueActive","isAnyFunctionAllowed","isAllowPivot","isAllowRowGroup","isAllowValue","setValueActive","EVENT_VALUE_CHANGED","getMenuTabs","defaultValues","isLockPosition","isLockVisible","isLockPinned","Autowired","PostConstruct","array1","array2","areEqual","arr1","arr2","array","toRemove","removeFromArray","toIndex","insertIntoArray","objectsToMove","removeAllFromArray","arrayOfArrays","ColumnGroup","providedColumnGroup","displayedChildren","localEventService","createUniqueId","allLeafColumns","getProvidedColumnGroup","getLeafColumns","col","checkLeft","child","isEnableRtl","lastChildLeft","firstChildLeft","createAgEvent","getGroupId","isChildInThisGroupDeepSearch","wantedChild","foundChild","groupActualWidth","groupChild","addChild","getDisplayedChildren","addLeafColumns","getDisplayedLeafColumns","addDisplayedLeafColumns","getColGroupDef","isPadding","isExpandable","isExpanded","setExpanded","expanded","leafColumns","getChildren","getOriginalColumnGroup","getPaddingLevel","calculateDisplayedColumns","parentWithExpansion","EVENT_DISPLAYED_CHILDREN_CHANGED","headerGroupShow","HEADER_GROUP_SHOW_OPEN","HEADER_GROUP_SHOW_CLOSED","ProvidedColumnGroup","colGroupDef","padding","expandable","getLevel","EVENT_EXPANDED_CHANGED","setChildren","setupExpandable","setExpandable","onColumnVisibilityChanged","atLeastOneShowingWhenOpen","atLeastOneShowingWhenClosed","atLeastOneChangeable","findChildrenRemovingPadding","abstractColumn","EVENT_EXPANDABLE_CHANGED","DefaultColumnTypes","numericColumn","rightAligned","AG_GRID_STOP_PROPAGATION","PASSIVE_EVENTS","supports","tags","isEventSupported","change","submit","sourceElement","renderedComp","getDomData","parentElement","getEventPath","pointer","__agGridEventPath","eventNoType","composedPath","createEventPath","eElement","isPassive","passive","BeanStub","destroyFunctions","__v_skip","isAlive","getFrameworkOverrides","EVENT_DESTROYED","dispatchEventAsync","addManagedListener","HTMLElement","addSafePassiveEventListener","destroyFunc","addDestroyFunc","createManagedBean","PreDestroy","ColumnFactory","createColumnTree","defs","primaryColumns","existingTree","columnKeyCreator","extractExistingTreeData","existingCols","existingGroups","existingColKeys","unbalancedTree","recursivelyCreateColumns","treeDept","findMaxDept","columnTree","balanceColumnTree","depthFirstOriginalTreeSearch","createForAutoGroups","autoGroupCols","gridBalancedTree","autoColBalancedTree","fakeTreeItem","createAutoGroupTreeItem","balancedColumnTree","nextChild","findDepth","autoGroup","dept","currentDept","columnDept","originalGroup","newChildren","firstPaddedGroup","currentPaddedGroup","newColId","colGroupDefMerged","createMergedColGroupDef","paddedGroup","leaf","treeChildren","maxDeptThisLevel","newDept","existingColsCopy","newGroupOrColumn","isColumnGroup","createColumnGroup","createColumn","existingColumns","existingGroup","findExistingGroup","getDefaultColGroupDef","checkForDeprecatedItems","colDefMerged","mergeColDefs","findExistingColumn","widthBeforeUpdate","newColDef","existingCol","existingColDef","newHasField","newGroupDef","getDefaultColDef","assignColumnTypes","typeKeys","allColumnTypes","getColumnTypes","typeColDef","colDefNoType","headerGroup","suppressRowGroup","suppressAggregation","displayName","abstractColDef","Events","EVENT_COLUMN_EVERYTHING_CHANGED","EVENT_NEW_COLUMNS_LOADED","EVENT_COLUMN_PIVOT_MODE_CHANGED","EVENT_COLUMN_ROW_GROUP_CHANGED","EVENT_EXPAND_COLLAPSE_ALL","EVENT_COLUMN_PIVOT_CHANGED","EVENT_GRID_COLUMNS_CHANGED","EVENT_COLUMN_VALUE_CHANGED","EVENT_COLUMN_MOVED","EVENT_COLUMN_VISIBLE","EVENT_COLUMN_PINNED","EVENT_COLUMN_GROUP_OPENED","EVENT_COLUMN_RESIZED","EVENT_DISPLAYED_COLUMNS_CHANGED","EVENT_VIRTUAL_COLUMNS_CHANGED","EVENT_ASYNC_TRANSACTIONS_FLUSHED","EVENT_ROW_GROUP_OPENED","EVENT_ROW_DATA_CHANGED","EVENT_ROW_DATA_UPDATED","EVENT_PINNED_ROW_DATA_CHANGED","EVENT_RANGE_SELECTION_CHANGED","EVENT_CHART_CREATED","EVENT_CHART_RANGE_SELECTION_CHANGED","EVENT_CHART_OPTIONS_CHANGED","EVENT_CHART_DESTROYED","EVENT_TOOL_PANEL_VISIBLE_CHANGED","EVENT_COLUMN_PANEL_ITEM_DRAG_START","EVENT_COLUMN_PANEL_ITEM_DRAG_END","EVENT_MODEL_UPDATED","EVENT_PASTE_START","EVENT_PASTE_END","EVENT_FILL_START","EVENT_FILL_END","EVENT_CELL_CLICKED","EVENT_CELL_DOUBLE_CLICKED","EVENT_CELL_MOUSE_DOWN","EVENT_CELL_CONTEXT_MENU","EVENT_CELL_VALUE_CHANGED","EVENT_CELL_EDIT_REQUEST","EVENT_ROW_VALUE_CHANGED","EVENT_CELL_FOCUSED","EVENT_ROW_SELECTED","EVENT_SELECTION_CHANGED","EVENT_CELL_KEY_DOWN","EVENT_CELL_KEY_PRESS","EVENT_CELL_MOUSE_OVER","EVENT_CELL_MOUSE_OUT","EVENT_FILTER_MODIFIED","EVENT_FILTER_OPENED","EVENT_VIRTUAL_ROW_REMOVED","EVENT_ROW_CLICKED","EVENT_ROW_DOUBLE_CLICKED","EVENT_GRID_READY","EVENT_GRID_SIZE_CHANGED","EVENT_VIEWPORT_CHANGED","EVENT_SCROLLBAR_WIDTH_CHANGED","EVENT_FIRST_DATA_RENDERED","EVENT_DRAG_STARTED","EVENT_DRAG_STOPPED","EVENT_CHECKBOX_CHANGED","EVENT_ROW_EDITING_STARTED","EVENT_ROW_EDITING_STOPPED","EVENT_CELL_EDITING_STARTED","EVENT_CELL_EDITING_STOPPED","EVENT_BODY_SCROLL","EVENT_BODY_SCROLL_END","EVENT_HEIGHT_SCALE_CHANGED","EVENT_PAGINATION_CHANGED","EVENT_COMPONENT_STATE_CHANGED","EVENT_BODY_HEIGHT_CHANGED","EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED","EVENT_SCROLL_VISIBILITY_CHANGED","EVENT_COLUMN_HOVER_CHANGED","EVENT_FLASH_CELLS","EVENT_PAGINATION_PIXEL_OFFSET_CHANGED","EVENT_DISPLAYED_ROWS_CHANGED","EVENT_LEFT_PINNED_WIDTH_CHANGED","EVENT_RIGHT_PINNED_WIDTH_CHANGED","EVENT_ROW_CONTAINER_HEIGHT_CHANGED","EVENT_ROW_DRAG_ENTER","EVENT_ROW_DRAG_MOVE","EVENT_ROW_DRAG_LEAVE","EVENT_ROW_DRAG_END","EVENT_POPUP_TO_FRONT","EVENT_COLUMN_ROW_GROUP_CHANGE_REQUEST","EVENT_COLUMN_PIVOT_CHANGE_REQUEST","EVENT_COLUMN_VALUE_CHANGE_REQUEST","EVENT_COLUMN_AGG_FUNC_CHANGE_REQUEST","EVENT_KEYBOARD_FOCUS","EVENT_MOUSE_FOCUS","EVENT_STORE_UPDATED","GroupInstanceIdCreator","existingIds","getInstanceIdForKey","lastResult","reUnescapedHtml","HTML_ESCAPES","stringFromCharCode","padStart","symbol","checkScalarValue","createByte","codePoints","extra","len","counter","ucs2decode","byteString","encodeCodePoint","toEscape","chr","word","pair","__values","__read","ar","__spread","ColumnModel","primaryHeaderRowCount","secondaryHeaderRowCount","secondaryColumnsPresent","gridHeaderRowCount","displayedColumnsLeft","displayedColumnsRight","displayedColumnsCenter","displayedColumns","displayedColumnsAndGroupsMap","viewportColumns","viewportColumnsCenter","autoHeightActiveAtLeastOnce","pivotColumns","ready","autoGroupsNeedBuilding","forceRecreateAutoGroups","bodyWidth","leftWidth","rightWidth","bodyWidthDirty","colDefVersion","flexColsCalculatedAtLestOnce","isSuppressColumnVirtualisation","isPivotMode","isPivotSettingAllowed","usingTreeData","onAutoGroupColumnDefChanged","onDefaultColDefChanged","updateGridColumns","updateDisplayedColumns","createColumnsFromColumnDefs","getColDefVersion","colsPreviouslyExisted","raiseEventsFunc","compareColumnStatesAndRaiseEvents","expire","oldPrimaryColumns","balancedTreeResult","columnFactory","primaryColumnTree","getColumnsFromTree","primaryColumnsMap","extractRowGroupColumns","extractPivotColumns","extractValueColumns","gridColsArePrimary","isMaintainColumnOrder","orderGridColumnsLikePrimary","checkViewportColumns","dispatchEverythingChanged","dispatchNewColumnsLoaded","gridColumns","colA","colB","primaryIndexA","primaryIndexB","indexAPresent","indexBPresent","getAllDisplayedAutoHeightCols","displayedAutoHeightCols","setViewport","viewportLeft","scrollPosition","scrollWidth","viewportRight","getDisplayedColumnsStartingAt","currentColumn","getDisplayedColAfter","hashBefore","extractViewport","setViewportPosition","setPivotMode","getSecondaryPivotColumn","pivotKeys","valueColKey","secondaryColumns","valueColumnToFind","getPrimaryColumn","foundColumn","thisPivotKeys","pivotValueColumn","setFirstRightAndLastLeftPinned","lastLeft","firstRight","autoSizeColumns","skipHeader","skipHeaderGroups","stopAtGroup","animationFrameService","flushAllFrames","columnsAutosized","changesThisTimeAround","shouldSkipHeader","isSkipHeaderOnAutoSize","shouldSkipHeaderGroups","actionOnGridColumns","preferredWidth","autoWidthCalculator","getPreferredWidthForColumn","newWidth","normaliseColumnWidth","autoSizeColumnGroupsByColumns","fireColumnResizedEvent","finished","flexColumns","headerGroupCtrl","columnGroups","getGridColumns","columnGroups_1","columnGroups_1_1","columnGroup","_c","ctrlsService","getHeaderRowContainerCtrls","_d","getHeaderCtrlForColumn","e_2_1","resizeLeafColumnsToFit","e_1_1","allDisplayedColumns","rootColumns","recursiveFindColumns","getAllDisplayedTrees","displayedTreeLeft","displayedTreeRight","displayedTreeCentre","getPrimaryColumnTree","getHeaderRowCount","getDisplayedTreeLeft","getDisplayedTreeRight","getDisplayedTreeCentre","isColumnDisplayed","getViewportColumns","getDisplayedLeftColumnsForRow","colSpanActive","getDisplayedColumnsForRow","getDisplayedRightColumnsForRow","filterCallback","emptySpaceBeforeColumn","out_i_1","lastConsideredCol","filterPasses","maxAllowedColSpan","columnsToCheckFilter","colsToRemove","u","colForFilter","getViewportCenterColumnsForRow","isColumnInViewport","getAriaColumnIndex","getAllGridColumns","columnLeft","columnRight","leftBounds","rightBounds","getDisplayedColumnsLeftWidth","getWidthOfColsInList","getDisplayedColumnsRightWidth","updatePrimaryColumnList","masterList","actionIsAdd","columnCallback","missingOrEmpty","atLeastOne","columnToAdd","setRowGroupColumns","colKeys","setPrimaryColumnList","isSuppressMakeColumnVisibleAfterUnGroup","addRowGroupColumn","addRowGroupColumns","removeRowGroupColumns","removeRowGroupColumn","addPivotColumns","setPivotColumns","added","addPivotColumn","removePivotColumns","removePivotColumn","fireColumnEvent","setValueColumns","aggFuncService","getDefaultAggFunc","addValueColumns","addValueColumn","removeValueColumn","removeValueColumns","getPrimaryOrGridColumn","getGridColumn","setColumnWidths","columnWidths","sets","columnWidth","ratios","getColResizeDefault","otherCol","widthDiff","otherColWidth","resizeColumnSets","resizeSets","checkMinAndMaxWidthsForSet","columnResizeSet","minWidthAccumulated","maxWidthAccumulated","maxWidthActive","changedCols","allResizedCols","newWidths","finishedCols","finishedColsGrew","loopCount","_loop_2","subsetCols","subsetRatioTotal","pixelsToDistribute","ratioScale","colNewWidth","atLeastOneColChanged","flexedCols","refreshFlexedColumns","resizingCols","skipSetLeft","setLeftValues","updateBodyWidths","colsForEvent","setColumnAggFunc","moveRowGroupColumn","fromIndex","moveColumns","columnsToMoveKeys","columnAnimationService","columnsToMove","doesMovePassRules","moveInArray","proposedColumnOrder","doesMovePassMarryChildren","doesMovePassLockedPositions","sortColumnsLikeGridColumns","cols","foundNonLocked","rulePassed","allColumnsCopy","newIndexes","newColIndex","moveColumn","moveColumnByIndex","lastPrimaryOrder","columnDefFactory","buildColumnDefs","getBodyContainerWidth","getContainerWidth","newBodyWidth","newLeftWidth","newRightWidth","getValueColumns","getPivotColumns","getRowGroupColumns","getDisplayedCenterColumns","getDisplayedLeftColumns","getDisplayedRightColumns","getDisplayedColumns","getAllPrimaryColumns","getSecondaryColumns","getAllColumnsForQuickFilter","columnsForQuickFilter","isRowGroupEmpty","setColumnsVisible","setColumnPinned","setColumnsPinned","actualPinned","getDomLayout","createEvent","updatedColumns","event_4","getDisplayedColBefore","oldIndex","getDisplayedGroupAfter","getDisplayedGroupAtDirection","getDisplayedGroupBefore","requiredLevel","colGroupLeafColumns","getDisplayColMethod","groupPointer","getColumnGroupAtLevel","isPinningLeft","isPinningRight","getPrimaryAndSecondaryAndAutoColumns","groupAutoColumns","createStateItemFromColumn","orderColumnStateList","getPrimaryAndAutoGroupCols","columnStateList","gridColumnIdMap","convertToMap","itemA","itemB","resetColumnState","letRowGroupIndex","letPivotIndex","colsToProcess","getValueOrNull","stateItem","columnsWithNoState","rowGroupIndexes","pivotIndexes","autoGroupColumnStates","previousRowGroupCols","previousPivotCols","syncColumnWithStateItem","defaultState","applyDefaultsFunc","indexes","oldList","indexA","indexB","aHasIndex","bHasIndex","oldIndexA","oldIndexB","aHasOldIndex","autoGroupColsCopy","autoCol","getAutoColumn","applyOrderAfterApplyState","newOrder","processedColIds","gridColumnsMap","autoGroupInsertIndex","putFixedColumnsFirst","startState","columnStateBefore","columnStateBeforeMap","isSuppressColumnStateEvents","colsForState","raiseWhenListsDifferent","colsBefore","colsAfter","idMapper","getChangedColumns","changedPredicate","changedColumns","colStateBefore","columnIdMapper","cs","oldActive","activeChanged","aggFuncChanged","raiseColumnPinnedEvent","raiseColumnVisibleEvent","sortController","dispatchSortChangedEvents","raiseColumnMovedEvent","getCommonValue","firstValue","colStateAfter","colStateAfterMapped","colsIntersectIds","beforeFiltered","afterFiltered","movedColumns","csAfter","csBefore","gridCol","value1","value2","calculated","columnLookupCallback","foundColumns","getColumnWithValidation","columnList","columnMap","columnsMatch","groupCol","columnMatches","colDefMatches","idMatches","getDisplayNameForColumn","includeAggFunc","getHeaderName","wrapHeaderNameWithAggFunc","getDisplayNameForProvidedColumnGroup","getDisplayNameForColumnGroup","expressionService","evaluate","camelCaseToHumanText","isSuppressAggFuncInHeader","aggFuncFound","measureActive","aggregationPresent","aggFuncString","getLocaleTextFunc","getColumnGroup","allColumnGroups","checkInstanceId","depthFirstAllColumnTreeSearch","isReady","extractColumns","flag","previousCols","setFlagFunc","getIndexFunc","getInitialIndexFunc","getValueFunc","getInitialValueFunc","colsWithIndex","colsWithValue","colIsNew","initialValue","initialIndex","eo","getIndexForCol","defaultIndex","resetColumnGroupState","stateItems","groupState","setColumnGroupState","impactedGroups","updateGroupsAndDisplayedColumns","setColumnGroupOpened","keyAsString","calculateColumnsForDisplay","isAutoGroupCol","isValueCol","checkColSpanActiveInCols","calculateColumnsForGroupDisplay","groupDisplayColumns","checkFunc","getGroupDisplayColumns","columnsForDisplay","buildDisplayedTrees","isSecondaryColumnsPresent","setSecondaryColumns","newColsPresent","processSecondaryColumnDefinitions","secondaryBalancedTree","getProcessSecondaryColDefFunc","groupCallback","getProcessSecondaryColGroupDefFunc","colDefs2","searchForColDefs","orderGridColsLikeLastPrimary","addAutoGroupToGridColumns","setupQuickFilterColumns","clearDisplayedAndViewportColumns","setAutoHeightActive","autoHeightActive","rowModel","getType","lastPrimaryOrderMapped","noColsFound","gridColsMap","oldColsOrdered","oldColsMap","newColsOrdered","newGridColumns","newCol","siblings","leafCol","presentInNewGriColumns","noYetInSiblings","isPrimaryColumnGroupsPresent","unlocked","createGroupAutoColumnsIfNeeded","viewportRowLeft","viewportRowRight","viewportRowCenter","updateOpenClosedVisibilityInColumnGroups","deriveDisplayedColumns","derivedDisplayedColumnsFromDisplayedTree","joinDisplayedColumns","isAutoRowHeightActive","wasAutoRowHeightEverActive","setLeftValuesOfColumns","setLeftValuesOfGroups","doingRtl","left_1","left_2","tree","depthFirstDisplayedColumnTreeSearch","extractViewportColumns","filterOutColumnsWithinViewport","getVirtualHeaderGroupRow","extractViewportRows","virtualColIds","testGroup","returnValue","addThisItem","viewportWidth","flexViewportWidth","flexAfterDisplayIndex","indexOfCol","isColFlex","afterResizingCols","knownWidthColumns","flexingColumns","spaceForFlexingColumns","flexingColumnSizes","outer","totalFlex","widthByFlexRule","constrainedWidth","remainingSpace","fireResizedEvent","resetRowHeights","gridWidth","colsToSpread","colsToNotSpread","colsToFireEventFor","finishedResizing","moveToNotSpread","availablePixels","scale","pixelsForLastCol","leftVisibleColumns","rightVisibleColumns","centerVisibleColumns","groupInstanceIdCreator","displayedGroupCreator","createDisplayedGroups","updateDisplayedMap","isDisplayed","getGroupAutoColumns","groupFullWidthRow","isGroupUseEntireRow","suppressAutoColumn","isPivotSuppressAutoColumn","isGroupSuppressAutoColumn","newAutoGroupCols","autoGroupColService","createAutoGroupColumns","autoColsEqual","colsA","colsB","getGridBalancedTree","hasFloatingFilters","getFirstDisplayedColumn","isRtl","queryOrder","Optional","ColumnUtils","getMinColWidth","getMaxColWidth","MAX_SAFE_INTEGER","colDefWidth","colDefInitialWidth","Z","getColWidth","getOriginalPathForColumn","originalBalancedTree","recursePath","DisplayedGroupCreator","sortedVisibleColumns","oldDisplayedGroups","previousRealPath","previousOriginalPath","oldColumnsMapped","mapOldGroupsById","currentOriginalPath","currentRealPath","firstColumn","newGroup","setupParentsIntoColumns","providedGroup","displayedGroups","columnsOrGroups","columnOrGroup","recursive","columnsOrGroup","PropertyKeys","STRING_PROPERTIES","OBJECT_PROPERTIES","ARRAY_PROPERTIES","NUMBER_PROPERTIES","BOOLEAN_PROPERTIES","ALL_PROPERTIES","FUNCTION_PROPERTIES","FRAMEWORK_PROPERTIES","getEventCallbacks","EVENT_CALLBACKS","EVENTS","getCallbackForEvent","copyAttributesToGridOptions","skipEventDeprecationCheck","pGridOptions","keyExists","toBoolean","processOnChange","changesToApply","setEnableCellTextSelection","setQuickFilter","setAutoGroupColumnDef","setDefaultColDef","paginationSetPageSize","setGroupRemoveSingleChildren","setSuppressRowDrag","setSuppressMoveWhenRowDragging","setSuppressRowClickSelection","setSuppressClipboardPaste","dynamicApi","setterName","PUBLIC_EVENTS","EXCLUDED_INTERNAL_EVENTS","isSafari","isIE","isEdge","isChrome","isFirefox","isIOS","invisibleScrollbar","browserScrollbarWidth","rtlNegativeScroll","AgStackComponentsRegistry","componentsMappedByName","setupComponents","componentMeta","addComponent","classUpperCase","componentName","componentClass","getComponentClass","htmlTag","ColDefUtil","Color","fromString","fromHexString","hex","nameToHex","fromRgbaString","parseHex","parts","stringToRgba","NaN","po","contents","rgba","part","fromArray","fromHSB","h","alpha","rgb","HSBtoRGB","padHex","toHexString","toRgbaString","toHSB","RGBtoHSB","H","delta","rc","gc","bc","derive","hueShift","saturationFactor","brightnessFactor","opacityFactor","hsb","brighter","darker","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","documentMode","isBrowserIE","StyleMedia","chrome","webstore","runtime","vendor","InstallTrigger","platform","maxTouchPoints","MSStream","numberTabIndex","getAttribute","isBrowserFirefox","testUpTo","div","clientHeight","initScrollbarWidthAndVisibility","msOverflowStyle","position","clientWidth","prefixes","computedStyle","overflowScrolling","prefixes_1","prefixes_1_1","elementClass","otherElementClass","sibling","firstChild","msMatchesSelector","isFocusable","isNotFocusable","isElementVisible","displayed","addOrRemoveDisabledAttribute","nodeListForEach","cls","maxNest","paddingTop","paddingRight","paddingBottom","paddingLeft","marginTop","marginRight","marginBottom","marginLeft","boxSizing","getElementSize","top","dir","innerHTML","scrollLeft","rtl","isBrowserChrome","isRtlNegativeScroll","isBrowserSafari","cssSelector","removeFromParent","offsetParent","DOMParser","parseFromString","tempDiv","eContainer","htmlTemplate","lastChild","insertAdjacentHTML","eChild","eChildBefore","insertAdjacentElement","orderedChildren","correctCellAtIndex","actualCellAtIndex","eToInsert","documentFragment","keyCamelCase","hyphenToCamelCase","removeProperty","setFixedWidth","formatSize","setFixedHeight","Node","nodeName","isElement","nodeList","attr","eCheckbox","checked","indeterminate","theClass","funcAsString","maxDecimals","splitExponent","sum_x","sum_y","sum_xy","sum_xx","stylesToUse","resParts","styleKey","styleValue","styleKeyDashed","camelCaseToHyphen","eMessage","eBox","loadTemplate","cellRendererPromise","eTarget","gui","getGui","ariaAttributeName","setAriaAttribute","removeAriaAttribute","labelledBy","describedby","setsize","multiSelectable","colCount","colIndex","strData","delimiter","isNewline","char","insideQuotedField","out_row_1","out_column_1","out_position_1","previousChar","currentChar","nextChar","ensureDataExists","totalStringSize","bytes","thousandSeparator","decimalSeparator","formatNumberCommas","total","includeTime","serialised","padStartWidthZeros","getHours","getMinutes","getSeconds","dateStr","timeStr","hours","minutes","seconds","setMinutes","setSeconds","inputValues","validValues","allSuggestions","fuzzyMatches","invalidInputs","inputValue","validValue","invalidInput","fuzzySuggestions","hideIrrelevant","weighted","string_weighted_distances","string_distances","thisSuggestions","relevance","toLocaleLowerCase","suggestion","str1","str2","pairs1","get_bigrams","pairs2","union","hit_count","len1","iconNameClassMap","columnGroupClosed","columnSelectClosed","columnSelectOpen","columnSelectIndeterminate","columnMovePin","columnMoveHide","columnMoveMove","columnMoveLeft","columnMoveRight","columnMoveGroup","columnMoveValue","columnMovePivot","dropNotAllowed","groupContracted","groupExpanded","check","linked","unlinked","colorPicker","groupLoading","maximize","minimize","menuPin","menuValue","menuAddRowGroup","menuRemoveRowGroup","clipboardCopy","clipboardPaste","pivotPanel","rowGroupPanel","valuePanel","columnDrag","smallDown","smallLeft","smallRight","smallUp","sortAscending","sortDescending","sortUnSort","iconName","iconContents","createIconNoSpan","eResult","forceCreate","userProvidedIcon","optionsIcons","getIcons","span","cssClass","setAriaRole","rendererResult","isNodeOrElement","altKey","ctrlKey","metaKey","printableCharacter","numpadDelWithNumlockOnForEdgeOrIe","isBrowserEdge","charCode","isNumpadDelWithNumLockOnForEdge","keyboardEvent","gridOptionsFunc","getSuppressKeyboardEventFunc","colDefFunc","headerRowIndex","e1","e2","pixelCount","diffX","clientX","diffY","clientY","rowNodes","rowNodeOrder","nodeA","nodeB","positionA","positionB","__objectId","atLeastOneOutOfOrder","keyParts","currentNodes","recursiveSearchNodes","childrenAfterGroup","GeneralUtils","AriaUtils","ArrayUtils","BrowserUtils","CsvUtils","DateUtils","DomUtils","EventUtils","FunctionUtils","FuzzyMatchUtils","GenericUtils","IconUtils","KeyboardUtils","MapUtils","MouseUtils","NumberUtils","ObjectUtils","RowNodeUtils","SetUtils","StringUtils","NumberSequence","initValue","nextValue","valToReturn","peek","AgPromiseStatus","IN_PROGRESS","RESOLVED","resolution","waiters","onReject","all","promises","remainingToResolve","combinedValues","ifNotResolvedValue","ifResolved","waiter","TooltipStates","NOTHING","WAITING_TO_SHOW","SHOWING","CustomTooltipFeature","parentComp","DEFAULT_SHOW_TOOLTIP_DELAY","DEFAULT_HIDE_TOOLTIP_DELAY","SHOW_QUICK_TOOLTIP_DIFF","FADE_OUT_TOOLTIP_TIMEOUT","tooltipInstanceCount","postConstruct","getTooltipDelay","isTooltipMouseTrack","onMouseEnter","onMouseLeave","onMouseMove","onMouseDown","onKeyDown","setToDoNothing","isIOSUserAgent","isLastTooltipHiddenRecently","showTooltipTimeoutId","showTooltip","lastMouseEvent","hideTooltip","clearTimeouts","tooltipComp","positionTooltipUnderLastMouseEvent","destroyTooltipComp","lastTooltipHideTime","tooltipPopupDestroyFunc","getTooltipParams","newTooltipComponentCallback","userComponentFactory","getTooltipCompDetails","newAgStackInstance","tooltipInstanceCopy","eGui","translate","addPopupRes","popupService","addPopup","ariaLabel","hideFunc","hideTooltipTimeoutId","positionPopupUnderMouseEvent","mouseEvent","nudgeY","compIdSequence","CssClassManager","cssClassStates","addCssClass","removeCssClass","containsCssClass","addOrRemoveCssClass","addOrRemove","Component","compId","cssClassManager","setTemplate","preConstructOnComponent","usingBrowserTooltips","isEnableBrowserTooltips","getCompId","tooltipText","setTooltip","newTooltipText","tooltipFeature","createChildComponentsFromTags","paramsMap","copyNodeList","childNodes","childNode","childComp","createComponentFromElement","copyAttributesFromNode","addItems","swapComponentForNode","componentParams","ComponentClass","agStackComponentsRegistry","elementGettingCreated","newComponent","setParentComponent","iterateNamedNodeMap","eComponent","replaceChild","swapInComponentForQuerySelectors","thisNoType","iterateOverQuerySelectors","thisPrototype","__agComponentMetaData","currentProtoName","querySelectors","setTemplateFromElement","__agComponent","wireQuerySelectors","createChildComponentsPreConstruct","setResult","refSelector","resultOfQuery","getFocusableElement","parentComponent","getParentComponent","setGui","queryForHtmlElement","queryForHtmlInputElement","childComponent","setDisplayed","EVENT_DISPLAYED_CHANGED","addGuiEventListener","getRefElement","refName","PreConstruct","querySelectorFunc","instanceName","addToObjectProps","ReadOnlyFloatingFilter","columnModel","eFloatingFilterText","setDisabled","setInputAriaLabel","onParentModelChanged","parentModel","parentFilterInstance","filterInstance","getModelAsString","modelAsString","RefSelector","DateCompWrapper","dateComponentParams","eParent","alive","getDateCompDetails","dateComp","afterGuiAttached","tempValue","setDateCompDisabled","setInputPlaceholder","placeholder","OptionsFactory","customFilterOptions","defaultOptions","mapCustomOptions","selectDefaultItem","checkForDeprecatedParams","opt","hideFilterInput","getFilterOptions","filterOption","mutatedFilterOptions","predicate","cv","numberOfInputs","displayKey","defaultOption","firstFilterOption","getDefaultOption","getCustomOption","DEFAULT_FILTER_LOCALE_TEXT","clearFilter","resetFilter","cancelFilter","textFilter","numberFilter","dateFilter","setFilter","empty","andCondition","orCondition","dateFormatOoo","KeyCode","BACKSPACE","TAB","ENTER","ESCAPE","SPACE","LEFT","UP","RIGHT","DOWN","DELETE","F2","PAGE_UP","PAGE_DOWN","PAGE_HOME","PAGE_END","ManagedFocusFeature","eFocusableElement","shouldStopEventPropagation","onTabKeyDown","defaultPrevented","nextRoot","focusService","findNextFocusableElement","FOCUS_MANAGED_CLASS","addKeyDownListeners","onFocusIn","onFocusOut","isStopPropagationForAgGrid","stopPropagationForAgGrid","handleKeyDown","ProvidedFilter","filterNameKey","applyActive","hidePopup","appliedModel","resetTemplate","getFilterTitle","templateString","getCssIdentifier","createBodyTemplate","isReadOnly","providedFilterParams","setParams","resetUiToDefaults","updateUiVisibility","setupOnBtApplyDebounce","isUseApplyButton","createButtonPanel","eButtonsPanel","convertToSet","clickListener","onBtApply","onBtClear","onBtReset","onBtCancel","button","addButton","getDefaultDebounceMs","debounceMs","getDebounceMs","onBtApplyDebounce","setModel","setModelIntoUi","applyModel","currentModel","afterAppliedFunc","onUiChanged","closeOnApply","newModel","getModelFromUi","isModelValid","previousModel","areModelsEqual","afterFloatingFilter","afterDataChange","filterChangedCallback","onNewRowsLoaded","fromFloatingFilter","filterModifiedCallback","debounceDefault","AgAbstractLabel","labelSeparator","labelAlignment","eLabel","labelWidth","setLabelSeparator","setLabel","setLabelWidth","setLabelAlignment","refreshLabel","clearElement","innerText","getLabelId","alignment","eGuiClassList","setElementWidth","AgAbstractField","onValueChange","callbackFn","EVENT_CHANGED","getWidth","setWidth","getPreviousValue","isDisabled","AgPickerField","pickerIcon","ariaRole","isPickerDisplayed","isDestroyingPicker","skipClick","displayId","eDisplayField","setAriaDescribedBy","eWrapper","clickHandler","pickerComponent","showPicker","eIcon","setAriaLabelledBy","setAriaLabel","setInputWidth","AgList","cssIdentifier","itemEls","highlightedEl","pos","setValueByIndex","isDown","itemToHighlight","nextPos","highlightItem","addOptions","listOption","addOption","sanitisedText","escapeString","renderOption","updateIndices","setAriaPosInSet","setAriaSetSize","itemEl","clearHighlighted","fireItemSelected","displayValue","fireChangeEvent","getDisplayValue","refreshHighlighted","ACTIVE_CLASS","setAriaSelected","EVENT_ITEM_SELECTED","AgSelect","listComponent","hideList","listGui","eDocument","destroyMouseWheelFunc","destroyFocusOutFunc","relatedTarget","closeOnEsc","closedCallback","setAriaExpanded","getAbsoluteWidth","getInnerHeight","getPopupParent","positionPopupUnderComponent","keepWithinBounds","fromPicker","AgAbstractInputField","inputType","displayFieldTag","setInputType","eInput","addInputListeners","getInputElement","setInputName","setMaxLength","maxLength","addOrRemoveAttribute","ConditionPosition","One","Two","SimpleFilter","getNumberOfInputs","customOpts","optionsFactory","NOT_BLANK","BLANK","IN_RANGE","onFloatingFilterChanged","setTypeFromFloatingFilter","setValueFromFloatingFilter","eType1","eType2","isDefaultOperator","eJoinOperatorAnd","eJoinOperatorOr","isConditionUiComplete","isAllowTwoConditions","getFilterType","getJoinOperator","condition1","createCondition","condition2","getConditionTypes","aIsSimple","bIsSimple","areSimpleModelsEqual","aCombined","bCombined","combinedModel","orChecked","setConditionIntoUi","simpleModel","doesFilterPass","models","individualConditionPasses","getDefaultFilterOptions","allowTwoConditions","suppressAndOrCondition","alwaysShowBothConditions","defaultJoinOperator","getDefaultJoinOperator","putOptionsIntoDropdown","addChangedListeners","eTypes","createBoilerplateListOption","createCustomListOption","eType","customOption","createValueTemplate","elementBodies","eCondition1Body","eCondition2Body","eJoinOperatorPanel","isConditionVisible","isConditionDisabled","isConditionBodyVisible","forEachInput","setElementDisplayed","setElementDisabled","resetPlaceholder","suppressFocus","firstInput","getInputs","globalTranslate","setElementValue","attachElementOnChange","cb","getValues","filteringLabel","uniqueGroupId","setName","mapValuesFromModel","elPosition","customFilterOption","customFilterResult","evaluateCustomFilter","evaluateNullValue","evaluateNonNullValue","isBlank","NOT_EQUAL","LESS_THAN_OR_EQUAL","GREATER_THAN_OR_EQUAL","CONTAINS","NOT_CONTAINS","STARTS_WITH","ENDS_WITH","ScalarFilter","scalarFilterParams","includeBlanksInEquals","includeBlanksInGreaterThan","includeBlanksInLessThan","includeBlanksInRange","compareResult","compareToResult","DateFilter","minValidYear","maxValidYear","Infinity","dateCondition1FromComp","parseDateTimeFromString","dateFilterParams","defaultComparator","filterDate","yearParser","createDateComponents","createDateCompWrapper","onDateChanged","eCondition1PanelFrom","dateCondition1ToComp","eCondition1PanelTo","dateCondition2FromComp","eCondition2PanelFrom","dateCondition2ToComp","eCondition2PanelTo","DEFAULT_FILTER_OPTIONS","getUTCFullYear","aSimple","bSimple","serialiseDate","SimpleFloatingFilter","getTextFromModel","customOption1","customOption2","conditionToString","isEventFromFloatingFilter","getLastType","lastType","setLastTypeFromModel","canWeEditAfterModelFromParentFilter","isTypeEditable","setEditable","doesFilterHaveSingleInput","uneditableTypes","DateFloatingFilter","isRange","createDateComponent","eReadOnlyText","eDateWrapper","allowEditing","filterValueText","DefaultDateComponent","inputElement","eDateInput","shouldUseBrowserDatePicker","activeElement","browserDatePicker","NumberFilter","filterTo","numberFilterParams","allowedCharPattern","getAllowedCharPattern","agElementTag","stringToFloat","makeNull","numberParser","eValueFrom1","eValueTo1","eValueFrom2","eValueTo2","TextFilter","trimInput","trimmedInput","textFilterParams","matcher","getTextMatcher","formatter","textFormatter","caseSensitive","DEFAULT_FORMATTER","DEFAULT_LOWERCASE_FORMATTER","legacyComparator","textCustomComparator","textMatcher","DEFAULT_MATCHER","cleanValue","formattedValues","cellValueFormatted","matcherParams","TextInputFloatingFilter","eFloatingFilterInput","toDebounce","syncUpWithParentFilter","filterGui","columnDef","NumberFloatingFilter","TextFloatingFilter","TouchListener","preventMouseClick","destroyFuncs","touching","startListener","onTouchStart","moveListener","onTouchMove","endListener","onTouchEnd","getActiveTouch","touchList","identifier","touchStart","touchEvent","touches","moved","touchStartCopy","EVENT_LONG_TAP","touch","areEventsNear","EVENT_TAP","checkForDoubleTap","lastTapTime","DOUBLE_TAP_MILLIS","EVENT_DOUBLE_TAP","HeaderComp","lastMovingChanged","workOutTemplate","currentTemplate","workOutShowMenu","currentShowMenu","workOutSort","currentSort","setDisplayName","firstExistingValue","TEMPLATE","setupTap","setupIcons","setMenu","setupSort","setupFilterIcon","currentDisplayName","displayNameSanitised","eText","addInIcon","eSortAsc","eSortDesc","eSortNone","eMenu","eFilter","isSuppressTouch","touchListener","isSuppressMenuHide","tapMenuButton","menuTouchListener","enableMenu","showColumnMenuAfterMouseClick","enableSorting","progressSort","menuHides","onIpadAndMenuHides","showMenu","menuFactory","showMenuAfterButtonClick","removeSortIcons","eSortOrder","sortUsingCtrl","isMultiSortKeyCtrl","nowTime","onSortChanged","setMultiSortOrder","alwaysHideNoSort","isUnSortIcon","allColumnsWithSorting","getColumnsWithSortingOrdered","indexThisCol","moreThanOneColSorting","showIndex","onFilterChanged","filterPresent","HeaderGroupComp","checkWarnings","setupLabel","addGroupExpandIcon","setupExpandIcons","expandAction","newExpandedValue","addTouchAndClickListeners","eCloseIcon","eOpenIcon","stopPropagationAction","updateIconVisibility","PopupComponent","isPopup","LargeTextCellEditor","focusAfterAttached","cellStartedEdit","eTextArea","setCols","setRows","rows","SelectCellEditor","startedByEnter","eventKey","valueFormatted","valueFormatterService","formatValue","eSelect","isFullRowEdit","stopEditing","focusIn","PopupSelectCellEditor","TextCellEditor","startValue","charPress","getStartValue","highlightAllOnFocus","inputEl","setSelectionRange","focusEl","useFormatter","PopupTextCellEditor","AnimateShowChangeCellRenderer","refreshCount","eValue","eDelta","showDelta","absDelta","valueToUse","deltaUp","setTimerToRemoveDelta","refreshCountCopy","hideDeltaValue","filterManager","isSuppressFlashingCellsBecauseFiltering","AnimateSlideCellRenderer","eCurrent","addSlideAnimation","ePrevious","RowHighlightPosition","Above","Below","RowNode","childrenMapped","rowTop","oldRowTop","selectable","OBJECT_ID_SEQUENCE","__autoHeights","alreadyRendered","highlighted","setDataCommon","updateData","oldData","onDataChanged","updateDataOnDetailNode","checkRowSelectable","createDataChangedEvent","dispatchLocalEvent","detailNode","newData","EVENT_DATA_CHANGED","createLocalRowEvent","getRowIndexString","rowPinned","createDaemonNode","oldNode","daemon","setDataAndId","setId","selectionService","syncInRowNode","isRowSelectableFunc","getIsRowSelectableFunc","setRowSelectable","EVENT_SELECTABLE_CHANGED","getRowIdFunc","parentKeys","getGroupKeys","ID_PREFIX_ROW_GROUP","excludeSelf","isPixelInRange","pixel","setFirstChild","EVENT_FIRST_CHILD_CHANGED","setLastChild","EVENT_LAST_CHILD_CHANGED","setChildIndex","childIndex","EVENT_CHILD_INDEX_CHANGED","setRowTop","EVENT_TOP_CHANGED","clearRowTopAndRowIndex","setRowIndex","setDragging","dragging","EVENT_DRAGGING_CHANGED","setHighlighted","EVENT_HIGHLIGHT_CHANGED","setAllChildrenCount","allChildrenCount","EVENT_ALL_CHILDREN_COUNT_CHANGED","setMaster","master","EVENT_MASTER_CHANGED","setGroup","updateHasChildren","EVENT_GROUP_CHANGED","setRowHeight","estimated","rowHeightEstimated","EVENT_HEIGHT_CHANGED","setRowAutoHeight","cellHeight","checkAutoHeightsDebounced","checkAutoHeights","notAllPresent","nonePresent","newRowHeight","autoHeights","getRowHeightForNode","onRowHeightChanged","EVENT_ROW_INDEX_CHANGED","setUiLevel","uiLevel","EVENT_UI_LEVEL_CHANGED","createGlobalRowEvent","rowNodeEventThrottle","dispatchExpanded","isGroupIncludeFooter","rowRenderer","setDataValue","valueService","dispatchCellChangedEvent","setGroupValue","groupData","columnId","setAggData","newAggData","colIds","getAllKeysInObjects","aggData","oldAggData","footer","__hasChildren","EVENT_HAS_CHILDREN_CHANGED","isEmptyRowGroupNode","EVENT_CELL_CHANGED","resetQuickFilterAggregateText","quickFilterAggregateText","isSelected","depthFirstSearch","calculateSelectedFromChildren","atLeastOneSelected","atLeastOneDeSelected","atLeastOneMixed","childState","selectThisNode","setSelectedInitialValue","clearSelection","suppressFinishActions","setSelectedParams","rangeSelect","isRowPinned","isGroupSelectsChildren","getLastSelectedNode","newRowClicked","allowMultiSelect","isRowSelectionMulti","nodesChanged","doRowRangeSelection","setLastSelectedNode","updatedCount","selectChildNodes","clearOtherNodes","updateGroupsFromChildrenSelections","groupsSelectChildren","lastSelectedNode","nodesToSelect","getNodesInRangeForSelection","isParentOfNode","potentialParent","childrenAfterFilter","EVENT_MOUSE_ENTER","EVENT_MOUSE_LEAVE","getFirstChildOfFirstChild","rowGroupColumn","currentRowNode","isCandidate","foundFirstChildPath","nodeToSwapIn","parentRowNode","isFullWidthCellFunc","getIsFullWidthCellFunc","getRoute","ID_PREFIX_TOP_PINNED","ID_PREFIX_BOTTOM_PINNED","CheckboxSelectionComponent","setPassive","getCheckboxId","onSelectionChanged","onSelectableChanged","showOrHideSelect","onCheckedClicked","isGroupSelectsFiltered","onUncheckedClicked","checkboxCallbackExists","showOrHideSelectListener","DragSourceType","ToolPanel","HeaderCell","RowDrag","ChartPanel","VerticalDirection","Up","Down","HorizontalDirection","Left","Right","DragAndDropService","dragSourceAndParamsList","dropTargets","DragAndDropService_1","ePinnedIcon","createIcon","eHideIcon","eMoveIcon","eLeftIcon","eRightIcon","eGroupIcon","eAggregateIcon","ePivotIcon","eDropNotAllowedIcon","addDragSource","dragSource","allowTouch","dragStartPixels","onDragStart","onDragStop","onDragging","dragService","removeDragSource","sourceAndParams","clearDragSourceParamsList","nudge","eventLastTime","dragItem","getDragItem","lastDropTarget","dragSourceDropTarget","onDragStarted","createGhost","onDragStopped","draggingEvent","createDropTargetEvent","removeGhost","fromNudge","hDirection","getHorizontalDirection","vDirection","getVerticalDirection","positionGhost","validDropTargets","isMouseOnDropTarget","dropTarget","prevTarget","currTarget","prevContainer","getContainer","currContainer","leaveLastTargetIfExists","enterDragTargetIfExists","onDragEnter","dragEnterEvent","setGhostIcon","getIconName","onDragLeave","dragLeaveEvent","getAllContainersFromDropTarget","secondaryContainers","getSecondaryContainers","containers","allContainersIntersect","containers_1","containers_1_1","rect","getBoundingClientRect","bottom","allContainersFromDropTarget","mouseOverTarget","allContainersFromDropTarget_1","allContainersFromDropTarget_1_1","isInterestedIn","addDropTarget","removeDropTarget","hasExternalDropZones","zones","external","findExternalZone","eClientX","eClientY","dropZoneTarget","ghost","eGhost","ghostHeight","browserWidth","getBodyWidth","browserHeight","getBodyHeight","pageY","pageX","defaultView","windowScrollY","pageYOffset","scrollTop","windowScrollX","pageXOffset","eGhostParent","GHOST_TEMPLATE","theme","getTheme","eGhostIcon","dragItemName","isFunction","targetEl","fullscreenElement","shake","defaultIconName","ICON_NOT_ALLOWED","ICON_PINNED","ICON_MOVE","ICON_LEFT","ICON_RIGHT","ICON_GROUP","ICON_AGGREGATE","ICON_PIVOT","ICON_HIDE","isSuppressDragLeaveHidesColumns","RowDragComp","cellValueFn","customGui","suppressVisibilityChange","isCustomGui","setDragElement","checkCompatibility","strategy","isRowDragManaged","ManagedVisibilityStrategy","NonManagedVisibilityStrategy","dragElement","getSelectedCount","isRowDragMultiRow","selection","getSelectedNodes","managed","defaultTextValue","dragItemCount","dragSourceDomDataKey","getDomDataKey","dragAndDropService","VisibilityStrategy","setDisplayedOrVisible","neverDisplayed","shown","isShownSometimes","onSuppressRowDrag","workOutVisibility","isSuppressRowDrag","rowDragFeature","getGridBodyCtrl","getRowDragFeature","shouldPreventRowMove","GroupCellRendererCtrl","eExpanded","eContracted","compClass","topLevelFooter","isTopLevelFooter","embeddedRowMismatch","isEmbeddedRowMismatch","nullValue","skipCell","isGroupHideOpenParents","cellIsBlank","setupShowingValueForOpenedParent","findDisplayedGroupNode","addFullWidthRowDraggerIfNeeded","addExpandAndContract","addCheckboxIfNeeded","addValueElement","setupIndent","isGroupIncludeTotalFooter","rowGroupCols","fullWidth","isEmbedFullWidthRows","pinnedLeftCell","pinnedRightCell","bodyCell","showingValueForOpenedParent","displayedGroupNode","keyOfGroupingColumn","valPresent","addFooterValue","addGroupValue","addChildCount","paramsAdjusted","adjustParamsWithDetailsFromRelatedColumn","innerCompDetails","getInnerCompDetails","setInnerRenderer","relatedColumn","scope","footerValueGetter","footerValue","paramsClone","cloneObject","getFullWidthGroupRowInnerCellRenderer","getInnerRendererDetails","isGroupRowRenderer","relatedColDef","relatedCompDetails","getCellRendererDetails","innerRenderer","suppressCount","updateChildCount","showingGroupForThisNode","isShowRowGroupForThisRow","setChildCount","eExpandedIcon","eContractedIcon","eGroupCell","eGridCell","suppressDoubleClickExpand","onCellDblClicked","onExpandClicked","showExpandAndContractIcons","expandableChangedListener","onRowNodeIsExpandableChanged","onExpandOrContract","reducedLeafNode","leafGroup","displayedGroup","setExpandedDisplayed","setContractedDisplayed","pivotModeAndLeafGroup","addExpandableCss","isTotalFooterNode","Kt","setIndent","suppressPadding","fullWithRow","paddingCount","indentClass","rowDragComp","isUserWantsSelected","paramsCheckbox","checkboxNeeded","detail","cbSelectionComponent_1","setCheckboxVisible","suppressEnterExpand","isElementInEventPath","GroupCellRenderer","compProxy","compDetails","valueToDisplay","setRenderDetails","eChildCount","ctrl","componentPromise","destroyComp","innerCellRenderer","LoadingCellRenderer","failedLoad","setupFailed","setupLoading","eLoadingText","eLoadingIcon","LoadingOverlayComponent","getOverlayLoadingTemplate","DEFAULT_LOADING_OVERLAY_TEMPLATE","localisedTemplate","NoRowsOverlayComponent","getOverlayNoRowsTemplate","DEFAULT_NO_ROWS_TEMPLATE","TooltipComponent","UserComponentRegistry","agGridDefaults","agDateInput","agColumnHeader","agColumnGroupHeader","agTextColumnFloatingFilter","agNumberColumnFloatingFilter","agDateColumnFloatingFilter","agReadOnlyFloatingFilter","agAnimateShowChangeCellRenderer","agAnimateSlideCellRenderer","agGroupCellRenderer","agGroupRowRenderer","agLoadingCellRenderer","agCellEditor","agTextCellEditor","agSelectCellEditor","agPopupTextCellEditor","agPopupSelectCellEditor","agLargeTextCellEditor","agTextColumnFilter","agNumberColumnFilter","agDateColumnFilter","agLoadingOverlay","agNoRowsOverlay","agTooltipComponent","agDeprecatedNames","newComponentName","propertyHolder","animateShowChange","animateSlide","largeText","popupSelect","popupText","richSelect","jsComps","fwComps","registerJsComponent","registerFwComponent","registerDefaultComponent","rawName","translateIfDeprecated","retrieve","createResult","componentFromFramework","registeredViaFrameworkComp","frameworkComponent","jsComponent","isFrameworkComponent","defaultComponent","deprecatedInfo","DateComponent","HeaderComponent","HeaderGroupComponent","CellRendererComponent","CellEditorComponent","InnerRendererComponent","FilterComponent","FloatingFilterComponent","ToolPanelComponent","StatusPanelComponent","FullWidth","FullWidthLoading","FullWidthGroup","FullWidthDetail","FloatingFilterMapper","getFloatingFilterType","filterToFloatingFilterMapping","agSetColumnFilter","agMultiColumnFilter","UserComponentFactory","getHeaderCompDetails","getCompDetails","getHeaderGroupCompDetails","getFullWidthCellRendererDetails","getFullWidthLoadingCellRendererDetails","getFullWidthGroupCellRendererDetails","getFullWidthDetailCellRendererDetails","getCellEditorDetails","getFilterDetails","defaultFilter","getLoadingOverlayCompDetails","getNoRowsOverlayCompDetails","getSetFilterCellRendererDetails","getFloatingFilterCompDetails","defaultFloatingFilter","getToolPanelCompDetails","toolPanelDef","getStatusPanelCompDetails","defObject","defaultName","mandatory","getCompKeys","compName","jsComp","fwComp","paramsFromSelector","popupFromSelector","popupPositionFromSelector","lookupFromRegistry","userComponentRegistry","agComponentUtils","doesImplementIComponent","adaptFunction","paramsMerged","mergeParamsWithApplicationProvidedParams","defObjectAny","selectorFunc","selectorRes","assignComp","providedJsComp","providedFwComp","xxxFrameworkDeprecatedWarn","warningMessage_1","popup","popupPosition","thisComponentConfig","componentMetadataProvider","wrap","mandatoryMethodList","optionalMethodList","deferredInit","initComponent","paramsFromGrid","userParams","getDefaultFloatingFilterType","defaultFloatingFilterType","SideBarDefParser","toParse","DEFAULT_COLUMN_COMP","DEFAULT_FILTER_COMP","comps_1","lookupResult","DEFAULT_BY_KEY","parseComponents","hiddenByDefault","it","toAdd","labelDefault","labelKey","iconKey","valueNumber","isNumeric","GridOptionsWrapper","propertyEventService","domDataKey","random","GridOptionsWrapper_1","agWire","checkForDeprecated","checkForViolations","checkGridOptionsProperties","checkColumnDefProperties","globalEventHandler","isSuppressParentsInRowNodes","isRowModelServerSide","isGroupRemoveSingleChildren","isEnableRangeSelection","isEnableRangeHandle","isEnableFillHandle","warnOfDeprecaredIcon","getScrollbarWidth","userProperties","getOwnPropertyNames","validProperties","checkProperties","validPropertiesAndExceptions","containerName","docsUrl","invalidProperties","fuzzyCheckStrings","domData","setDomData","isRowSelection","isSuppressRowDeselection","isRowMultiSelectWithClick","isSuppressExpandablePivotGroups","getPivotColumnGroupTotals","getPivotRowTotals","isRowModelInfinite","isRowModelViewport","isSuppressFocusAfterRefresh","isSuppressBrowserResizeObserver","isSuppressMaintainUnsortedOrder","isSuppressClearOnFillReduction","isShowToolPanel","getSideBar","isSuppressRowTransform","isAllowDragFromColumnsToolPanel","isEnableCellChangeFlash","getCellFlashDelay","getCellFadeDelay","isSuppressRowHoverHighlight","isColumnHoverHighlight","isGroupMaintainOrder","getAutoGroupColumnDef","isGroupMultiAutoColumn","matchesGroupDisplayType","matchesTreeDataDisplayType","isGroupRemoveLowestSingleChildren","isGroupSuppressBlankHeader","isSuppressRowClickSelection","isSuppressCellFocus","isSuppressMultiSort","isSuppressScrollOnNewData","isSuppressScrollWhenPopupsAreOpen","isRowDragEntireRow","isSuppressMoveWhenRowDragging","isSuppressHorizontalScroll","isSuppressMaxRenderedRowRestriction","isExcludeChildrenWhenTreeDataFiltering","isAlwaysShowHorizontalScroll","isAlwaysShowVerticalScroll","isDebounceVerticalScrollbar","isSuppressLoadingOverlay","isSuppressNoRowsOverlay","getPinnedTopRowData","getPinnedBottomRowData","isFunctionsPassive","isSuppressChangeDetection","isSuppressAnimationFrame","isCacheQuickFilter","isEnterMovesDownAfterEdit","isEnterMovesDown","isUndoRedoCellEditing","getUndoRedoCellEditingLimit","getRowStyleFunc","getRowClassFunc","getServerSideStoreType","getServerSideStoreParamsFunc","getCreateChartContainerFunc","getBlockLoadDebounceMillis","getPostProcessPopupFunc","getPaginationNumberFormatterFunc","getChildCountFunc","getIsApplyServerSideTransactionFunc","getDefaultGroupOrderComparator","getFullWidthCellRendererParams","isDetailRowAutoHeight","getBusinessKeyForNodeFunc","isReadOnlyEdit","isImmutableData","isEnsureDomOrder","isEnableCharts","isSingleClickEdit","isSuppressClickEdit","isStopEditingWhenCellsLoseFocus","getGroupDefaultExpanded","getMaxConcurrentDatasourceRequests","getMaxBlocksInCache","getCacheOverflowSize","getPaginationPageSize","isPaginateChildRows","getCacheBlockSize","oneOrGreater","getInfiniteInitialRowCount","isPurgeClosedRowNodes","isSuppressPaginationPanel","getRowData","getRowGroupPanelShow","getPivotPanelShow","isAngularCompileRows","isAngularCompileFilters","isDebug","getDatasource","getViewportDatasource","getServerSideDatasource","isAccentedSort","isEnableCellExpressions","isSuppressMiddleClickScrolls","isPreventDefaultOnContextMenu","isSuppressPreventDefaultOnMouseWheel","isSuppressRowVirtualisation","isSuppressContextMenu","isAllowContextMenuWithControlKey","isSuppressCopyRowsToClipboard","isCopyHeadersToClipboard","isCopyGroupHeadersToClipboard","isSuppressClipboardPaste","isSuppressLastEmptyLineOnPaste","isPagination","isSuppressEnterpriseResetOnNewColumns","getProcessDataFromClipboardFunc","getAsyncTransactionWaitMillis","isSuppressMovableColumns","isAnimateRows","isSuppressColumnMoveAnimation","isSuppressAggAtRootLevel","isSuppressAggFilteredOnly","isShowOpenedGroup","isReactUi","isSuppressReactUi","getFillHandleDirection","getFillOperation","isSuppressMultiRangeSelection","isPaginationAutoPageSize","isRememberGroupStateWhenNewData","getAggFuncs","getSortingOrder","getAlignedGrids","isMasterDetail","isKeepDetailRows","getKeepDetailRowsCount","getIsRowMasterFunc","getGroupRowRendererParams","isSuppressAutoSize","isEnableCellTextSelection","isSuppressClipboardApi","isFunctionsReadOnly","isEnableCellTextSelect","getDefaultExportParams","capitalise","isSuppressCsvExport","isAllowShowChangeAfterFilter","allowShowChangeAfterFilter","isSuppressExcelExport","getDataPathFunc","getIsServerSideGroupFunc","getIsServerSideGroupOpenByDefaultFunc","getIsGroupOpenByDefaultFunc","getServerSideGroupKeyFunc","getGroupRowAggNodesFunc","getContextMenuItemsFunc","getMainMenuItemsFunc","getNavigateToNextHeaderFunc","getTabToNextHeaderFunc","getNavigateToNextCellFunc","getTabToNextCellFunc","getGridTabIndex","isValueCache","isValueCacheNeverExpires","isDeltaSort","isAggregateOnlyChangedColumns","getSendToClipboardFunc","getProcessRowPostCreateFunc","getProcessCellForClipboardFunc","getProcessHeaderForClipboardFunc","getProcessGroupHeaderForClipboardFunc","getProcessCellFromClipboardFunc","getViewportRowModelPageSize","getViewportRowModelBufferSize","zeroOrGreater","isServerSideSortingAlwaysResets","isServerSideFilteringAlwaysResets","getPostSortFunc","getChartToolbarItemsFunc","getChartThemeOverrides","getCustomChartThemes","getChartThemes","getClipboardDelimiter","force","gridOptionsNoType","getAutoSizePadding","getHeaderHeight","getFromTheme","getFloatingFiltersHeight","getGroupHeaderHeight","getPivotHeaderHeight","getPivotGroupHeaderHeight","capitalisedType","isSuppressModelUpdateAfterUpdateTransaction","ownerDocument","MIN_COL_WIDTH","measuredMin","getRowBuffer","getRowBufferInPixels","getRowHeightAsNumber","rowDeselection","enableMultiRowDragging","checkRenamedProperty","oldProp","newProp","groupRowInnerRendererParams","innerRendererParams","innerRendererFramework","clipboardDeliminator","treeDataViolations","localisedText","callbackMethodName","setRowHeightVariable","getDefaultRowHeight","isGetRowHeightFunction","allowEstimate","defaultRowHeight","isDynamicRowHeight","getListItemHeight","chartMenuPanelWidth","sassVariableName","getSassVariable","toMatch","supplied","groupDisplayTypeValues","treeDataDisplayTypeValues","PROP_HEADER_HEIGHT","PROP_GROUP_REMOVE_SINGLE_CHILDREN","PROP_GROUP_REMOVE_LOWEST_SINGLE_CHILDREN","PROP_PIVOT_HEADER_HEIGHT","PROP_SUPPRESS_CLIPBOARD_PASTE","PROP_GROUP_HEADER_HEIGHT","PROP_PIVOT_GROUP_HEADER_HEIGHT","PROP_NAVIGATE_TO_NEXT_CELL","PROP_TAB_TO_NEXT_CELL","PROP_NAVIGATE_TO_NEXT_HEADER","PROP_TAB_TO_NEXT_HEADER","PROP_IS_EXTERNAL_FILTER_PRESENT","PROP_DOES_EXTERNAL_FILTER_PASS","PROP_FLOATING_FILTERS_HEIGHT","PROP_SUPPRESS_ROW_CLICK_SELECTION","PROP_SUPPRESS_ROW_DRAG","PROP_SUPPRESS_MOVE_WHEN_ROW_DRAG","PROP_GET_ROW_CLASS","PROP_GET_ROW_STYLE","PROP_GET_ROW_HEIGHT","PROP_POPUP_PARENT","PROP_DOM_LAYOUT","PROP_FILL_HANDLE_DIRECTION","PROP_GROUP_ROW_AGG_NODES","PROP_GET_BUSINESS_KEY_FOR_NODE","PROP_GET_CHILD_COUNT","PROP_PROCESS_ROW_POST_CREATE","PROP_GET_ROW_NODE_ID","PROP_IS_FULL_WIDTH_CELL","PROP_IS_ROW_SELECTABLE","PROP_IS_ROW_MASTER","PROP_POST_SORT","PROP_GET_DOCUMENT","PROP_POST_PROCESS_POPUP","PROP_DEFAULT_GROUP_ORDER_COMPARATOR","PROP_PAGINATION_NUMBER_FORMATTER","PROP_GET_CONTEXT_MENU_ITEMS","PROP_GET_MAIN_MENU_ITEMS","PROP_PROCESS_CELL_FOR_CLIPBOARD","PROP_PROCESS_CELL_FROM_CLIPBOARD","PROP_SEND_TO_CLIPBOARD","PROP_PROCESS_TO_SECONDARY_COLDEF","PROP_PROCESS_SECONDARY_COL_GROUP_DEF","PROP_GET_CHART_TOOLBAR_ITEMS","PROP_GET_SERVER_SIDE_STORE_PARAMS","PROP_IS_SERVER_SIDE_GROUPS_OPEN_BY_DEFAULT","PROP_IS_APPLY_SERVER_SIDE_TRANSACTION","PROP_IS_SERVER_SIDE_GROUP","PROP_GET_SERVER_SIDE_GROUP_KEY","ChangedPath","keepingColumns","rootNode","nodeIdsToColumns","mapToItems","setInactive","depthFirstSearchChangedPath","pathItem","depthFirstSearchEverything","traverseEverything","forEachChangedNodeDepthFirst","traverseLeafNodes","executeFromRootNode","createPathItems","newEntryCount","populateColumnsMap","linkPathItems","thisItem","parentItem","addParentNode","canSkip","getValueColumnsForNode","colsForThisNode","getNotValueColumnsForNode","SelectionService","onRowSelected","selectedNodes","selectedRows","removeGroupsFromSelection","changedPath","getRootNode","getNodeForIdIfSelected","rowNodeToKeepSelected","groupsToRefresh","otherRowNode","syncInOldRowNode","syncInNewRowNode","getBestCostNodeSelection","topLevelNodes","getTopLevelNodes","traverse","l","setRowModel","nodeId","deselectAllRowNodes","justFiltered","rowModelClientSide","selectAllRowNodes","clientSideRowModel","selectNode","tryMulti","deselectIndex","getRow","deselectNode","selectIndex","ColumnApi","isPinning","getAllDisplayedVirtualColumns","setColumnWidth","getLeftDisplayedColumnGroups","getCenterDisplayedColumnGroups","getRightDisplayedColumnGroups","getAllDisplayedColumnGroups","getPrimaryColumns","cleanDownReferencesToAvoidMemoryLeakInCaseApplicationIsKeepingReferenceToDestroyedGrid","setColumnState","getState","resetState","getAggregationColumns","removeAggregationColumn","removeAggregationColumns","addAggregationColumn","addAggregationColumns","setColumnAggFunction","getDisplayNameForCol","SelectionHandleType","FILL","RANGE","CellRangeType","VALUE","DIMENSION","CSS_CELL_RANGE_SELECTED","CellRangeFeature","cellCtrl","setComp","cellComp","onRangeSelectionChanged","rangeCount","rangeService","getCellRangeCount","getCellPosition","hasChartRange","getHasChartRange","isSingleCell","updateRangeBorders","refreshHandle","rangeBorders","getRangeBorders","isRight","isBottom","isLeft","isMoreThanOneCell","cellRanges","getCellRanges","updateRangeBordersIfRangeCount","leftCol","rightCol","thisCol","ranges","isCellInSpecificRange","startRow","getRangeStartRow","endRow","getRangeEndRow","rowPositionUtils","sameRow","shouldHaveSelectionHandle","selectionHandle","addSelectionHandle","rangesLen","cellRange","cellPosition","isFillHandleAvailable","isRangeHandleAvailable","handleIsAvailable","isEditing","isCategoryCell","isContiguousRange","isBottomRightCell","cellRangeType","selectionHandleFactory","createSelectionHandle","CellPositionFeature","setupColSpan","setupRowSpan","onLeftChanged","onWidthChanged","applyRowSpan","onDisplayColumnsChanged","colsSpanning","getColSpanningList","getCellWidth","modifyLeftForPrintLayout","getCellLeft","leftPosition","isPrintLayout","singleRowHeight","CellCustomStyleFeature","staticClasses","applyUserStyles","applyCellClassRules","applyClassesFromColDef","cellClassParams","$scope","stylingService","processClassRules","cellStyleParams","cellStyleFunc","setUserStyles","getStaticCellClasses","TooltipFeature","setupTooltip","browserTooltips","updateTooltipText","createTooltipFeatureIfNeeded","getTooltipValue","genericTooltipFeature","refreshToolTip","getLocation","getRowIndex","getTooltipText","getValueFormatted","Beans","doingMasterDetail","serverSideRowModel","CellMouseListenerFeature","onMouseEvent","onMouseOut","onMouseOver","isDoubleClickOnIPad","cellClickedEvent","startRowOrCellEdit","nowMillis","lastIPadMouseClickEvent","cellDoubleClickedEvent","isRightClickInExistingRange","forceBrowserFocus","isFocusableFormField","focusCell","containsWidget","thisCell","extendLatestRangeToCell","setRangeToCell","isCellInAnyRange","isElementChildOfClass","mouseStayingInsideCell","cellMouseOutEvent","columnHoverService","clearMouseOver","cellMouseOverEvent","setMouseOver","cellContainsTarget","cellContainsRelatedTarget","CellKeyboardListenerFeature","rowCtrl","onEnterKeyDown","onF2KeyDown","onEscapeKeyDown","onBackspaceOrDeleteKeyPressed","onNavigationKeyPressed","isRangeSelectionEnabled","onShiftRangeSelect","navigationService","endCell","extendLatestRangeInDirection","ensureCellVisible","stopEditingAndFocus","stopRowOrCellEdit","onKeyPress","pressedChar","onSpaceKeyPressed","isEventFromPrintableCharacter","currentSelection","newSelection","DndSourceComp","eCell","checkVisibility","dragEvent","providedOnRowDrag","dataTransfer","setDragImage","jsonData","defaultOnRowDrag","CSS_CELL_NOT_INLINE_EDITING","CellCtrl","suppressRefreshCell","createCellPosition","addFeatures","cellPositionFeature","cellCustomStyleFeature","cellMouseListenerFeature","cellKeyboardListenerFeature","cellRangeFeature","addTooltipFeature","getValueUsingField","eCellWrapper","printLayout","startEditing","gow","updateAndFormatValue","addDomData","onCellFocused","applyStaticCssClasses","setWrapText","onFirstRightPinnedChanged","onLastLeftPinnedChanged","onColumnHover","setupControlComps","setupAriaExpanded","setupAutoHeight","setAriaColIndex","setTabIndex","colIdSanitised","setColId","setRole","showValue","eAutoHeightContainer","eParentCell","minRowHeight","measureHeight","timesCalled","newHeight","destroyResizeObserver","resizeObserverService","observeResize","forceNewCellRendererInstance","createCellRendererParams","includeSelection","isIncludeControl","includeRowDrag","includeDndSource","setIncludeSelection","setIncludeDndSource","setIncludeRowDrag","isForceWrapper","showingAllGroups","showingThisGroup","refreshShouldDestroy","rowDragChanged","dndSourceChanged","editorParams","createCellEditorParams","setEditing","setEditDetails","inPopup","editingInPopup","setInlineEditingClass","stopRowEditing","onPopupEditorClosed","takeValueFromCellEditor","noValueResult","newValueExists","getCellEditor","isCancelAfterEnd","saveNewValue","dispatchEventForSaveValueReadOnly","getValueFromValueService","refreshCell","forceRefresh","suppressFlash","dispatchEditingStoppedEvent","editingStoppedEvent","editingInline","popupEditorShowing","setInlineEditingCss","hackSayEditingInPopup","eParentOfValue","getParentOfValue","registerRowDragger","rowDraggerElement","addRowCompListener","setFocusOutOnEditor","focusOut","setFocusInOnEditor","onCellChanged","valuesDifferent","processingFilterChange","flashCell","suppressNavigateAfterEdit","navigateAfterEdit","delays","animateCell","flashDelay","fadeDelay","cssName","fullName","animationFullName","onFlashCells","cellId","cellPositionUtils","createId","cells","callValueFormatter","oldValueFormatted","valuesAreEqual","getComp","lockedClosedGroup","isOpenGroup","groupFootersEnabled","groupAlwaysShowAggData","DOM_DATA_KEY_CELL_CTRL","domEvent","colIdx","getBeans","htmlElement","startRowEditing","getRowCtrl","getRowPosition","onRowIndexChanged","isCellFocused","fullRowEdit","isHovered","onNewColumnsLoaded","dispatchCellContextMenuEvent","cellContextMenuEvent","getCellRenderer","createSelectionCheckbox","cbSelectionComponent","createDndSource","dndSourceComp","customElement","customRowDragComp","newComp","createRowDragComp","clientSideRowModelActive","AngularRowUtils","createChildScopeOrNull","parentScope","newChildScope","$new","scopeDestroyFunc","$destroy","RowContainerEventsFeature","addMouseListeners","mockContextMenuForIPad","addKeyboardEvents","processKeyboardEvent","processMouseEvent","mouseEventService","isEventFromThisGrid","rowComp","getRowForEvent","getRenderedCellForEvent","handleContextMenuMouseEvent","rowCon","RowCtrl","gridBodyCon","anchorToElement","getGridBodyElement","contextMenuFactory","onContextMenu","getCtrlForEvent","processCellKeyboardEvent","isFullWidth","processFullWidthRowKeyboardEvent","isUserSuppressingKeyboardEvent","handlePageScrollingKey","doGridOperations","cellKeyDownEvent","cellKeyPressEvent","onKeyboardNavigate","createRowEvent","onCtrlAndA","onCtrlAndC","onCtrlAndV","onCtrlAndD","undoRedoService","pinnedRowModel","paginationProxy","isRowsToRender","floatingStart","floatingEnd","rowEnd","setCellRange","rowStartIndex","rowStartPinned","rowEndIndex","rowEndPinned","columnStart","columnEnd","clipboardService","copyToClipboard","pasteFromClipboard","copyRangeDown","ViewportSizeFeature","centerContainer","centerContainerCon","whenReady","listenForResize","onScrollbarWidthChanged","onCenterViewportResized","registerViewportResizeListener","registerBodyViewportResizeListener","checkViewportAndScrolls","isViewportVisible","getCenterWidth","centerWidth","bodyHeight","updateScrollVisibleService","checkBodyHeight","onHorizontalViewportChanged","getScrollFeature","checkScrollLeft","getBodyViewportElement","updateScrollVisibleServiceImpl","horizontalScrollShowing","isHorizontalScrollShowing","verticalScrollShowing","isVerticalScrollShowing","scrollVisibleService","setScrollsVisible","setVerticalScrollPaddingVisible","isViewportHScrollShowing","getViewportScrollLeft","SetPinnedLeftWidthFeature","onPinnedLeftWidthChanged","pinnedWidthService","getPinnedLeftWidth","SetPinnedRightWidthFeature","onPinnedRightWidthChanged","getPinnedRightWidth","SetHeightFeature","onHeightChanged","maxDivHeightScaler","getUiContainerHeight","heightString","DragListenerFeature","CenterWidthFeature","RowContainerName","CENTER","FULL_WIDTH","TOP_LEFT","TOP_RIGHT","TOP_CENTER","TOP_FULL_WIDTH","BOTTOM_LEFT","BOTTOM_RIGHT","BOTTOM_CENTER","BOTTOM_FULL_WIDTH","RowContainerType","ContainerCssClasses","ViewportCssClasses","WrapperCssClasses","RowContainerCtrl","getRowContainerCssClasses","viewport","onScrollVisibilityChanged","onDisplayedColumnsWidthChanged","onDisplayedRowsChanged","forContainers","viewportSizeFeature","registerWithCtrlsService","registerCenterRowContainerCtrl","registerLeftRowContainerCtrl","registerRightRowContainerCtrl","registerTopCenterRowContainerCtrl","registerTopLeftRowContainerCon","registerTopRightRowContainerCtrl","registerBottomCenterRowContainerCtrl","registerBottomLeftRowContainerCtrl","registerBottomRightRowContainerCtrl","names","getContainerElement","getViewportSizeFeature","eViewport","addPreventScrollWhileDragging","listenOnDomOrder","stopHScrollOnPinnedRows","allNoFW","allMiddle","allCenter","allRight","setContainerWidth","setDomOrder","setViewportHeight","preventScroll","isDragging","cancelable","getCenterViewportScrollLeft","getInnerWidth","getScrollLeft","unsubscribeFromResize","getViewportElement","setContainerTranslateX","getHScrollPosition","setCenterViewportScrollLeft","setScrollLeft","fullWithContainer","rowsThisContainer","getRowCtrls","fullWidthRow","embedFW","setRowCtrls","getTopRowCtrls","getBottomRowCtrls","RowType","Normal","animateIn","useAnimationFrameForCreate","allRowGuis","centerCellCtrls","leftCellCtrls","rightCellCtrls","lastMouseDownOnDragger","updateColumnListsPending","paginationPage","getCurrentPage","setAnimateFlags","rowFocused","isRowFocused","setupAngular1Scope","rowLevel","rowCssClassCalculator","calculateRowLevel","setRowType","addListeners","setInitialRowTop","containerType","leftGui","rightGui","fullWidthGui","centerGui","initialiseRowComps","isCacheable","rowType","setCached","rg","updateRowIndexes","setFocusedClasses","setStylesFromGridOptions","updateColumnLists","slideRowIn","executeNextVMTurn","onTopChanged","fadeRowIn","businessKey","getRowBusinessKey","rowIdSanitised","businessKeySanitised","getInitialRowClasses","setRowId","setRowBusinessKey","DOM_DATA_KEY_ROW_CTRL","createTask","addHoverFunctionality","setupFullWidth","addRowDraggerToRow","addDestroyTask","executeProcessRowPostCreateFunc","getPinnedForContainer","createFullWidthParams","masterDetailModuleLoaded","showFullWidth","getScope","scopeResult","getCellElement","getCellCtrl","eRow","ePinnedLeftRow","ePinnedRightRow","addRenderedRowListener","isStub","stub","isDetailCell","isFullWidthGroup","updateColumnListsImpl","createCellCtrls","addCell","colInstanceId","prevCellCtrl","isCellEligibleToBeRemoved","centerCols","leftCols","rightCols","setCellCtrls","nextContainerPinned","REMOVE_CELL","focused","column_1","oldRowTopExists","editingRow","getRowType","refreshFullWidth","tryRefresh","getFullWidthCellRenderer","fullWidthSuccess","centerSuccess","leftSuccess","rightSuccess","updateExpandedCss","onRowNodeDataChanged","onRowNodeCellChanged","onRowNodeHighlightChanged","onRowNodeDraggingChanged","onUiLevelChanged","onPaginationPixelOffsetChanged","onVirtualColumnsChanged","onCellFocusChanged","onPaginationChanged","onModelUpdated","onColumnMoved","addListenersForCellComps","getAllCellCtrls","postProcessCss","postProcessClassesFromGridOptions","postProcessRowClassRules","postProcessRowDragging","belowOn","currentFullWidthComp","lastFocusedCell","currentFullWidthContainer","isFullWidthContainerFocused","nextEl","onFullWidthRowFocused","isFocused","removeCellCtrl","cellCtrlToRemove","onRowDblClick","onRowClick","onRowMouseDown","createRowEventWithSource","agEvent","multiSelectKeyPressed","shiftKeyPressed","multiSelectOnClick","rowDeselectionWithCtrl","setupDetailRowAutoHeight","eDetailGui","checkRowSizeFunc","resizeObserverDestroyFunc","$compile","addFullWidthRowDragging","newLevel","classToAdd_1","classToRemove_1","isFirstRowOnPage","getPageFirstRow","isLastRowOnPage","getPageLastRow","refreshFirstAndLastRowStyles","newFirst","newLast","firstRowOnPage","lastRowOnPage","event_1","setEditingRow","sourceRenderedCell","cssClasses","processClassesFromGridOptions","classStr","processRowClassRules","rowStyles","processStylesFromGridOptions","businessKeyForNodeFunc","rowContainerType","rowIsEven","rowStyleFuncResult","rowStyleFunc","createAriaLabel","isUseAnimationFrameForCreate","roundRowTopToBounds","getVScrollPosition","minPixel","applyPaginationOffset","maxPixel","fromFunction","destroyFirstPass","setupRemoveAnimation","destroySecondPass","destroyCellCtrls","ctrls","currentPage","topPx","getPixelOffset","pixels","afterPaginationPixels","afterScalingPixels","rowContainerHeightService","getRealPixelPosition","setRowTopStyle","getInitialRowTop","initialTop","getInitialTransform","initialTransform","setTop","setTransform","rowIndexStr","headerRowCount","headerNavigationService","ariaRowIndex","setAriaRowIndex","getPinnedLeftRowElement","getPinnedRightRowElement","getBodyRowElement","getFullWidthRowElement","RowRenderer","destroyFuncsForColumnListeners","rowCtrlsByRowIndex","zombieRowCtrls","allRowCtrls","topRowCtrls","bottomRowCtrls","refreshInProgress","gridBodyCtrl","onPageLoaded","onPinnedRowDataChanged","redrawAfterScroll","onDomLayoutChanged","registerCellEventListeners","initialiseCache","redrawAfterModelUpdate","countProp","cachedRowCtrls","RowCtrlCache","updateAllRowCtrls","liveList","getAllValuesInObject","zombieList","cachedList","getEntries","getFullWidthRowCtrls","refreshListenersToColumnsForCellComps","removeGridColumnListeners","forEachCellWithThisCol","leftChangedListener","widthChangedListener","firstRightPinnedChangedListener","lastLeftPinnedChangedListener","destroyRows","datasourceChanged","firstRenderedRow","lastRenderedRow","rowIndexesToRemove","removeRowCtrls","recycleRows","keepRenderedRows","newPage","onlyBody","getAllCellsForColumn","getAllRowCtrls","refreshFloatingRowComps","refreshFloatingRows","rowComps","getRenderedIndexesForRowNodes","renderedRow","partialRefresh","indexesToRemove","getCellToRestoreFocusToAfterRefresh","suppressKeepFocus","getFocusCellToUseAfterRefresh","cellDomData","rowDomData","getLockOnRefresh","updateContainerHeights","scrollToTopIfNewData","rowsToRecycle","removeAllRowComps","focusedCellRecycled","isFocusedCellGettingRecycled","redraw","dispatchDisplayedRowsChanged","restoreFocusedCell","releaseLockOnRefresh","scrollToTop","suppressScrollToTop","setModelHeight","containerHeight","getCurrentPageHeight","flashCells","getCellCtrls","refreshCellParams","fullWidthRowCtrl","getCellRendererInstances","getCellEditorInstances","getEditingCells","mapRowNodes","normal","isRowInMap","rowIdsMap","floating","colIdsMap","processRow","stubNodeIndexes","nodesByIdMap","rowsToRemove","indexToRemove","removeRowCompsNotToDraw","indexesToDraw","indexesToDrawMap","indexesNotToDraw","calculateIndexesToDraw","createArrayOfNumbers","checkRowToDraw","indexStr","doNotUnVirtualiseRow","afterScroll","updateOffset","workOutFirstAndLastRowsToRender","rowCtrls","createOrUpdateRowCtrl","destroyRowCtrls","checkAngularCompile","updateRowCount","pinningLeft","pinningRight","redrawFullWidthEmbeddedRows","fullWidthCtrl","rowNodesMap","refreshFullWidthRows","rowNodesToRefresh","selectivelyRefreshing","idsToRefresh","createRowCon","rowCtrlsMap","executeInAWhileFuncs","addRow","executeInAWhile","$apply","bufferPixels","rowHeightsChanged","firstPixel","lastPixel","paginationOffset","getCurrentPagePixelRange","pageFirstPixel","pageLastPixel","divStretchOffset","getDivStretchOffset","bodyVRange","bodyBottomPixel","ensureAllRowsInRangeHaveHeightsCalculated","firstRowIndex","getRowIndexAtPixel","lastRowIndex","pageFirstRow","pageLastRow","rowLayoutNormal","suppressRowCountRestriction","rowBufferMaxSize","firstRow","lastRow","event_2","topPixel","bottomPixel","ensureRowHeightsValid","getFirstVirtualRenderedRow","getLastVirtualRenderedRow","rowHasFocus","isRowNodeFocused","rowIsEditing","isRowPresent","rowCtrlFromCache","getRenderedNodes","renderedRows","getRowByPosition","rowPosition","rowComponent","gridRow","isRangeInRenderedViewport","endIndex","maxCount","entriesMap","entriesList","rowCtrlToDestroy","removeFromCache","rowNodeId","AbstractHeaderCellComp","getCtrl","HeaderCellComp","headerCompVersion","getColumnGroupChild","actualElement","cssClassName","setAriaSort","removeAriaSort","setUserCompDetails","getUserCompInstance","headerComp","eResize","selectAllGui","getSelectAllGui","destroyHeaderComp","headerCompGui","versionCopy","afterCompCreated","setDragSource","HeaderGroupCellComp","addOrRemoveResizableCssClass","afterHeaderCompCreated","headerGroupComp","HeaderFilterCellComp","addOrRemoveBodyCssClass","eFloatingFilterBody","addOrRemoveButtonWrapperCssClass","eButtonWrapper","setCompDetails","getFloatingFilterComp","compPromise","setMenuIcon","eButtonShowMainFilter","HeaderRowType","COLUMN_GROUP","COLUMN","FLOATING_FILTER","HeaderRowComp","headerComps","extraClass","setHeight","setHeaderCtrls","destroyHeaderCtrls","oldComps","createHeaderComp","comps","elementsInOrder","setDomChildOrder","headerCtrl","HeaderNavigationDirection","HeaderNavigationService","centerHeaderContainer","getHeaderRowContainerCtrl","getHeaderRowType","navigateVertically","fromHeader","getFocusedHeader","rowLen","isUp","nextRow","nextFocusColumn","skipColumn","currentRowType","focusHeaderPosition","headerPosition","allowUserOverride","navigateHorizontally","fromTab","nextHeader","normalisedDirection","focusedHeader","headerPositionUtils","findHeader","focusNextHeaderRow","currentIndex","nextPosition","findColAtEdgeForHeaderRow","scrollToColumn","columnToScrollTo","ensureColumnVisible","horizontallyScrollHeaderCenterAndFloatingCenter","GridHeaderCtrl","onPivotModeChanged","setupHeaderHeight","registerGridHeaderCtrl","totalHeaderHeight","groupHeight","numberOfFloating","numberOfGroups","setHeightAndMinHeight","focusNextGridCoreContainer","clearFocusedHeader","MoveColumnFeature","needToMoveLeft","needToMoveRight","visibleState_1","visibleState","ensureIntervalCleared","allowedCols","normaliseX","getCenterRowContainerCtrl","checkCenterForScrolling","xAdjustedForScroll","firstVisiblePixel","lastVisiblePixel","ensureIntervalStarted","fromEnter","lastDraggingEvent","mouseXNormalised","hDirectionNormalised","normaliseDirection","dragSourceType","attemptMoveColumns","calculateOldIndex","movingCols","gridCols","sortNumerically","firstIndex","allMovingColumns","mouseX","draggingLeft","draggingRight","allMovingColumnsOrdered","validMoves","calculateValidMoves","firstValidMove","constrainDirection","move","allDisplayedCols","allGridCols","movingDisplayedCols","otherDisplayedCols","otherGridCols","displayIndex","availableWidth","widthOfMovingDisplayedCols_1","numberComparator","displacedCol","isColumnHidden","movingIntervalId","intervalCount","failedMoveAttempts","moveInterval","pixelsToMove","pixelsMoved","scrollFeature","scrollHorizontally","columnsThatCanPin","BodyDropPivotTarget","columnsToAggregate","columnsToGroup","columnsToPivot","clearColumnsList","dragColumns","BodyDropTarget","eSecondaryContainers","leftRowContainerCtrl","bottomLeftRowContainerCtrl","topLeftRowContainerCtrl","rightRowContainerCtrl","bottomRightRowContainerCtrl","topRightRowContainerCtrl","centerRowContainerCtrl","bottomCenterRowContainerCtrl","topCenterRowContainerCtrl","moveColumnFeature","bodyDropPivotTarget","currentDropListener","isDropColumnInPivotMode","AbstractHeaderCellCtrl","columnGroupChild","parentRowCtrl","lastFocusEvent","isUserSuppressingHeaderKeyboardEvent","DOM_DATA_KEY_HEADER_CTRL","getParentRowCtrl","ExcelFactoryMode","SINGLE_SHEET","MULTI_SHEET","ClientSideRowModelSteps","EVERYTHING","FILTER","SORT","MAP","AGGREGATE","PIVOT","GridApi","detailGridInfoMap","destroyCalled","registerOverlayWrapperComp","overlayWrapperComp","registerSideBarComp","sideBarComp","infiniteRowModel","__getAlignedGridService","alignedGridsService","__getContext","addDetailGridInfo","gridInfo","removeDetailGridInfo","getDetailGridInfo","forEachDetailGridInfo","getDataAsCsv","csvCreator","getExcelExportMode","baseParams","exportMode","getDataAsExcel","excelCreator","getFactoryMode","getSheetDataForExcel","setFactoryMode","getMultipleSheetsAsExcel","exportMultipleSheetsAsExcel","setEnterpriseDatasource","setServerSideDatasource","setGridAriaProperty","eGrid","ariaProperty","setDatasource","setViewportDatasource","immutableService","setFloatingTopRowData","setPinnedTopRowData","setFloatingBottomRowData","setPinnedBottomRowData","getFloatingTopRowCount","getPinnedTopRowCount","getFloatingBottomRowCount","getPinnedBottomRowCount","getFloatingTopRow","getPinnedTopRow","getFloatingBottomRow","getPinnedBottomRow","expireValueCache","getVerticalPixelRange","getHorizontalPixelRange","setAlwaysShowHorizontalScroll","setAlwaysShowVerticalScroll","refreshToolPanel","setFunctionsReadOnly","refreshHeader","isAnyFilterPresent","isColumnFilterPresent","isAdvancedFilterPresent","isQuickFilterPresent","setRowNodeExpanded","onGroupExpandedOrCollapsed","deprecated_refreshFromIndex","refreshModel","refreshInMemoryRowModel","refreshClientSideRowModel","paramsStep","stepsMapped","aggregate","keepEditingRows","isAnimationFrameQueueEmpty","isQueueEmpty","flushAllAnimationFrames","getSizesForCurrentTheme","getToolPanelInstance","unwrapUserComp","addVirtualRowListener","newFilter","suppressEvents","deselectAll","recomputeAggregates","showNoRowsOverlay","isNodeSelected","getSelectedNodesById","ensureColIndexVisible","ensureNodeVisible","forEachLeafNode","forEachNodeAfterFilterAndSort","getFilterInstance","getFilterInstanceImpl","unwrapped","filterPromise","getFilterComponent","filterComp","destroyFilter","getStatusPanel","statusBarService","getColumnDef","clearFocusedCell","addRowDropZone","removeRowDropZone","activeDropTarget","getRowDropZoneParams","getRowDropZone","setDomLayout","setCellTextSelection","setFillHandleDirection","setGroupHeaderHeight","setPivotHeaderHeight","setPivotGroupHeaderHeight","setIsExternalFilterPresent","isExternalFilterPresentFunc","setDoesExternalFilterPass","doesExternalFilterPassFunc","setNavigateToNextCell","navigateToNextCellFunc","setTabToNextCell","tabToNextCellFunc","setTabToNextHeader","tabToNextHeaderFunc","setNavigateToNextHeader","navigateToNextHeaderFunc","setGroupRowAggNodes","groupRowAggNodesFunc","setGetBusinessKeyForNode","setGetChildCount","setProcessRowPostCreate","processRowPostCreateFunc","setGetRowNodeId","getRowNodeIdFunc","setGetRowClass","rowClassFunc","setIsFullWidthCell","setIsRowSelectable","setIsRowMaster","isRowMasterFunc","setPostSort","postSortFunc","setGetDocument","getDocumentFunc","setGetContextMenuItems","setGetMainMenuItems","setProcessCellForClipboard","processCellForClipboardFunc","setSendToClipboard","sendToClipboardFunc","setProcessCellFromClipboard","processCellFromClipboardFunc","setProcessSecondaryColDef","processSecondaryColDefFunc","setProcessSecondaryColGroupDef","processSecondaryColGroupDefFunc","setPostProcessPopup","postProcessPopupFunc","setDefaultGroupOrderComparator","defaultGroupOrderComparatorFunc","setGetChartToolbarItems","setPaginationNumberFormatter","paginationNumberFormatterFunc","setGetServerSideStoreParams","setIsServerSideGroupOpenByDefault","isServerSideGroupOpenByDefaultFunc","setIsApplyServerSideTransaction","isApplyServerSideTransactionFunc","setIsServerSideGroup","isServerSideGroupFunc","setGetServerSideGroupKey","setGetRowStyle","setGetRowHeight","rowHeightFunc","isSideBarVisible","setSideBarVisible","setSideBarPosition","openToolPanel","closeToolPanel","getOpenedToolPanel","openedItem","setSideBar","isToolPanelShowing","doLayout","setGroupRemoveLowestSingleChildren","gridCtrl","getGridCtrl","destroyGridUi","removeAllReferences","warnIfDestroyed","resetQuickFilter","getRangeSelections","camelCaseToHumanReadable","addRangeSelection","deprecatedNoLongerUsed","addCellRange","removeAllCellRanges","undoCellEditing","redoCellEditing","getCurrentUndoSize","getCurrentUndoStackSize","getCurrentRedoSize","getCurrentRedoStackSize","getChartModels","chartService","getChartRef","chartId","getChartImageDataURL","createRangeChart","createCrossFilterChart","restoreChart","chartModel","chartContainer","createPivotChart","copySelectedRowsToClipboard","copySelectedRangeToClipboard","copySelectedRangeDown","showColumnMenuAfterButtonClick","buttonElement","showMenuAfterMouseEvent","hidePopupMenu","hideActiveMenu","setPopupParent","ePopupParent","tabToPreviousCell","startEditingCell","getCellByPosition","addAggFuncs","clearAggFuncs","applyServerSideTransaction","serverSideTransactionManager","applyTransaction","applyServerSideTransactionAsync","applyTransactionAsync","retryServerSideLoads","retryLoads","flushServerSideAsyncTransactions","flushAsyncTransactions","rowDataTransaction","updateRowData","batchUpdateRowData","insertItemsAtIndex","skipRefresh","addIndex","removeItems","dataToRemove","refreshVirtualPageCache","refreshInfiniteCache","refreshInfinitePageCache","refreshCache","purgeVirtualPageCache","purgeInfinitePageCache","purgeInfiniteCache","purgeCache","purgeEnterpriseCache","purgeServerSideCache","refreshServerSideStore","purge","refreshStore","getServerSideStoreState","getStoreState","getVirtualRowCount","getInfiniteRowCount","isMaxRowFound","isLastRowIndexKnown","setVirtualRowCount","maxRowFound","setRowCount","setInfiniteRowCount","getVirtualPageState","getCacheBlockState","getInfinitePageState","rowNodeBlockLoader","getBlockState","checkGridSize","getFirstRenderedRow","getFirstDisplayedRow","getLastRenderedRow","getLastDisplayedRow","paginationIsLastPageFound","isLastPageFound","paginationGetPageSize","getPageSize","paginationGetCurrentPage","paginationGetTotalPages","getTotalPages","paginationGetRowCount","getMasterRowCount","paginationGoToNextPage","goToNextPage","paginationGoToPreviousPage","goToPreviousPage","paginationGoToFirstPage","goToFirstPage","paginationGoToLastPage","goToLastPage","paginationGoToPage","goToPage","SetLeftFeature","ariaEl","setColsSpanning","getColumnOrGroup","setLeftFirstTime","suppressMoveAnimation","oldLeftExists","animateInLeft","colOrGroup","oldActualLeft","actualLeft","indexColumn","setAriaColSpan","HoverFeature","addMouseHoverListeners","HeaderFilterCellCtrl","setupWidth","setupLeft","setupHover","setupFocus","setupUserComp","setupSyncWithFilter","setupUi","showParentFilter","suppressFilterButton","eMenuIcon","nextFocusableEl","nextFocusableColumn","findNextColumnWithFloatingFilter","backwards","columModel","nextCol","wrapperHasFocus","focusInto","notFromHeaderWrapper","fromWithinHeader","setFocusedHeader","hovered","setLeftFeature","createFilterParams","finalFilterParams","currentParentModel","filterComponent","createIfDoesNotExist","syncWithFilter","CssClassApplier","getHeaderClassesFromColDef","getColumnClassesFromCollDef","getToolPanelClassesFromColDef","getClassParams","classesOrFunc","classToUse","ResizeFeature","canResize","canAutosize","destroyResizeFuncs","removeResize","resize","autoSize","finishedWithResizeFunc","horizontalResizeService","addResizeBar","eResizeBar","onResizeStart","onResizing","onResizeEnd","skipHeaderOnAutoSize_1","autoSizeColListener_1","touchListener_1","addResize","addRefreshFunction","resizeAmount","resizeAmountNormalised","normaliseResizeAmount","resizeStartWidth","resizeWithShiftKey","dragChange","notPinningLeft","AgCheckbox","onCheckboxClick","getNextValue","setReadOnly","dispatchChange","refreshSelectedClass","SelectAllFeature","cbSelectAllVisible","processingEventFromCheckbox","filteredOnly","cbSelectAll","getCheckboxGui","showOrHideSelectAll","onModelChanged","onCbSelectAll","refreshSelectAllLabel","isCheckboxSelection","checkRightRowModelType","updateStateOfCheckbox","refreshHeaderAriaDescribedBy","isSelectAllVisible","describedBy","getNextCheckboxState","selectionCount","notSelected","getSelectionCount","allSelected","ariaStatus","selectedCount","notSelectedCount","HeaderCellCtrl","refreshFunctions","userHeaderClasses","updateState","setupMovingCss","setupMenuClass","setupSortableClass","addColumnHoverListener","setupFilterCss","setupColId","setupClassesFromColDef","addActiveHeaderMouseListeners","setupSelectAll","onColumnValueChanged","onColumnRowGroupChanged","onColumnPivotChanged","lookupUserCompDetails","userCompDetails","createParams","menuEnabled","showColumnMenu","multiSort","setSortForColumn","eGridHeader","selectAllFeature","onEnterKeyPressed","isMenuEnabled","setActiveHeader","refreshHeaderClasses","classes","oldClasses","eSource","dragSourceElement","draggable","moveDragSource","createDragItem","colDefVersionNow","calculateDisplayName","workOutDraggable","refreshHeaderComp","newCompDetails","attemptHeaderCompRefresh","checkDisplayName","updateSortableCssClass","updateAriaSort","getAriaSortState","GroupResizeFeature","calculateInitialValues","takeFromGroup","takeFromLeafCols","resizeTakeFromCols","resizeTakeFromStartWidth","resizeTakeFromRatios","normaliseDragChange","resizeColumns","preferredSize","getPreferredWidthForColumnGroup","totalWidth","resizeCols","resizeRatios","leafCols","GroupWidthFeature","removeChildListenersFuncs","addListenersToChildrenColumns","onDisplayedChildrenChanged","removeListenersOnChildrenColumns","HeaderGroupCellCtrl","addClasses","addAttributes","groupResizeFeature","tooltipCtrl","providedColGroup","refreshExpanded","eHeaderGroup","isSuppressMoving","getDragItemForGroup","allColumnsOriginalOrder","allColumnsCurrentOrder","childSuppressesMoving","HeaderRowCtrl","headerCellCtrls","addEventListeners","getHeaderCellCtrl","getWidthForRow","sizes","oldCtrls","getColumnsInViewport","idOfChild","oldCtrl","keepCtrl","isHeaderWrapperFocused","isFocusedAndDisplayed","ctrlsToDisplay","destroyCtrls","getColumnsInViewportPrintLayout","getColumnsInViewportNormalLayout","actualDepth","getActualDepth","focusHeader","HeaderRowContainerCtrl","groupsRowCtrls","setupCenterWidth","setupPinnedWidth","setupDragAndDrop","onGridColumnsChanged","registerHeaderContainer","dropContainer","bodyDropTarget","keepColumns","focusedHeaderPosition","getFocusHeaderToUseAfterRefresh","groupRowCount","refreshColumnGroups","columnsRowCtrl","destroyPreviousComp","filtersRowCtrl","rowIndexMismatch","refreshFilters","allCtrls","getAllCtrls","setCtrls","restoreFocusOnHeader","setCenterWidth","setHorizontalScroll","setContainerTransform","hidden","addPaddingForScrollbar","setPinnedContainerWidth","getHtmlElementForColumnHeader","HeaderRowContainerComp","headerRowComps","rowCompsList","selectAndSetTemplate","eCenterContainer","PINNED_LEFT_TEMPLATE","PINNED_RIGHT_TEMPLATE","CENTER_TEMPLATE","eRowContainer","destroyRowComps","destroyRowComp","prevGui","oldRowComps","ctrlId","existingComp","appendEnsuringDomOrder","GridHeaderComp","addContainer","FilterManager","allAdvancedFilters","activeAdvancedFilters","quickFilter","quickFilterParts","FilterManager_1","onColumnsChanged","parseQuickFilter","setQuickFilterParts","allPromises","modelKeys_1","filterWrapper","setModelOnFilterWrapper","getOrCreateFilterWrapper","promiseFilter","updateActiveFilters","resolvedPromise","updateFilterFlagInColumns","doAdvancedFiltersPass","filterToSkip","parsedFilter","onAnyFilterChanged","doesRowPassOtherFilters","doesRowPassFilter","filterInstanceToSkip","doesRowPassQuickFilterNoCache","filterPart","getQuickFilterTextForColumn","doesRowPassQuickFilterCache","aggregateRowForQuickFilter","doesRowPassQuickFilter","usingCache","stringParts","QUICK_FILTER_SEPARATOR","createValueGetter","cachedFilter","putIntoGui","createFilterWrapper","createFilterInstance","doesRowPassOtherFilter","compiledElement","guiPromise","eFilterGui","guiFromFilter","disposeFilterWrapper","ValueService","initialised","cellExpressions","forFilter","ignoreAggData","groupDataExists","aggDataExists","executeFilterValueGetter","executeValueGetter","We","an","cellValueGetter","openedGroup","getOpenedGroup","valueWasDifferent","setValueUsingField","fieldPieces","fieldPiece","getValueCallback","valueFromCache","otherColumn","getKeyForNode","LayoutCssClasses","AUTO_HEIGHT","NORMAL","PRINT","LayoutFeature","updateLayoutClasses","print","GridBodyScrollFeature","eBodyViewport","nextScrollTop","resetLastHorizontalScrollElementDebounced","resetLastHorizontalScrollElement","centerRowContainerCon","addScrollListener","fakeHScroll","getFakeHScrollCtrl","onCenterViewportScroll","getViewport","onFakeHorizontalScroll","onVerticalScroll","topCenterContainer","getTopCenterRowContainerCtrl","bottomCenterContainer","getBottomCenterRowContainerCtrl","lastHorizontalScrollElement","isControllingScroll","eDiv","fakeHScrollViewport","onBodyHorizontalScroll","centerContainerViewport","shouldBlockScrollUpdate","doHorizontalScroll","setScrollTop","redrawRowsAfterScroll","schedule","fakeScrollLeft","fireScrollEvent","bodyScrollEvent","scrollTimer","bodyScrollEndEvent","scrollTo","touchOnly","executeAnimationFrameScroll","frameNeeded","setHorizontalScrollPosition","hScrollPosition","maxScrollLeft","setVerticalScrollPosition","vScrollPosition","oldScrollPosition","comparatorIsAFunction","indexToSelect","goToPageWithIndex","rowGotShiftedDuringOperation","startingRowTop","startingRowHeight","rowTopPixel","rowBottomPixel","heightOffset","heightScaler","vScrollTop","vScrollBottom","viewportHeight","pxTop","getScrollPositionForPixel","pxBottom","pxMiddle","newScrollPosition","newHorizontalScroll","getPositionedHorizontalScroll","isColumnOutsideViewport","columnBeforeStart","columnAfterEnd","viewportTooSmallForColumn","alignColToStart","alignColToEnd","isMiddle","getColumnBounds","colLeft","colRight","colMiddle","getViewportBounds","viewportStart","viewportEnd","multiplier","colLeftPixel","AutoScrollService","tickingInterval","onScrollCallback","scrollContainer","scrollAxis","scrollVertically","scrollByTick","getVerticalPosition","setVerticalPosition","getHorizontalPosition","setHorizontalPosition","shouldSkipVerticalScroll","shouldSkipHorizontalScroll","forceSkipVerticalScroll","skipVerticalScroll","scrollTick","tickLeft","tickRight","tickUp","tickDown","ensureTickingStarted","ensureCleared","doTick","tickCount","tickAmount","RowDragFeature","isMultiRowDrag","isGridSorted","isGridFiltered","refreshStatus","onRowGroupChanged","autoScrollService","isSortActive","rowGroups","getRowNodes","isFromThisGrid","getRowIndexNumber","currentNode","dispatchGridEvent","onEnterOrDragging","isDropZoneWithinThisGrid","getNormalisedPosition","doManagedDrag","managedDrag","highlightRowAtPixel","moveRows","moveRowAndClearHighlight","lastHighlightedRowNode","getLastHighlightedRowNode","isBelow","increment","getRowIdFunc_1","getHighlightPosition","clearRowHighlight","ensureRowsAtPixel","processedParams","fromGrid","draggingToRowDragEvent","overNode","vDirectionString","yNormalised","overIndex","stopDragging","RowAnimationCssClasses","ANIMATION_ON","ANIMATION_OFF","CSS_CLASS_CELL_SELECTABLE","CSS_CLASS_FORCE_VERTICAL_SCROLL","CSS_CLASS_COLUMN_MOVING","GridBodyCtrl","angularApplyTriggered","bodyScrollFeature","eGridBody","eTop","eBottom","addRowDragListener","setupRowAnimationCssClass","registerGridBodyCtrl","addFocusListeners","addBodyViewportListener","setFloatingHeights","disableBrowserDragging","addStopEditingWhenGridLosesFocus","addAngularApplyCheck","setColumnMovingCss","setCellSelectableCss","setColumnCount","HTMLImageElement","focusOutListener","elementWithFocus","getTabIndex","clickInsideGrid","viewports","isElementInThisGrid","getActivePopups","isElementWithinCustomPopup","headerCount","modelType","setPinnedTopBottomOverflowY","setAlwaysVerticalScrollClass","isStretching","setRowAnimationCssOnBodyViewport","onWheel","hasAnchoredPopup","floatingTopHeight","getPinnedTopTotalHeight","floatingBottomHeight","getPinnedBottomTotalHeight","setTopHeight","setBottomHeight","setTopDisplay","setBottomDisplay","nextTimeout","scrollWidthToRemove","addScrollEventListener","removeScrollEventListener","requestAngularApply","GRID_BODY_TEMPLATE","GridBodyComp","setAriaColCount","setAriaRowCount","bodyViewportClassList","overflowY","ct","setAriaMultiSelectable","getFloatingTopBottom","ExpressionService","expressionToFunctionCache","expressionOrFunc","evaluateExpression","createExpressionFunction","javaScriptFunction","functionBody","createFunctionBody","theFunction","Function","TemplateService","templateCache","waitingCallbacks","getTemplate","templateFromCache","callbackList","handleHttpResult","httpResult","that_1","FocusService","FocusService_1","addKeyboardModeEvents","controller","docControllers","instancesMonitored","toggleKeyboardMode","removeKeyboardModeEvents","newControllers","currentGridCore","isKeyboardActive","keyboardModeActive","isKeyboardEvent","controllersForDoc","clearFocusedCellListener","onColumnEverythingChanged","unregisterGridCompController","gridCompController","focusedCellPosition","colFromColumnModel","isKeyboardMode","isDomDataMissingInHierarchy","eBrowserCell","ePointer","gridColumn","focusedColumn","currentPosition","previousHeaderPosition","nextHeaderPosition","focusGridView","focusFirstHeader","focusLastHeader","isAnyCellFocused","findFocusableElements","exclude","onlyUnmanaged","excludeString","excludeNodes","up","focusableElements","toFocus","onlyManaged","focusable","activeEl","nextIndex","isFocusUnderManagedComponent","managedContainers","findTabbableParent","getLastRow","getFirstRow","focusNextInnerContainer","forceFocusOutOfContainer","AG_KEYBOARD_FOCUS","DIRECTION","vertical","horizontal","instanceIdSeq","PopupService","popupList","positionPopupForMenu","sourceRect","parentRect","getParentRect","keepXYWithinBounds","maxX","xLeftPosition","xRightPosition","nudgeX","calculatePointerAlign","positionPopup","callPostProcessPopup","alignSide","positionPopupOverComponent","getPopupList","bounds","borderTopWidth","borderLeftWidth","borderRightWidth","borderBottomWidth","isVertical","sizeProperty","anchorProperty","offsetProperty","scrollPositionProperty","docElement","documentRect","isBody","offsetSize","sizeOfParent","getAbsoluteHeight","keepPopupPositionedRelativeTo","initialDiffTop","initialDiffLeft","lastDiffTop","lastDiffLeft","leftPx","pRect","sRect","currentDiffTop","newTop","currentDiffLeft","newLeft","intervalId","alwaysOnTop","positionCallback","destroyPositionTracker","stopAnchoringPromise","hasAttribute","setAlwaysOnTop","bringPopupToFront","popupHidden","hidePopupOnKeyboardEvent","hidePopupOnMouseEvent","hidePopupOnTouchEvent","popupParams","isEventFromCurrentPopup","isEventSameChainAsOriginalEvent","originalMouseEvent","isAnchored","indexOfThisChild","mouseEventOrTouch","screenY_1","screenY","xMatch","screenX","yMatch","getWrapper","popupLen","alwaysOnTopList","onTopLength","innerEls","innerElsScrollMap","currentEl","LoggerFactory","Logger","isLogging","isLoggingFunc","AutoWidthCalculator","eHeaderCell","getHeaderCellForColumn","addElementsToContainerAndGetWidth","eDummyContainer","eBodyContainer","cloneItemIntoDummy","dummyContainerWidth","eCellClone","cloneNode","eCloneParent","eCloneParentClassList","HorizontalResizeService","dragStartX","setResizeIcons","MouseEvent","setResizeCursor","disableUserSelect","resetIcons","GridCtrl","registerGridCtrl","eGridHostDiv","stampTopLevelGridCompWithGridInstance","addRtlSupport","addOrRemoveKeyboardFocusClass","onGridSizeChanged","showDropZones","showSideBar","showStatusBar","showWatermark","setRtlClass","setCursor","setUserSelect","focusableContainers","getFocusableContainers","nextIdx","focusInnerElement","fromBottom","lastColumn","TabGuardCtrl","skipTabGuardFocus","eTopGuard","eBottomGuard","providedFocusInnerElement","providedFocusIn","providedFocusOut","providedShouldStopEventPropagation","providedOnTabKeyDown","providedHandleKeyDown","activateTabGuards","guard","onFocus","tabGuardsAreActive","deactivateTabGuards","getNextFocusableElement","tabGuardToFocus","TabGuardComp","initialiseTabGuard","createTabGuard","tabGuards","tabGuard","addTabGuards","tabGuardCtrl","side","topTabGuard","bottomTabGuard","removeAllChildrenExceptTabGuards","GridComp","userSelect","webkitUserSelect","createTemplate","insertGridIntoDom","eRootWrapperBodyClassList","eRootWrapperBody","gridBodyComp","DragService","dragEndFunctions","dragSources","removeAllListeners","removeListener","dragSourceAndListener","mouseDownListener","touchEnabled","touchStartListener","includeTouch","mouseListener","currentDragParams","touchLastTime","touchEndEvent","onTouchUp","addTemporaryEvents","onCommonMove","skipMouseEvent","_alreadyProcessedByDragService","mouseStartEvent","onMouseUp","currentEvent","isEventNearStartEvent","startEvent","getFirstActiveTouch","changedTouches","onUpCommon","eventOrTouch","SortController","SortController_1","nextDirection","getNextSortDirection","clearSortBarThisColumn","updateSortIndex","lastColToChange","allSortedCols","sortedCols","columnToSkip","columnToClear","DEFAULT_SORTING_ORDER","allColumnsIncludingAuto","columnsWithSorting","allColsIndexes","iA","iB","getSortModel","getSortOptions","MouseEventService","gridInstanceId","MouseEventService_1","gridInstanceSequence","GRID_DOM_KEY","getCellPositionForEvent","gridPanelHasScrolls","vRange","CellNavigationService","getNextCellToFocus","lastCellToFocus","getCellAbove","getCellBelow","getCellToLeft","getCellToRight","isCellGoodToFocusOn","gridCell","lastCell","colToLeft","colToRight","getRowBelow","isLastRowInContainer","rowBelow","getRowAbove","getLastBodyCell","getLastFloatingTopRow","rowAbove","getNextTabbedCell","getNextTabbedCellBackwards","getNextTabbedCellForwards","newRowIndex","newFloating","isRowInPage","ValueFormatterService","suppliedFormatter","useFormatterFromColumn","AgRadioButton","onChange","OUTSIDE_ANGULAR_EVENTS","capture","ScrollVisibleService","updateImpl","centerRowCtrl","StylingService","processAllCellClasses","onApplicableClass","onNotApplicableClass","processStaticCellClasses","classRules","classNames","classesToApply","classesToRemove","resultOfRule","rule","singleClass","classOrClasses","cssClassItem","ColumnHoverService","selectedColumns","ColumnAnimationService","executeNextFuncs","executeLaterFuncs","animationThreadCount","ensureAnimationCssClassPresent","executeLaterVMTurn","animationThreadCountCopy","nowFuncs","waitFuncs","AutoGroupColService","AutoGroupColService_1","doingTreeData","doingMultiAutoColumn","rowGroupCol","createOneAutoGroupColumn","defaultAutoColDef","generateDefaultColDef","GROUP_AUTO_COLUMN_BUNDLE_ID","userDef","PaginationProxy","topDisplayedRowIndex","bottomDisplayedRowIndex","pixelOffset","masterRowCount","onPaginationPageSizeChanged","startPixel","endPixel","startLimitIndex","endLimitIndex","calculatePages","modelUpdatedEvent","topRowBounds","bottomRowBounds","firstInRange","lastInRange","getRowBounds","getPageForIndex","pageSize","pageNumber","lastPage","totalPages","setPageSize","calculatePagesAllRows","calculatePagesMasterRowsOnly","calculatedPagesNotActive","setPixelOffset","setZeroRows","getTopLevelRowCount","masterLastRowIndex","masterPageEndIndex","getTopLevelRowDisplayedIndex","firstIndexNotToShow","maxRowIndex","PaginationAutoPageSizeService","onBodyHeightChanged","checkPageSize","notActive","newPageSize","ValueCache","cacheVersion","neverExpires","__cacheVersion","__cacheData","ChangeDetectionService","doChangeDetection","onlyChangedColumns","doAggregate","AlignedGridsService","consuming","fireEvent","otherGrids","otherGridOptions","alignedGridService","onEvent","onColumnEvent","onScrollEvent","getMasterColumns","getColumnIds","processColumnEvent","processGroupOpenedEvent","groupOpenedEvent","masterColumnGroup","otherColumnGroup","colEvent","masterColumn","masterColumns","movedEvent","destColState","visibleEvent","pinnedEvent","resizedEvent_1","AgComponentUtils","jsCompFunc","functionAdapter","adaptCellRendererFunction","Adapter","callbackResult","candidate","ComponentMetadataProvider","componentMetaData","dateComponent","floatingFilterWrapperComponent","HARD_CODED_SIZES","headerCellMinWidth","listItemHeight","BASE_GRID_SIZE","MAT_GRID_SIZE","BALHAM_GRID_SIZE","ALPINE_GRID_SIZE","SASS_PROPERTY_BUILDER","CALCULATED_SIZES","Environment","useTheme","calculatedValue","prevEl","currentClass","currentDiv","sizeName","isThemeDark","themeFamily","reg","themeMatch","newTheme_1","AnimationFrameService","createTasksP1","sorted","createTasksP2","destroyTasks","ticking","scrollGoingDown","lastScrollTop","taskCount","cancelledTasks","useAnimationFrame","isOn","verifyAnimationFrameOn","task","taskItem","createOrder","addTaskToList","cancelTask","taskList","sortTaskList","sortDirection","executeFrame","millis","p1TaskList","p1Tasks","p2TaskList","p2Tasks","frameStart","noMaxMillis","requestFrame","stopTicking","requestAnimationFrame","webkitRequestAnimationFrame","NavigationService","timeLastPageEventProcessed","alt","processed","onHomeOrEndKey","onCtrlLeftOrRight","onCtrlUpOrDown","onPageDown","onPageUp","isTimeSinceLastPageEventToRecent","setTimeLastPageEventProcessed","navigateTo","navigateParams","scrollIndex","scrollType","scrollColumn","focusIndex","focusColumn","pixelsInOnePage","getViewportHeight","pagingPixelOffset","currentCellPixel","isRowTallerThanView","getIndexToFocus","indexToScrollTo","indexToFocus","upKey","rowIndexToScrollTo","leftKey","columnToSelect","homeKey","tabToNextCellCommon","cellOrRow","moveToNextEditingRow","moveToNextEditingCell","moveToNextCellNotEditing","previousCell","previousPos","nextCell","findNextCellToFocusOn","previousEditable","nextEditable","rowsMatch","cellPos","tryToFocusFullWidthRow","previousPosition","getLastCellOfColSpan","cellNavigationService","userCell","previousCellPosition","nextCellPosition","headerLen","lookupRowNodeForCell","hitEdgeOfGrid","isValidNavigateCell","normalisedPosition","focusPosition","colSpanningList","RowContainerHeightService","scrollY","uiBodyHeight","maxDivHeight","getMaxDivHeight","stretching","newScrollY","newBodyHeight","getUiBodyHeight","calculateOffset","setUiContainerHeight","pixelsToShave","modelHeight","uiContainerHeight","maxScrollY","scrollPercent","setDivStretchOffset","clearOffset","newOffset","newOffsetFloor","modelPixel","modelMaxScroll","SelectableService","updateSelectableAfterGrouping","recurseDown","updateSelectableAfterFiltering","nextChildrenFunc","rowSelectable","PaginationComp","previousAndFirstButtonsDisabled","nextButtonDisabled","lastButtonDisabled","btFirst","btPrevious","btNext","btLast","onBtFirst","onBtPrevious","onBtNext","onBtLast","enableOrDisableButtons","updateRowLabels","setCurrentPageLabel","setTotalLabels","pagesExist","lbCurrent","strPage","strTo","strOf","strFirst","strPrevious","strNext","strLast","setAriaDisabled","zeroPagesToDisplay","isZeroPagesToDisplay","lbFirstRowOnPage","lbLastRowOnPage","isLoading","lastPageFound","setTotalLabelsToZero","lbTotal","lbRecordCount","moreText","ResizeObserverService","polyfillFunctions","resizeObserver","debouncedCallback","suppressResize","ResizeObserver","observe","disconnect","widthLastTime","heightLastTime","periodicallyCheckWidthAndHeight","doNextPolyfillTurn","usePolyfill","schedulePolyfill","polyfillScheduled","LoadingType","Loading","NoRows","OverlayWrapperComponent","inProgress","destroyRequested","overlayWrapperClassList","eOverlayWrapper","setWrapperTypeClass","loadingType","showOverlay","workItem","destroyActiveOverlay","activeOverlay","showOrHideOverlay","AgGroupComponent","suppressEnabledCheckbox","suppressOpenCloseIcons","alignItems","initialItems","cbGroupEnabled","setEnabled","setAlignItems","hideEnabledCheckbox","hideOpenCloseIcons","setupExpandContract","refreshAriaStatus","refreshChildDisplay","eGroupClosedIcon","eGroupOpenedIcon","eTitleBar","toggleGroupExpand","showIcon","eToolbar","EVENT_EXPANDED","EVENT_COLLAPSED","addItem","hideItem","eTitle","addCssClassToTitleBar","skipToggle","refreshDisabledStyles","onEnableChange","PositionableFeature","dragStartPosition","lastSize","positioned","resizersAdded","resizeListeners","boundaryEl","isResizing","movable","currentResizer","center","getHeight","offsetElement","initialisePosition","centered","forcePopupParentAsOffsetParent","setOffsetParent","computedMinHeight","computedMinWidth","findBoundaryElement","offsetParentComputedStyles","paddingWidth","paddingHeight","refreshSize","top_1","isPositioned","setMovable","moveElement","moveElementDragListener","onMoveStart","onMove","onMoveEnd","setResizable","clearResizeListeners","addResizers","removeResizers","topLeft","topRight","bottomRight","bottomLeft","resizerEl","getResizerElement","onResize","pointerEvents","removeSizeFromEl","restoreLastSize","isPercent","elRect","yPosition","xPosition","updateDragStartPosition","calculateMouseMovement","isTop","topBuffer","xDiff","yDiff","movementX","shouldSkipX","anywhereWithin","movementY","shouldSkipY","diff","boundaryElRect","skipX","skipY","createResizeMap","resizerMap","resizers","applySizeToSiblings","getSiblings","getMinSizeOfSiblings","nextHeight","nextWidth","containerToFlex","isHorizontal","offsetTop","oldWidth","skipWidth","oldHeight","skipHeight","calculateTopBuffer","AgPanel","closable","hideTitleBar","positionableFeature","setBodyComponent","setClosable","eTitleBarButtons","eContentWrapper","renderComponent","closeButtonComp","CLOSE_BTN_TEMPLATE","addTitleBarButton","onBtClose","bodyComponent","AgDialog","isMaximizable","isMaximized","maximizeListeners","resizeListenerDestroy","lastPosition","maximizable","setMaximizable","toggleMaximize","refreshMaximizeIcon","maximizeIcon","minimizeIcon","clearMaximizebleListeners","destroyListener","maximizeButtonComp","AgInputTextField","preventDisallowedCharacters","pattern","clipboardData","getData","AgInputTextArea","AgSlider","eSlider","eventChanged","textValue","sliderValue","setSliderWidth","setTextFieldWidth","setMinValue","setMin","setMaxValue","setMax","setStep","AgColorPanel","isSpectrumDragging","isSpectrumHueDragging","isSpectrumAlphaDragging","colorChanged","picker","initRecentColors","spectrumVal","onSpectrumDraggerDown","onSpectrumDraggerMove","spectrumHue","onSpectrumHueDown","onSpectrumHueMove","spectrumAlpha","onSpectrumAlphaDown","onSpectrumAlphaMove","recentColors","onRecentColorClick","refreshSpectrumRect","spectrumValRect","refreshHueRect","spectrumHueRect","refreshAlphaRect","spectrumAlphaRect","moveDragger","moveHueSlider","moveAlphaSlider","valRect","setSpectrumValue","hueRect","slider","spectrumHueSlider","sliderRect","alphaRect","spectrumAlphaSlider","spectrumColor","rgbaColor","backgroundColor","spectrumDragger","saturation","brightness","dragger","draggerRect","innerHtml","addRecentColor","currentColor","maxRecentColors","AgColorPicker","eGuiRect","colorDialog","colorPanel","AgInputNumberField","floatedValue","normalizeValue","precision","adjustPrecision","floatString","setPrecision","AgInputRange","AgAngleSelect","radius","offsetX","offsetY","dragListener","eParentCircle","parentCircleRect","calculateAngleDrag","eAngleValue","degrees","floatValue","updateNumberInput","normalizeNegativeValue","positionChildCircle","radians","eChildCircle","centerY","cos","sin","calculatePolar","atan2","toDegrees","sqrt","calculateCartesian","toRadians","getRadius","setOffsetX","setOffsetY","PI","normalizeAngle180","setRadius","radiansValue","AgToggleButton","RowPositionUtils","pinnedBottomCount","pinnedTopCount","rowA","rowB","CellPositionUtils","createIdFromValues","cellA","cellB","PinnedRowModel","pinnedTopRows","pinnedBottomRows","getRowAtPixel","createNodesFromData","allData","nextRowTop_1","dataItem","getTotalHeight","forEachPinnedTopRow","forEachPinnedBottomRow","lastNode","UndoRedoAction","cellValueChanges","FillUndoRedoAction","initialRange","finalRange","UndoRedoStack","maxStackSize","actionStack","DEFAULT_STACK_SIZE","getCurrentStackSize","UndoRedoService","activeCellEdit","activeRowEdit","isPasting","isFilling","eventCell","isCellEditing","isRowEditing","cellValueChange","clearStacks","undoStack","redoStack","undoRedoLimit","addRowEditingListeners","addCellEditingListeners","addPasteListeners","addFillListeners","undoAction","processAction","processRangeAndCellFocus","redoAction","valueExtractor","currentRow","startColumn","setLastFocusedCell","pushActionsToUndoStack","HeaderPositionUtils","nextColumn","ColumnDefFactory","colGroupDefs","addToResult","childDef","createDefFromColumn","parentDef","existingParentDef","createDefFromGroup","defCloned","colDefCloned","RowCssClassCalculator","extraCssClass","pushAll","preProcessRowClassRules","rowCls","rowClassParams","RowNodeBlock","STATE_WAITING_TO_LOAD","STATE_LOADING","loadFromDatasource","getVersion","setStateWaitingToLoad","pageLoadFailed","isRequestMostRecentAndLive","STATE_FAILED","processServerFail","dispatchLoadCompleted","successCommon","pageLoaded","thisIsMostRecentRequest","weAreNotDestroyed","STATE_LOADED","processServerResult","EVENT_LOAD_COMPLETE","block","RowNodeBlockLoader","activeBlockLoadsCount","blocks","RowNodeBlockLoader_1","maxConcurrentRequests","checkBlockToLoadDebounce","performCheckBlocksToLoad","addBlock","loadComplete","checkBlockToLoad","removeBlock","BLOCK_LOADER_FINISHED_EVENT","printCacheStatus","blockToLoad","getBlockStateJson","RowNodeSorter","doFullSort","sortOptions","sortedRowNodes","currentPos","compareRowNodes","sortedNodeA","sortedNodeB","comparatorResult","sortOption","isInverted","providedComparator","getComparator","comparatorOnCol","groupLeafField","primaryColumn","CtrlsService","readyCallbacks","CtrlsService_1","checkReady","centerHeaderRowContainerCtrl","leftHeaderRowContainerCtrl","rightHeaderRowContainerCtrl","fakeHScrollCtrl","gridHeaderCtrl","p_1","createReadyParams","registerFakeHScrollCtrl","getGridHeaderCtrl","NAME","CtrlsFactory","registry","meta","controllerName","controllerClass","getInstance","ControllerClass","FakeHScrollCtrl","spacerWidthsListener","setFakeHScrollSpacerWidths","hideAndShowInvisibleScrollAsNeeded","addActiveListenerToggles","isInvisibleScrollbar","setScrollVisible","vScrollShowing","rightSpacing","scrollOnRight","setRightSpacerFixedWidth","includeRightSpacerScrollerCss","leftSpacing","setLeftSpacerFixedWidth","includeLeftSpacerScrollerCss","hScrollShowing","scrollContainerSize","setContainerHeight","FakeHScrollComp","eRightSpacer","eLeftSpacer","include","PinnedWidthService","checkContainerWidths","PopupEditorWrapper","DOM_KEY_POPUP_EDITOR_WRAPPER","addKeyDownListener","CellComp","rendererVersion","editorVersion","forceWrapper","refreshWrapper","addStylesToElement","eCellValue","cellEditorPopupWrapper","firstRender","usingAngular1Template","isUsingAngular1Template","controlWrapperChanged","refreshCellRenderer","destroyRenderer","createCellRendererInstance","insertValueUsingAngular1Template","insertValueWithoutCellRenderer","createCellEditorInstance","destroyEditor","removeControls","checkboxSelectionComp","rowDraggingComp","providingControls","usingWrapper","putWrapperIn","takeWrapperOut","usingCellValue","putCellValueIn","takeCellValueOut","templateChanged","addControls","describedByIds","cellEditorPromise","afterCellEditorCreated","escapedValue","templateToInsert","templateUrl","templateService","updateAngular1ScopeAndCompile","destroyEditorAndRenderer","cellRendererGui","hideEditorPopup","cellEditorGui","compClassAndParams","cellRendererClass","displayComponentVersionCopy","createCellRendererFunc","afterCellRendererCreated","cellRendererVersion","requestVersion","isCancelBeforeStart","addPopupCellEditor","addInCellEditor","clearParentOfValue","ePopupGui","useModelPopup","positionToUse","getPopupPosition","positionParams","detach","angularCompiledElement","RowComp","cellComps","getInitialStyle","domOrder","cellCtrls","rowId","setFullWidthRowComp","cellsToRemove","newCellComp","cellCompsToRemove","destroyCells","destroyAllCells","cellsToDestroy","cp","fullWidthRowComponent","RowContainerComp","templateFactory","getRowContainerTypeForName","preDestroy","oldRows","lastPlacedElement","existingRowComp","newRowComp","appendRow","oldRowComp","insertWithDomOrder","RowNodeEventThrottle","dispatchExpandedDebounced","onRowGroupOpened","StandardMenuFactory","showPopup","tabListener","trapFocusWithin","KeyboardEvent","focusableEl","GridCoreCreator","gridComp","createUi","acceptChanges","registeredModules","createBeansList","createProvidedBeans","contextLogger","registerModuleUserComponents","registerStackComponents","registerControllers","setColumnsAndData","dispatchGridReadyEvent","controllers","ctrlsFactory","agStackComponents","createAgStackComponentsList","passedViaConstructor","registered","allModules","mapNames","currentModule","addIndividualModule","dependantModules","addModule","extractModuleEntity","userComponents","compMeta","seed","moduleAgStackComps","rowModelClass","getRowModelClass","moduleBeans","beansNoDuplicates","moduleEntities","extractor","rowModelClasses","rowModels","TabbedLayout","tabbedItemScrollMap","eHeader","activeItem","nextItem","showItemWrapper","eHeaderButton","eBody","setAfterAttachedParams","afterAttachedParams","showFirstItem","titleLabel","tabbedItem","showItem","itemWrapper","onItemClicked","lastScrollListener","bodyPromise","afterAttachedCallback","keepScrollPosition","scrollableContainer_1","getScrollableContainer","scrollPosition_1","callIfPresent","onActiveItemClicked","ServerSideTransactionResultStatus","Applied","StoreNotFound","StoreLoading","StoreWaitingToLoad","StoreLoadingFailed","StoreWrongType","Cancelled","AgMenuList","parentGui","closeIfIsChild","handleNavKey","topMenu","findTopMenu","clearActiveItem","activeMenuItem","deactivate","addMenuItems","menuItemOrString","addSeparator","menuItemDef","AgMenuItemComponent","isAnotherSubMenuOpen","isSubMenuOpen","setAriaLevel","activateFirstItem","currentItem","activate","nextParent","findNextItem","openChild","closeSubMenu","openSubMenu","foundCurrent","AgMenuPanel","wrappedComponent","closePanel","subMenuIsOpen","getClassName","addIcon","addName","addShortcut","addSubMenu","addTooltip","onItemSelected","destroySubMenu","currentLevel","getAriaLevel","nextLevel","childMenu_1","EVENT_MENU_ITEM_SELECTED","cancelDeactivate","subMenu_1","menuPanel","subMenuGui_1","mouseEvent_1","mouseEnterListener_1","hideSubMenu","cancelActivate","onItemActivated","isCompact","shortcut","EVENT_MENU_ITEM_ACTIVATED","activateTimeoutId","deactivateTimeoutId","ACTIVATION_DELAY","suffix","VirtualList","listName","isDestroyed","getItemHeight","addResizeObserver","setAriaProperties","drawVirtualRows","destroyObserver","focusRow","lastFocusedRowIndex","getAriaPosInSet","getLastFocusedRow","rowNumber","getComponentAt","viewportTopPixel","viewportScrolledBeforeRow","setComponentCreator","componentCreator","getScrollTop","waitUntil","clearVirtualRows","removeRow","ensureRowsRendered","insertRow","isRowSelected","setAriaChecked","createWrapper","createMethod","unwrap","addMethod","createMethodProxy","hasMethod","callMethod","globalObj","HTMLButtonElement","HTMLSelectElement","HTMLInputElement","ClientSideNodeManager","nextId","allNodesMap","ROOT_NODE_ID","childrenAfterSort","getCopyOfNodesMap","createNode","TOP_LEVEL","rowDataTran","rowNodeTransaction","nodesToUnselect","executeRemove","executeUpdate","executeAdd","updateSelection","newNodes","existingLeafChildren","nodesBeforeIndex","nodesAfterIndex","rowIdsRemoved","lookupRowNode","setMasterForRow","expandByDefault","RecursionType","AfterFilter","AfterFilterAndSort","PivotNodes","ClientSideRowModel","refreshEverythingFunc","refreshEverythingAfterColsChangedFunc","afterColumnsChanged","onValueChanged","refreshMapListener","nodeManager","atLeastOneChange","rowAtStartPixel","rowAtEndPixel","setRowTopAndRowIndex","nextRowTop","displayedRowsMapped","rowsToDisplay","changedPathActive","clearIfNotDisplayed","recurse","indexAtPixelNow","rowNodeAtPixelNow","highlight","lastHighlightedRow","topLevelIndex","createChangePath","rowNodeTransactions","noTransactions","transWithAddsOrDeletes","tx","doRowGrouping","doFilter","doPivot","doSort","doRowsToDisplay","displayedNodesMapped","rowsMissing","firstRowHit","lastRowHit","lookingForLastRow","childOfLastRow","pixelToMatch","bottomPointer","topPointer","midPointer","isRowInPixel","recursivelyWalkNodesAndCallback","forEachPivotNode","recursionType","nodeChildren","aggregationStage","execute","expand","recursiveExpandOrCollapse","sortStage","groupStage","restoreGroupState","filterStage","pivotStage","getGroupState","res_1","applyAsyncTransactionsTimeout","rowDataTransactionBatch","waitMillis","executeBatchUpdateRowData","callbackFuncsBound","rowNodeTrans","forceRowNodeOrder","tranItem","rowNodeTran","commonUpdateRowData","createRowNodeOrder","orderMap","flattenStage","FilterStage","filterService","selectableService","SortStage","sortActive","dirtyLeafNodes","calculateDirtyNodes","noAggregations","sortContainsGroupColumns","sortService","dirtyNodes","addNodesFunc","tran","FlattenStage","skipLeafNodes","showRootNode","recursivelyAddToRowsToDisplay","ensureFooterNodeExists","addRowNodeToRowsToDisplay","rowsToFlatten","hideOpenParents","isParent","isRemovedSingleChildrenGroup","isRemovedLowestSingleChildrenGroup","excludedParent","createDetailNode","groupNode","footerNode","masterNode","SortService","groupColumnsPresent","pullDownGroupDataForHideOpenParents","doDeltaSort","rowNodeSorter","updateChildIndexes","updateGroupDataForHideOpenParents","mapNodeToSortedNode","cleanNodes","passesDirtyNodesCheck","passesChangedPathCheck","cleanNodesMapped","sortedRowNode","changedNodes","mergeSortedArrays","listToSort","clearOperation","childRowNode","groupDisplayCol","parentToStealFrom","FilterService","filterNodes","includeChildNodes","passBecauseChildren","passBecauseDataPasses","doingTreeDataFiltering","treeDataDepthFirstFilter_1","alreadyFoundInParent","foundInParent","setAllChildrenCountTreeData","setAllChildrenCountGridGrouping","ImmutableService","transactionAndMap","createTransactionForRowData","nodeTransaction","existingNodesMap","existingNode","clientSide","InfiniteBlock","parentCache","blockSize","createRowNodes","blockNumber","getStartRow","getEndRow","pageStatus","createLoadParams","getRows","successCallback","failCallback","sortModel","getLastAccessed","lastAccessed","dontTouchLastAccessed","lastAccessedSequence","destroyRowNodes","InfiniteCache","lastRowIndexKnown","blockCount","initialRowCount","dontCreatePage","blockId","createBlock","newBlock","purgeBlocksIfNeeded","getBlocksInOrder","destroyAllBlocks","destroyBlock","checkRowCount","onCacheUpdated","blockToExclude","blocksForPurging","maxBlocksProvided","blocksToKeep","emptyBlocksToKeep","MAX_EMPTY_BLOCKS_TO_KEEP","isBlockCurrentlyDisplayed","isBlockFocused","removeBlockFromCache","blockIndexStart","blockIndexEnd","blockToRemove","lastRowIndexPlusOverflow","overflowSize","forEachNodeDeep","destroyAllBlocksPastVirtualRowCount","blocksToDestroy","getRowNodesInRange","lastBlockId","inActiveRange","numberSequence","foundGapInSelection","hitFirstOrLast","InfiniteRowModel","destroyCache","verifyProps","destroyDatasource","onColumnEverything","cacheParams","isSortModelDifferent","infiniteCache","resetCache","createModelUpdatedEvent","defaultIfInvalid","rowIndexForPixel","infinite","BaseCreator","getFileName","extension","getDefaultFileExtension","getDefaultFileName","serializingSession","createSerializingSession","gridSerializer","serialize","BaseGridSerializingSession","processHeaderCallback","processGroupHeaderCallback","processRowGroupCallback","prepare","columnsToExport","extractHeaderValue","extractRowCellValue","accumulatedRowIndex","valueForCell","groupIndex","createValueForGroupNode","processCell","Downloader","download","URL","createObjectURL","bubbles","revokeObjectURL","CsvSerializingSession","isFirstLine","columnSeparator","suppressQuotes","addCustomContent","beginNewLine","putInQuotes","mergeAcross","appendEmptyCells","onNewHeaderGroupingRow","onColumn","onNewHeaderGroupingRowColumn","onNewHeaderRow","onNewHeaderRowColumn","onNewBodyRow","onNewBodyRowColumn","stringValue","CsvCreator","getMergedParams","isExportSuppressed","mergedParams","packagedFile","Blob","HEADER_GROUPING","HEADER","BODY","GridSerializer","gridSerializingSession","getColumnsToExport","columnKeys","prepareSession","prependContent","exportColumnGroups","exportHeaders","processPinnedTopRows","processRows","processPinnedBottomRows","appendContent","serializeChain","rowSkipper","shouldRowBeSkipped","skipSingleChildrenGroup","skipLowestSingleChildrenGroup","isLeafNode","shouldSkipCurrentGroup","skipGroups","skipRowGroups","onlySelected","skipPinnedTop","skipPinnedBottom","rowAccumulator","getCustomContentBelowRow","customFooter","customHeader","skipColumnGroupHeaders","recursivelyAddHeaderGroups","skipColumnHeaders","gridRowIterator_1","usingCsrm","usingSsrm","onlySelectedNonStandardModel","onlySelectedAllPages","directChildrenHeaderGroups","doAddHeaderHeader","gridRowIterator","columnIndex","collapsibleGroupRanges","collapsibleGroups","currentIdx","lastGroup","XmlFactory","createHeader","headerElement","encoding","standalone","headerStart","createXml","xmlElement","booleanTransformer","prefixedAttributes","prefixedSet","returnAttributeIfPopulated","rawMap","textNode","xmlValue","crcTable","Uint32Array","ZipContainer","addFolders","paths","addFolder","folders","created","isBase64","addFile","files","getContent","mimeType","textOutput","buildFileStream","uInt8Output","buildUint8Array","clearStream","fData","totalFiles","foData","lL","cL","totalFiles_1","totalFiles_1_1","getHeader","fileHeader","folderHeader","buildFolderEnd","currentFile","decToHex","utfPath","utf8_encode","isUTF8","convertTime","convertDate","extraFields","uExtraFieldPath","getFromCrc32Table","getConvertedContent","convertedContent","atob","tLen","cLen","lLen","uint8","iterable","crc","AllCommunityModules","watermarkMessage","LicenseManager_1","validateLicense","licenseKey","outputMissingLicenseKey","extractLicenseComponents","license","isTrial","md5","validateLicenseKeyForVersion","validateLegacyKey","outputInvalidLicenseKey","extractExpiry","restrictionHashed","cleanedLicenseKey","hashStart","extractBracketedInformation","getLicenseDetails","expiry","isDisplayWatermark","getWatermarkMessage","monthIndex","getGridReleaseDate","RELEASE_INFORMATION","keystr","utf8_decode","setLicenseKey","validateForTrial","gridReleaseDate","current","formattedExpiryDate","formattedReleaseDate","outputIncompatibleVersion","outputExpiredTrialKey","MD5","ieCompatibility","md5cycle","ff","gg","hh","ii","add32","cmn","md51","md5blk","tail","md5blks","rhex","hex_chr","add32Compat","add32Std","lsw","WatermarkComp","shouldDisplayWatermark","eLicenseTextRef","licenseManager","loc","pathname","isWhiteListURL","ClipboardService","navigatorApiFailed","clipboard","readText","processClipboardData","pasteFromClipboardLegacy","executeOnTempElement","textArea","parsedData","removeLastLineIfBlank","doPasteOperation","cellsToFlash","updatedRowNodes","hasOnlyOneValueToPaste","pasteIntoActiveRange","pasteStartingFromFocusedCell","pasteOperationFunc","dispatchFlashCells","fireRowChanged","abortRepeatingPasteIntoRows","getRangeSize","indexOffset","dataRowIndex","iterateActiveRanges","currentRowData","columnsToPasteInto","isPasteSingleValueIntoRange","pasteSingleValueIntoRange","pasteMultipleValues","updateCellValue","firstRowValues","firstRowValue","lastLine","clipboardGridData","rowPointer","skipGroupRows","clipboardRowData","getNextGoodRowNode","processedValue","includeHeaders","includeGroupHeaders","copyParams","selectedRowsToCopy","copyFocusedCellToClipboard","onlyFirst","rowCallback","iterateActiveRange","isLastRange","rangeIndex","isLastRow","areAllRangesAbleToMerge","buildDataFromMergedRanges","buildDataFromRanges","copyDataToClipboard","columnsSet","allRowPositions","allCellsToFlash","getRangeRowPositionsAndCellsToFlash","rowPositions","exportedColumns","buildExportParams","userProvidedFunc","writeText","copyDataToClipboardLegacy","focusedElementBefore","execCommand","callbackNow","callbackAfter","eDoc","eTempInput","guiRoot","startRangeIndex","endRangeIndex","ExpandState","EXPANDED","COLLAPSED","INDETERMINATE","PrimaryColsHeaderPanel","createExpandIcons","eExpand","onSelectClicked","eFilterTextField","onFilterTextChanged","onMiniFilterKeyPress","showOrHideOptions","eExpandChecked","eExpandUnchecked","eExpandIndeterminate","setExpandState","showFilter","suppressColumnFilter","showSelect","suppressColumnSelectAll","showExpand","suppressColumnExpandAll","groupsPresent","onFilterTextChangedDebounced","DEBOUNCE_DELAY","selectState","expandState","setSelectionState","ColumnModelItem","isGroup","getDisplayName","getDept","isPassesFilter","passesFilter","setPassesFilter","ToolPanelContextMenu","parentEl","buildMenuItemMap","displayContextMenu","allowGrouping","allowValues","allowPivoting","menuItemMap","allowedFunction","activeFunction","activateLabel","deactivateLabel","activateFunction","groupedColumns","addColumnsToList","deActivateFunction","removeColumnsFromList","removeIcon","menuList","menuItemsMapped","getMappedMenuItems","isInactive","ToolPanelColumnGroupComp","modelItem","allowDragging","focusWrapper","processingColumnStateChange","eDragHandle","checkboxGui","cbSelect","checkboxInput","onColumnStateChanged","onLabelClicked","onCheckboxChanged","onExpandChanged","setOpenClosedIcons","setupDragging","addVisibilityListenersToAllChildren","refreshAriaExpanded","refreshAriaLabel","isSelectable","onSelectAllChanged","contextMenu","onExpandOrContractClicked","eColumnGroupIcons","onChangeCommon","getVisibleLeafColumns","extractCols","modelItemUtils","selectAllChildren","columnLabel","visibilityLabel","selectedValue","workOutSelectedValue","readOnlyValue","workOutReadOnlyValue","visibleLeafColumns","checkedCount","uncheckedCount","isColumnChecked","colsThatCanAction","pivoted","grouped","aggregated","oldState","folderOpen","cbValue","PRIMARY_COLS_LIST_ITEM_HOVERED","PrimaryColsListPanelItemDragFeature","virtualList","currentDragColumn","lastHoveredColumnItem","columnPanelItemDragStart","columnPanelItemDragEnd","createDropTarget","createAutoScrollService","getCurrentColumns","moveBlocked","virtualListGui","hoveredColumnItem","getDragColumnItem","clearHoveredItems","maxLen","getDisplayedColsList","normalizedRowIndex","targetIndex","getTargetIndex","getMoveDiff","currentColumns","columnItemComponent","isBefore","targetColumnIndex","adjustedTarget","ToolPanelColumnComp","groupsExist","indent","setColumn","anyFunctionActive","canBeToggled","canBeDragged","noFunctionsAllowed","checkboxPassive","UIColumnModel","PrimaryColsListPanel","destroyColumnItemFuncs","destroyColumnTree","allColsTree","suppressSyncLayoutWithGrid","fireSelectionChangedEvent","expandGroupsByDefault","contractColumnSelection","columnListName","listItemElement","createComponentFromItem","suppressColumnMove","renderedGroup","columnComp","expandedStates","getExpandedStates","pivotModeActive","buildTreeFromProvidedColumnDefs","buildTreeFromWhatGridIsDisplaying","setExpandedStates","markFilteredColumns","flattenAndFilterModel","displayedColsList","forEachItem","colGroup","colDefService","syncLayoutWithGrid","setColumnLayout","buildListModel","columnExpandedListener","onColumnExpanded","recursivelyBuild","parentList","createGroupItem","createColumnItem","columnGroupDef","removeFunc","recursiveFunc","focusedRow","focusRowIfAlive","notifyListeners","doSetExpandedAll","setGroupsExpanded","groupIds","expandedGroupIds","unrecognisedGroupIds","getExpandState","expandedCount","notExpandedCount","doSetSelectedAll","selectAllChecked","getSelectionState","setFilterText","recursivelyCheckFilter","parentPasses","atLeastOneChildPassed","groupPasses_1","childPasses","fireGroupExpandedEvent","selectionState","PivotModePanel","cbPivotMode","onBtPivotMode","AggregationStage","noValueColumns","noUserAgg","aggDetails","createAggDetails","recursivelyCreateAggData","measureColumns","notPivoting","aggregateRowNode","aggResult","measureColumnsMissing","pivotColumnsMissing","aggregateRowNodeUsingValuesOnly","aggregateRowNodeUsingValuesAndPivot","pivotColumnDefs","getPivotColumnDefs","pivotTotalColumnIds","valueColDef","getValuesFromMappedSet","getValuesPivotNonLeaf","aggregateValues","totalColDef","aggResults","currentColId","changedValueColumns","notChangedValueColumns","values2d","getValuesNormal","oldValues","mappedSet","mapPointer","valueColumnCount","aggFuncOrString","deprecationWarning","BatchRemover","allSets","allParents","removeFromChildrenAfterGroup","getSet","removeFromAllLeafChildren","getAllParents","nodeDetails","GroupStage","groupIdSequence","createGroupingDetails","transactions","handleTransaction","shotgunResetEverything","sortGroupsWithComparator","groupedCols","includeParents","groupedColCount","batchRemover","removeNodes","moveNodesInWrongPath","insertNodes","parentsWithChildrenRemoved","removeEmptyGroups","sortChildren","recursiveSort","getExistingPathForNode","infoToKeyMapper","oldPath","newPath","getGroupInfo","moveNode","removeNodesInStages","insertOneNode","leafRowNodes","removeNodesFromParents","postRemoveCreateFillerNodes","nodeParents","forEachParentGroup","nodesToRemove","provided","batchRemoverIsLocal","batchRemoverToUse","nodeToRemove","newGroupNode_1","findParentForNode","possibleEmptyGroups","checkAgain","possibleEmptyGroup","mapKey","getChildrenMappedKey","groupShouldBeRemoved","addToParent","areGroupColsEqual","d2","checkAllGroupDataAfterColsChanged","setGroupData","noChangeInGroupingColumns","noFurtherProcessingNeeded","newGroupDisplayColIds","oldGroupingDetails","oldGroupDisplayColIds","newRowNodes","parentGroup","swapGroupWithUserNode","nextNode","groupInfo","getOrCreateNextNode","fillerGroup","userGroup","createGroup","setExpandedInitialValue","userCallback","getGroupInfoFromCallback","getGroupInfoFromGroupColumns","PivotColDefService","PivotColDefService_1","createPivotColumnDefs","uniqueValues","pivotColumnGroupDefs","levelsDeep","columnIdSequence","recursivelyAddGroup","addRowGroupTotals","addExpandablePivotGroups","addPivotTotalsToGroups","parentChildren","primaryPivotColumns","newPivotKeys","groupDef","valueGroup_1","createColDef","measureColumn","primaryPivotColumnDefs","headerNameComparator","recursivelyAddSubTotals","currentPivotColumnDefs","currentColumnIdSequence","childAcc_1","grp","firstGroup_1","pivotValueColId","insertAfter","valueCols","valueCol","sameAggFuncs","recursivelyAddPivotTotal","childColIds","extractColIdsForValueColumn","createRowGroupTotal","valueGroup","PIVOT_ROW_TOTAL_PREFIX","colDefToCopy","userComparator","m1","m2","existingList","updatedList","PivotStage","executePivotOn","executePivotOff","aggregationColumnsHashLastTime","bucketUpRowNodes","uniqueValuesChanged","setUniqueValues","aggregationColumns","aggregationColumnsHash","aggregationFuncsHash","aggregationColumnsChanged","aggregationFuncsChanged","aggregationFuncsHashLastTime","pivotColDefService","newValues","recursivelySearchForLeafNodes","bucketRowNode","bucketChildren","mappedChildren","pivotColumn","result_1","AGBigInt","BigInt","AggFuncService","aggFuncsMap","AggFuncService_1","initialiseWithDefaultAggregations","AGG_SUM","aggSum","AGG_FIRST","aggFirst","AGG_LAST","aggLast","AGG_MIN","aggMin","AGG_MAX","aggMax","AGG_COUNT","aggCount","AGG_AVG","aggAvg","allKeys","getFuncNames","sumInKeysList","sumInFuncs","userAllowedFuncs","valueToAdd","stylesMap","registeredNumberFmts","registeredFonts","registeredFills","registeredBorders","registeredCellStyleXfs","registeredCellXfs","registeredCellStyles","currentSheet","DropZoneColumnComp","popupShowing","addElementClasses","eButton","getColumnAndAggFuncName","aggFuncName","extraDescription","setTextValue","setupRemove","onShowAggFuncSelection","EVENT_COLUMN_REMOVE","isEnter","displayValueSanitised","createAggSelect","selectItem","rowToFocus","aggFuncStringTranslated","AggItemComp","itemSelected","BaseDropZonePanel","STATE_NOT_DRAGGING","guiDestroyFunctions","childColumnComponents","resizeEnabled","eColumnDropList","toggleResizable","destroyGui","refreshGui","setupDropTarget","getAriaLabel","isNext","isPrevious","checkInsertIndex","newIndex","getNewHorizontalInsertIndex","getNewVerticalInsertIndex","insertIndex","goingLeft","childColumn","rectX","checkDragStartedBySelf","STATE_REARRANGE_COLUMNS","potentialDndColumns","STATE_NEW_COLUMNS_IN","goodDragColumns","isColumnDroppable","isPotentialDndColumns","removeColumns","addColumns","rearrangeColumns","columnsToRemove","newColumnList","getExistingColumns","columnsToAdd","colsToAddNoDuplicates","getNonGhostColumns","focusedIndex","getFocusedItem","alternateElement","addIconAndTitleToGui","addEmptyMessageToGui","addColumnsToGui","restoreFocus","nonGhostColumns","addingGhosts","itemsToAddToGui","columnComponent","createColumnComponent","addArrow","addAriaLabelsToComponents","isExistingColumnsEmpty","emptyMessage","RowGroupDropZonePanel","passBeansUp","dragAndDropIcon","PivotDropZonePanel","GridHeaderDropZones","createNorthPanel","topPanelGui","dropPanelVisibleListener","onDropPanelVisible","rowGroupComp","pivotComp","bothDisplayed","grouping","ValuesDropZonePanel","PrimaryColsPanel","primaryColsHeaderPanel","primaryColsListPanel","onGroupExpanded","onSelectionChange","onExpandAll","onCollapseAll","onSelectAll","onUnselectAll","expandGroups","collapseGroups","ColumnToolPanel","childDestroyFuncs","suppressPivotMode","suppressRowGroups","suppressValues","suppressPivots","isRowGroupingModuleLoaded","pivotModePanel","primaryColsPanel","rowGroupDropZonePanel","valuesDropZonePanel","pivotDropZonePanel","setLastVisible","pivotModeListener_1","resetChildrenHeight","setPivotModeSectionVisible","setRowGroupsSectionVisible","setValuesSectionVisible","setPivotSectionVisible","setResizers","panel","columnDrop","columnDropEls","lastVisible","expandColumnGroups","collapseColumnGroups","destroyChildren","HorizontalResizeComp","setElementToResize","elementToResize","setInverted","startingWidth","inverted","setMaxWidth","setMinWidth","SideBarButtonComp","getToolPanelId","eIconWrapper","eToggleButton","onButtonPressed","EVENT_TOGGLE_BUTTON_CLICKED","SideBarButtonsComp","buttonComps","setToolPanelDefs","toolPanelDefs","addButtonComp","setActiveButton","buttonComp","EVENT_SIDE_BAR_BUTTON_CLICKED","toolPanelId","clearButtons","ToolPanelWrapper","setupResize","resizeBar","setToolPanelDef","setToolPanelComponent","compInstance","toolPanelCompInstance","setResizerSizerSide","SideBarComp","toolPanelWrappers","sideBarButtonsComp","onToolPanelButtonClicked","setSideBarDef","clearDownUi","sideBarGui","openPanel","firstFocusableEl","selectedButton","currentButton","innerButton","destroyToolPanelWrappers","sideBarExists","setupToolPanels","resizerSide","currentlyOpenedKey","raiseToolPanelVisibleEvent","toolPanelWrapper","activeToolPanel","ToolPanelColDefService","isColGroupDef","invalidColIds","createDummyColGroup","depth","children_1","mappedResults","syncLayoutCallback","leafPathTrees","getLeafPathTrees","mergeLeafPathTrees","getLeafPathTree","leafPathTree","mergeTrees","treeA","treeB","mergeResult","groupToMerge","addChildrenToGroup","pathB","pathA","currentSubGroup","currentSubGroupToAdd","existingChildIds","childGroupAlreadyExists","lastChildIsDifferent","currentGroup","groupToAdd","subGroup","ModelItemUtils","colTree","extractAllLeafColumns","setAllColumns","setAllPivot","setAllVisible","colStateItems","setAllPivotPassive","setAllPivotActive","copyOfPivotColumns","copyOfValueColumns","copyOfRowGroupColumns","pivotChanged","valueChanged","rowGroupChanged","ze","ColumnsToolPanelModule","ge","ss","html","xmlns","He","vn","Width","ur","styleId","MergeAcross","StyleID","Type","Uo","ri","ws","table","Name","Ji","Zi","styleProperties","Vertical","Horizontal","Indent","ReadingOrder","readingOrder","Rotate","rotate","ShrinkToFit","shrinkToFit","VerticalText","verticalText","WrapText","be","borders","borderBottom","borderLeft","borderRight","borderTop","Position","LineStyle","lineStyle","Weight","De","font","Bold","bold","FontName","fontName","Italic","italic","Outline","outline","Shadow","Size","StrikeThrough","strikeThrough","Underline","underline","VerticalAlign","CharSet","charSet","Family","family","Ge","interior","Pattern","PatternColor","patternColor","Fn","Protected","protection","protected","HideFormula","hideFormula","ko","Format","numberFormat","bs","ID","ExcelXmlFactory","createExcel","currentWorksheet","excelXmlHeader","docProps","documentProperties","eWorkbook","excelWorkbook","wb","workbook","boolean","docProperties","stylesXmlElement","worksheet","styleXmlElement","addProperty","factoryMode","numberFormatMap","pointsToPixel","points","pixelsToEMU","getHeightFromProperty","pixelsToPoint","createXmlPart","getExcelColumnName","tableIdx","BaseExcelSerializingSession","mixedStyles","mixedStyleCounter","stylesByIds","baseExcelStyles","customContent","addImage","currentCells","headerRowHeight","collapsibleRanges","styleIds","styleLinker","createMergedCell","getStyleId","getDataTypeForValue","onNewRow","onNewHeaderColumn","onNewBodyColumn","convertColumnToExcel","longestRow","sheetName","isFormula","autoConvertFormulas","getStyleById","nameForCol","createCell","onNewColumnAccumulator","skipCols","excelStyleId","addedImage","addNewMixedStyle","excelID","excelId","resultantStyle","excelStyle","ExcelXmlSerializingSession","actualStyle","typeTransformed","getValueTransformed","suppressTextAsCDATA","cdataStart","cdataEndRegex","numOfCells","Rl","author","jsonDate","toJSON","dc","dcterms","dcmitype","xsi","nl","Extension","PartName","ContentType","contentTypesFactory","sheetLen","worksheets","sheetsWithImages","ExcelXlsxFactory","imageTypesObject","imageDocs","ext","contentType","contentTypeFactory","Gc","getAnchor","imageAnchor","getExt","uri","recolor","getNvPicPr","descr","altText","preferRelativeResize","getColorDetails","tint","getBlipFill","blipChildren","transparency","amt","primaryColor","secondaryColor","getDuoTone","bright","contrast","cstate","getSpPr","imageBoxSize","xfrm","cx","cy","rot","prst","getPicture","worksheetImageIndex","$a","sheetIndex","sheetImages","sheetImageIds","boxSize","fitCell","totalHeight","_e","_f","_g","_h","_j","getImageBoxSize","editAs","getColorChildren","lastClr","or","getFont","script","typeface","panose","Tr","getPropertyVal","getGs","schemeColor","lumMod","shade","getSolidFill","getGradFill","rotWithShape","gs1","gs2","gs3","ang","scaled","getLine","cap","cmpd","algn","lim","getEffectStyle","blurRad","dist","Ll","Tu","colorScheme","fontScheme","formatScheme","jl","themeElements","buildSharedString","strMap","vc","strings","uniqueCount","tp","formatCode","numFmtId","Yu","numberFormats","numberFormatFactory","hl","scheme","colorTheme","Wc","fonts","fontFactory","Qt","fgTheme","fgTint","fgRgb","bgRgb","bgIndexed","pf","patternType","indexed","qt","fills","fillFactory","mappedBorderNames","Dot","Dash","Double","DashDot","DashDotDot","SlantDashDot","mediumBorders","colorMap","Solid","Gray50","Gray75","Gray25","HorzStripe","VertStripe","ReverseDiagStripe","DiagStripe","DiagCross","ThickDiagCross","ThinHorzStripe","ThinVertStripe","ThinReverseDiagStripe","ThinDiagStripe","ThinHorzCross","ThinDiagCross","Gray125","Gray0625","horizontalAlignmentMap","Automatic","Center","Fill","Justify","CenterAcrossSelection","Distributed","JustifyDistributed","verticalAlignmentMap","Top","Bottom","convertLegacyColor","convertLegacyBorder","namedWeight","getWeightName","mappedName","convertLegacyHorizontalAlignment","convertLegacyVerticalAlignment","getBorderColor","Ui","diagonal","leftChildren","rightChildren","topChildren","bottomChildren","diagonalChildren","xl","borderFactory","getReadingOrderId","textRotation","Vl","Bi","xf","borderId","fillId","fontId","xfId","alignmentFactory","protectionFactory","applyAlignment","applyProtection","applyBorder","applyFill","applyFont","applyNumberFormat","Du","xfs","xfFactory","Ds","$p","builtinId","ep","cellStyles","cellStyleFactory","getStyleName","resetStylesheetValues","base","registerStyle","currentFill","currentBorder","currentFont","currentNumberFmt","convertedPattern","convertLegacyPattern","convertedFillColor","convertedPatternColor","registerFill","bottomStyle","topStyle","leftStyle","rightStyle","bottomColor","topColor","leftColor","rightColor","registerBorders","utf8Name","convertedColor","familyId","getFontFamilyId","convertedUnderline","convertedVerticalAlign","registerFont","currentFormat","registerNumberFmt","xg","defaultFontSize","numberFormatsFactory","fontsFactory","fillsFactory","bordersFactory","cellStylesXfs","cellStylesXfsFactory","cellXfs","cellXfsFactory","cellStylesFactory","defaultPivotStyle","defaultTableStyle","Cc","sheetId","nf","sheet","sheetFactory","Al","sheetsFactory","Qp","outlineLevel","bestFit","excelWidth","customWidth","getExcelCellWidth","Ul","convertedType","convertLegacyType","shouldDisplayCell","ts","collapsed","rowIdx","posCounter","excelPos","mergedCells","addEmptyCells","ht","customHeight","customFormat","cellFactory","Sl","getPageOrientation","orientation","processHeaderFooterContent","getHeaderPosition","headerString","applyHeaderFontStyle","replaceHeaderFooterTokens","buildHeaderFooter","headerFooterConfig","headersAndFooters","rules","headerFooter","namePrefix","nameSuffix","eg","margins","pageSetup","cellsWithCollapsibleGroups","lastCol","merges","cellIdx","outputRow","rangeMap","currentRange","rangeString","refCol","currentOutlineLevel","getMergedCellsAndAddColumnGroups","createWorksheetChildren","sheetNumber","rowFactory","addSheetData","mergeCells","mergedCell","mergeCellFactory","addMergeCells","addPageMargins","horizontalDpi","verticalDpi","paperSize","addPageSetup","differentFirst","differentOddEven","even","addHeaderFooter","addDrawingRel","Yc","Id","Target","Zl","relationship","relationshipFactory","addSheetName","_currentSheet","registerStyles","sheetNames","createWorksheet","buildImageMap","currentSheetIndex","registeredImage","images","calculatedImage","columnsInSpan","setExcelImageTotalWidth","nextRowHeight","setExcelImageTotalHeight","currentSheetImages","currentImage","workbookImageIds","imageType","buildSheetImageMap","worksheetImageIdMap","worksheetImageIds","worksheetImages","getStringPosition","sharedStrings","resetFactory","createWorkbook","workbookFactory","createStylesheet","stylesheetFactory","createSharedStrings","sharedStringsFactory","createCore","coreFactory","createContentTypes","createRels","rs","relationshipsFactory","createTheme","officeThemeFactory","createWorkbookRels","createDrawing","drawingFactory","createDrawingRel","XMLArr","createWorksheetDrawingRel","currentRelationIndex","worksheetFactory","ExcelXlsxSerializingSession","addImageToCell","fontSize","hasImages","imgCounter_1","firstImage","base64","imageRelationCounter","createImageRelationsForSheet","drawingFolder","drawingFileName","worksheetRelFile","ExcelCreator","setExportMode","packageFile","getExportMode","isXlsx","applicableStyles","EXPAND_STATE","FiltersToolPanelHeaderPanel","preConstruct","onSearchTextChanged","showFilterSearch","suppressFilterSearch","suppressExpandAll","filterGroupsPresent","onSearchTextChangedDebounced","searchText","currentExpandState","ToolPanelFilterComp","hideHeader","eFilterName","eFilterToolPanelHeader","toggleExpanded","onFilterOpened","eFilterIcon","getColumnFilterName","collapse","underlyingFilter","agFilterToolPanelBody","refreshFilter","refreshVirtualList","ToolPanelFilterGroupComp","childFilterComps","expandedCallback","showingColumn","filterGroupComp","setGroupTitle","refreshFilterClass","addExpandCollapseListeners","addFilterChangedListeners","getFilterGroupName","filterGroupName","getFilterGroupId","hideGroupItem","forEachToolPanelFilterChild","expandListener","collapseListener","getColumnGroupName","getColumnName","destroyFilters","FiltersToolPanelListPanel","filterGroupComps","syncFilterLayout","toolPanelColDefService","setFiltersLayout","recursivelyAddComps","setFirstAndLastVisible","searchFilterText","searchFilters","fireExpandedEvent","recursivelyAddFilterGroupComps","shouldDisplayFilter","filtersExistInChildren","newDepth","expandFilterGroups","updatedGroupIds","filterGroup","updateGroupExpandState","expandFilters","updatedColIds","anyChildrenChanged_1","updateFilterExpandState","unrecognisedColIds","updateExpandCounts","performFilterSearch","searchFilter","firstVisible","recursivelySearch","filterItem","groupNamePasses","alreadyPassed","anyChildPasses","FiltersToolPanel","listenerDestroyFuncs","filtersToolPanelHeaderPanel","filtersToolPanelListPanel","onSearchChanged","setFilterLayout","collapseFilterGroups","collapseFilters","ChartDatasource","crossFiltering","columnNames","pivoting","updatePivotKeysForSSRM","extractRowsFromGridRowModel","aggregateRowsByDimension","numRows","extractedRowData","groupNodeIndexes","groupsToRemove","filteredNodes","allRowNodes","getFilteredRowNodes","getAllRowNodes","modelLastRow","gridRowModel","dimensionCols","valueObject","valueString","getGroupLabels","ChartDataModel","columnNamesArr","filteredOutColId","actualValue","isScatter","groupIndexesToRemove_1","dataFromGrid","lastColId","dataAggregated","currentMap","groupItem_1","__children","dimCol","dimColId","groupItem","dataToAgg","dataToAggFiltered","aggResultFiltered","pivotKeySeparator","extractPivotKeySeparator","firstSecondaryCol","childId","extractSeparator","initialLabel","sortRowNodes","valueColState","dimensionColState","suppressComboChartWarnings","chartType","pivotChart","chartThemeName","referenceCellRange","suppliedCellRange","suppressChartRanges","unlinkChart","seriesChartTypes","initComboCharts","savedCustomSeriesChartTypes","updateCellRanges","updatedColState","valueCellRange","getAllChartColumns","allColsFromRanges","getAllColumnsFromRanges","updateColumnState","setDimensionCellRange","setValueCellRange","syncDimensionCellRange","updateSeriesChartTypes","isComboChart","seriesChartType","primaryOnly","secondaryAxis","updateSeriesChartTypesForCustomCombo","updateChartSeriesTypesForBuiltInCombos","SUPPORTED_COMBO_CHART_TYPES","updatedSeriesChartTypes","primaryChartType","secondaryChartType","selectedCols","lineIndex","getRowIndexes","isGrouping","getSelectedDimension","getSelectedValueCols","isGroupActive","groupDimensionSelected","getColDisplayName","createCellRange","dimensionCellRange","endRowPosition","displayedCols","isNumberCol","extractLeafData","allCols","isInitialising","hasSelectedDimension","aggFuncDimension","defaultCategory","DEFAULT_CATEGORY","chartTranslationService","valueColumnsFromReferenceRange","updatedCol","idsMatch","orderedColIds","reorderColState","ascColStateOrder","colsInRange","selectedDimensionColState","aggFuncDimension_1","selectedValueCols","orderedColIds_1","selectedDimension","allPropertyListeners","allEventListeners","addPropertyListener","propertyListeners","scopes","removePropertyListener","notifyPropertyListeners","eventListeners","notifyEventListeners","privateKeyPrefix","privateKey","privateKeyEvents","events_1","Padding","reactive","BBox","dilate","containsPoint","render","noParams","resetTransform","strokeStyle","lineWidth","strokeRect","fillStyle","textBaseline","fillText","restore","Matrix","setElements","setIdentityElements","AxB","m11","m12","m21","m22","m31","m32","o11","o12","o21","o22","o31","o32","multiplySelf","other","multiply","preMultiplySelf","inverse","rD","inverseTo","invertSelf","transformPoint","transformBBox","bbox","xx","xy","yx","yy","h_w","h_h","sx","sy","toContext","identity","flyweight","matrix","PointerEvents","All","tag","isContainerNode","_children","childSet","inverseMatrix","_dirtyTransform","_scalingX","_scalingY","_scalingCenterX","_scalingCenterY","_rotationCenterX","_rotationCenterY","_rotation","_translationX","_translationY","_dirty","_visible","dirtyZIndex","_zIndex","_setScene","_scene","_setParent","_parent","countChildren","scene","inverseTransformPoint","dirtyTransform","pickNode","hit","computeBBox","computeBBoxCenter","computeTransformMatrix","scx","scy","bbcx","bbcy","scalingX","scalingY","scalingCenterX","scalingCenterY","rcx","rcy","rotationCenterX","rotationCenterY","translationX","ty","translationY","tx4","ty4","isMergeableObject","deepMerge","emptyTarget","cloneUnlessOtherwiseSpecified","getOwnPropertySymbols","getEnumerableOwnPropertySymbols","isSpecial","arrayMerge","defaultArrayMerge","defaultIsMergeableObject","sourceIsArray","getKeys","propertyIsOnObject","propertyIsUnsafe","customMerge","getMergeFunction","mergeObject","Shape","lastInstanceId","_fillOpacity","_strokeOpacity","_fill","defaultStyles","_stroke","stroke","_strokeWidth","strokeWidth","_lineDash","lineDash","_lineDashOffset","lineDashOffset","_lineCap","lineCap","_lineJoin","lineJoin","_opacity","onShadowChange","_fillShadow","fillShadow","_strokeShadow","strokeShadow","createInstance","shape","restoreOwnStyles","restoreAllStyles","restoreOverriddenStyles","protoStyles","identical","fillStroke","pixelRatio","canvas","globalAlpha","fillOpacity","shadowColor","shadowOffsetX","xOffset","shadowOffsetY","yOffset","shadowBlur","strokeOpacity","setLineDash","isPointInPath","chainObjects","HdpiCanvas","_container","_pixelRatio","_width","_height","setPixelRatio","_canvas","toImage","img","getDataURL","toDataURL","dataUrl","ratio","devicePixelRatio","overrideScale","imageRendering","_textMeasuringContext","_svgText","svg","createElementNS","visibility","svgText","_has","textMetrics","textMeasuringContext","measureText","actualBoundingBoxDescent","getTransform","textAlign","getTextSize","metrics","actualBoundingBoxAscent","measureSvgText","textSizeCache","fontCache","size_1","textContent","getBBox","overrides","$save","$restore","$setTransform","name_1","_x","_y","lineBreakRegex","lines","_text","_dirtyFont","_fontSize","_fontFamily","_textAlign","_textBaseline","_lineHeight","splitText","dirtyFont","_font","fontStyle","fontWeight","_fontStyle","_fontWeight","getPreciseBBox","getApproximateBBox","actualBoundingBoxLeft","isPointInStroke","strokeText","Caption","tickStep","absStep","LN10","NumericTicks","e10","e5","rawStep","power","constant","msA","msB","setTime","nb","na","domain","prefixExponent","formatDefaultLocale","formatPrefix","ContinuousScale","unknown","clamper","_clamp","_domain","_range","untransform","_interpolate","interpolateValue","rescale","setDomain","getDomain","piecewise","polymap","bimap","normalize","interpolate","x0","x1","y0","y1","lo","hi","mid","bisectRight","ascending","convert","invert","interpolateNumber","formatTypes","xs","toPrecision","out","toLocaleString","toExponential","formatRounded","formatDecimalParts","coefficient","exponent","FormatSpecifier","specifier","sign","zero","comma","formatRegEx","interpolateRegEx","definition","thousands","formatGroup","currencyPrefix","currencySuffix","numerals","formatNumerals","minus","nan","formatSpecifier","makeFormatSpecifier","maybeSuffix","valuePrefix","valueSuffix","nx","valueNegative","formatTrim","newFormat","formatLocale","defaultLocale","LinearScale","ticks","nice","tickIncrement","L","tickFormat","precisionPrefix","precisionRound","precisionFixed","isString","isStringObject","isNumberObject","Group","parent_1","EnterNode","datum","Selection","parents","Class","appendFn","creator","numGroups","subgroups","subgroup","subnode","selectByClass","selectByTag","selectAllByClass","selectAllByTag","selectNone","selectorAll","groupCount","groupLength","each","groups0","groups1","m0","group0","group1","attrFn","enterGroups","exitGroups","setDatum","data_1","updateGroups","parent_2","dataSize","enterGroup","updateGroup","exitGroup","bindKey","bindIndex","enter","exit","keyValues","nodeByKeyValue","keyValue","keyPrefix","Line","_x1","_y1","_x2","_y2","x2","y2","beginPath","moveTo","lineTo","ax1","ay1","ax2","ay2","bx1","by1","bx2","by2","ua","ub","px1","py1","px2","py2","px3","py3","px4","py4","intersections","bx","bezierCoefficients","by","linearRoot","t1","t2","quadraticRoots","third","Im","t_1","theta","acos","thirdA","twoSqrtQ","t3","cubicRoots","ttt","P1","P2","P3","P4","Path2D","commands","_closedPath","draw","bezierCurveTo","closePath","arcTo","rx","ry","fA","fS","hdx","hdy","sinPhi","cosPhi","xp","yp","ratX","ratY","lambda","cpx","cpy","theta1","deltaTheta","cubicArc","phi","theta2","anticlockwise","temp","f90","sinTheta1","cosTheta1","rightAngle","lastX","sinPhi2","cosPhi2","C2x","C2y","deCasteljau","newPoints","approximateCurve","xy_1","quadraticCurveTo","cubicCurveTo","cx1","cy1","cx2","cy2","cn","ox","oy","px","py","intersectionCount","ci","pi","segmentIntersection","cubicSegmentIntersections","setFromString","parseSvgPath","splitCommandsRe","strParams","matchParamsRe","prettifySvgPath","lastCommand","quadraticCommandRe","cubicCommandRe","checkCubicCP","checkQuadraticCP","toPrettyString","toSvg","xmlDeclaration","toDebugSvg","toCubicPaths","cubicPathToString","Path","_dirtyPath","_svgPath","closedPath","updatePath","dirtyPath","twoPi","epsilon","fractionOrSignificantDigits","EPSILON","ArcType","Open","Chord","Round","Arc","_centerX","_centerY","_radiusX","_radiusY","_startAngle","_endAngle","_counterClockwise","_type","normalizeAngle360","startAngle","endAngle","centerX","radiusX","radiusY","counterClockwise","fullPie","Tags","Tick","GridLine","AxisTick","AxisLabel","mirrored","parallel","onFormatChange","_format","Axis","lineNode","requestedRange","_visibleRange","_title","_gridLength","gridStyle","_radialGrid","thickness","groupSelection","onLabelFormatChange","_scale","_ticks","getMeta","updateRange","rr","vr","visibleRange","tolerance","inRangeEx","labelFormatter","oldTitle","positionTitle","requestedRangeMin","requestedRangeMax","parallelLabels","labelRotation","halfBandwidth","bandwidth","sideFlag","parallelFlipRotation","parallelFlipFlag","regularFlipRotation","regularFlipFlag","alignFlag","gridLength","radialGrid","styleCount_1","gridLines","angularGridLength_1","normalizeAngle360Inclusive","arc","gridLine","labelSelection","formatTickDatum","labelX","autoRotation","titleVisible","titleNode","excludeTitle","titleRotationFlag","axis","formatDatum","labelBBox","ChartAxisDirection","ChartAxisPosition","Angle","Radius","ChartAxis","boundSeries","_position","NumberAxis","_nice","_min","_max","primaryTickCount","extent","isContinuous","log10","magnitude","calculateNiceStart","calculateNextNiceStep","getTickStep","stepPower","getTicks","calculateNiceSecondaryAxis","BandScale","ordinalRange","_bandwidth","_paddingInner","_paddingOuter","_round","_align","reversed","CategoryAxis","paddingInner","paddingOuter","TreeNode","subtreeLeft","subtreeRight","leafCount","prelim","getLeftSibling","getLeftmostSibling","nextLeft","thread","nextRight","wm","wp","vim","defaultAncestor","defaultAncestor_1","firstWalk","vop","vip","vom","sip","sop","sim","som","moveSubtree","apportion","executeShifts","midpoint","leftSibling","Dimensions","secondWalk","thirdWalk","TreeLayout","dimensions","leafNodes","nonLeafNodes","shiftX","shiftY","flipX","xSteps","ySteps","screenDimensions","GroupedCategoryAxisLabel","GroupedCategoryAxis","tickScale","longestSeparatorLength","labelColor","gridLineSelection","axisLineSelection","separatorSelection","domainValues","tickTree","pad","pathParts","lastPartIndex","pathPart","partIndex","isNotLeaf","insertTick","ticksToTree","tickTreeLayout","treeLayout","resizeTickTree","lineHeight","rangeStart","rangeEnd","treeLabels","isLabelTree","updateGridLines","enterGridLines","updateLabels","enterLabels","maxLeafLabelWidth","Jd","labelGrid","separatorData","Ys","minX","updateSeparators","enterSeparators","lineCount","updateAxisLines","enterAxisLines","styles_1","includeTitle","t0","TimeInterval","_floor","_offset","ms","CountableTimeInterval","_count","_field","field_1","gs","durationSecond","durationMinute","durationHour","durationDay","durationWeek","durationMonth","durationYear","getMilliseconds","ha","minute","Fg","hour","$u","days","tzMinuteDelta","Bg","weeks","sunday","monday","thursday","vm","months","jh","years","Vh","utcDay","setUTCHours","setUTCDate","getUTCDate","H0","utcYear","setUTCMonth","setUTCFullYear","Xm","getUTCDay","utcSunday","utcMonday","utcThursday","Es","numberRe","percentRe","requoteRe","requote","formatRe","pads","timeLocale","lDateTime","dateTime","lDate","lTime","lPeriods","periods","lWeekdays","lShortWeekdays","shortDays","lMonths","lShortMonths","shortMonths","periodRe","periodLookup","formatLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","formatDayOfMonth","formatMilliseconds","timeDay","formatUnixTimestamp","formatUnixTimestampSeconds","timeSunday","timeThursday","yearStart","timeMonday","formatLiteralPercent","utcFormats","getUTCMonth","formatUTCDayOfMonth","formatUTCMilliseconds","getUTCHours","getUTCMinutes","getUTCSeconds","parses","parseSpecifier","parseDayOfMonth","parseHour24","newDate","newYear","utcDate","pad_1","getUTCMilliseconds","newParse","localDate","utcFormat","utcParse","setDefaultLocale","TimeScale","timeYear","timeMonth","timeWeek","timeHour","timeMinute","timeSecond","timeMillisecond","tickIntervals","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","formatYear","defaultTickFormat","ascendingComparator","complexBisectRight","vt","TimeAxis","datumFormat","datumFormatter","Scene","animationFrameId","_root","renderFrameIndex","renderBoundingBoxes","_frameIndex","pendingSize","clearRect","fillRect","frameIndex","cancelAnimationFrame","LinearGradient","angle","createGradient","stops","atan","gradient_1","createLinearGradient","addColorStop","RectSizing","Content","Border","Rect","_radius","_crisp","_gradient","effectiveStrokeWidth","_sizing","updateGradientInstance","gradient","gradientInstance","crisp","sizing","borderSizing","halfWidth","halfHeight","al","Marker","_size","half","Square","hs","MarkerLabel","_marker","_markerSize","_spacing","markerSize","spacing","Circle","Cross","Diamond","Heart","rad","degree","Plus","Triangle","LegendOrientation","LegendPosition","LegendLabel","LegendMarker","LegendItem","paddingX","paddingY","changeListener","layoutChangeListener","Legend","itemSelection","oldSize","onDataChange","onEnabledChange","onPositionChange","onMarkerShapeChange","performLayout","MarkerShape","getMarker","enterSelection","itemCount","bboxes","itemMarker","itemLabel","markerLabel","itemHeight","paddedItemsWidth","paddedItemsHeight","columnCount","itemsWidth","itemsHeight","columnCount_1","startX","startY","markerFill","markerStroke","markerStrokeWidth","markerFillOpacity","markerStrokeOpacity","getDatumForPoint","SizeMonitor","NativeResizeObserver","entries_1","entries_1_1","contentRect","checkSize","unobserve","dx","dy","w1","h1","w2","h2","r1x","r1y","r1w","r1h","r2x","r2y","r2w","r2h","defaults","Chart","defaultTooltipClass","ChartTooltip","tracking","showTimeout","constrained","tooltipRoot","IntersectionObserver","target_1","intersectionRatio","updateClass","instantly","tooltipRect","maxLeft","lastPick","dehighlightDatum","background","legendAutoPadding","captionAutoPadding","_autoSize","_axes","_series","_axesChanged","_seriesChanged","layoutCallbackId","_performLayout","layoutPending","dataCallbackId","nodeData","updateCallbackId","legendBBox","_onMouseDown","_onMouseMove","_onMouseUp","_onMouseOut","_onClick","onClick","pointerInsideLegend","scheduleLayout","updateLegend","onLegendPositionChange","tooltipDocuments","styleElement","head","setupDomListeners","onCaptionChange","chart_1","cleanupDomListeners","detachAxis","linkedTo","attachAxis","axesChanged","seriesRoot","removeAllSeries","addSeries","scheduleData","dataPending","allSeries","beforeIndex","initSeries","seriesChanged","onSeriesNodeClick","freeSeries","addSeriesAfter","afterIndex","removeSeries","assignSeriesToAxes","axes","axisName","assignAxesToSeries","directionToAxesMap","directions","directionAxes","findMatchingAxis","directionKeys","axisKeys","nodeDataPending","processData","createNodeData","placeLabels","getLabelData","seriesRect","rectContainsRect","circleRectOverlap","rectRectOverlap","legendData","showInLegend","listSeriesItems","updatePending","positionCaptions","subtitle","subtitleVisible","titleBBox","subtitleBBox","positionLegend","legendGroup","legendSpacing","chartElement","getSeriesRect","pickSeriesNode","pickGroup","pickClosestSeriesNodeDatum","closestDatum","minDistance","hitPoint","getNodeData","p1","p2","getDistance","handleLegendMouseMove","handleTooltip","nodeDatum","tooltipTracking","pick","onSeriesDatumPick","canvasRect","checkSeriesNodeClick","checkLegendClick","fireNodeClickEvent","id_1","toggleSeriesItem","highlightedDatum","oldHighlightedDatum","id_2","highlightDatum","getTooltipHtml","ClipRect","_enabled","clip","RangeHandle","_gripLineGap","_gripLineLength","ax","ay","axw","ayh","gripLineGap","gripLineLength","RangeMask","minRange","onRangeChange","computeVisibleRangeBBox","RangeSelector","minHandle","maxHandle","mask","updateHandles","NavigatorMask","rangeMask","rm","NavigatorHandle","rangeHandle","rh","Navigator","minHandleDragging","maxHandleDragging","panHandleOffset","_margin","updateAxes","clipSeries","onDrag","getRatio","stopHandleDragging","CartesianChart","_seriesRoot","shrinkRect","legendPadding","margin","bottomAxesHeight","axisPositionVisited","axisThickness","_onTouchStart","_onTouchMove","_onTouchEnd","_onTouchCancel","onTouchCancel","getTouchOffset","domains_1","HierarchyChart","GroupedCategoryChart","domains","isNumericX","domain_1","Label","SeriesItemHighlightStyle","SeriesHighlightStyle","dimOpacity","HighlightStyle","SeriesTooltip","Series","_nodeDataPending","_updatePending","highlightStyle","setColors","strokes","scheduleNodeDate","scheduleUpdate","getOpacity","getStrokeWidth","defaultStrokeWidth","onHighlightChange","fixNumericExtent","highlightedZIndex","SeriesMarker","maxSize","PolarSeries","PolarChart","CartesianSeries","checkDomainXY","isContinuousX","isContinuousY","isDiscrete","checkRangeXY","CartesianSeriesMarker","length_1","equal","interpolatePattern","valueName","formatName","locales","AreaSeriesLabel","AreaSeriesTooltip","AreaSeries","areaGroup","strokeGroup","markerGroup","labelGroup","fillSelection","strokeSelection","markerSelection","seriesItemEnabled","xData","yData","fillSelectionData","strokeSelectionData","markerSelectionData","labelSelectionData","yDomain","xDomain","_xKey","xName","_yKeys","yNames","seriesItemEnabled_1","_normalizedTo","absValue","xKey","yKeys","normalizedTo","normalized","keysFound","yKey","processedYData","yMin","yMax","yData_1","yData_1_1","stack","absSum","normalizedTotal","normalizedY","findLargestMinMax","totals","totals_1","totals_1_1","updateSelections","updateNodes","createSelectionData","updateFillSelection","updateStrokeSelection","updateMarkerSelection","updateLabelSelection","updateFillNodes","updateStrokeNodes","updateMarkerNodes","updateLabelNodes","xScale","yScale","continuousY","cumulativePathValues","cumulativeMarkerValues","createPathCoordinates","xDatum","yDatum","currY","prevYCoordinate","currYCoordinate","seriesYs","seriesIdx","fillPoints","fillPhantomPoints","strokeDatum","yValues","strokePoints","datumIdx","labelText","nextXDatum","nextYDatum","seriesDatum","rawYDatum","normalizedAndValid","createMarkerCoordinate","yValue","windowX","windowY","currCoordinates","nextCoordinates","updateFills","enterFills","updateStrokes","enterStrokes","updateMarkers","enterMarkers","highlightedFill","highlightedStroke","highlightedDatumStrokeWidth","yKeyIndex","isDatumHighlighted","labelEnabled","xValue","markerFormatter","xString","yString","processedYValue","yName","sanitizeHtml","tooltipRenderer","tooltipFormat","toTooltipHtml","BarSeriesNodeTag","Bar","BarLabelPlacement","Inside","Outside","BarSeriesLabel","placement","BarSeriesTooltip","flat","BarSeries","rectGroup","rectSelection","flipXY","groupScale","_xName","cumYKeyCount","flatYKeys","hideInLegend","_grouped","_yNames","flipChartAxisDirection","is2dArray","prevYKeyCount_1","visibleStacks_1","map_1","_shadow","updateRectNodes","yMinMax","values_1","values_1_1","findMinMax","yAbsTotal","yLargestMinMax","tallestStackMin","tallestStackMax","groups_1","groups_1_1","group_1","group_1_1","getCategoryAxis","getValueAxis","labelFontStyle","labelFontWeight","labelFontSize","labelFontFamily","labelPlacement","barWidth","groupYs","stackIndex","stackYs","prevMinY","prevMaxY","levelIndex","barX","prevY","bottomY","labelY","Or","labelTextAlign","labelTextBaseline","colorIndex","ru","updateRectSelection","updateRects","enterRects","yGroup","fillIndex","visibleStacks","LineSeriesLabel","LineSeriesTooltip","LineSeries","nodeSelection","_yKey","resetHighlight","updateLinePath","updateNodeSelection","linePath","prevXInRange","nextXYDatums","xyDatums","xInRange","nextXInRange","updateLineNode","updateTextNodes","lineStroke","ScatterSeriesTooltip","ScatterSeries","sizeData","sizeScale","labelData","labelName","sizeKey","placedLabels","seriesFill","seriesStroke","HistogramSeriesNodeTag","Bin","HistogramSeriesLabel","aggregationFunctions","bin","mean","HistogramBin","domainMin","domainMax","aggregatedValue","frequency","addDatum","domainWidth","calculateAggregatedValue","aggregationName","aggregationFunction","getY","areaPlot","relativeHeight","HistogramSeriesTooltip","HistogramSeries","textGroup","textSelection","binnedData","_areaPlot","_bins","_aggregation","_binCount","_yName","bins","binCount","deriveBins","binStarts","binSize","firstBinEnd","placeDataInBins","derivedBins","sortedData","currentBin","loop","NEGATIVE_INFINITY","updateTextSelection","binOfData","xDomainMax","xMinPx","xMaxPx","yZeroPx","yMaxPx","selectionDatumLabel","updateTexts","enterTexts","rangeMin","rangeMax","HierarchySeries","DropShadow","squarify","nodeValue","sumValue","newRatio","minRatio","beta","dice","squarifyRatio","custom","Treemap","paddingStack","tile","eachBefore","positionNode","roundNode","HierarchyNode","countFn","eachAfter","compare","aNodes","ancestors","bNodes","leastCommonAncestor","descendants","leaves","links","doLoop","mapChildren","objectChildren","childs","computeHeight","TreemapSeriesTooltip","TreemapSeriesLabel","TextNodeTag","Value","TreemapSeries","labelMap","large","medium","small","_nodePadding","colorKey","colorDomain","colorRange","colorParents","colorName","rootName","updateLayoutPadding","nodePadding","textSize","hasTitle","dataRoot","hierarchy","colorScale","colorValue","getLabelCenterX","getLabelCenterY","isLeaf","innerNodeWidth","innerNodeHeight","mr","textBBox","hasLabel","nameNode","Sector","_centerOffset","_innerRadius","_outerRadius","_angleOffset","outerRadius","isFullPie","angleOffset","midAngle","innerRadius","centerOffset","PieHighlightStyle","PieNodeTag","Callout","PieSeriesLabel","minAngle","PieSeriesCallout","colors","PieSeriesTooltip","PieTitle","PieSeries","radiusScale","groupSelectionData","angleScale","callout","angleKey","angleName","_fills","_strokes","outerRadiusOffset","innerRadiusOffset","radiusKey","angleData","angleDataTotal","angleDataRatios","radiusData","radiusMin","radiusMax","radii","min_1","delta_1","halfPi","datumIndex","midCos","midSin","labelMinAngle","labelVisible","midAngle180","quadrantStart","Vi","updateGroupSelection","centerOffsets","sector","calloutColors","calloutLength","calloutStrokeWidth","offset_1","fontStyle_1","fontWeight_1","fontSize_1","fontFamily_1","color_1","labelRadius","radiusName","angleValue","formattedAngleValue","radiusValue","fills_1","strokes_1","titleText_1","labelParts","setUTCSeconds","setUTCMinutes","palette","mergeOptions","ChartTheme","createChartConfigPerSeries","getDefaults","overrides_1","common","seriesTypes","cartesian","cartesianSeriesTypes","polar","polarSeriesTypes","hierarchySeriesTypes","seriesOverridesMap_1","chartConfig","getPalette","getAxisDefaults","getSeriesDefaults","getBarSeriesDefaults","getCartesianSeriesMarkerDefaults","getChartDefaults","typeToAliases","getConfig","mergeWithParentDefaults","setSeriesColors","seriesOptions","firstColorIndex","colorCount","getSeriesColorCount","getYKeyCount","cartesianDefaults","category","groupedCategory","bar","scatter","histogram","pie","treemap","DarkTheme","fontColor","axisDefaults","seriesLabelDefaults","chartDefaults","MaterialLight","MaterialDark","PastelLight","PastelDark","SolarLight","SolarDark","VividLight","VividDark","lightTheme","darkTheme","lightThemes","darkThemes","themes","baseTheme","getChartTheme","LogScale","baseLog","basePow","_base","df","dl","makeLogFn","makePowFn","reflect","pow10","E","log2","logBase","isReversed","p0","LogAxis","opts","sourceType","classify","targetElement","jsonDiff","allProps","propsChangedCount","lhsType","rhsType","allProps_1","allProps_1_1","NOT_SPECIFIED","json","jsonTypes","finalValue","jsonMerge","nextProp","props_1","props_1_1","matcherPath","constructors","allowedTypes","targetType","propertyPath","propertyMatcherPath","targetAny","targetClass","ctr","currentValueType","newValueType","allowableTypes","wr","jsonApply","nr","visit","jsons","jsonType","_loop_3","otherValues","valueType","jsonWalk","DEFAULT_BACKGROUND","DEFAULT_PADDING","DEFAULT_LEGEND","DEFAULT_CHART_TOOLTIP","DEFAULT_SERIES_TOOLTIP","DEFAULT_TITLE","DEFAULT_SUBTITLE","DEFAULT_CARTESIAN_CHART_OPTIONS","DEFAULT_BAR_CHART_OVERRIDES","DEFAULT_SCATTER_HISTOGRAM_CHART_OVERRIDES","DEFAULT_POLAR_CHART_OPTIONS","DEFAULT_HIERARCHY_CHART_OPTIONS","DEFAULT_DROP_SHADOW","DEFAULT_MARKER","DEFAULT_HIGHLIGHT_STYLE","DEFAULT_LABEL","DEFAULT_CARTESIAN_SERIES_OPTIONS","DEFAULT_LINE_SERIES_OPTIONS","DEFAULT_BAR_SERIES_OPTIONS","DEFAULT_COLUMN_SERIES_OPTIONS","DEFAULT_AREA_SERIES_OPTIONS","DEFAULT_SCATTER_SERIES_OPTIONS","DEFAULT_HISTOGRAM_SERIES_OPTIONS","DEFAULT_PIE_SERIES_OPTIONS","DEFAULT_TREEMAP_SERIES_OPTIONS","DEFAULT_NUMBER_AXIS_OPTIONS","DEFAULT_CATEGORY_AXIS_OPTIONS","DEFAULT_LOG_AXIS_OPTIONS","DEFAULT_GROUPED_CATEGORY_AXIS_OPTIONS","DEFAULT_TIME_AXIS_OPTIONS","DEFAULT_SERIES_OPTIONS","DEFAULT_AXES_OPTIONS","transforms","yNamesMapping","yKeysMapping","labelMapping","SERIES_TRANSFORMS","identityTransform","barSeriesTransform","enableBarSeriesSpecialCases","arrayValueProperties","stringValueProperties","series_1","series_1_1","arrayValueProperty","stringValueProperty","specifiedType","optionsType","input_1","input_1_1","countArrayElements","colours","colourIndex","fallbackOptions","sanityCheckOptions","userSuppliedOptionsType","isAgCartesianChartOptions","isAgHierarchyChartOptions","isAgPolarChartOptions","defaultSeriesType","defaultOverrides","themeConfig","axesThemes","seriesThemes","cleanedTheme","prepareTheme","mergedOptions","prepareMainOptions","preprocessed","stacked","indexMap","seriesOptions_1","seriesOptions_1_1","indexKey","groupSeriesByType","reduceSeries","e_3_1","processSeriesOptions","isSeriesOptionType","paletteOptions","calculateSeriesPalette","applySeriesTransform","prepareSeries","axesTheme","prepareAxis","userOpts","mergedOpts","prepareEnabledOptions","colourCount","takeColours","AgChart","createSeries","AgChartV2","userOptions","prepareOptions","updateDelta","deltaOptions","applyOptionValues","performProcessData","optSeries","seriesDiff","applySeries","optAxes","oldOpts_1","axisDiff","axisOptions","applyAxisValues","createAxis","applyAxes","registerListeners","applyChartOptions","DEBUG","optionalParams","applySeriesValues","JSON_APPLY_OPTIONS","ctrs","seriesTypeOverrides","ChartController","setChartRange","updateForRangeChange","setCellRanges","updateForGridChange","updateForDataChange","raiseChartUpdatedEvent","raiseChartRangeSelectionChangedEvent","updateForPanelChange","getChartModel","chartProxy","getChartOptions","getCellRangeParams","getChartId","getChartData","getChartType","setChartType","raiseChartOptionsChangedEvent","setChartThemeName","getChartThemeName","isPivotChart","getThemes","getPalettes","themeName","isStockTheme","lookupCustomChartTheme","getValueColState","displayNameMapper","getSelectedValueColState","getDimensionColState","getColStateForMenu","isDefaultCategorySelected","detachChartRange","setChartProxy","getChartProxy","isActiveXYChart","isChartLinked","customComboExists","getSeriesChartTypes","updateSeriesChartType","updateChartType","prevSeriesChartType","EVENT_CHART_TYPE_CHANGED","EVENT_CHART_SERIES_CHART_TYPE_CHANGED","getActiveSeriesChartTypes","selectedColIds","getChartSeriesTypes","getSeriesType","firstCellRange","EVENT_CHART_UPDATED","ChartDataPanel","chartController","chartOptionsService","columnComps","updatePanels","clearComponents","currentChartType","groupExpandedState","getGroupExpandedState","getSeriesLabel_1","generateGetSeriesLabel","seriesChartTypeGroupComp","createSeriesChartTypeGroup","createCategoriesGroup","createSeriesGroup","restoreGroupExpandedState","categoriesGroupComp","seriesGroupComp","addChangeListener","getCategoryGroupTitle","inputName","getSeriesGroupTitle","pairedModeToggle","getPairedMode","setPairedMode","getSeriesLabel","addDragHandle","seriesItemGroup","secondaryAxisComp","defaultText","availableChartTypes","chartTypeComp","isBubble","isInPairedMode","selectedValuesCount","indexToAxisLabel","axisLabel","escapedLabel","getSeriesOption","itemHovered","checkHoveredItem","lastDraggedColumn","lastHoveredItem","draggedColumnState","FontPanel","activeComps","fontGroup","initGroup","initFontFamilySelect","initFontWeightStyleSelect","initFontSizeSelect","initFontColorPicker","addCompToPanel","families","initialFont","valueIndex","capitalisedFontValue","familySelect","setFont","sizeSelect","weightStyles","weightStyleSelect","selectedWeightStyle","newColor","destroyActiveComps","LegendPanel","activePanels","initLegendGroup","initLegendPosition","initLegendPadding","initLegendItems","initLabelPanel","getChartOption","setChartOption","positions","legendPositionSelect","legendPaddingSlider","getMaxValue","initSlider","defaultMaxValue","markerSizeSlider","markerStrokeSlider","markerPaddingSlider","itemPaddingXSlider","itemPaddingYSlider","fontPanelComp","proxy","destroyActivePanels","AxisTicksPanel","axisTicksGroup","initAxisTicks","axisTicksColorPicker","getAxisProperty","setAxisProperty","initInput","axisTicksWidthSlider","axisTicksSizeSlider","AxisPanel","axisLabelUpdateFuncs","axisGroup","initAxis","initAxisLabels","axisColorInput","axisLineWidthSlider","options_1","xAxisTypeSelect","axisTicksComp","labelPanelComp","getChart","addAdditionalLabelComps","createAngleComp","axisType","getLabelRotation","angleSelect","setLabelRotation","rotationInput","degreesSymbol","xRotationLabel","yRotationLabel","labelPaddingSlider","NavigatorPanel","navigatorGroup","initNavigator","navigatorHeightSlider","PaddingPanel","chartPaddingGroup","initChartPaddingItems","paddingTopSlider","paddingRightSlider","paddingBottomSlider","paddingLeftSlider","BackgroundPanel","chartBackgroundGroup","initColorPicker","TitlePanel","initFontPanel","titlePlaceholder","getOption","setOption","fontPanelParams","currentTitleText","pO","chartGroup","initTitles","initPaddingPanel","initBackgroundPanel","titlePanelComp","paddingPanelComp","backgroundPanelComp","ShadowPanel","getSelectedSeries","shadowGroup","shadowBlurSlider","shadowXOffsetSlider","shadowYOffsetSlider","initSeriesShadow","setSeriesOption","shadowColorPicker","MarkersPanel","seriesMarkersGroup","initMarkers","seriesMarkerShapeSelect","shouldHideEnabledCheckbox","seriesMarkerMinSizeSlider","seriesMarkerSizeSlider","seriesMarkerStrokeWidthSlider","CalloutPanel","calloutGroup","initCalloutOptions","calloutLengthSlider","calloutStrokeWidthSlider","labelOffsetSlider","SeriesPanel","widgetFuncs","initLineWidth","initStrokeWidth","initLineDash","lineOpacity","initLineOpacity","initFillOpacity","markers","initLabels","initShadow","tooltips","initTooltips","initBins","seriesWidgetMappings","getChartSeriesType","seriesGroup","refreshWidgets","updateSeriesType","initSeriesSelect","seriesSelect","getSeriesSelectOptions","seriesTooltipsToggle","addWidget","seriesStrokeWidthSlider","seriesLineWidthSlider","seriesLineDashSlider","seriesLineOpacitySlider","seriesFillOpacitySlider","initFontPanelParams","calloutPanelComp","shadowPanelComp","markersPanelComp","seriesBinCountSlider","widget","seriesSelectOptions","activeChartTypes","FormatPanel","panels","createPanels","destroyPanels","MiniChart","tooltipName","MiniChartWithAxes","axisOvershoot","addAxes","leftAxis","bottomAxis","xScalePadding","xScaleDomain","yScaleDomain","createBars","clipRect","MiniColumn","columnData","createColumnRects","updateColors","MiniStackedColumn","stackedColumns","MiniNormalizedColumn","MiniBar","bars","MiniStackedBar","MiniNormalizedBar","MiniDoughnut","centerRadiusScaler","angles","sectors","MiniPie","MiniLine","createLinePaths","MiniScatter","MiniBubble","MiniArea","pathData","areas","MiniStackedArea","MiniNormalizedArea","MiniHistogram","MiniColumnLineCombo","lineData","MiniAreaColumnCombo","areaData","yZero","firstX","MiniCustomCombo","penIcon","svgPath","MiniChartsContainer","wrappers","chartGroups","barGroup","pieGroup","lineGroup","scatterGroup","histogramGroup","combinationGroup","miniChart","groupComponent","MiniClass","miniWrapper","updateSelectedMiniChart","selectedChartType","miniChartType","ChartSettingsPanel","miniCharts","cardItems","activePaletteIndex","palettes","resetPalettes","ePrevBtn","eNextBtn","setActivePalette","getPrev","getNext","scrollSelectedIntoView","currentChart","pallet","scrollIntoView","forceReset","isAnimating","eCardSelector","destroyMiniCharts","isActivePalette","miniChartsContainer","eMiniChartsContainer","addCardLink","eNavBar","animationDirection","currentPalette","currentGui","futurePalette","nextGui","final","animatingClass","TabbedChartMenu","tabs","panelType","createTab","getPanelClass","tabbedLayout","TabPanelClass","eWrapperDiv","titleEl","translatedTitle","showTab","TAB_DATA","TAB_FORMAT","ChartMenu","eChartContainer","eMenuPanelContainer","chartSettings","chartFormat","chartLink","toggleDetached","chartUnlink","chartDownload","saveChart","createButtons","refreshMenuClasses","getToolbarOptions","tabOptions","toolbarItemsFunc","ignoreOptions","tooltipTitle","chartToolbarOptions","buttonEl","EVENT_DOWNLOAD_CHART","createMenuPanel","defaultTab","tabbedMenu","hideMenu","showContainer","showParent","tabName","hideParent","TitleEdit","chartMenu","endEditing","refreshTitle","destroyableChartListeners","destroyDbleClickListener","destroyMouseMoveListener","inTitle","maximumInputWidth","inputWidth","inputStyle","inputRect","ChartProxy","chartProxyParams","crossFilterCallback","standaloneChartType","chartOptionsToRestore","themeOverrides","chartTheme","getSelectedTheme","createChartTheme","convertConfigToOverrides","recreateChart","destroyChart","stockTheme","gridOptionsThemeOverrides","getGridOptionsChartThemeOverrides","apiThemeOverrides","apiChartThemeOverrides","themeOverrides_1","mergeThemeOverrides","availableThemes","customChartTheme","downloadChart","transformData","categoryKey","overrideObjs","overrideObj","chartOverrides","paired","CartesianChartProxy","axisTypeToClassMap","xAxisType","newXAxisType","isTimeAxis","updateLabelRotation","categoryId","chartXAxisLabel","xAxisOptions","getAxesOptions","chartSeriesType","processDataForCrossFiltering","atLeastOneSelectedPoint","getCrossFilteringContext","lastSelectedChartId","updateSeriesForCrossFiltering","deselectedPoints","testDatum","BarChartProxy","yAxisType","isNormalised","getAxes","barSeries","updateCrossFilteringSeries","crossFilteringField","hexToRGBA","isBar","normalised","numberAxis","AreaChartProxy","updateAreaChart","areaSeries","seriesDefaults","previousSeries","fieldIds","existingSeriesById","reduceRight","LineChartProxy","lineSeries","seriesOverrides","PolarChartProxy","addCrossFilteringTooltipRenderer","pieSeries","PieChartProxy","angleField","fields_1","filteredOutField_1","opaqueSeries","radiusField","updateSeries","changeOpacity","DoughnutChartProxy","doughnutChart","seriesMap","numFields","filteredOutField","updatedOffset","updateParams","existingSeries","offsetAmount","ScatterChartProxy","dataDomain","seriesDefinitions","getSeriesDefinitions","getCrossFilteringDataDomain","xField","yField","sizeField","fillsMod_1","strokesMod_1","labelFieldDefinition","seriesDefinition","xFieldDefinition","yFieldDefinition","sizeFieldDefinition","ye","isFilteredOutYKey","isBubbleChart","currentXField","sizeColId_1","allSizePoints_1","HistogramChartProxy","ChartOptionsService","updateAxisOptions","getAxis","chartAxis","isMatchingSeries","ComboChartProxy","getSeriesOptions","seriesChartTypesChanged","prevSeriesChartTypes","s1","s2","fieldsChanged","prevFields","categoryChanged","prevCategoryId","extractSeriesOverrides","fieldsMap","getYKeys","primaryYKeys","secondaryYKeys","getAxisOptions","leftOptions","rightOptions","bottomOptions","secondaryYKey","secondaryAxisOptions","primaryYKey","GridChartComp","availableChartThemes","modelParams","validateCustomThemes","insideDialog","addDialog","addMenu","addTitleEditComp","setActiveChartCellRange","raiseChartCreatedEvent","suppliedThemes","customThemeName","crossFilteringContext","crossFilterService","eChart","createChartProxy","titleEdit","getBestDialogSize","chartDialog","eMenuContainer","eTitleEditContainer","shouldRecreateChart","getCurrentChartType","fileFormat","handleEmptyChart","chartUpdateParams","getChartDataType","pivotModeDisabled","minFieldsRequired","isEmptyChart","eEmpty","getUnderlyingChart","refreshCanvasSize","focusEvent","raiseChartDestroyedEvent","ChartService","activeCharts","activeChartComps","chartRef","cr","createChartFromCurrentRange","selectedRange","getSelectedRange","versionParts","upgradeChartModel","getCellRange","cellRangeParams","createCellRangeFromCellRangeParams","cellRange_1","chartAllRangeParams","createChartContainerFunc","generateId","chartComp","createChartRef","destroyAllActiveCharts","ChartTranslationService","ChartTranslationService_1","toTranslate","DEFAULT_TRANSLATIONS","pivotChartTitle","rangeChartTitle","categories","xyValues","xType","automatic","xRotation","yRotation","minSize","markerPadding","itemSpacing","itemPaddingX","itemPaddingY","layoutHorizontalSpacing","layoutVerticalSpacing","boldItalic","predefined","histogramBinCount","groupedColumnTooltip","stackedColumnTooltip","normalizedColumnTooltip","groupedBarTooltip","stackedBarTooltip","normalizedBarTooltip","pieTooltip","doughnutTooltip","lineTooltip","groupedAreaTooltip","stackedAreaTooltip","normalizedAreaTooltip","scatterTooltip","bubbleTooltip","histogramTooltip","columnLineComboTooltip","areaColumnComboTooltip","customComboTooltip","noDataToChart","pivotChartRequiresPivotMode","chartSettingsToolbarTooltip","chartLinkToolbarTooltip","chartUnlinkToolbarTooltip","chartDownloadToolbarTooltip","ChartCrossFilterService","ChartCrossFilterService_1","resetFilters","extractFilterColId","isValidColumnFilter","updateFilters","dataKey","filterColId","existingGridValues","getCurrentGridValuesForCategory","updatedValues","getUpdatedFilterModel","getColumnFilterType","filterModels","filteredValues","gridContainsValue","RangeService","bodyScrollListener","onBodyScroll","refreshLastRangeStart","onColumnVisibleChange","beforeCols","dispatchChangedEvent","lastRange","refreshRangeStart","rangeColumns","allPositions","pinnedBottomRowCount","appendRange","calculateColumnsBetween","rowForCell","setNewestRangeStartCell","newestRangeStartCell","updateRangeEnd","colsToAdd","isLastCellOfRange","moveColInCellRange","colToMove","moveToFront","otherCols","getRangeEdgeColumns","allIndices","startCell","firstCol","newEndCell","newRange","columnsString","rowToColumnMap","topRow","bottomRow","currentRangeColIds","filteredColumns","currentValString","columnInRange","rowInRange","isRowInRange","rangeFirstIndexColumn","rangeLastIndexColumn","isRightColumn","thisRow","afterFirstRow","beforeLastRow","getDraggingRange","draggingRange","multiKeyPressed","extendRange","cellHoverListener","updateValuesOnMove","lastCellHovered","mouseRowPosition","cellHasChanged","isMouseAndStartInPinned","columnFrom","columnTo","isSameColumn","AbstractSelectionHandle","changedCalculatedValues","shouldDestroyOnEndDragging","onDragEnd","clearValues","getDraggingCssClass","preventRangeExtension","setCellCtrl","rangeStartRow","setRangeStartRow","rangeEndRow","setRangeEndRow","getLastCellHovered","oldCellComp","removeListeners","FillHandle","markedCells","cellValues","isReduce","initialXY","newY","allowedDirection","dragAxis","initialPosition","markPathFrom","isX","colLen","lastCellMarked","raiseFillStartEvent","handleValueChanged","raiseFillEndEvent","fillStartEvent","fillEndEvent","initialRangeEndRow","initialRangeStartRow","finalRangeEndRow","finalRangeStartRow","withinInitialRange","initialValues","resetValues","iterateAcrossCells","fillValues","updateInitialSet","skipValue","processValues","fromUserFunction","clearCellsInRange","userFillOperation","userResult","currentCellValue","allNumbers","asFloat","clearMarkedPath","clearCellValues","reduceVertical","extendVertical","initialColumn","reduceHorizontal","extendHorizontal","endPosition","isMovingUp","cellInRange","isInitialRow","celPos","isMovingLeft","startCol","endCol","colsToMark","rangeFixed","fixRangeStartEnd","SelectionHandleFactory","DetailCellRendererCtrl","loadRowDataVersion","needRefresh","setAutoHeightClasses","setupRefreshStrategy","addThemeToDetailGrid","createDetailGrid","loadRowData","detailClass","addOrRemoveDetailGridCssClass","suppressRefresh","refreshStrategy","providedStrategy","detailGridOptions","setDetailGrid","registerDetailWithMaster","masterGridApi","detailGridInfo","versionThisCall","getDetailRowData","DetailCellRenderer","eDetailGrid","setDefaultTemplate","templateFunc","agGridReact","agGridReactCloned","detailApi","EnterpriseMenuFactory","activeMenu","restrictToTabs","EnterpriseMenu","lastSelectedTab","eMenuGui","closedFuncs","stopAnchoringFunc","showTabBasedOnPreviousSelection","EVENT_TAB_SELECTED","TABS_DEFAULT","initialSelection","restrictTo","tabFactories","includeChecks","TAB_GENERAL","createMainPanel","TAB_FILTER","createFilterPanel","TAB_COLUMNS","createColumnsPanel","getTabsToCreate","onHidePopup","onTabItemClicked","mainMenuList","isValidMenuTabItem","isNotSuppressed","isModuleLoaded","menuTabName","itemsToConsider","toShow","tabItemColumns","tabItemFilter","tabItemGeneral","activateTab","getMenuItems","defaultMenuOptions","getDefaultMenuOptions","MENU_ITEM_SEPARATOR","allowPinning","rowGroupCount","doingGrouping","groupedByThisColumn","allowValue","allowRowGroup","pivotModeOn","isInMemoryRowModel","allowValueAgg","menuItemMapper","mapWithStockItems","hidePopupFunc","columnSelectPanel","columnSelectPanelGui","CSS_CONTEXT_MENU_OPEN","ContextMenuFactory","csvModuleMissing","excelModuleMissing","suppressExcel","suppressCsv","blockMiddleClickScrollsIfNeeded","which","eGridBodyGui","ContextMenu","currentFocusedCell","MenuItemMapper","originalList","resultList","getStockMenuItem","createAggregationSubMenu","exportSubMenuItems","csvModuleLoaded","excelModuleLoaded","getChartItems","pivotChartMenuItem","localeKey","rangeChartMenuItem","columnToUse","columnIsAlreadyAggValue","funcNames","funcName","MultiFilter","filterDefs","guiDestroyFuncs","activeFilterIndices","lastActivatedMenuItem","afterFiltersReadyFuncs","getFilterDefs","filterPromises","filterDef","createFilter","lastOpenedInContainer","filterTitle","insertFilterMenu","insertFilterGroup","params_1","getLastActiveFilterIndex","rowPasses","updateActiveList","getChildFilterInstance","executeFunctionIfExists","executeWhenAllFiltersReady","changedFilter","MultiFloatingFilterComp","floatingFilters","floatingFilterPromises","floatingFilterParams","parentMultiFilterInstance","floatingFilterPromise","createFloatingFilter","lastActiveFloatingFilterIndex_1","shouldShow","defaultComponentName","RichSelectRow","populateWithRenderer","populateWithoutRenderer","valueToRender","RichSelectCellEditor","selectionConfirmed","originalSelectedValue","createRowComponent","eList","renderSelectedValue","debounceDelay","searchDebounceDelay","clearSearchString","confirmSelection","setSelectedValue","runSearch","keyString","searchStrings","keyParams","topSuggestion","topSuggestionIndex","selectedIndex","ServerSideRowModel","pauseStoreUpdateListening","onStoreUpdated","resetListener","resetRootStore","getRootStore","storeParams","rowGroupColumnVos","columnsToValueObjects","valueColumnVos","pivotColumnVos","sortModelDifferent","rowGroupDifferent","pivotDifferent","pivotCols","destroyRootStore","childStore","refreshAfterSort","newSortModel","rootStore","createStoreParams","storeFactory","createStore","updateRowIndexesAndBounds","dispatchModelUpdated","dynamicRowHeight","sortListener","extractSortModel","getParams","setDisplayIndexes","getRowUsingDisplayIndex","refreshAfterFilter","newFilterModel","getDisplayIndexEnd","forEachNodeDeepAfterFilterAndSort","executeOnStore","storeToExecuteOn","getChildStore","addStoreStates","StoreUtils","groupKeys","getRowsParams","fail","currentCache","findNodeFunc","keyListForNextLevel","nextStore","isServerRefreshNeeded","alwaysReset","valueColChanged","secondaryColChanged","BlockUtils","usingMasterDetail","createRowNode","destroyRowNode","setTreeGroupInfo","isGroupFunc","getKeyFunc","setRowGroupInfo","setMasterDetailInfo","isMasterFunc","updateDataIntoRowNode","setDataIntoRowNode","defaultId","cachedRowHeight","setGroupDataIntoRowNode","setChildCountIntoRowNode","groupDisplayCols","groupValue","clearDisplayIndex","clearDisplayIndexes","setDisplayIndex","displayIndexSeq","binarySearchForDisplayIndex","displayRowIndex","isDisplayIndexInStore","extractRowBounds","getIndexAtPixel","createNodeIdPrefix","checkOpenByDefault","NodeManager","addRowNode","TransactionManager","asyncTransactions","asyncTransactionsTimeout","scheduleExecuteAsync","executeAsyncTransactions","resultFuncs","resultsForEvent","transactionsToRetry","atLeastOneTransactionApplied","txWrapper","ExpandListener","SortListener","replaceAutoGroupColumnWithActualRowGroupColumns","removeMultiColumnPrefixOnColumnIds","multiColumnPrefix","autoGroupSortModel","sm","autoGroupIndex","newModels","findChangedColumnsInSort","listenerUtils","isSortingWithValueColumn","isSortingWithSecondaryColumn","oldSortModel","allColsInBothSorts","ids","oldSortItem","newSortItem","differentSorts","differentIndexes","FilterListener","findChangedColumns","oldModel","allColKeysMap","PartialStoreBlock","ssrmParams","parentStore","groupLevel","groupField","nodeIdPrefix","blockUtils","isDisplayIndexInBlock","displayIndexStart","displayIndexEnd","isBlockBefore","getDisplayIndexStart","getBlockHeightPx","blockHeightPx","getBlockTopPx","blockTopPx","isGroupLevel","getGroupField","prefixId","isAnyNodeOpen","includeChildren","filterAndSort","forEachNodeShallow","getRowUsingLocalIndex","touchLastAccessed","onBlockLoadFailed","onBlockLoaded","storeRowCount","rowsToCreate","cachedBlockHeight","getCachedBlockHeight","removeDuplicateNode","stubRowNode","storeUtils","FindResult","FOUND","CONTINUE_FIND","BREAK_FIND","PartialStore","blockHeights","cacheTopPixel","INITIAL_ROW_COUNT","fireCacheUpdatedEvent","storeInfo","finalRowCount","OVERFLOW_SIZE","resetStore","refreshBlocks","findBlockAndExecute","matchBlockFunc","blockFoundFunc","blockNotFoundFunc","blockFound","breakSearch","lastBlock","foundBlock","previousBlock","defaultBlockHeight","nextBlockId","getBlockDetails","blockHeight","pixelInBlock","blockDetails","lastAllowedIndex","currentBlock","blocksSkippedCount","rowsSkippedCount","blockToAddId","lastVisitedRow","rowsNotAccountedFor","cacheHeightPixels","dontCreateBlock","lastRowTopLevelIndex","lastRowNode","forEachChildStoreShallow","nextCache","FullStore","nodeIdSequence","initialiseRowNodes","nodesAfterSort","nodesAfterFilter","loadingRowsCount","loadingRowNode","createDataNode","fireStoreUpdatedEvent","nodesToRecycle","createOrRecycleNodes","filterAndSortNodes","nodeToRecycle","foundNode","lookupNodeToRecycle","recycleNode","transactionManager","filterRowNodes","noSortApplied","sortDoneOnServer","visibleNodeIds","heightPx","childCache","res2","applyCallback","newRowNode","scheduleLoad","StoreFactory","getStoreParams","storeType","userStoreParams","getLevelSpecificParams","getStoreType","getBlockSize","ListenerUtils","changedColumnsInSort","valueColIds","secondaryColIds","serverSide","ClientSideValuesExtractor","caseFormat","extractUniqueValues","addValue","valueKey","formatted","SetFilterModelValuesType","PROVIDED_LIST","PROVIDED_CALLBACK","TAKEN_FROM_GRID_VALUES","SetValueModel","setIsLoading","miniFilterText","providedValues","availableValues","displayedValues","suppressSorting","clientSideValuesExtractor","Ut","valuesType","updateAllValues","resetSelectionState","refreshValues","overrideValues","valuesToUse","allValuesPromise","refreshAfterAnyFilterChanged","showAvailableOnly","updateAvailableValues","isInitialised","getValuesFromRows","sortedValues","sortValues","callback_1","processedValues","setValuesType","getValuesType","isValueAvailable","EVENT_AVAILABLE_VALUES_CHANGED","updateDisplayedValues","excelMode","removeUnavailableValues","setMiniFilter","getMiniFilter","formattedFilterText","matchesFilter","valueToCheck","textFormatterValue","valueFormatterValue","getDisplayedValueCount","getDisplayedValue","hasSelections","defaultToNothingSelected","selectAllMatchingMiniFilter","clearExistingSelection","deselectAllMatchingMiniFilter","selectValue","deselectValue","isEverythingVisibleSelected","isValueSelected","isNothingVisibleSelected","allValues_1","allValue","uniqueKey","SetFilterListItem","parsedValue","toggleSelected","formattedValue","getFormattedValue","showTooltips","renderCell","getComponentHolder","DEFAULT_LOCALE_TEXT","selectAllSearchResults","noMatches","SetFilter","valueModel","setFilterParams","appliedModelValues","eSetFilterList","translateForSetFilter","handleKeySpace","handleKeyEnter","eMiniFilter","setModelAndRefresh","getValueModel","applyExcelModeOptions","loading","showOrHideLoadingScreen","initialiseFilterBodyUi","addEventListenersForDataChanges","applyMiniFilterWhileTyping","syncAfterDataChange","eFilterLoading","initVirtualList","initMiniFilter","filterListName","createSetListItem","suppressSelectAll","ModelWrapper","ModelWrapperWithSelectAll","isSelectAllSelected","getSelectAllLabel","listItem","SELECT_ALL_VALUE","suppressMiniFilter","onMiniFilterInput","resetUiToActiveModel","resizableObject","setFilterValues","resetFilterValues","refreshFilterValues","filterOnAllVisibleValues","updateUiAfterMiniFilterChange","showOrHideResults","hideResults","eNoMatches","applyImmediately","newMiniFilter","refreshValuesOnOpen","valueToFormat","SetFloatingFilterComp","availableValuesListenerAdded","updateFloatingFilterText","parentSetFilterInstance","addAvailableValuesListener","setValueModel","arrayToDisplay","valuesString","StatusBarService","allComponents","registerStatusPanel","StatusBar","leftStatusPanelComponents","componentConfig","createAndRenderComponents","eStatusBarLeft","centerStatusPanelComponents","eStatusBarCenter","rightStatusPanelComponents","eStatusBarRight","statusBarComponents","ePanelComponent","componentDetails","componentDetail","NameValueComp","TotalAndFilteredRowsComp","getFilteredRowCountValue","totalRowCount","getTotalRowCount","localeTextFunc_1","filteredRowCount","FilteredRowsComp","totalRowCountValue","getTotalRowCountValue","filteredRowCountValue","TotalRowsComp","getRowCountValue","SelectedRowsComp","isValidRowModel","selectedRowCount","eventListener","onRowSelectionChanged","AggregationComp","avgAggregationComp","countAggregationComp","minAggregationComp","maxAggregationComp","sumAggregationComp","setAggregationComponentValue","statusBarValueComponent","getAggregationValueComponent","refComponentName","aggregationPanelConfig","statusPanelParams","numberCount","cellsSoFar","gotNumberResult","ViewportRowModel","rowNodesByIndex","onViewportChanged","calculateFirstRow","bufferSize","afterBuffer","calculateLastRow","purgeRowsNotInViewport","setViewportRange","createBlankRowNode","callbackCount","appendPath","cancelRender","Ix","YA","$A","rS","cS","nw","hS","yS","Gb","Vx","BM","zS","SparklineAxis","Sparkline","_context","layoutId","defaultDateFormatter","rootGroup","canvasElement","setupDomEventListeners","updateYScale","updateYScaleRange","updateYScaleDomain","updateXScale","getXScale","updateXScaleRange","updateXScaleDomain","xMinMax","updateAxisLine","updateCrosshairs","updateXCrosshairLine","updateYCrosshairLine","generateNodeData","invalidData","getDataType","xValueType","getDatum","data_1_1","setSparklineDimensions","shrunkHeight","tooltipRendererResult","formatNumericDatum","cleanupDomEventListeners","titleHtml","contentHtml","SparklineTooltip","bgColor","bgColorRgbaString","containerRect","buttOrNull","solid","dash","dot","dashDot","dashDotDot","shortDot","shortDash","shortDashDot","shortDashDotDot","longDash","longDashDot","longDashDotDot","roundOrSquare","SparklineMarker","SparklineLine","SparklineCrosshairs","xLine","yLine","AreaSparkline","strokePath","fillPath","xCrosshairLine","yCrosshairLine","areaSparklineGroup","fillPathData","strokePathData","xAxisLine","fillData","strokeData","updateStroke","updateFill","firstValidX","lastValidX","previousX","nextX","Xe","selectionData","enterMarkerSelection","highlightSize","highlightFill","highlightStroke","highlightStrokeWidth","markerFormat","getLineDash","LineSparkline","lineSparklineGroup","updateLine","Rectangle","BarColumnNodeTag","BarColumnLabelPlacement","InsideBase","InsideEnd","OutsideEnd","BarColumnLabel","BarColumnSparkline","valueAxisDomain","axisLine","sparklineGroup","nodeSelectionData","enterRectSelection","nodeFormatter","nodeFormat","nodeFill","nodeStroke","nodeStrokeWidth","formatLabelValue","BarSparkline","invalidDatum","midPoint","isPositiveY","textWidth","ColumnSparkline","textHeight","AgSparkline","sparkline","getSparklineInstance","setValueIfPropertyExists","initPaddingOptions","initAxisOptions","initHighlightStyleOptions","initTooltipOptions","initSparkline","initLabelOptions","initBarColumnSparkline","initMarkerOptions","initLineOptions","initCrosshairsOptions","initAreaSparkline","initLineSparkline","initSparklineByType","initCrosshairLineOptions","offsetValidator","defaultOffset","validator","SparklineCellRenderer","firstTimeIn","sparklineOptions","sparklineTooltipSingleton","getSparklineTooltip","eSparkline","SparklineTooltipSingleton","destroyTooltip","_c0","JsonEditorOptions","enableSort","enableTransform","escapeUnicode","sortObjectKeys","mode","indentation","JsonEditorComponent","optionsChanged","jsonChange","onTouched","onChangeModel","editor","ngOnInit","optionsBefore","onChangeJSON","optionsCopy","jsonEditorContainer","getMode","getText","setMode","setSelection","getSelection","validateSchema","schema","schemaRefs","setSchema","viewQuery","NG_VALUE_ACCESSOR","useExisting","forwardRef","IS_TOUCH_DEVICE","msMaxTouchPoints","startingRect","edges","newBoundingRect","allowedEdges","cursorPrecision","elmPosition","isNumberCloseTo","isWithinBoundingY","isWithinBoundingX","DEFAULT_RESIZE_CURSORS","leftOrRight","topOrBottom","cursors","initialRectangle","newRectangle","edgesDiff","edge","RESIZE_ACTIVE_CLASS","resizeEdges","enableGhostResize","resizeSnapGrid","resizeCursors","resizeCursorPrecision","ghostElementPositioning","allowNegativeResizes","mouseMoveThrottleMS","resizeStart","resizeEnd","mouseup","mousedown","mousemove","destroy$","resizeEdges$","pointerEventListeners","PointerEventListeners","currentResize","mousedown$","pointerDown","mousemove$","pointerMove","je","share","mouseup$","pointerUp","removeGhostElement","clonedNode","getResizeCursors","startWith","legacyResizeEdgesEnabled","auditTime","takeUntil","getResizeEdges","getResizeCursor","setElementClass","mousedrag","moveCoords","startCoords","getSnapGrid","snapGrid","coords","hasPrev","pairwise","previousCoords","newCoords","getDiff","previousGrid","getGrid","newGrid","getNewBoundingRectangle","getEdgesDiff","currentRect","translateX","translateY","boundingRect","getElementRect","ɵdir","exportAs","unsubscribeMouseDown","unsubscribeTouchStart","unsubscribeMouseMove","unsubscribeTouchMove","targetTouches","unsubscribeMouseUp","unsubscribeTouchEnd","unsubscribeTouchCancel","resizableDirective","listenOnTheHost","onMousedown","onMouseup","unsubscribeEventListeners","touchmove","touchMoveEvent","Ct","onMousemove","mouseMoveEvent","resizableContainer","fromEvent","a0","a1","toast_r1","childClick","removeToast","toasterconfig","titleClass","messageClass","iconClasses","typeClasses","_c1","_c2","_c3","ctx_r1","toast","_r7","closeHtml","progressBarWidth","Transitions","BodyOutputType","Default","TrustedHtml","DefaultTypeClasses","DefaultIconClasses","configOverrides","tapToDismiss","showCloseButton","newestOnTop","bodyOutputType","bodyTemplate","defaultToastType","preventDuplicates","toastContainerId","Guid","ToasterService","addToast","_addToast","clearToasts","_clearToasts","_removeToastSubject","toastId","newGuid","lt","ɵɵdefineInjectable","ToasterContainerComponent","toasts","registerSubscribers","isNullOrUndefined","isCloseButton","onClickCallback","toastIdOrDefault","onHideCallback","addToastSubscriber","clearToastsSubscriber","clearWrapper","isLimitExceeded","onShowCallback","clearToastsAction","removeAllToasts","ToasterContainerComponent_div_1_Template","ToastComponent","clickEvent","removeToastEvent","timeoutId","progressBarIntervalId","progressBar","progressBarDirection","componentBody","injector","removeMouseOverListener","stopTimer","configureTimer","clearTimers","removeToastTick","markForCheck","updateProgressBar","restartTimer","attrs","ToastComponent_div_4_Template","ToastComponent_div_5_Template","ToastComponent_div_6_Template","ToastComponent_button_7_Template","ToastComponent_div_8_Template","TrustHtmlPipe","sanitizer","bypassSecurityTrustHtml","ɵpipe","exports","toStringTag","__esModule","getFirstMatch","getSecondMatch","matchAndReturnConst","getWindowsVersionName","getMacOSVersionName","getAndroidVersionName","getVersionPrecision","compareVersions","getBrowserAlias","BROWSER_ALIASES_MAP","getBrowserTypeByAlias","BROWSER_MAP","ENGINE_MAP","OS_MAP","PLATFORMS_MAP","Bada","BlackBerry","Chrome","Chromium","Electron","Epiphany","Firefox","Focus","Generic","Googlebot","Maxthon","Opera","PhantomJS","Puffin","QupZilla","QQ","QQLite","Safari","Sailfish","SeaMonkey","Sleipnir","Swing","Tizen","Vivaldi","WeChat","Roku","amazon_silk","android","bada","blackberry","chromium","electron","epiphany","firefox","generic","googlebot","google_search","ie","k_meleon","maxthon","mz","naver","opera","opera_coast","phantomjs","puffin","qupzilla","qq","qqlite","safari","sailfish","samsung_internet","seamonkey","sleipnir","swing","tizen","uc","vivaldi","webos","wechat","yandex","tablet","mobile","desktop","tv","WindowsPhone","Windows","MacOS","iOS","Android","WebOS","Linux","ChromeOS","PlayStation4","EdgeHTML","Blink","Trident","Presto","Gecko","WebKit","getParser","getResult","_ua","parsedResult","getUA","parseBrowser","browser","describe","getBrowser","getOS","os","parseOS","getOSName","getOSVersion","getPlatform","parsePlatform","getPlatformType","getEngine","parseEngine","getEngineName","satisfies","isOS","isPlatform","compareVersion","isEngine","is","jsep","binops","unops","evaluateArray","caller","evaluateMember","eval","compile","gt","HighchartsChartComponent","updateChange","chartInstance","wrappedUpdateOrCreateChart","updateOrCreateChart","oneToOne","constructorType","callbackFunction","Boolean","K","G","createSVGRect","product","deg2rad","hasBidiBug","hasTouch","ontouchstart","isMS","isWebKit","isTouchDevice","SVG_NS","chartCount","symbolSizes","marginNames","dateFormats","timers","Fx","dSetter","toD","curAnim","objectEach","initPath","endX","isArea","fillSetter","strokeSetter","tweenTo","isClass","isDOMElement","pInt","erase","defined","splat","syncTimeout","extend","css","extendClass","relativeLength","proceed","datePropsToTimestamps","formatSingle","decimalPoint","thousandsSep","dateFormat","getMagnitude","normalizeTickInterval","correctFloat","stableSort","safeI","arrayMin","arrayMax","destroyObjectProperties","discardElement","garbageBin","setAnimation","globalAnimation","animObject","timeUnits","easeInOutSine","getStyle","inArray","clientTop","clientLeft","grep","addEvent","addEventListenerPolyfill","protoEvents","hcEvents","Point","runTrackerClick","removeEvent","removeEventListenerPolyfill","initEvent","getOptions","pointClass","jQuery","highcharts","parsers","regex","brighten","setOpacity","O","SVGElement","textProps","msHidden","webkitHidden","complexColor","radialGradient","linearGradient","gradients","radialReference","gradientUnits","getRadialAttr","radAttr","applyTextOutline","getContrast","fakeTS","ySetter","xSetter","removeTextOutline","symbolCustomAttribs","_defaultGetter","symbolName","symbolAttr","doTransform","_defaultSetter","styledMode","shadows","updateShadows","afterSetters","updateTransform","cutHeight","hasClass","symbols","forExport","namespaceURI","buildText","textOutline","touchEventFired","onclick","setRadialReference","scaleX","scaleY","rotationOriginX","rotationOriginY","toFront","alignedObjects","alignOptions","alignByTranslate","alignTo","placed","alignAttr","textStr","cacheKeys","textOverflow","htmlGetBBox","isSVG","fadeOut","parentInverted","handleZ","zIndexSetter","box","onAdd","safeRemoveChild","ownerSVGElement","clipPath","onmouseout","onmouseover","onmousemove","destroyShadows","xGetter","dashstyleSetter","alignSetter","alignValue","opacitySetter","titleSetter","createTextNode","textSetter","bBox","setTextPath","textAnchor","textPathWrapper","startOffset","setAttributeNS","destroyTextPath","visibilitySetter","yGetter","translateXSetter","translateYSetter","rotationSetter","verticalAlignSetter","rotationOriginXSetter","rotationOriginYSetter","scaleXSetter","scaleYSetter","matrixSetter","hasStroke","SVGRenderer","boxWrapper","allowHTML","imgCount","setSize","unSubPixelFix","tagName","truncate","getSubStringLength","aa","getSpanWidth","escapes","whiteSpace","fontMetrics","textCache","crispLine","circle","innerR","rSetter","rGetter","viewBox","preserveAspectRatio","Image","imgwidth","imgheight","backgroundSize","isImg","chartIndex","square","triangle","diamond","clockwise","anchorX","anchorY","rotCorr","hasBoxWidthChanged","widthSetter","heightSetter","paddingSetter","paddingLeftSetter","anchorXSetter","anchorYSetter","Renderer","htmlCss","htmlUpdateTransform","invertChild","oldTextWidth","textPxLength","cTT","oldRotation","oldAlign","setSpanRotation","getSpanCorrection","xCorr","yCorr","alignOnAdd","getTransformKey","transformOrigin","addedSetters","classSetter","Time","useUTC","timezoneOffset","timezoneOffsetFunction","variableTimezone","makeTime","tz","invalidDate","weekdays","shortWeekdays","resolveDTLFormat","getTimeTicks","unitRange","higherRanks","totalRange","numericSymbols","resetZoom","resetZoomTitle","borderRadius","ignoreHiddenSeries","resetZoomButton","borderColor","plotBorderColor","widthAdjust","alignColumns","activeColor","inactiveColor","itemStyle","itemHoverStyle","itemHiddenStyle","itemCheckboxStyle","squareSymbol","symbolPadding","labelStyle","footerFormat","snap","headerFormat","pointFormat","setOptions","defaultPlotOptions","isNewLabel","isNew","tickmarkOffset","addLabel","tickPositions","isDatetimeAxis","unitName","isFirst","isLast","formatCtx","dateTimeLabelFormat","tickPositionInfo","isLog","lin2log","shortenLabel","getSlotWidth","useHTML","getLabelSize","horiz","handleOverflow","chartWidth","labelLeft","labelRight","isRadial","labelAlign","oldChartHeight","chartHeight","transB","opposite","oldChartWidth","getLabelPosition","transA","staggerLines","tickRotCorr","reserveSpaceDefault","labelOffset","getMarkPath","renderGridLine","dashstyle","gridGroup","getPlotLinePath","renderMark","tickSize","mark","isXAxis","renderLabel","showFirstLabel","showLastLabel","endOnTick","maxPadding","minorTickLength","minorTickPosition","minPadding","showEmpty","startOnTick","tickLength","tickmarkPlacement","tickPosition","minorGridLineColor","minorGridLineWidth","minorTickColor","lineColor","gridLineColor","tickColor","defaultYAxisOptions","stackLabels","allowOverlap","defaultLeftAxisOptions","defaultRightAxisOptions","defaultBottomAxisOptions","defaultTopAxisOptions","isZAxis","coll","defaultLabelFormatter","minPixelPadding","zoomEnabled","hasNames","plotLinesAndBandsGroups","positiveValuesOnly","allowNegativeLog","isLinked","labelEdge","minorTicks","plotLinesAndBands","alternateBands","userMinRange","maxZoom","stacks","oldStacks","stacksTouched","crosshair","linearToLogConverter","val2lin","log2lin","lin2val","numericSymbolMagnitude","getSeriesExtremes","hasVisibleSeries","dataMin","dataMax","threshold","softThreshold","buildStacks","getXExtremes","getExtremes","linkedParent","oldTransA","oldMin","isOrdinal","isBroken","toPixels","toValue","old","translatedValue","getLinearTickPositions","single","getMinorTickInterval","minorTickInterval","getMinorTickPositions","pointRangePadding","paddedTicks","getLogTickPositions","normalizeTimeTickInterval","trimTicks","adjustForMinRange","xIncrement","getClosest","closestPointRange","noSharedTooltip","nameToX","requireSorting","uniqueNames","autoIncrement","updateNames","isDirtyData","generatePoints","setAxisTranslation","axisPointRange","minPointOffset","pointRange","pointPlacement","xrange","ordinalSlope","translationSlope","staticScale","minFromRange","setTickInterval","getTickAmount","userMin","userMax","beforePadding","usePercentage","softMin","softMax","MAX_VALUE","ceiling","oldMax","beforeSetTickPositions","postProcessTickInterval","allowDecimals","unsquish","setTickPositions","tickPositioner","ordinalPositions","adjustTickAmount","alignToOthers","alignTicks","pane","finalTickAmt","hasData","setScale","isDirty","oldAxisLength","setAxisSize","forceRedraw","oldUserMin","oldUserMax","resetStacks","cleanStacks","setExtremes","kdTree","eventArgs","zoom","newMin","newMax","allowZoomOutside","displayBtn","zoomed","plotWidth","plotHeight","plotTop","plotLeft","getThreshold","autoLabelAlign","labelMetrics","autoRotationLimit","slotWidth","renderUnsquish","maxLabelLength","specificTextOverflow","addTitle","axisTitle","low","middle","high","generateTick","getOffset","axisOffset","clipOffset","axisParent","showAxis","gridZIndex","reserveSpace","titleOffset","renderLine","axisTitleMargin","getMaxLabelDimensions","maxLabelDimensions","getLinePath","getTitlePosition","titlePosition","renderMinorTick","hasRendered","renderTick","alternateGridColor","overlap","Rt","PlotLineOrBand","_addedPlotLB","plotLines","addPlotBandOrLine","isPlaced","renderStackTotals","keepProps","keepEvents","drawCrosshair","cross","crosshairPos","plotX","plotY","chartX","chartY","stackY","hideCrosshair","dashStyle","_minorAutoInterval","svgElem","getPlotBandPath","isFlat","xBounds","yBounds","addPlotBand","addPlotLine","removePlotBandOrLine","removePlotBand","removePlotLine","Tooltip","outside","cleanSplit","in","stdDeviation","slope","hideTimer","tooltipTimeout","followPointer","hideDelay","tooltipPos","plotLow","plotHigh","chartPosition","ttBelow","negative","defaultFormatter","tooltipFooterHeaderFormatter","bodyFormatter","tooltipOptions","getLabelConfig","getActiveSeries","inactiveOtherPoints","renderSplit","spacingBox","updatePosition","headerShape","scrollablePixels","rank","positioner","distribute","getXDateFormat","xDateFormat","isFooter","labelConfig","tooltipDateKeys","styledModeFormat","tooltipFormatter","Pointer","runChartClick","pinchDown","lastValidTouch","followTouchMove","setDOMEvents","zoomOption","pinchType","zoomX","zoomY","zoomHor","zoomVert","hasZoom","getCoordinates","findNearestKDPoint","findNearestPointBy","searchPoint","distX","getPointFromEvent","getChartCoordinatesFromPoint","shapeArgs","getHoverData","directTouch","isNull","isBoosting","getPoint","hoverPoint","hoverSeries","hoverPoints","runPointActions","isDirectTouch","firePointEvent","unDocMouseMove","hoverChartIndex","onDocumentMouseMove","linkedSeries","navigatorSeries","isCartesian","hoverX","scaleGroups","getPlotBox","dataLabelsGroup","clipBox","dragStart","mouseIsDown","cancelClick","mouseDownX","mouseDownY","drag","selectionMarker","hasDragged","isInsidePlot","hasCartesianSeries","selectionMarkerFill","pan","hasPinched","originalEvent","_cursor","onContainerMouseDown","onDocumentMouseUp","inClass","onContainerMouseLeave","toElement","onContainerMouseMove","openMenu","onTrackerMouseOut","onContainerClick","onmousedown","unbindContainerMouseLeave","unbindDocumentMouseUp","onContainerTouchStart","ontouchmove","onContainerTouchMove","unbindDocumentTouchEnd","onDocumentTouchEnd","pinchTranslate","pinchTranslateDirection","pinch","initiated","plotBox","PointerEvent","MSPointerEvent","pointerType","MSPOINTER_TYPE_TOUCH","currentTarget","onContainerPointerDown","pointerId","onContainerPointerMove","onDocumentPointerUp","batchMSEvents","positionCheckboxes","proximate","unchartrender","proximatePositions","positionItems","itemMarginTop","initialItemY","symbolWidth","pages","isDirtyLegend","isDirtyBox","colorizeItem","legendItem","legendLine","legendSymbol","isMarker","pointAttribs","positionItem","_legendItemPos","legendWidth","destroyItem","getAllItems","clipHeight","legendHeight","titleHeight","checkboxOffset","scrollOffset","renderTitle","maxLegendWidth","contentGroup","setText","labelFormat","renderItem","itemDistance","drawLegendSymbol","createCheckboxForItem","showCheckbox","scrollGroup","baseline","symbolHeight","setItemEvents","itemWidth","widthOption","legendItemWidth","maxItemWidth","totalItemWidth","legendItemHeight","layoutItem","itemMarginBottom","itemX","lastLineHeight","itemY","lastItemY","legendItems","legendType","getAlignment","adjustMargins","legendIndex","arrowSize","fullHeight","pageIx","scroll","pager","down","upTracker","downTracker","LegendSymbolMixin","drawRectangle","symbolRadius","drawLineMarker","bubbleLegend","getArgs","renderTo","labelCollectors","showAxes","pointCount","colorCounter","symbolCounter","orderSeries","setResponsive","temporaryDisplay","layOutTitles","stacking","updateTotals","getStacks","getMargins","extKey","drawChartBox","getSelectedPoints","hasGroupedData","isStock","getChartSize","containerWidth","hcOrigStyle","hcOrigDetached","hcOricDetached","setClassName","getElementById","skipClone","resetMargins","getAxisMargins","setChartSize","isPrinting","reflowTimeout","setReflow","unbindReflow","plotSizeX","plotSizeY","plotBorderWidth","skipAxes","chartBackground","plotBackground","plotBorder","plotBGImage","plotBackgroundColor","plotBackgroundImage","plotShadow","propFromSeries","linkSeries","renderSeries","renderLabels","addCredits","mapCredits","scroller","isReadyToRender","scrollablePlotArea","setUpScrolling","applyFixed","fixedDiv","scrollingContainer","overflowX","WebkitOverflowScrolling","innerContainer","moveFixedElements","fixedRenderer","scrollableMask","scrollPositionX","applyOptions","resolveColor","colorByPoint","pointValKey","optionsToObject","dataLabels","setNestedProperty","pointArrayMap","_hasPointLabels","_hasPointMarkers","getZone","zoneAxis","nonZonedColor","graphic","dataLabel","destroyElements","stackTotal","importEvents","allowPointSelect","enabledThreshold","radiusPlus","lineWidthPlus","fillColor","cropThreshold","halo","axisTypes","parallelArrays","cropShoulder","bindAxes","getColor","getSymbol","insert","optionalAxis","updateParallelArrays","toYData","pointIntervalUnit","pointStart","pointInterval","negativeColor","negativeFillColor","getCyclic","findPointIndex","cropped","cropStart","touched","hasDerivedData","addPoint","isSeriesBoosting","getExtremesFromAll","forceCrop","cropData","processedXData","dataGroup","groupMap","stackedYData","modifyValue","pointPlacementToXValue","startFromThreshold","negStacks","stackKey","getStackIndicator","setOffset","pointXOffset","barW","yBottom","isInside","closestPointRangePx","getValidPoints","setClip","sharedClipKey","afterAnimate","finishedAnimating","drawPoints","specialGroup","markerAttribs","animationTimeout","survive","getGraphPath","connectNulls","leftCliff","rightCliff","getPointSpline","xMap","graphPath","drawGraph","gappedPath","getZonesGraphs","preventGraphAnimation","fillGraph","linecap","applyZones","clips","graph","showLine","isVML","resetZones","invertGroups","plotGroup","invertable","drawDataLabels","redrawPoints","drawTracker","kdAxisArray","searchKDTree","buildKDTree","buildingKdTree","kdNow","StackItem","isNegative","labelrank","getStackBox","crop","reversedStacks","setStackedPoints","modifyStacks","stackTotalGroup","cumulative","singleStacks","percentStacker","cleanRecursively","addAxis","showLoading","loadingDiv","loadingSpan","loadingShown","showDuration","hideLoading","hideDuration","propsRequireDirtyBox","propsRequireReflow","propsRequireUpdateSeries","collectionsWithUpdate","isResponsiveOptions","isInternal","setSubtitle","connector","fixedBox","removePoint","initialType","dataGrouping","setCategories","getStackPoints","leftNull","rightNull","isCliff","doCurve","rectPlotX","areaPath","shiftUnit","rightContX","rightContY","pointPadding","trackerGroups","getColumnMetrics","maxPointWidth","columnMetrics","crispCol","dense","translatedThreshold","shapeType","pointAttrToOptions","animationLimit","allowShadow","jitter","takeOrdinalPosition","applyJitter","CenteredSeriesMixin","getCenter","slicedOffset","innerSize","getStartAndEndRadians","connectorPadding","softConnector","connectorShape","crookDistance","ignoreHiddenPoint","startAngleRad","startR","getX","asin","labelDistance","endAngleRad","maxLabelDistance","slicedTranslation","labelPosition","natural","connectorPosition","breakAt","touchingSliceAt","getTranslate","delayedRendering","delayRendering","sortByAngle","sliced","haloPath","connectorShapes","fixedOffset","straight","crookedLine","getConnectorPath","reducedLen","targets","defer","dlOptions","dataLabelOnNull","connectors","contrastColor","inside","textPath","getDataLabelPath","alignDataLabel","dlBox","forceDL","isLabelJustified","justifyDataLabel","dataLabelPositioners","radialDistributionY","distributeBox","radialDistributionX","justify","alignToPlotEdges","alignToConnectors","shortened","_pos","positionIndex","_attr","sideOverflow","verifyDataLabelOverflow","placeDataLabels","connectorWidth","connectorColor","below","hideOverlappingLabels","oldOpacity","newOpacity","absoluteBox","isOld","TrackerMixin","drawTrackerPoint","_hasTracking","drawTrackerGraph","trackByArea","tracker","browserEvent","defaultChecked","showResetZoom","relativeTo","resetSelection","accumulate","hasImportedEvents","stateMarkerGraphic","currentSymbol","at","mouseOver","mouseOut","labelBySeries","responsive","currentResponsive","matchResponsiveRule","ruleIds","undoOptions","_modules","define","dragDropProps","optionName","guideBox","liveRedraw","dragGuideBox","getGuideBox","setGuideBoxState","dragDropData","groupedPoints","isDragDropAnimating","dragHandles","showDragHandles","draggedPastSensitivity","isHoveringHandle","hideDragHandles","numNewPoints","newPoint","newPointId","draggableX","zoomOrPanKeyPressed","dragSensitivity","updateProp","getDropValues","resizeSide","beforeResize","prevdX","prevdY","unbindDragDropMouseUp","hasAddedDragDropEvents","handlePositioner","handleFormatter","bullet","targetGraphic","columnrange","propValidate","boxplot","lowPlot","q1","q1Plot","median","q3","q3Plot","highPlot","ohlc","plotOpen","plotClose","arearange","lowerGraphic","upperGraphic","waterfall","isSum","isIntermediateSum","gantt","validateIndividualDrag","milestone","handleOptions","dragHandle","pathFormatter","options3d","zoomKey","noGlobal","getProto","class2type","hasOwn","fnToString","ObjectFunctionString","support","isWindow","preservedScriptAttributes","nonce","noModule","toType","toArray","pushStack","elems","prevObject","eq","_elem","odd","copyIsArray","deep","isPlainObject","expando","Ctor","isEmptyObject","globalEval","DOMEval","isArrayLike","makeArray","callbackExpect","guid","Sizzle","Expr","isXML","tokenize","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","preferredDoc","dirruns","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","pushNative","booleans","whitespace","pseudos","rwhitespace","rtrim","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","escape","nonHex","rcssescape","fcssescape","ch","asCodePoint","unloadHandler","inDisabledFieldset","addCombinator","els","nid","newSelector","newContext","getElementsByClassName","qsa","testContext","toSelector","qsaError","cacheLength","handler","attrHandle","cur","sourceIndex","markFunction","matchIndexes","hasCompare","subWindow","attachEvent","assert","getById","getElementsByName","attrId","getAttributeNode","tmp","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","sortDetached","aup","ap","bp","siblingCheck","specified","sel","uniqueSort","duplicates","detectDuplicates","sortStable","createPseudo","relative","preFilter","yn","excess","unquoted","nodeNameSelector","what","_argument","simple","forward","ofType","xml","uniqueCache","outerCache","nodeIndex","useCache","uniqueID","pseudo","setFilters","matched","not","unmatched","elemLang","hasFocus","createDisabledPseudo","createPositionalPseudo","_matchIndexes","nth","radio","file","createInputPseudo","createButtonPseudo","tokens","combinator","checkNonElements","doneName","oldCache","newCache","newUnmatched","mapped","postFilter","postFinder","postSelector","setMatcher","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","condense","matcherOut","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","elementMatcher","matcherFromTokens","parseOnly","soFar","preFilters","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","matcherFromGroupMatchers","compiled","addHandle","_name","unique","isXMLDoc","escapeSelector","until","rneedsContext","rsingleTag","qualifier","winnow","rootjQuery","parseHTML","rparentsprev","guaranteedUnique","closest","prevAll","addBack","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","rnothtmlwhite","noValue","Callbacks","createOptions","firing","memory","fired","queue","firingIndex","fire","once","stopOnFalse","lock","fireWith","Deferred","tuples","always","deferred","newDefer","returned","notify","onFulfilled","onRejected","onProgress","maxDepth","special","mightThrow","Identity","Thrower","notifyWith","resolveWith","exceptionHook","stackTrace","rejectWith","getStackHook","stateString","when","singleValue","remaining","resolveContexts","resolveValues","updateFunc","adoptValue","rerrorNames","readyException","readyList","readyWait","doScroll","access","chainable","emptyGet","bulk","_key","rmsPrefix","rdashAlpha","_all","letter","fcamelCase","acceptData","owner","Data","uid","dataPriv","dataUser","rbrace","rmultiDash","removeData","_removeData","dataAttr","dequeue","startLength","hooks","_queueHooks","setter","clearQueue","pnum","rcssNum","cssExpand","isAttached","isHiddenWithinTree","valueParts","tween","adjusted","maxIterations","initial","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","showHide","rcheckableType","rtagName","rscriptType","createDocumentFragment","checkClone","noCloneChecked","wrapMap","thead","td","_default","refElements","tbody","tfoot","colgroup","th","optgroup","scripts","ignored","attached","fragment","htmlPrefilter","getAll","setGlobalEval","rtypenamespace","safeActiveElement","one","origFn","returnFalse","expectSync","notAsync","saved","isTrigger","delegateType","sn","stopImmediatePropagation","returnTrue","handleObjIn","eventHandle","handleObj","origType","elemData","triggered","dispatch","bindType","delegateCount","setup","mappedTypes","origCount","teardown","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","isImmediatePropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","noBubble","leverageNative","beforeunload","isDefaultPrevented","isSimulated","keyCode","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rnoInnerhtml","rchecked","rcleanScript","udataOld","udataCur","collection","hasScripts","iNoClone","valueIsFunction","domManip","buildFragment","disableScript","restoreScript","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","fixInput","cloneCopyEvent","manipulationTarget","prepend","replaceWith","prependTo","replaceAll","rnumnonpx","getStyles","opener","swap","rboxStyle","pixelBoxStyles","conditionFn","hookFn","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","pixelBoxStylesVal","boxSizingReliableVal","scrollboxSizeVal","measure","reliableTrDimensionsVal","backgroundClip","clearCloneStyle","boxSizingReliable","computeStyleTests","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","trChild","trStyle","cssPrefixes","emptyStyle","vendorProps","cssProps","capName","vendorPropName","rdisplayswap","rcustomProp","cssShow","cssNormalTransform","letterSpacing","subtract","dimension","isBorderBox","computedVal","valueIsBorderBox","curCSS","offsetProp","getClientRects","boxModelAdjustment","Tween","cssHooks","animationIterationCount","flexGrow","flexShrink","gridArea","gridColumnEnd","gridColumnStart","gridRowEnd","gridRowStart","orphans","widows","origName","isCustomProp","finalPropName","adjustCSS","getWidthOrHeight","scrollboxSizeBuggy","setPositiveNumber","addGetHookIf","propHooks","eased","fx","linear","fxNow","rfxtypes","rrun","includeWidth","Animation","tweeners","prefilters","createFxNow","tweens","specialEasing","originalProperties","originalOptions","createTween","gotoEnd","propFilter","anim","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","prefilter","speeds","fadeTo","optall","doAnimation","stopQueue","cssFn","genFx","slideDown","slideUp","slideToggle","fadeIn","fadeToggle","slow","fast","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","attrNames","getter","lowercaseName","rfocusable","rclickable","removeProp","propFix","tabindex","for","curValue","clazz","getClass","classesToArray","stripAndCollapse","toggleClass","stateVal","isValidValue","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","simulate","triggerHandler","attaches","rquery","parseXML","parserErrorElem","rbracket","rCRLF","rsubmitterTypes","rsubmittable","traditional","buildParams","valueOrFunction","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","structure","dataTypeExpression","dataTypes","jqXHR","inspected","seekingTransport","prefilterOrFactory","dataTypeOrTransport","inspect","flatOptions","ajaxSettings","lastModified","etag","accepts","responseFields","converters","ajaxSetup","ajaxExtend","ajaxPrefilter","addToPrefiltersOrTransports","ajaxTransport","ajax","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","overrideMimeType","finalText","crossDomain","inspectPrefiltersOrTransports","hasContent","ifModified","beforeSend","nativeStatusText","responses","isSuccess","modified","finalDataType","firstDataType","ajaxHandleResponses","conv2","conv","dataFilter","throws","ajaxConvert","ro","getJSON","getScript","wrapAll","firstElementChild","wrapInner","htmlIsFunction","xhrSuccessStatus","xhrSupported","cors","errorCallback","xhrFields","onreadystatechange","An","binary","scriptAttrs","charset","scriptCharset","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","Se","createHTMLDocument","implementation","keepScripts","parsed","animated","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","parentOffset","Height","defaultExtra","unbind","undelegate","fnOver","fnOut","holdReady","hold","parseJSON","gn","_jQuery","_$","noConflict","COMPOUND","MEMBER_EXP","LITERAL","unary_ops","binary_ops","getMaxKeyLen","max_len","max_unop_len","max_binop_len","literals","true","false","binaryPrecedence","op_val","createBinaryExpression","isDecimalDigit","isIdentifierStart","isIdentifierPart","ch_i","charAtFunc","charCodeAtFunc","exprI","exprICode","gobbleSpaces","gobbleExpression","gobbleBinaryExpression","gobbleBinaryOp","to_check","tc_len","biop","prec","biop_info","cur_biop","gobbleToken","gobbleNumericLiteral","gobbleStringLiteral","gobbleArray","gobbleVariable","chCode","st","quote","gobbleIdentifier","gobbleArguments","termination","separator_count","gobbleGroup","addUnaryOp","op_name","addBinaryOp","precedence","addLiteral","literal_name","literal_value","removeUnaryOp","removeAllUnaryOps","removeBinaryOp","removeAllBinaryOps","removeLiteral","removeAllLiterals","dom","anchor","onClose","limitHeight","focusButton","buttonExpand","submenuTitle","_onExpandItem","subItems","ul","Iu","expandedItem","absoluteAnchor","visibleMenu","removeClassName","addClassName","_getVisibleButtons","errorTableVisible","onToggleVisibility","onFocusLine","onChangeHeight","validationErrorsContainer","additionalErrorsIndication","validationErrorIcon","validationErrorCount","parseErrorIndication","validationErrors","dataPath","onscroll","toggleTableVisibility","onBlur","_onEvent","_onKeyUp","_onBlur","focusFlag","firstEventFlag","treeModeMixins","textModeMixins","previewModeMixins","getInnerText","getInternetExplorerVersion","tryRequireAjv","showTransformModal","showSortModal","onError","onEditable","modes","VALID_OPTIONS","_create","DEBOUNCE_INTERVAL","mixin","onModeChange","_onError","ajv","allErrors","verbose","schemaId","$data","addMetaSchema","removeSchema","addSchema","registerMode","ace","Ajv","VanillaPicker","preview","frame","setModuleUrl","isDark","importCssString","trace","symbols_","JSONString","JSONNumber","JSONNullLiteral","NULL","JSONBooleanLiteral","TRUE","FALSE","JSONText","JSONValue","EOF","JSONObject","JSONArray","JSONMemberList","JSONMember","JSONElementList","$accept","$end","terminals_","productions_","performAction","defaultActions","parseError","lexer","setInput","yylloc","lex","showPosition","yylineno","expected","yyleng","yytext","first_line","last_line","first_column","last_column","_input","_more","_less","conditionStack","unput","less","pastInput","upcomingInput","_currentRules","popState","conditions","topState","pushState","INITIAL","inclusive","defaultSelected","searchable","clearable","sortSelected","allowDeselect","closeOnScroll","nativeDropdown","taggable","tagPlaceholder","_events","isInt","pageIndex","navIndex","searching","inputContainer","rendered","originalType","originalIndex","originalOptionCount","navigating","mobileDevice","customSelected","renderSelection","requiresPagination","customClass","notice","getSelectedProperties","selectedIndexes","selectClear","tagIndex","autocomplete","autocorrect","autocapitalize","spellcheck","tagSeperators","inputClear","Option","paginate","placeEl","setPlaceholder","bindEvents","optsRect","getSelected","lastElementChild","deselect","setMessage","paginateItems","maxSelections","getOptionByIndex","getOptionByValue","removeAll","removeMessage","enable","serialise","EX","WF","oW","qD","isChildOf","mousewheel","cC","en","auto","appendText","appendTitle","appendSubmenuTitle","appendTitleAuto","ascendingTitle","actionsMenu","cannotParseFieldError","cannotParseValueError","compactTitle","descending","descendingTitle","duplicateKey","duplicateText","duplicateTitle","duplicateField","duplicateFieldError","expandTitle","formatTitle","insertTitle","insertSub","removeText","removeTitle","removeField","repairTitle","searchTitle","searchNextResultTitle","searchPreviousResultTitle","showAll","showMore","showMoreStatus","sortTitle","sortTitleShort","sortFieldLabel","sortDirectionLabel","sortFieldTitle","sortAscendingTitle","sortDescendingTitle","transformTitle","transformTitleShort","extract","extractTitle","transformQueryTitle","transformWizardLabel","transformWizardFilter","transformWizardSortBy","transformWizardSelectFields","transformQueryLabel","transformPreviewLabel","typeTitle","openUrl","validationCannotMove","autoType","arrayType","stringType","modeEditorTitle","modeCodeText","modeCodeTitle","modeFormText","modeFormTitle","modeTextText","modeTextTitle","modeTreeText","modeTreeTitle","modeViewText","modeViewTitle","modePreviewText","modePreviewTitle","examples","containsInvalidProperties","containsInvalidItems","es","ja","de","projection","parsePath","parseString","relation","CharacterData","DocumentType","calculateItemSize","_calculateHistorySize","canUndo","canRedo","mainMenuBar","createQuery","executeQuery","_debouncedValidate","frameFocusTracker","busy","busyContent","previewContent","previewText","executeWithBusyMessage","compact","_showSortModal","_showTransformModal","repair","_applyHistory","modeSwitcher","errorTable","getErrorTable","fileSizeInfo","arrayInfo","getErrorCounter","getWarningIcon","getErrorIcon","_renderPreview","limitCharacters","_onChange","onChangeText","modalAnchor","sortedBy","_setAndFireOnChange","queryDescription","onTransform","_setTextAndFireOnChange","_set","_pushHistory","escapeUnicodeChars","_setText","updateText","_renderErrors","getChildPaths","overlayClass","overlayStyles","modalClass","afterCreate","modalElem","onsubmit","afterClose","oninput","selectionStart","selectionEnd","onTextSelectionChange","aceEditor","textarea","annotations","lastSchemaErrors","_validateAndCatch","onkeydown","_onKeyDown","getSession","getUndoManager","editorDom","$blockScrolling","setTheme","setShowPrintMargin","setFontSize","setTabSize","setUseSoftTabs","setUseWrapMode","setAnnotations","_onSelect","onchange","onselect","onblur","_updateHistoryButtons","setTextSelection","curserInfoElements","colVal","lnVal","countLabel","countVal","onChangeDisabled","hasUndo","hasRedo","_updateCursorInfo","_emitSelectionChange","getInputSelection","cursorInfo","getCursorPosition","getSelectedText","_selectionChangedHandler","getTextSelection","_refreshAnnotations","getAnnotations","session","improveSchemaError","validationSequence","isPromise","isValidValidationError","stringifyPath","onValidate","onValidationError","isValidationErrorChanged","getPositionForPath","getSelectionLead","getIndexForPosition","createTextRange","moveEnd","moveStart","setRange","scrollToLine","contain","setHighlight","_cancelUnhighlight","unhighlightTimer","setField","fieldEditable","setInternalValue","internalValue","_debouncedOnChangeValue","_onChangeValue","_debouncedOnChangeField","_onChangeField","visibleChilds","getMaxVisibleChilds","maxVisibleChilds","getPath","getIndex","findNodeByPath","errorChild","updateError","fieldError","valueError","tdError","tdValue","popupAnchor","getPopupAnchor","onfocus","findParents","previousField","_getDomField","_getType","findChildByProperty","hideChilds","recreateDom","updateDom","updateIndexes","_detachFromDom","clearDom","_attachToDom","getField","_getDomValue","getInternalValue","getNodePath","fieldInnerText","valueInnerText","showChilds","getAppendDom","_getNextTr","getDom","getShowMoreDom","resetVisibleChilds","onClassName","removeAllClassNames","_updateCssClassName","recursivelyUpdateCssClassesOnNodes","_hasChilds","searchField","searchValue","MAX_SEARCH_RESULTS","_updateDomField","_updateDomValue","expandPathToNode","focusElement","selectContentEditable","containsNode","deepEqual","_clearValueError","_unescapeHTML","_setValueError","getDomSelection","textDiff","endOffset","_onAction","getInternalPath","oldSelection","parentPath","isUrl","searchValueActive","tdCheckbox","enum","_updateEnumOptions","tdSelect","valueFieldHTML","isValidColor","tdColor","_deleteDomColor","_showTimestampTag","timestampFormat","stripFormatting","_updateDomDefault","makeFieldTooltip","searchFieldActive","_clearFieldError","getFieldNames","findUniqueName","_setFieldError","timestampTag","isTimestamp","_updateEditability","_createDomTree","contentEditable","_findSchema","_escapeHTML","_updateSchema","updateNodeName","_updateDomIndexes","_findEnum","borderCollapse","_createDomExpandButton","tdExpand","_createDomField","tdField","tdSeparator","_createDomValue","srcElement","highlighter","unhighlight","showContextMenu","unlock","_onExpand","_showColorPicker","hasMoved","getAbsoluteLeft","setEndOfContentEditable","multiselection","onDuplicate","_onInsertBefore","_onInsertAfter","_lastNode","_getElementName","_firstNode","_previousElement","getNodeFromTarget","moveBefore","fieldNames","oldParentPath","newParentPath","oldIndexRedo","newIndexRedo","oldParentPathRedo","newParentPathRedo","_previousNode","_findTopLevelNodes","_nextElement","previousSibling","_nextNode","onColorPicker","beforePath","afterPath","changeType","oldType","newType","getNestedChild","oldChilds","newChilds","nextTr","_setRoot","templates","_onAppend","_onChangeType","addTemplates","onCreateMenu","_escapeJSON","onNodeName","recursivelyUpdateNodeName","getAbsoluteTop","oldCursor","oldPaths","oldParent","oldNextNode","limitDragging","isDescendantOf","startAutoScroll","stopAutoScroll","oneOf","anyOf","allOf","$ref","patternProperties","additionalProperties","blurNodes","_remove","clonePaths","targetIsColorPicker","tdDrag","tdMenu","_getShowMoreText","moreContents","totalChilds","findNodeByInternalPath","editField","updateField","editValue","updateValue","appendNodes","insertBeforeNodes","insertAfterNodes","duplicateNodes","moveNodes","setDomSelection","lastText","_onDelayedSearch","_onSearch","onkeyup","resultIndex","_setActiveResult","activeResult","_clearDelay","contentMenuClicked","selectionCallback","contextMenuCallback","setPath","createRange","selectNodeContents","removeAllRanges","addRange","moveToElementText","onmouseselection","__hint","errorNodes","focusTarget","_setOptions","confirmKeys","onArrowDown","onArrowUp","onEnter","onTab","startFrom","elementHint","elementStyle","repaint","hideDropDown","realInnerText","_createFrame","_createTable","searchBox","navigationBar","getWindow","forceSearch","tryJsonRepair","scrollableContent","treePath","_updateTreePath","findNode","_validateCustom","_renderValidationErrors","setError","autoScrollStep","autoScrollTimer","domName","setSelectionOffset","getSelectionOffset","animateTimeout","animateCallback","contentOuter","oncut","onpaste","onmouseup","onfocusin","onfocusout","_onUndo","_onRedo","navBar","onSectionSelected","_onTreePathSectionSelected","onContextMenuItemSelected","_onTreePathMenuItemSelected","_showAutoComplete","_startDragDistance","_updateDragDistance","hasParentNode","_onMultiSelectStart","expandTo","dragDistanceEvent","initialTarget","initialPageX","initialPageY","dragDistance","_onMultiSelect","_onMultiSelectEnd","colgroupContent","_getNodeInstancesByRange","getNodesByRange","compileJSONPointer","me","ae","le","getColorCSS","ne","re","insideRect","ue","oe","fe","se","removeReturnsAndSurroundingWhitespace","ce","he","getRangeAt","startContainer","endContainer","setStart","setEnd","hasChildNodes","appName","$1","detachEvent","keyword","additionalProperty","moveToBookmark","getBookmark","compareEndPoints","pointers","schemaPath","Picker","payloads","packaged","nmd","OS","LINUX","MAC","WINDOWS","isMac","isLinux","isWin","isOldIE","isGecko","isMozilla","isOpera","isAIR","isAndroid","isChromeOS","isMobile","buildDom","getDocumentHead","removeChildren","createFragment","hasCssClass","toggleCssClass","setCssClass","hasCssString","useStrictCSP","importCssStylsheet","rel","HAS_CSS_ANIMATION","HAS_CSS_TRANSFORMS","HI_DPI","animationName","inherits","super_","implement","MODIFIER_KEYS","KEY_MODS","super","cmd","FUNCTION_KEYS","PRINTABLE_KEYS","esc","del","keyCodeToString","addListener","$toDestroy","getModifierState","altGr","keyLocation","getButton","addMouseWheelListener","wheelDeltaX","wheelX","wheelY","wheelDeltaY","wheelDelta","deltaMode","DOM_DELTA_PIXEL","deltaX","deltaY","DOM_DELTA_LINE","DOM_DELTA_PAGE","HORIZONTAL_AXIS","addMultiMouseDownListener","_clicks","getModifierString","addCommandKeyListener","isOldGecko","nextTick","$idleBlocked","onIdle","$idleBlockId","blockIdle","nextFrame","mozRequestAnimationFrame","msRequestAnimationFrame","oRequestAnimationFrame","compareRange","comparePoint","containsRange","intersects","isEnd","isStart","insideStart","insideEnd","isMultiLine","compareStart","compareEnd","compareInside","clipRows","fromPoints","collapseRows","toScreenRange","documentToScreenPosition","moveBy","comparePoints","Range","stringReverse","stringRepeat","stringTrimLeft","stringTrimRight","copyObject","copyArray","deepCopy","arrayToMap","createMap","arrayRemove","escapeRegExp","escapeHTML","getMatchOffsets","deferredCall","isPending","delayedCall","lineMode","pasteCancelled","TextInput","onPaste","$focusScroll","curOp","docChanged","setInputHandler","getInputHandler","Je","onTextInput","extendLeft","extendRight","restoreStart","restoreEnd","getCopyText","onCut","onCopy","onCommandKey","onCompositionUpdate","$readOnly","useTextareaForIME","markerRange","compositionStartOffset","onCompositionEnd","$isMousePressed","$keepTextAreaAtCursor","$moveTextAreaToCursor","textInput","onCompositionStart","_signal","getSelectionRange","msGetInputContext","getInputContext","getElement","setCommandMode","setCopyWithEmptySelection","_emit","moveToMouse","characterWidth","onContextMenuClose","$mouseHandler","isMousePressed","home","findKeyCommand","$setUserAgentForTests","$clickSelection","setDefaultHandler","onDoubleClick","onTripleClick","onQuadClick","onMouseWheel","selectByLines","extendSelectionBy","selectByWords","inSelection","getDocumentPosition","mousedownEvent","moveToPosition","$focusTimeout","inMultiSelectMode","captureMouse","startSelect","screenToTextCoordinates","getShiftKey","selectToPosition","setCapture","setSelectionAnchor","scrollCursorIntoView","selectEnd","selectAllEnd","selectByWordsEnd","selectByLinesEnd","unsetStyle","releaseCapture","focusWait","getBracketRange","getWordRange","getLineRange","getAccelKey","$lastScroll","vx","vy","allowed","isScrollableBy","scrollBy","DefaultHandlers","isOpen","$element","$parentNode","$init","setHtml","GutterHandler","$gutterLayer","getRegion","selectTo","$tooltipFollowsMouse","$annotations","getLength","pixelToScreenCoordinates","$pos","documentToScreenRow","$gutter","$inSelection","propagationStopped","moveCursorToPosition","layerConfig","toOrientedRange","addMarker","getSelectionStyle","$cursorLayer","setBlinking","removeMarker","fromOrientedRange","$resetCursorStyle","cancelDrag","effectAllowed","getReadOnly","clearData","getTextRange","dropEffect","setCursorStyle","onDragOver","onDrop","moveText","dragWait","getDragDelay","startDrag","dragWaitEnd","dragReadyEnd","onMouseDrag","$dragEnabled","unselectable","DragdropHandler","addTouchListeners","ontouchend","textToScreenCoordinates","selectWord","getPixelPosition","loadScript","qualifyURL","_dispatchEvent","_eventRegistry","_defaultHandlers","_disabled_","removeDefaultHandler","$options","forwardTo","handlesSet","$defaultOptions","defineOptions","resetOptions","setDefaultValue","AppConfig","workerPath","modePath","themePath","basePath","$moduleUrls","loadWorkerFromBlob","sharedPopups","$modes","moduleUrl","$loading","loadModule","amdD","currentScript","_currentScript","getMouseEventTarget","scrollBarV","inner","scrollBarH","$dragDelay","$scrollSpeed","releaseMouse","$mouseMoved","$onCaptureMouseMove","endOperation","startOperation","cancelContextMenu","scrollSpeed","dragDelay","dragEnabled","focusTimeout","tooltipFollowsMouse","MouseHandler","FoldHandler","getFoldAt","removeFold","expandFold","getUseWrapMode","foldWidgets","onFoldWidgetClick","getParentFoldRangeData","firstRange","addFold","$editor","$handlers","removeKeyboardHandler","$defaultHandler","addKeyboardHandler","setKeyboardHandler","handleKeyboard","attach","getKeyboardHandler","getStatusText","$callKeyboardHandlers","passEvent","KeyBinding","EN","ON_R","AN","R_H","RLE","DOT","doBidiReorder","logicalFromVisual","bidiLevels","hasBidiCharacters","getVisualFromLogicalIdx","bidiMap","bidiUtil","charWidths","EOL","showInvisibles","isRtlDir","$isRtl","wrapIndent","contentWidth","rtlLineOffset","wrapOffset","isMoveLeftOperation","seenBidi","isBidiRow","updateRowLine","updateBidiMap","getDocumentRow","$screenRowCache","$getRowCacheIndex","$docRowCache","getSplitIndex","$useWrapMode","$wrapData","getScreenTabSize","$main","updateCharacterWidths","$characterSize","$measureCharWidth","setShowInvisibles","setEolChar","setContentWidth","isRtlLine","setRtlDirection","getSelectionAnchor","$bidiHandler","removeInLine","getPosLeft","getOverwrite","getSelections","offsetToCol","BidiHandler","lead","createAnchor","$silent","$cursorChanged","$isEmpty","$keepDesiredColumnOnChange","$desiredColumn","$anchorChanged","getCursor","isBackwards","$setSelection","$moveSelection","moveCursorTo","selectUp","moveCursorUp","selectDown","moveCursorDown","selectRight","moveCursorRight","selectLeft","moveCursorLeft","selectLineStart","moveCursorLineStart","selectLineEnd","moveCursorLineEnd","selectFileEnd","moveCursorFileEnd","selectFileStart","moveCursorFileStart","selectWordRight","moveCursorWordRight","selectWordLeft","moveCursorWordLeft","selectAWord","getAWordRange","getFoldLine","selectLine","moveCursorBy","wouldMoveIntoSoftTab","isTabStop","getTabSize","getNavigateWithinSoftTabs","screenToDocumentPosition","getDisplayLine","$useEmacsStyleLineStart","getDocumentLastRowColumnPosition","moveCursorLongWordRight","nonTokenRe","tokenRe","moveCursorLongWordLeft","getFoldStringAt","$shortWordEndIndex","moveCursorShortWordRight","moveCursorShortWordLeft","$selectLongWords","lineWidgets","rowsAbove","moveCursorToScreen","desiredColumn","getRangeOfMovements","fromJSON","rangeList","toSingleRange","regExps","matchMappings","defaultToken","caseInsensitive","tokenArray","onMatch","$arrayTokens","$applyToken","removeCapturingGroups","splitRegex","createSplitterRegexp","$setMaxTokenCount","getLineTokens","consumeLineEnd","Tokenizer","$rules","addRules","getRules","embedRules","$embeds","getEmbeds","normalizeRules","noEscape","keywordMap","createKeywordMapper","$keywordList","getKeywords","$keywords","TextHighlightRules","$behaviours","addBehaviours","inherit","getBehaviours","Behaviour","$session","$row","$rowTokens","getTokens","getTokenAt","$tokenIndex","stepBackward","stepForward","getCurrentToken","getCurrentTokenRow","getCurrentTokenColumn","getCurrentTokenPosition","getCurrentTokenRange","TokenIterator","multiSelect","autoInsertedBrackets","autoInsertedRow","autoInsertedLineEnd","maybeInsertedBrackets","maybeInsertedRow","maybeInsertedLineStart","maybeInsertedLineEnd","getWrapBehavioursEnabled","isSaneInsertion","braces","recordAutoInsert","recordMaybeInsert","$findOpeningBracket","isAutoInsertedClosing","popAutoInsertedClosing","isMaybeInsertedClosing","clearMaybeInsertedClosing","findMatchingBracket","$getIndent","getTabString","$mode","$quotes","lineCommentStart","$matchTokenType","CstyleBehaviour","wordChars","HighlightRules","$defaultBehaviour","getTokenizer","$tokenizer","$highlightRules","$highlightRuleConfig","blockComment","toggleCommentLines","getUseSoftTabs","insertInLine","toggleBlockComment","getNextLineIndent","checkOutdent","autoOutdent","createWorker","createModeDelegates","$id","$delegator","transformAction","$behaviour","completionKeywords","$createKeywordList","getCompletions","score","Mode","applyDelta","Anchor","$onChange","$clipPositionToDocument","$insertRight","$lines","insertMergedLines","getAllLines","getNewLineCharacter","$split","$detectNewLine","$autoNewLine","$newLineMode","setNewLineMode","getNewLineMode","isNewLine","getLines","getLinesForRange","insertLines","insertFullLines","removeLines","removeFullLines","insertNewLine","clippedPos","clonePos","$clipPosition","removeNewLine","applyDeltas","revertDeltas","revertDelta","$splitAndapplyLargeDelta","$safeApplyDelta","indexToPosition","positionToIndex","Document","currentLine","tokenizer","$worker","$tokenizeRow","fireUpdateEvent","setTokenizer","scheduleStart","$updateOnChange","BackgroundTokenizer","setRegexp","MAX_RANGES","regExp","drawSingleLineMarker","SearchHighlight","foldData","folds","setFoldLine","shiftRow","foldLine","containsRow","walk","getNextFoldTo","fold","kind","addRemoveChars","idxToPosition","FoldLine","$bias","pointIndex","addList","substractPoint","rangeAtPoint","RangeList","Fold","subFolds","collapseChildren","addSubFold","restoreRange","Folding","getFoldsInRange","$foldData","getFoldsInRangeList","getAllFolds","getNextFoldLine","getFoldedRowCount","$addFoldLine","$clipRangeToDocument","removeFolds","$updateWrapData","$updateRowLengthCache","$modified","addFolds","$updating","foldAll","expandFolds","unfold","isRowFolded","getRowFoldEnd","getRowFoldStart","getFoldDisplayLine","$cloneFoldData","toggleFold","getCommentFoldRange","getFoldWidget","getFoldWidgetRange","foldToLevel","foldAllComments","$foldStyles","manual","markbegin","markbeginend","$foldStyle","setFoldStyle","$foldMode","$setFolding","$updateFoldWidgets","$tokenizerUpdateFoldWidgets","updateFoldWidgets","tokenizerUpdateFoldWidgets","$toggleFoldWidget","toggleFoldWidget","BracketMatch","$findClosingBracket","getMatchingBracketRanges","$brackets","$breakpoints","$decorations","$frontMarkers","$backMarkers","$markerId","$undoSelect","$uid","onChangeFold","bgTokenizer","resetCaches","$resetRowCache","$rowLengthCache","$updateInternalDataOnChange","$fromUndo","$undoManager","mergeUndoDeltas","$informUndoManager","setUndoManager","addSession","$syncInformUndoManager","markUndoGroup","$defaultUndoManager","addSelection","startNewGroup","$useSoftTabs","$indentWithTabs","$tabSize","setNavigateWithinSoftTabs","$navigateWithinSoftTabs","$overwrite","setOverwrite","toggleOverwrite","addGutterDecoration","removeGutterDecoration","getBreakpoints","setBreakpoints","clearBreakpoints","setBreakpoint","clearBreakpoint","inFront","addDynamicMarker","getMarkers","$searchHighlight","highlightLines","clearAnnotations","setUseWorker","getUseWorker","$useWorker","onReloadTokenizer","$modeId","$onChangeMode","$stopWorker","$startWorker","attachToSession","wrapMethod","$wrapMethod","foldingRules","oldMode","terminate","$scrollTop","$scrollLeft","getScreenWidth","$computeWidth","getLineWidgetMaxWidth","screenWidth","lineWidgetsWidth","lineWidgetWidth","$wrapLimit","$getStringScreenWidth","undoChanges","selectionBefore","$getUndoSelection","redoChanges","selectionAfter","setUndoSelect","indentRows","outdentRows","$moveLines","$clipRowToDocument","moveLinesUp","moveLinesDown","duplicateLines","$clipColumnToRow","$wrapLimitRange","setWrapLimitRange","adjustWrapLimit","$constrainWrapLimit","getWrapLimit","setWrapLimit","getWrapLimitRange","$getDisplayTokens","$computeWrapSplits","$wrapAsCode","$indentedSoftWrap","getRowLength","getRowLineCount","getRowWrapIndent","getScreenLastRowColumn","documentToScreenColumn","getDocumentLastRowColumn","getRowSplitData","screenToDocumentRow","screenToDocumentColumn","getScreenLength","$getWidgetScreenLength","$setFontMetrics","$enableVarChar","getCharacterWidth","$wrap","indentedSoftWrap","firstLineNumber","useWorker","useSoftTabs","tabSize","navigateWithinSoftTabs","foldStyle","newLineMode","EditSession","$matchIterator","skipCurrent","findAll","needle","$assembleRegExp","$isMultiLine","preserveCase","wholeWord","$assembleMultilineRegExp","Search","commandKeyBinding","addCommands","$singleCommand","isDefault","addCommand","removeCommand","_buildKeyHash","parseKeys","_addCommandToBinding","hashId","removeCommands","bindKeys","$keyChain","HashHandler","MultiHashHandler","byName","$checkCommandState","toggleRecording","$inReplay","recording","macro","$addCommandToMacro","oldMacro","replay","trimMacro","CommandManager","mac","showSettingsMenu","showErrorMarker","centerSelection","gotoLine","prompt","$type","multiSelectAction","getAllRanges","findNext","findPrevious","aceCommandGroup","navigateFileStart","navigateUp","times","navigateFileEnd","navigateWordLeft","navigateLineStart","navigateLeft","navigateWordRight","navigateLineEnd","navigateRight","selectPageDown","scrollPageDown","gotoPageDown","selectPageUp","scrollPageUp","gotoPageUp","jumpToMatching","$copyWithEmptySelection","$handlePaste","duplicateSelection","sortLines","modifyNumber","copyLinesUp","copyLinesDown","removeToLineStart","removeToLineEnd","removeWordLeft","removeWordRight","blockOutdent","blockIndent","splitLine","transposeLetters","transposeSelections","autoIndent","exitMultiSelectMode","getTextAreaContainer","keyBinding","$search","$historyTracker","$initOperationListeners","_$emitInputEvent","setSession","$opResetTimer","$lastSel","prevOp","previousCommand","scrollSelectionIntoView","animateScrolling","$mergeableCommands","$mergeUndoDeltas","mergeNextCommand","sequenceStartTime","$keybindingId","$onDocumentChange","$onTokenizerUpdate","$onChangeTabSize","$onChangeWrapLimit","$onChangeWrapMode","$onChangeFold","$onChangeFrontMarker","$onChangeBackMarker","$onChangeBreakpoint","$onChangeAnnotation","$onCursorChange","$onScrollTopChange","$onScrollLeftChange","$onSelectionChange","onDocumentChange","onChangeMode","onTokenizerUpdate","onChangeTabSize","onChangeWrapLimit","onChangeWrapMode","onChangeFrontMarker","onChangeBackMarker","onChangeBreakpoint","onChangeAnnotation","onCursorChange","onScrollTopChange","onScrollLeftChange","updateFull","oldSession","oldEditor","getFontSize","$highlightBrackets","$highlightPending","$bracketHighlight","markerIds","getMatching","$highlightTags","$highlightTagPending","$tagHighlight","$isFocused","showCursor","visualizeFocus","hideCursor","visualizeBlur","$cursorChange","updateCursor","$updateHighlightActiveLine","updateLines","scrollToY","scrollToX","$highlightActiveLine","$selectionStyle","$selectionColorConflict","$maxLines","$minLines","$highlightLineMarker","$selectionMarker","$highlightSelectedWord","$getSelectionHighLightRegexp","updateFrontMarkers","updateBackMarkers","updateBreakpoints","inVirtualSelectionMode","getBehavioursEnabled","$enableAutoIndent","applyComposition","forEachSelection","setScrollSpeed","getScrollSpeed","setDragDelay","setSelectionStyle","setHighlightActiveLine","getHighlightActiveLine","setHighlightGutterLine","getHighlightGutterLine","setHighlightSelectedWord","getHighlightSelectedWord","setAnimatedScroll","getAnimatedScroll","getShowInvisibles","setDisplayIndentGuides","getDisplayIndentGuides","getShowPrintMargin","setPrintMarginColumn","getPrintMarginColumn","setBehavioursEnabled","setWrapBehavioursEnabled","setShowFoldWidgets","getShowFoldWidgets","setFadeFoldWidgets","getFadeFoldWidgets","$getSelectedRows","getNumberAt","toggleWord","$toggleWordPairs","showComposition","setCompositionText","hideComposition","getFirstVisibleRow","getLastVisibleRow","isRowVisible","isRowFullyVisible","getFirstFullyVisibleRow","getLastFullyVisibleRow","$getVisibleRowCount","getScrollBottomRow","getScrollTopRow","$moveByPage","scrollToRow","alignCursor","getCursorPositionScreen","$tryReplace","getLastSearchOptions","revealRange","setAutoScrollEditorIntoView","$scrollAnchor","$pixelPos","$cursorStyle","setSmoothBlinking","isBlinking","selectionStyle","highlightActiveLine","highlightSelectedWord","copyWithEmptySelection","cursorStyle","behavioursEnabled","wrapBehavioursEnabled","enableAutoIndent","autoScrollEditorIntoView","keyboardHandler","showLineNumbers","setShowLineNumbers","$loop","CHANGE_GUTTER","$relativeLineNumbers","relativeLineNumbers","$showLineNumbers","$updatePlaceholder","$composition","placeholderNode","$placeholder","hScrollBarAlwaysVisible","vScrollBarAlwaysVisible","highlightGutterLine","animatedScroll","showPrintMargin","printMarginColumn","printMargin","fadeFoldWidgets","showFoldWidgets","displayIndentGuides","showGutter","maxLines","minLines","scrollPastEnd","fixedWidthGutter","hasCssTransforms","maxPixelHeight","$renderer","Editor","$maxRev","$lastDelta","$keepRedoStack","$redoStack","lastDeltas","$undoStack","$rev","selections","rev","markIgnored","ignore","getRevision","getDeltas","getChangedRanges","getChangedLines","$redoStackBaseRev","$syncRev","bookmark","isAtBookmark","isClean","markClean","$prettyPrint","UndoManager","canvasHeight","cellCache","$offsetCoefficient","moveContainer","firstRowScreen","pageChanged","computeLineTop","computeLineHeight","$cacheCell","Lines","$showFoldWidgets","gutterWidth","$updateAnnotations","gutterOffset","oldLastRow","$updateCursorRow","$renderCell","$updateGutterWidth","gutterRenderer","$firstLineNumber","$fixedWidth","$padding","$computePadding","$highlightGutterLine","$cursorRow","updateLineHighlight","$cursorCell","scrollLines","$renderLines","getShowLineNumbers","Gutter","setPadding","setMarkers","elt","$getTop","drawFullLineMarker","drawScreenLineMarker","drawTextMarker","drawMultiLineMarker","drawBidiSingleLineMarker","$updateEolChar","EOF_CHAR","EOL_CHAR_LF","EOL_CHAR_CRLF","EOL_CHAR","TAB_CHAR","SPACE_CHAR","MAX_LINE_LENGTH","getLineHeight","$fontMetrics","$pollSizeChanges","checkForSizeChanges","$pollSizeChangesTimer","$computeTabString","showSpaces","showTabs","showEOL","$tabStrings","$indentGuideRe","$renderLine","$renderLinesFragment","$useLineGroups","$textToken","rparen","lparen","$renderToken","com","renderIndentGuide","$createLineElement","$renderWrappedLine","$renderOverflowMessage","$renderSimpleLine","$getFoldLineTokens","blinkInterval","smoothBlinking","addCursor","$updateCursors","$updateOpacity","$startCssAnimation","animationDuration","$isAnimating","$stopCssAnimation","setBlinkInterval","removeCursor","$isSmoothBlinking","isCursorInView","$selectionMarkers","drawCursor","$setOverwrite","Cursor","classSuffix","skipEvent","onScroll","$scrollbarWidth","$minWidth","coeff","setInnerHeight","setScrollHeight","setInnerWidth","setScrollWidth","ScrollBar","ScrollBarV","ScrollBarH","VScrollBar","HScrollBar","onRender","$recursionLimit","_flush","RenderLoop","FontMetrics","$setMeasureNodeStyles","$measureNode","$addObserver","$measureSizes","charSizes","allowBoldFonts","$observer","setPolling","$getZoom","$initTransformMeasureNodes","transformCoordinates","onGutterResize","$markerBack","$textLayer","$markerFront","$horizScroll","$vScroll","scrollBar","$scrollAnimation","scrollMargin","cursorPos","updateCharacterSize","$size","scrollerHeight","scrollerWidth","$dirty","$renderChanges","CHANGE_FULL","CHANGE_CURSOR","CHANGE_MARKER","CHANGE_SCROLL","CHANGE_LINES","CHANGE_TEXT","CHANGE_SIZE","CHANGE_MARKER_BACK","CHANGE_MARKER_FRONT","CHANGE_H_SCROLL","$allowBoldFonts","$updatePrintMargin","onChangeNewLineMode","$changedLines","updateFontSize","$changes","$updateSizeAsync","$updateCachedSize","$extraHeight","$showGutter","$computeLayerConfig","$showPrintMargin","$printMarginColumn","$animatedScroll","getShowGutter","setShowGutter","$printMarginEl","setScrollMargin","setMargin","getHScrollBarAlwaysVisible","$hScrollBarAlwaysVisible","setHScrollBarAlwaysVisible","getVScrollBarAlwaysVisible","$vScrollBarAlwaysVisible","setVScrollBarAlwaysVisible","$updateScrollBarV","$scrollPastEnd","$updateScrollBarH","$frozen","unfreeze","$updateLines","$autosize","$maxPixelHeight","desiredHeight","$gutterWidth","$getLongestLine","STEPS","$calcSteps","$timer","$hasCssTransforms","$blockCursor","$useTextareaForIME","markerId","removeExtraToken","$themeId","$theme","setMouseCursor","attachToShadowRoot","VirtualRenderer","Worker","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","getBlob","webkitURL","$createWorkerFromOldConfig","$sendDeltaQueue","onMessage","callbackId","nameToUrl","toUrl","$normalizePath","tlns","classname","deltaQueue","$doc","attachToDocument","UIWorkerClient","messageBuffer","setEmitSync","WorkerClient","mainClass","othersClass","$onUpdate","onUpdate","$others","$undostack","$undoStackDepth","others","showOtherMarkers","othersActive","hideOtherMarkers","updateAnchors","PlaceHolder","$enableJumpToDef","$blockSelectEnabled","addSelectionMarker","removeSelectionMarker","removeSelectionMarkers","rectangularRangeBlock","updateSelectionMarkers","defaultCommands","selectMoreLines","selectMore","joinSelections","splitIntoLines","alignCursors","multiSelectCommands","$multiselectOnSessionChange","$onAddRange","$onRemoveRange","$onMultiSelect","$onSingleSelect","onSessionChange","$checkMultiselectChange","getSelectionMarkers","mergeOverlappingRanges","$initRangeList","toggleBlockSelection","selectionMarkerCount","$onMultiSelectExec","inVirtualMode","keepOrder","$byLines","$reAlignText","MultiSelect","enableMultiselect","enableBlockSelect","FoldMode","foldingStartMarker","foldingStopMarker","indentationBlock","openingBracketBlock","closingBracketBlock","widgetManager","updateOnChange","renderWidgets","measureWidgets","_changedWidgets","$onChangeEditor","updateOnFold","_inDocument","removeLineWidget","$updateRows","$oldWidget","$registerLineWidget","addLineWidget","coverGutter","pixelHeight","$fold","onWidgetChanged","getWidgetsAtRow","fixedWidth","coverLine","LineWidgets","sc","env","createEditSession","setEditor","searchRange","$syncOptions","$initElements","replaceBox","searchOption","replaceOption","regExpOption","caseSensitiveOption","wholeWordOption","searchInput","replaceInput","searchCounter","activeInput","$searchBarKb","$closeSearchBarKb","isReplace","findPrev","Return","Tab","setSearchRange","searchRangeMarker","updateCounter","replaceAndFindNext","SearchBox","comment","JsonHighlightRules","MatchingBraceOutdent","singleLineBlockCommentRe","tripleStarBlockCommentRe","startRegionRe","_getFoldWidgetBase","getCommentRegionBlock","getSectionRange","$outdent","getSchema","_addSchema","_compile","$async","_getId","normalizeId","_schemas","$schema","_opts","defaultMeta","errorsText","baseId","_fragments","_refs","_cache","addFormat","_formats","dataVar","addUsedSchema","localRefs","compiling","_metaOpts","refs","refVal","compileAsync","addKeyword","getKeyword","removeKeyword","validateKeyword","ValidationError","Validation","MissingRefError","MissingRef","$dataMetaSchema","_loadingSchemas","_compilations","RULES","loopRequired","errorDataPath","_errorDataPathProperty","keywords","nullable","metaSchema","schemas","loadSchema","missingSchema","missingRef","fullPath","validation","ipv4","ipv6","uuid","full","ucs2length","toQuotedString","callValidate","sourceCode","isRoot","errSchemaPath","errorPath","util","resolveRef","usePattern","useDefault","useCustomRule","processCode","patterns","inlineRef","inlineRefs","inline","dependencies","escapeFragment","toHash","unescapeFragment","maximum","minimum","implements","$comment","checkDataType","checkDataTypes","coerceToTypes","escapeQuotes","varOccurences","varReplace","schemaHasRules","schemaHasRulesExcept","schemaUnknownRules","getPathExpr","decodeURIComponent","unescapeJsonPointer","escapeJsonPointer","simpleTypes","statements","modifying","const","dataLevel","dataPathArr","createErrors","compositeRule","unicode","strictKeywords","jsonPointers","passContext","ownProperties","unknownFormats","else","if","maxItems","minItems","minLength","maxProperties","minProperties","multipleOf","propertyNames","uniqueItems","additionalItems","multipleOfPrecision","removeAdditional","useDefaults","missingRefs","strictNumbers","rootId","strictDefaults","extendRefs","coerceTypes","_validateKeyword","cmp","cycles","insensitive","trimLeft","_current","_consumeUnquotedIdentifier","_consumeNumber","_consumeLBracket","_consumeQuotedIdentifier","_consumeRawStringLiteral","_consumeLiteral","_consumeOperator","_looksLikeJSON","_interpreter","functionTable","_func","_functionAbs","_signature","_functionAvg","_functionCeil","_functionContains","ends_with","_functionEndsWith","_functionFloor","_functionLength","_functionMap","_functionMax","_functionMerge","variadic","max_by","_functionMaxBy","_functionSum","starts_with","_functionStartsWith","_functionMin","min_by","_functionMinBy","_functionType","_functionKeys","_functionValues","_functionSort","sort_by","_functionSortBy","_functionJoin","_functionReverse","to_array","_functionToArray","to_string","_functionToString","to_number","_functionToNumber","not_null","_functionNotNull","Pipe","And","EQ","GT","LT","GTE","LTE","NE","Star","Not","_loadTokens","_lookahead","_lookaheadToken","_advance","nud","led","_parseProjectionRHS","_parseMultiselectHash","Flatten","_parseIndexExpression","_projectIfSlice","_parseMultiselectList","Expref","_match","_errorToken","_parseDotRHS","Filter","_parseComparator","_parseSliceExpression","computeSliceParams","callFunction","jmespathType","capSliceRange","_validateArgs","_getTypeName","_typeMatches","createKeyFunction","strictDeepEqual","arrayKeywords","propsKeywords","skipKeywords","exclusiveMaximum","exclusiveMinimum","bigint","MIN_SAFE_INTEGER","SyntaxError","space","es6","BYTES_PER_ELEMENT","watch","make","stylize","anyAncestor","beforeShow","afterShow","overlay","closeElem","overlayElem","forceClose","beforeClose","NOT_SCHEME","NOT_USERINFO","NOT_HOST","NOT_PATH","NOT_PATH_NOSCHEME","NOT_QUERY","NOT_FRAGMENT","UNRESERVED","OTHER_CHARS","PCT_ENCODED","IPV4ADDRESS","IPV6ADDRESS","RangeError","fromCodePoint","Ae","userinfo","iri","reference","unicodeSupport","domainHost","absolutePath","tolerant","rn","secure","resourceName","Ce","Ie","ke","Ee","Re","Te","$e","Le","nss","Be","SCHEMES","pctEncChar","pctDecChars","removeDotSegments","resolveComponents","escapeComponent","unescapeComponent","tqw","qmrn","zr","bg","bsq","bck","nch","bvt","brwn","brw","ctb","hrt","chcT","rnw","crns","crms","Db","Dcn","Dgnr","Dgr","Dgrn","Dkhk","Dmgn","Dvgr","Drng","Drch","Dr","Dsmn","Dsgr","DsTb","DsTg","Dtrq","Dvt","ppnk","pskb","mgr","grb","rbrc","rwht","stg","chs","gnsb","gnr","gr","grn","grnw","hnw","htpn","nnr","ng","khk","vnr","nrb","wngr","mnch","Lb","Lcr","Lcn","Lgnr","Lgr","Lgrn","Lpnk","Lsmn","Lsgr","Lskb","LsTg","Lstb","Lw","mgrn","nn","mgnt","mrn","mqm","mmb","mmrc","mmpr","mmsT","mtr","mmvt","mnLb","ntc","mstr","mccs","vjw","nv","vrb","rng","rngr","rch","pgnr","pgrn","ptrq","pvtr","ppwh","pchp","pr","pnk","pm","pwrb","prp","cc","sbr","rb","sbrw","smn","nbr","sgrn","ssh","snn","svr","skb","sTb","sTgr","snw","stb","tn","thst","tmT","trqs","whT","wht","hts","wgrn","hsla","hexToRgb","nameToRgb","_rgba","_hsla","hslToRgb","printRGB","rgbToHsl","printHSL","_doRemove","editorFormat","cancelButton","defaultColor","onOpen","_popupInited","colour","_setColor","openHandler","_domEdit","domElement","__containedEvent","closeHandler","failSilently","_setHSLA","setColor","_toggleDOM","_setPosition","_domH","_domSL","_domA","_domSample","_domOkay","_domCancel","_ifPopup","_updateUI","_bindEvents","fromEditor","hslString","hslaString","printHex","StyleElement","insertBeforeLastWhitespace","True","False","isDigit","normalizeWhitespace","isQuote","normalizeQuote","isSingleQuote","isDoubleQuote","isHex","isAlpha","isWhitespace","isSpecialWhitespace","stripLastOccurrence","insertAtIndex","loaded","FUNC_ERROR_TEXT","HASH_UNDEFINED","PLACEHOLDER","WRAP_PARTIAL_FLAG","WRAP_ARY_FLAG","INFINITY","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","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","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","reOptMod","rsModifier","rsOptVar","rsSeq","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","typedArrayTags","cloneableTags","stringEscapes","freeParseFloat","freeParseInt","freeGlobal","freeSelf","freeExports","freeModule","moduleExports","freeProcess","nodeUtil","binding","nodeIsArrayBuffer","nodeIsDate","nodeIsMap","isMap","nodeIsRegExp","isRegExp","nodeIsSet","isSet","nodeIsTypedArray","isTypedArray","iteratee","accumulator","resIndex","baseIndexOf","initAccum","asciiSize","baseProperty","eachFunc","fromRight","strictIndexOf","baseFindIndex","baseIsNaN","baseSum","trimmedEndIndex","arrayMap","strSymbols","chrSymbols","deburrLetter","basePropertyOf","escapeHtmlChar","hasUnicode","unicodeSize","unicodeToArray","asciiToArray","unescapeHtmlChar","arrayProto","objectProto","coreJsData","funcToString","idCounter","maskSrcKey","IE_PROTO","nativeObjectToString","objectCtorString","oldDash","reIsNative","Buffer","allocUnsafe","getPrototype","overArg","objectCreate","spreadableSymbol","isConcatSpreadable","symIterator","symToStringTag","getNative","ctxClearTimeout","ctxNow","ctxSetTimeout","nativeCeil","nativeFloor","nativeGetSymbols","nativeIsBuffer","isBuffer","nativeIsFinite","nativeJoin","nativeKeys","nativeMax","nativeMin","nativeNow","nativeParseInt","nativeRandom","nativeReverse","DataView","nativeCreate","metaMap","realNames","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","symbolToString","isObjectLike","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","chainAll","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","__data__","MapCache","ListCache","inherited","isArr","isArg","isArguments","isBuff","isType","skipIndexes","baseTimes","isIndex","baseRandom","shuffleSelf","baseClamp","baseAssignValue","objValue","baseEach","lower","upper","bitmask","customizer","isDeep","isFull","initCloneArray","getTag","isFunc","cloneBuffer","initCloneObject","getSymbolsIn","copySymbolsIn","keysIn","baseAssignIn","getSymbols","copySymbols","baseAssign","cloneArrayBuffer","dataView","byteOffset","cloneDataView","cloneTypedArray","regexp","cloneRegExp","cloneSymbol","initCloneByTag","Stack","U0","subValue","baseClone","getAllKeysIn","getAllKeys","arrayEach","assignValue","arrayIncludes","isCommon","valuesLength","baseUnary","arrayIncludesWith","cacheHas","SetCache","valuesIndex","lodash","templateSettings","variable","baseLodash","Hash","assocIndexOf","getMapData","pairs","LARGE_ARRAY_SIZE","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","isSymbol","isStrict","isFlattenable","mt","baseFlatten","arrayPush","baseFor","createBaseFor","baseForRight","arrayFilter","castPath","toKey","keysFunc","symbolsFunc","isOwn","unmasked","getRawTag","objectToString","arrays","othLength","othIndex","caches","seen","baseGetTag","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","mapToArray","setToArray","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","isPartial","objProps","objLength","objStacked","othStacked","skipCtor","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsEqual","matchData","noCustomizer","srcValue","COMPARE_PARTIAL_FLAG","isMasked","baseMatchesProperty","baseMatches","isPrototype","getMatchData","matchesStrictComparable","baseIsMatch","isKey","isStrictComparable","hasIn","srcIndex","mergeFunc","safeGet","assignMergeValue","isTyped","isArrayLikeObject","di","Hi","Mf","toPlainObject","baseMergeDeep","baseMerge","iteratees","orders","baseGet","getIteratee","comparer","baseSortBy","baseMap","criteria","objCriteria","othCriteria","ordersLength","compareAscending","compareMultiple","baseSet","baseIndexOfWith","baseUnset","setToString","overRest","arraySample","nested","baseSetData","Eo","baseSetToString","nd","retHighest","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","_r","baseToString","createSet","seenIndex","updater","isDrop","baseSlice","arrayReduce","baseUniq","baseDifference","assignFunc","valsLength","stringToPath","castRest","baseRest","arrayBuffer","typedArray","valIsDefined","valIsReflexive","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","holdersIndex","rightIndex","rightLength","initializer","arrayAggregator","baseAggregator","assigner","sources","isIterateeCall","stringToArray","castSlice","words","deburr","thisBinding","findIndexFunc","flatRest","prereq","thru","getFuncName","isLaziable","plant","partialsRight","holdersRight","argPos","ary","arity","isAry","isBind","isBindKey","WRAP_CURRY_FLAG","isFlip","createCtor","getHolder","holdersCount","countHolders","composeArgs","composeArgsRight","newHolders","replaceHolders","createRecurry","createHybrid","sr","reorder","toIteratee","baseInverter","baseToNumber","arrayFunc","chars","charsLength","baseRepeat","stringSize","toFinite","baseRange","wrapFunc","isCurry","setWrapToString","toInteger","dr","setToPairs","baseToPairs","srcBitmask","newBitmask","WRAP_BIND_FLAG","mergeData","createCurry","createPartial","createBind","customDefaultsMerge","arrLength","arrStacked","arrValue","arraySome","baseGetAllKeys","otherFunc","baseIteratee","isKeyable","baseIsNative","stubArray","hasFunc","isLength","ctorString","isMaskable","stubFalse","otherArgs","oldArray","shortOut","insertWrapDetails","updateWrapDetails","getWrapDetails","lastCalled","stamp","rand","memoize","memoizeCapped","subString","difference","differenceBy","differenceWith","intersection","castArrayLikeObject","baseIntersection","intersectionBy","intersectionWith","pull","pullAll","basePullAll","pullAt","baseAt","basePullAt","unionBy","unionWith","unzip","without","xor","baseXor","xorBy","xorWith","zip","zipWith","unzipWith","interceptor","wrapperAt","countBy","createAggregator","createFind","findLast","findLastIndex","arrayEachRight","invokeMap","baseInvoke","keyBy","partition","baseOrderBy","createWrap","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","maxing","timerExpired","invokeFunc","timeSinceLastCall","shouldInvoke","trailingEdge","timeWaiting","remainingWait","isInvoking","leadingEdge","debounced","baseDelay","resolver","memoized","Cache","overArgs","funcsLength","partial","partialRight","rearg","createRelationalOperation","baseGt","gte","baseIsArguments","baseLt","lte","baseTrim","isBinary","createAssigner","assignIn","assignInWith","assignWith","propsIndex","propsLength","defaultsDeep","mergeWith","hasPath","baseHasIn","createInverter","invertBy","arrayLikeKeys","baseKeys","nativeKeysIn","isProto","baseKeysIn","omit","CLONE_DEEP_FLAG","customOmitClone","basePickBy","basePick","toPairs","createToPairs","toPairsIn","baseValues","createCompounder","capitalize","upperFirst","kebabCase","lowerCase","lowerFirst","createCaseFirst","snakeCase","startCase","upperCase","hasUnicodeWord","unicodeWords","asciiWords","attempt","isError","bindAll","methodNames","flow","createFlow","flowRight","methodOf","baseFunctions","chain","over","createOver","overEvery","arrayEvery","overSome","basePropertyDeep","rangeRight","createMathOperation","augend","addend","createRound","divide","dividend","divisor","multiplicand","minuend","subtrahend","castArray","chunk","conforms","baseConformsTo","baseConforms","curry","curryRight","dropRight","dropRightWhile","baseWhile","dropWhile","toLength","baseFill","baseFilter","flatMapDeep","flatMapDepth","flattenDeep","flattenDepth","flip","fromPairs","functions","functionsIn","mapKeys","mapValues","matchesProperty","negate","nthArg","baseNth","omitBy","pickBy","orderBy","propertyOf","pullAllBy","pullAllWith","rest","sampleSize","arraySampleSize","baseSampleSize","setWith","shuffle","arrayShuffle","baseShuffle","sortedUniq","baseSortedUniq","sortedUniqBy","spread","takeRight","takeRightWhile","takeWhile","throttle","toPath","isArrLike","unary","uniqWith","unset","baseUpdate","castFunction","updateWith","valuesIn","zipObject","baseZipObject","zipObjectDeep","entriesIn","extendWith","cloneDeepWith","cloneWith","conformsTo","defaultTo","baseEvery","findKey","baseFindKey","findLastKey","forEachRight","forIn","forInRight","forOwn","forOwnRight","baseHas","Ht","baseInRange","isBoolean","isEqualWith","isInteger","isMatch","isMatchWith","isNative","isSafeInteger","isWeakMap","isWeakSet","strictLastIndexOf","baseExtremum","maxBy","baseMean","meanBy","minBy","stubObject","stubString","stubTrue","strLength","createPadding","padEnd","radix","baseReduce","arrayReduceRight","repeat","runInContext","sample","baseSample","baseSome","sortedIndex","baseSortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","sumBy","customDefaultsAssignIn","isEscaping","isEvaluating","importsKeys","importsValues","reDelimiters","sourceURL","escapeValue","esTemplateValue","evaluateValue","escapeStringChar","toLower","toSafeInteger","toUpper","charsStartIndex","charsEndIndex","trimEnd","trimStart","omission","newEnd","unescape","uniqueId","eachRight","VERSION","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","getView","iterLength","takeCount","baseWrapperValue","iterIndex","commit","wrapped","cachedGuess","countries","guesses","logError","momentVersion","whole","fractional","charCodeToInt","unpackBase60","indices","untils","arrayToInt","intToUntil","abbrs","mapIndices","population","packedString","unpack","country_name","zone_names","timeString","abbr","offsetScore","abbrScore","OffsetAt","packed","normalizeName","addToGuesses","Zone","aliases","normal0","normal1","_tzm","utc","isMoment","needsOffset","unpacked","_index","zone_name","country_code","offsetNext","offsetPrev","moveAmbiguousForward","moveInvalidForward","mom","ZoneScore","scoreOffsetAt","offsetAt","dataVersion","_zones","_links","_names","_countries","addZone","addLink","country_zones","Country","addCountries","zoneExists","didShowError","guess","ignoreCache","intlName","zoneScore","findChange","userOffsets","offsetsLength","guessesOffset","filteredGuesses","guessesForUserOffsets","zoneScores","sortZoneScores","rebuildGuess","zonesForCountry","country","with_offset","getCountry","_z","defaultZone","keepTime","_isUTC","zoneName","abbrWrap","zoneAbbr","resetZoneWrap","local","resetZoneWrap2","setDefault","momentProperties","defineLocale","monthsShort","weekdaysShort","weekdaysMin","meridiemParse","isPM","meridiem","isLower","longDateFormat","LTS","LL","LLL","LLLL","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","relativeTime","future","past","dd","MM","dayOfMonthOrdinalParse","ordinal","dow","doy","pluralForm","plurals","pluralize","withoutSuffix","isFuture","weekdaysParseExact","postformat","symbolMap","preparse","numberMap","suffixes","forms","plural","isFormat","relativeTimeWithPlural","ww","lastDigit","last2Digits","meridiemHour","monthsShortRegex","monthsParseExact","mutationTable","softMutation","mutation","lastNumber","monthsParse","monthsRegex","minWeekdaysParse","weekdaysParse","fullWeekdaysParse","shortWeekdaysParse","monthsStrictRegex","monthsShortStrictRegex","longMonthsParse","shortMonthsParse","relativeTimeWithMutation","ll","lll","llll","processRelativeTime","monthsNominativeEl","monthsGenitiveEl","momentToFormat","_monthsGenitiveEl","_monthsNominativeEl","calendarEl","_calendarEl","monthsShortDot","numbersPast","numbersFuture","verbalNumber","monthsShortWithDots","monthsShortWithoutDots","weekEndings","eras","since","narrow","eraYearOrdinalRegex","eraYearOrdinalParse","$0","$2","isUpper","eifelerRegelAppliesToNumber","translateSingular","relativeTimeWithSingular","translator","correctGrammaticalCase","wordKey","relativeTimeMr","monthsNominative","monthsSubjective","numbersNouns","numberNoun","hundred","ten","numberAsNoun","hm","nominative","accusative","genitive","processHoursFunction","hookCallback","hasOwnProp","strict","createLocalOrUTC","_pf","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","rfc2822","weekdayMismatch","_isValid","getParsingFlags","parsedParts","isNowValid","invalidWeekday","_strict","bigHour","isFrozen","createUTC","fun","updateInProgress","_isAMomentObject","_l","_locale","copyConfig","Moment","suppressDeprecationWarnings","firstTime","deprecationHandler","deprecations","parentConfig","childConfig","Zt","targetLength","forceSign","absNumber","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","padded","zeroFill","localeData","expandFormat","removeFormattingTokens","makeFormatFunction","replaceLongDateFormatTokens","shorthand","inputObject","normalizedInput","normalizeUnits","priorities","priority","argumentForCoercion","coercedNumber","absFloor","set$1","isLeapYear","toInt","daysInMonth","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchWord","strictRegex","regexEscape","p3","p4","unescapeFormat","addParseToken","_w","modMonth","addFormatToken","addUnitAlias","addUnitPriority","addRegexToken","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","monthName","llc","_monthsParse","_longMonthsParse","_shortMonthsParse","dayOfMonth","shortPieces","longPieces","mixedPieces","cmpLenRev","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","parseTwoDigitYear","getSetYear","makeGetSet","fwd","createUTCDate","resYear","resDayOfYear","dayOfYear","firstWeekOffset","daysInYear","ai","resWeek","weekOffset","weeksInYear","weekOffsetNext","addWeekParseToken","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","minp","shortp","longp","minPieces","_weekdaysRegex","_weekdaysShortRegex","_weekdaysMinRegex","_weekdaysStrictRegex","_weekdaysShortStrictRegex","_weekdaysMinStrictRegex","lowercase","_meridiemParse","hFormat","matchMeridiem","kInput","_isPm","_meridiem","pos1","pos2","getSetHour","globalLocale","localeFamilies","minl","oldLocale","_abbr","aliasedRequire","getSetGlobalLocale","deprecateSimple","parentLocale","loadLocale","Locale","mergeConfigs","normalizeLocale","commonPrefix","chooseLocale","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","allowTime","timeFormat","tzFormat","configFromStringAndFormat","yearStr","parsedArray","preprocessRFC2822","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","extractFromRFC2822Strings","weekdayStr","parsedInput","checkWeekday","obsOffset","militaryOffset","numOffset","currentDate","expectedWeekday","yearToUse","nowValue","_useUTC","currentDateArray","weekYear","weekdayOverflow","curWeek","GG","weekOfYear","createLocal","_week","dayOfYearFromWeeks","_dayOfYear","dayOfYearFromWeekInfo","_nextDay","createDate","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","getParseRegexForToken","addTimeToArrayFromToken","isPm","meridiemFixWrap","erasConvertYear","configFromArray","checkOverflow","configFromRFC2822","configFromISO","createInvalid","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configFromStringAndArray","createFromInputFallback","configFromString","normalizeObjectUnits","configFromObject","configFromInput","isUTC","isObjectEmpty","prepareConfig","createFromConfig","deprecate","prototypeMin","prototypeMax","moments","ordering","quarters","quarter","isoWeek","unitHasDecimal","isDurationValid","_milliseconds","_days","_months","_bubble","Duration","offsetFromString","chunkOffset","aspNetRegex","isoRegex","diffRes","isDuration","absRound","parseIso","cloneWithOffset","positiveMomentsDifference","momentsDifference","inp","isAfter","addSubtract","createDuration","isAdding","createAdder","arrayTest","dataTypeTest","isNumberOrStringArray","objectTest","propertyTest","isMomentInputObject","monthDiff","wholeMonthDiff","newLocaleData","defaultFormat","defaultFormatUtc","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","erasAbbrRegex","abbrPieces","namePieces","narrowPieces","_erasRegex","_erasNameRegex","_erasAbbrRegex","_erasNarrowRegex","weeksTarget","setWeekAll","dayOfYearData","matchEraAbbr","erasNameRegex","erasNarrowRegex","erasParse","_eraYearOrdinalRegex","isoWeekYear","addWeekYearFormatToken","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","getSetDayOfMonth","getSetMinute","getSetMillisecond","getSetSecond","parseMs","Sn","isCalendarSpec","sod","startOf","calendarFormat","zoneDelta","endOf","startOfDate","utcStartOfDate","localStartOfDate","isoWeekday","mod$1","inputString","isUtc","formatMoment","toNow","invalidAt","localInput","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","parsingFlags","prioritized","unitsObj","getPrioritizedUnits","toObject","keepOffset","unix","creationData","eraName","eraNarrow","eraAbbr","eraYear","getSetWeekYearHelper","getSetMonth","isoWeeks","weekInfo","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","parseWeekday","parseIsoWeekday","keepLocalTime","keepMinutes","localAdjust","getDateOffset","_changeInProgress","parseZone","tZone","hasAlignedHourOffset","isDST","isUtcOffset","isDSTShifted","_isDSTShifted","dontConvert","lengthDiff","diffs","compareArrays","proto$1","get$1","localeSorted","_calendar","_longDateFormat","formatUpper","tok","_invalidDate","_ordinal","preParsePostFormat","_relativeTime","pastFuture","_eras","computeErasParse","_monthsShort","_monthsParseExact","handleStrictParse","computeMonthsParse","firstDayOfYear","_weekdays","shiftWeekdays","_weekdaysMin","_weekdaysShort","_weekdaysParseExact","handleStrictParse$1","_fullWeekdaysParse","computeWeekdaysParse","langData","mathAbs","as","makeAs","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","makeGetter","thresholds","abs$1","totalSign","ymSign","daysSign","hmsSign","proto$2","addSubtract$1","daysToMonths","monthsToDays","monthsFromDays","absCeil","argWithSuffix","argThresholds","withSuffix","posNegDuration","substituteTimeAgo","relativeTime$1","toISOString$1","toIsoString","setHookCallback","listMonthsImpl","listWeekdaysImpl","tmpLocale","relativeTimeRounding","roundingFunction","relativeTimeThreshold","myMoment","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","DATE","TIME","TIME_SECONDS","TIME_MS","Op","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","innerFn","outerFn","tryLocsList","Generator","_invoke","GenStateSuspendedStart","GenStateExecuting","GenStateCompleted","doneResult","delegateResult","maybeInvokeDelegate","ContinueSentinel","_sent","dispatchException","abrupt","record","tryCatch","GenStateSuspendedYield","makeInvokeMethod","IteratorPrototype","NativeIteratorPrototype","Gp","GeneratorFunctionPrototype","PromiseImpl","__await","previousPromise","callInvokeWithMethodAndArg","resultName","nextLoc","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","completion","pushTryEntry","iteratorMethod","GeneratorFunction","isGeneratorFunction","genFun","ctor","awrap","defineIteratorMethods","AsyncIterator","iter","skipTempReset","resetTryEntry","rootRecord","rval","exception","caught","hasCatch","hasFinally","finallyEntry","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","globalThis","_value","hasError","thrownError","_throwIfClosed","_subscribe","observable","observerOrNext","Subscriber","isObserver","isSubscription","isSubscriber","SafeSubscriber","errorContext","_trySubscribe","sink","promiseCtor","getPromiseCtor","Symbol_observable","pipeFromArray","ObjectUnsubscribedError","createErrorClass","currentObservers","isStopped","AnonymousSubject","_checkFinalizedStatuses","_innerSubscribe","EMPTY_SUBSCRIPTION","arrRemove","COMPLETE_NOTIFICATION","createNotification","EMPTY_OBSERVER","handleStoppedNotification","nextNotification","_next","errorNotification","_error","_complete","_bind","ConsumerObserver","partialObserver","handleUnhandledError","captureError","reportUnhandledError","notification","onStoppedNotification","timeoutProvider","UnsubscriptionError","initialTeardown","_parentage","_finalizers","initialFinalizer","finalizer","execFinalizer","_hasParent","_addParent","_removeParent","onUnhandledError","useDeprecatedSynchronousErrorHandling","useDeprecatedNextContext","scheduler","popScheduler","resultSelector","popResultSelector","argsArgArrayOrObject","observables","combineLatestInit","createObject","mapOneOrManyArgs","valueTransform","maybeSchedule","remainingFirstValues","hasFirstValue","executeSchedule","mergeAll","concatAll","observableFactory","remainingCompletions","remainingEmissions","isInteropObservable","subscribeOn","observeOn","scheduleObservable","scheduleArray","schedulePromise","isAsyncIterable","scheduleAsyncIterable","isIterable","Symbol_iterator","scheduleIterable","isReadableStreamLike","readableStreamLikeToAsyncGenerator","scheduleReadableStreamLike","createInvalidObservableTypeError","nodeEventEmitterMethods","eventTargetMethods","jqueryMethods","isEventTarget","isNodeStyleEventEmitter","toCommonHandlerRegistry","isJQueryStyleEventEmitter","subTarget","obs","fromInteropObservable","fromArrayLike","fromPromise","fromAsyncIterable","fromIterable","readableStream","fromReadableStreamLike","asyncIterable","asyncIterable_1","asyncIterable_1_1","__asyncValues","concurrent","popNumber","errorOrErrorFactory","errorFactory","dueTime","intervalOrScheduler","asyncScheduler","intervalDuration","isScheduler","due","onNext","onFinalize","OperatorSubscriber","shouldUnsubscribe","isComplete","endDuration","cleanupDuration","audit","handledResult","innerSub","syncUnsub","activeTask","lastTime","targetTime","emitWhenIdle","delayDurationSelector","subscriptionDelay","ignoreElements","delayWhen","mapTo","keySelector","defaultCompare","previousKey","currentKey","onBeforeNext","innerSubScheduler","additionalFinalizer","checkComplete","outerNext","doInnerSub","innerComplete","innerValue","bufferedValue","mergeInternals","resetOnError","resetOnComplete","resetOnRefCountZero","wrapperSource","resetConnection","refCount","hasCompleted","hasErrored","cancelReset","resetAndUnsubscribe","conn","handleReset","innerSubscriber","innerIndex","outerIndex","notifier","tapObserver","isUnsub","Action","work","intervalProvider","AsyncAction","recycleAsyncId","requestAsyncId","_scheduler","_execute","errorValue","errored","Scheduler","schedulerActionCtor","dateTimestampProvider","AsyncScheduler","SchedulerAction","_active","_scheduled","animationFrameProvider","AnimationFrameAction","AnimationFrameScheduler","flushId","animationFrameScheduler","resolved","nextHandle","activeHandles","setImmediate","findAndClearHandle","clearImmediate","immediateProvider","AsapAction","AsapScheduler","asapScheduler","getSymbolIterator","isPOJO","createImpl","ctorFunc","errorThrown","parentSubscription","scheduleSubscription","__asyncGenerator","reader","getReader","read","releaseLock","readableStreamLikeToAsyncGenerator_1","lift","hasLift","liftedSource","callOrApply","OriginalDate","Timemachine","tickStartDate","_apply","_getDifference","_dataLength","_bufferLength","Int32Array","_buffer","_buffer8","_buffer32","hashStr","onePassHasher","appendStr","hashAsciiStr","appendAsciiStr","_hex","hc","hexChars","ho","hexOut","_md5cycle","stateIdentity","buf8","buf32","bufLen","appendByteArray","buflen","buf","dataBitsLen","buffer32Identity","subarray","yt","stateChangeExpr","_onStart","triggerMicrotask","scheduleMicroTask","AnimationGroupPlayer","_players","doneCount","destroyCount","startCount","_onDestroy","timeAtPosition","longestPlayer","longestSoFar","_DOM","adapter","DomAdapter","PlatformLocation","relativePosition","ɵɵinject","BrowserPlatformLocation","useBrowserPlatformLocation","LOCATION_INITIALIZED","_doc","Mn","_init","_history","getDOM","getBaseHref","getGlobalEventTarget","supportsState","replaceState","back","go","createBrowserPlatformLocation","slashes","pathEndIdx","LocationStrategy","platformLocation","PathLocationStrategy","provideLocationStrategy","APP_BASE_HREF","_platformLocation","_removeListenerFns","getBaseHrefFromDOM","_baseHref","onPopState","onHashChange","internal","joinWithSlash","includeHash","normalizeQueryParams","externalUrl","prepareExternalUrl","historyGo","HashLocationStrategy","platformStrategy","_subject","_urlChangeListeners","_platformStrategy","browserBaseHref","stripTrailingSlash","_stripIndexHtml","ev","baseHref","_stripBaseHref","_notifyUrlChangeListeners","_urlChangeSubscription","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","EUR","FJD","FKP","GBP","GEL","GHS","GIP","GNF","GTQ","GYD","HKD","HNL","HRK","HUF","IDR","ILS","INR","IQD","IRR","ISK","ITL","JMD","JOD","JPY","KHR","KMF","KPW","KRW","KWD","KYD","KZT","LAK","LBP","LKR","LRD","LTL","LUF","LVL","LYD","MGA","MGF","MMK","MNT","MRO","MUR","MXN","MYR","NAD","NGN","NIO","NOK","NPR","NZD","OMR","PHP","PKR","PLN","PYG","RON","RSD","RUB","RUR","RWF","SBD","SEK","SGD","SHP","SLL","SOS","SRD","SSP","STD","STN","SYP","THB","TMM","TND","TOP","TRL","TRY","TTD","TWD","TZS","UAH","UGX","USD","UYI","UYU","UYW","UZS","VEF","VND","VUV","XAF","XCD","XOF","XPF","XXX","YER","ZAR","ZMK","ZMW","ZWD","NumberFormatStyle","Decimal","Percent","Currency","Scientific","Standalone","Narrow","Abbreviated","Wide","Short","FormatWidth","Medium","Long","Full","List","PercentSign","PlusSign","MinusSign","Exponential","SuperscriptingExponent","PerMille","TimeSeparator","CurrencyDecimal","CurrencyGroup","formStyle","ɵfindLocaleData","getLastDefinedValue","ɵLocaleDataIndex","getLocaleCurrencies","symbolNarrow","ISO8601_DATE_REGEX","NAMED_FORMATS","DATE_FORMATS_SPLIT","ZoneWidth","ShortGMT","Extended","DateType","FullYear","Month","Hours","Minutes","Seconds","FractionalSeconds","Day","TranslationType","DayPeriods","Days","Months","Eras","parsedNb","tzHour","tzMin","dateSetter","timeSetter","isoStringToDate","getNamedFormat","dateTimezoneOffset","timezoneToOffset","reverseValue","addDateMinutes","convertTimezoneToLocal","dateFormatter","DATE_FORMATS","dateStrGetter","dateGetter","weekNumberingYearGetter","weekGetter","timeZoneGetter","getDateFormatter","localeId","getLocaleId","getLocaleDateFormat","getLocaleTimeFormat","shortTime","shortDate","formatDateTime","getLocaleDateTimeFormat","mediumTime","mediumDate","longTime","longDate","fullTime","fullDate","opt_values","digits","minusSign","negWrap","neg","strNum","padNumber","getDatePart","formatFractionalSeconds","localeMinus","extended","getDateTranslation","currentHours","currentMinutes","checkFullData","extractTime","getLocaleExtraDayPeriodRules","dayPeriods","getLocaleExtraDayPeriods","Oa","afterFrom","beforeTo","amPm","getLocaleDayPeriods","getLocaleEraNames","THURSDAY","monthBased","nbDaysBefore1stDayOfMonth","thisThurs","getThursdayThisWeek","firstThurs","getFirstThursdayOfYear","requestedTimezoneOffset","NUMBER_FORMAT_REGEXP","ZERO_CHAR","groupSymbol","decimalSymbol","formattedText","isZero","parseNumber","toPercent","minInt","minFraction","minFrac","maxFraction","maxFrac","minIntPart","minFractionPart","maxFractionPart","parseIntAutoRadix","roundNumber","integerLen","decimals","lgSize","gSize","negPre","negSuf","posPre","posSuf","parseNumberFormat","getLocaleNumberFormat","getNumberOfCurrencyDigits","formatNumberToLocaleString","patternParts","positive","positiveParts","fraction","trunkLen","fractionLen","zeros","numStr","MAX_DIGITS","fractionSize","roundAt","digit","dropTrailingZeros","minLen","carry","extraData","ɵregisterLocaleData","cookieStr","cookie","Ke","eqIndex","br","cookieValue","NgClass","_iterableDiffers","_keyValueDiffers","_ngEl","_iterableDiffer","_keyValueDiffer","_initialClasses","_rawClass","_removeClasses","_applyClasses","ɵisListLikeIterable","iterableChanges","_applyIterableChanges","keyValueChanges","_applyKeyValueChanges","forEachAddedItem","_toggleClass","forEachChangedItem","forEachRemovedItem","ɵstringify","rawClassVal","klass","NgForOfContext","ngForOf","NgForOf","_viewContainer","_template","_differs","_ngForOf","_ngForOfDirty","_differ","_trackByFn","ngForTrackBy","_applyChanges","viewContainer","forEachOperation","adjustedPreviousIndex","previousIndex","createEmbeddedView","applyViewChange","ilen","forEachIdentityChange","NgIf","templateRef","NgIfContext","_thenTemplateRef","_elseTemplateRef","_thenViewRef","_elseViewRef","ngIf","_updateView","assertTemplate","SwitchView","_viewContainerRef","_templateRef","_created","NgSwitch","_defaultUsed","_caseCount","_lastCaseCheckIndex","_lastCasesMatched","_ngSwitch","_updateDefaultCases","_defaultViews","enforceState","NgSwitchCase","ngSwitch","_addCase","_view","_matchCase","ngSwitchCase","NgStyle","_ngStyle","nameAndUnit","_setStyle","NgTemplateOutlet","_viewRef","ngTemplateOutletContext","ngTemplateOutlet","SubscribableStrategy","updateLatestValue","_promiseStrategy","PromiseStrategy","_subscribableStrategy","AsyncPipe","_ref","_latestValue","_subscription","_obj","_strategy","_dispose","_selectStrategy","createSubscription","_updateLatestValue","ɵisPromise","ɵisSubscribable","invalidPipeArgumentError","LowerCasePipe","UpperCasePipe","DATE_PIPE_DEFAULT_TIMEZONE","DatePipe","defaultTimezone","LOCALE_ID","KeyValuePipe","differs","compareFn","differ","differChanges","compareFnChanged","makeKeyValuePair","keyValueA","keyValueB","aString","bString","SlicePipe","PLATFORM_BROWSER_ID","ViewportScroller","BrowserViewportScroller","supportsScrolling","elSelected","documentResult","createTreeWalker","createShadowRoot","attachShadow","treeWalker","NodeFilter","SHOW_ELEMENT","shadowRoot","findAnchorFromDocument","scrollToElement","scrollRestoration","supportScrollRestoration","scrollRestorationDescriptor","getScrollRestorationProperty","XhrFactory","HttpHandler","HttpBackend","HttpHeaders","normalizedNames","lazyUpdate","lazyInit","maybeSetNormalizedName","lcName","copyFrom","applyUpdate","toDelete","existing","HttpUrlEncodingCodec","standardEncoding","rawParams","codec","eqIdx","Ye","decodeKey","decodeValue","STANDARD_ENCODING_REGEX","STANDARD_ENCODING_REPLACEMENTS","HttpParams","updates","cloneFrom","fromObject","paramParser","dn","eKey","encodeKey","encodeValue","valueToString","HttpContext","FormData","HttpRequest","fourth","reportProgress","urlWithParams","qIdx","isBlob","isFormData","URLSearchParams","isUrlSearchParams","setHeaders","HttpEventType","Sent","UploadProgress","ResponseHeader","DownloadProgress","Response","HttpResponseBase","defaultStatus","defaultStatusText","HttpHeaderResponse","HttpErrorResponse","Oe","events$","concatMap","res$","callbackParam","addBody","HttpInterceptorHandler","NoopInterceptor","XSSI_PREFIX","HttpXhrBackend","xhrFactory","detectedType","detectContentTypeHeader","reqBody","serializeBody","headerResponse","partialFromXhr","responseURL","getResponseUrl","onLoad","Yr","originalBody","vo","sentHeaders","onDownProgress","progressEvent","lengthComputable","partialText","onUpProgress","upload","DONE","XSRF_COOKIE_NAME","XSRF_HEADER_NAME","HttpXsrfTokenExtractor","HttpXsrfCookieExtractor","cookieName","lastCookieString","lastToken","parseCount","cookieString","ɵparseCookieValue","HttpXsrfInterceptor","tokenService","lcUrl","getToken","HttpInterceptingHandler","backend","interceptors","HttpClientXsrfModule","withOptions","objWithPropertyToExtract","getClosureSafeProperty","overriddenName","newLineIndex","__forward_ref__","forwardRefFn","isForwardRef","RuntimeError","bt","fullCode","formatRuntimeError","renderStringify","injectorName","injectorDetails","stringifyForError","actual","comparison","getOwnDefinition","NG_PROV_DEF","NG_INJECTABLE_DEF","NG_INJ_DEF","NG_INJECTOR_DEF","_injectImplementation","ngInjectorDef","InjectFlags","Host","Self","SkipSelf","impl","notFoundValue","injectableDef","getInjectableDef","throwProviderNotFoundError","ChangeDetectionStrategy","OnPush","ViewEncapsulation$1","Emulated","ShadowDom","__globalThis","__window","__self","WorkerGlobalScope","__global","_global","EMPTY_OBJ","EMPTY_ARRAY","NG_COMP_DEF","NG_DIR_DEF","NG_PIPE_DEF","NG_MOD_DEF","NG_FACTORY_DEF","NG_ELEMENT_ID","__NG_ELEMENT_ID__","_renderCompCount","componentDefinition","noSideEffects","declaredInputs","providersResolver","ngContentSelectors","onPush","directiveDefs","pipeDefs","tView","directiveTypes","pipeTypes","invertObject","extractDirectiveDef","extractPipeDef","getComponentDef","getDirectiveDef","getPipeDef$1","autoRegisterModuleById","declarations","transitiveCompileScopes","ngModuleDef","getNgModuleDef","secondary","newLookup","minifiedKey","publicName","declaredName","ɵɵdefineDirective","ɵɵdefineComponent","pipeDef","ngOnDestroy","throwNotFound","tNode","SimpleChange","firstChange","NgOnChangesFeatureImpl","ngOnChanges","ngOnChangesSetInput","rememberChangeHistoryAndInvokeOnChangesHook","simpleChangesStore","getSimpleChangesStore","privateName","SIMPLE_CHANGES_STORE","setSimpleChangesStore","previousChange","ɵɵNgOnChangesFeature","ngInherit","domRendererFactory3","rendererType","lView","unwrapRNode","hostView","slotValue","isLView","lContainer","viewOrContainer","instructionState","lFrame","createLFrame","bindingsEnabled","isInCheckNoChangesMode","viewToRestore","contextLView","currentTNode","getCurrentTNodePlaceholderOk","bindingRootIndex","bindingStartIndex","bindingIndex","isInI18nBlock","inI18n","currentDirectiveIndex","setCurrentDirectiveIndex","declTNode","parentTNode","parentLView","getDeclarationTNode","allocLFrame","newView","newLFrame","currentLFrame","childLFrame","elementDepthCount","currentNamespace","oldLFrame","leaveDI","leaveViewLight","nestingLevel","currentView","walkUpViews","getTNode","directiveStart","directiveEnd","lifecycleHooks","ngAfterContentInit","ngAfterContentChecked","ngAfterViewInit","ngAfterViewChecked","contentHooks","contentCheckHooks","viewHooks","viewCheckHooks","destroyHooks","callHooks","initPhase","currentNodeIndex","nodeIndexLimit","lastNodeIndexFound","callHook","isInitHook","directive","NodeInjectorFactory","isViewProvider","injectImplementation","resolving","canSeeViewProviders","injectImpl","native","isProc","isProceduralRenderer","attrName","attrVal","isAnimationProp","dst","srcMarker","mergeHostAttribute","markerInsertPosition","dstValue","parentLocation","startView","viewOffset","getParentInjectorViewOffset","parentView","includeViewProviders","nextNgElementId","existingInjectorIndex","getInjectorIndex","firstCreatePass","injectorIndex","insertBloom","blueprint","parentLoc","getParentInjectorLocation","hasParentInjector","parentIndex","getParentInjectorIndex","getParentInjectorView","parentData","declarationViewOffset","lViewCursor","tViewType","Ft","bloomHash","BLOOM_SIZE","bloomAdd","moduleInjector","previousInjectImplementation","setInjectImplementation","injectRootLimpMode","notFoundValueOrThrow","bloomHashBitOrFactory","enterDI","lookupTokenUsingModuleInjector","previousTView","hostTElementNode","shouldSearchParent","bloomHasToken","searchTokensOnInjector","NOT_FOUND","NodeInjector","getCurrentTNode","getLView","currentTView","injectableIdx","locateDirectiveOrProvider","isComponentHost","getNodeInjectable","canAccessViewProviders","isHostSpecialCase","nodeProviderIndexes","providerIndexes","tInjectables","injectablesStart","directivesStart","cptViewProvidersCount","providerTokenOrDef","dirDef","isComponentDef","tData","isFactory","depPath","throwCyclicDependencyError","previousIncludeViewProviders","setIncludeViewProviders","directiveIndex","directiveDef","ngDoCheck","wrappedOnChanges","preOrderHooks","preOrderCheckHooks","registerPreOrderHooks","tokenId","createNodeInjector","injectorView","isFirstHostTNode","_tNode","_lView","getOrCreateInjectable","ownConstructor","ownFactory","getFactoryOf","objectPrototype","resolveForwardRef","getFactoryDef","attrNameToInject","attrsLength","isNameOnlyAttributeMarker","injectAttributeImpl","PARAMETERS","PROP_METADATA","propName","parentClass","metaCtor","makeMetadataCtor","Jt","ParamDecoratorFactory","annotationInstance","ParamDecorator","annotation","unusedKey","ngMetadataName","annotationCls","additionalProcessing","PropDecoratorFactory","decoratorInstance","PropDecorator","_desc","makePropDecorator","isViewQuery","emitDistinctChangesOnly","Query","deepForEach","keyValueArray","keyValueArrayIndexOf","arrayInsert2","_arrayIndexOfSorted","THROW_IF_NOT_FOUND","DI_DECORATOR_FLAG","NG_TEMP_TOKEN_PATH","NEW_LINE","SOURCE","USE_VALUE$1","_currentInjector","former","getInjectImplementation","injectInjectorOnly","getInjectFlag","injectorErrorName","tokenPath","formatError","NG_TOKEN_PATH","policy$1","policy","Inject","attachInjectFlag","makeParamDecorator","trustedTypes","createPolicy","createHTML","createScript","createScriptURL","getPolicy$1","getPolicy","SafeValueImpl","changingThisBreaksApplicationSecurity","SafeHtmlImpl","SafeStyleImpl","SafeScriptImpl","SafeUrlImpl","SafeResourceUrlImpl","actualType","getSanitizationBypassType","getTypeName","trustedHtml","trustedStyle","trustedScript","trustedUrl","trustedResourceUrl","defaultDoc","inertDocumentHelper","InertDocumentHelper","trustedHTMLFromString","isDOMParserAvailable","DOMParserHelper","getInertBodyElement","inertDocument","inertHtml","inertBodyElement","templateEl","inertBody","stripCustomNsAttrs","elAttrs","ELEMENT_NODE","SAFE_URL_PATTERN","DATA_URL_PATTERN","srcset","_sanitizeUrl","rt","inertBodyHelper","VOID_ELEMENTS","tagSet","OPTIONAL_END_TAG_BLOCK_ELEMENTS","OPTIONAL_END_TAG_INLINE_ELEMENTS","OPTIONAL_END_TAG_ELEMENTS","VALID_ELEMENTS","URI_ATTRS","SRCSET_ATTRS","VALID_ATTRS","SKIP_TRAVERSING_CONTENT_IF_INVALID_ELEMENTS","SanitizingHtmlSerializer","sanitizedSomething","traverseContent","startElement","TEXT_NODE","endElement","checkClobberedElement","elAttr","sanitizeSrcset","encodeEntities","DOCUMENT_POSITION_CONTAINED_BY","outerHTML","SURROGATE_PAIR_REGEXP","NON_ALPHANUMERIC_REGEXP","unsafeHtmlInput","getInertBodyHelper","unsafeHtml","mXSSAttempts","parsedHtml","sanitizeChildren","getTemplateContent","safeHtml","isTemplateElement","SecurityContext","NONE","HTML","STYLE","SCRIPT","RESOURCE_URL","getSanitizer","trustedHTMLFromStringBypass","sanitize","allowSanitizationBypassAndThrow","unwrapSafeValue","_sanitizeHtml","unsafeUrl","MONKEY_PATCH_KEY_NAME","readPatchedData","ERROR_ORIGINAL_ERROR","ErrorHandler","_console","originalError","_findOriginalError","errorLogger","ERROR_LOGGER","defaultErrorLogger","getErrorLogger","getOriginalError","COMMENT_DISALLOWED","COMMENT_DELIMITER","defaultScheduler","_icuContainerIterate","RendererStyleFlags2","Important","DashCase","tIcuContainerNode","isLContainer","getNearestLContainer","lNodeToHandle","beforeNode","isComponent","rNode","nativeAppendChild","nativeInsertBefore","nativeRemoveNode","parentRElement","applyToElementOrContainer","applyView","applyContainer","escapeCommentText","namespaceUri","getNamespaceUri","declarationContainer","movedViews","declarationViewIndex","insertionLContainer","updateTransplantedViewCount","removeIndex","indexInContainer","viewToDetach","declarationLContainer","detachMovedView","removedLView","removeViewFromContainer","lQueries","detachView","rootView","lViewOrLContainer","cleanUpView","firstView","destroyViewTree","toCall","callContext","executeOnDestroys","tCleanup","cleanup","lCleanup","lastLCleanupIndex","idxOrTargetGetter","useCaptureOrSubIdx","instanceCleanupFn","processCleanups","getClosestRElement","getNativeByTNode","_getInsertInFrontOfRNodeWithI18n","_processI18nInsertBefore","getInsertInFrontOfRNodeWithNoI18n","getInsertInFrontOfRNodeWithI18n","processI18nInsertBefore","childRNode","childTNode","parentRNode","getParentRElement","anchorNode","getInsertInFrontOfRNode","nativeAppendOrInsertBefore","tNodeType","getBeforeNodeForView","elIcuContainerChild","getFirstNativeNode","rNodeOrLContainer","icuContainerIterate","nextRNode","projectionNodes","getProjectionNodes","getLViewParent","viewIndexInContainer","nextViewIndex","firstTNodeOfView","nativeParent","nativeParentNode","nativeRemoveChild","isProjection","rawSlotValue","attachPatchData","applyNodes","applyProjectionRecursive","projectionNext","tProjectionNode","componentLView","nodeToProjectOrRNodes","classToSearch","startingIndex","foundIndex","NG_TEMPLATE_SELECTOR","cssClassToMatch","isProjectionMode","classIndexOf","currentSelector","nodeAttrs","nameOnlyMarkerIdx","getNameOnlyMarkerIndex","skipToNextSelector","hasTagAndTypeMatch","isPositive","selectorAttrValue","isCssClassMatching","attrIndexInNode","findAttrIndexInNode","isInlineTemplate","nodeAttrValue","compareAgainstClassName","bindingsMode","maybeAttrName","matchTemplateAttribute","isNodeMatchingSelector","selectorListLoop","currentSelectorInList","isNegativeMode","currentChunk","valueOrMarker","attrValue","maybeWrapInNotSelector","NO_CHANGE","selectIndexInternal","getTView","getSelectedIndex","checkNoChangesMode","executeCheckHooks","executeInitAndCheckHooks","setSelectedIndex","tStylingRange","directiveDefIdx","setCurrentQueryIndex","tHostNode","rendererFactory","resetPreOrderHookFlags","createTNodeAtIndex","getCurrentParentTNode","setCurrentTNode","isCurrentTNodeParent","tParent","insertBeforeIndex","directiveStylingLast","propertyBindings","mergedAttrs","localNames","initialInputs","tViews","stylesWithoutHost","residualStyles","classesWithoutHost","residualClasses","classBindings","styleBindings","createTNode","numSlotsToAlloc","allocIdx","enterView","executeViewQueryFn","templateFn","executeTemplate","staticContentQueries","refreshContentQueries","staticViewQueries","hostLView","renderComponent$1","renderChildComponents","incompleteFirstPass","leaveView","isInCheckNoChangesPass","setBindingIndex","hooksInitPhaseCompleted","incrementInitPhaseFlags","getFirstLContainer","getNextLContainer","movedLView","markTransplantedViewsForRefresh","embeddedLView","embeddedTView","viewAttachedToChangeDetector","refreshView","refreshEmbeddedViews","hostBindingOpCodes","opCode","directiveIdx","bindingRootIndx","hostBindingFn","setBindingRootForHostBindings","processHostBindingOpCodes","refreshChildComponents","firstUpdatePass","normalExecutionPath","creationModeIsActive","isCreationMode","renderView","prevSelectedIndex","isUpdatePhase","isContentQueryHost","getBindingsEnabled","getOrCreateNodeInjectorForNode","addComponentLogic","setInputsFromAttrs","getComponentLViewByIndex","instantiateAllDirectives","elementIndex","getCurrentDirectiveIndex","invokeHostBindingsInCreationMode","invokeDirectivesHostBindings","viewData","localRefExtractor","localIndex","createTView","constsOrFactory","initialViewLength","createViewBlueprint","queries","expandoStartIndex","directiveRegistry","pipeRegistry","cleanupFn","getOrCreateLViewCleanup","getOrCreateTViewCleanup","inputAliasMap","propStore","internalName","nativeOnly","dataValue","inputData","setInputsForProperty","viewIndex","childComponentLView","markDirtyIfOnPush","mapPropName","hasDirectives","isNodeMatchingSelectorList","diPublicInInjector","markAsComponentHost","findDirectiveDefMatches","exportsMap","initTNodeFlags","preOrderHooksFound","preOrderCheckHooksFound","allocExpando","mergeHostAttrs","configureViewWithDirective","saveNameToExportMap","lifeCycleHooks","tViewData","tNodeAttrs","inputsFromAttrs","inputsStore","outputsStore","directiveInputs","generateInitialInputs","generatePropertyAliases","initializeInputAndOutputAliases","ngDevMode","cacheMatchingLocalNames","directiveVarsIdx","elementIndx","lastSelectedElementIdx","hostTNode","numberOfDirectives","directiveFactory","nodeInjectorFactory","registerHostBindingOpCodes","getOrCreateTComponentView","componentView","addToViewTree","createLView","initialInputData","inputsToStore","hostNative","componentHostIdx","refreshContainsDirtyView","componentTView","syncViewWithBlueprint","isRootView","handleError","rootContext","rootComponent","readPatchedLView","renderComponentOrTemplate","tickRootContext","viewQueryFn","CLEAN_PROMISE","errorHandler","getNativeByIndex","updateTextNode","writeToHost","concatStringsWithSpace","INJECTOR","NullInjector","INJECTOR_SCOPE","NOT_YET","CIRCULAR","NULL_INJECTOR$1","defType","additionalProviders","createInjectorWithoutInjectorInstances","_resolveInjectorDefTypes","R3Injector","getNullInjector","records","injectorDefTypes","dedupStack","processProvider","provider","processInjectorType","injectorDef","makeRecord","assertNotDestroyed","service","previousInjector","setCurrentInjector","couldBeInjectableType","injectableDefInScope","injectableDefOrInjectorDefFactory","hydrate","nextInjector","catchInjectorError","defOrWrappedDef","getInjectorDef","isDuplicate","importTypesWithProviders","imported","Kn","defProviders","injectorType","ngModuleType","isTypeProvider","isValueProvider","providerToFactory","providerToRecord","multiRecord","injectArgs","hasOnDestroy","paramLength","newArray","inheritedInjectableDef","typeName","getInheritedInjectableDef","getUndecoratedInjectableFactory","unwrappedProvider","isFactoryProvider","isExistingProvider","classRef","hasDeps","Injector","createInjector","registerPostOrderHooks","superType","getSuperType","shouldInheritFields","inheritanceChain","superDef","writeableDef","maybeUnwrapEmpty","superHostBindings","inheritHostBindings","superViewQuery","superContentQueries","inheritViewQuery","inheritContentQueries","fillProperties","defData","ɵɵInheritDefinitionFeature","mergeHostAttrsAcrossInheritance","prevViewQuery","prevContentQueries","prevHostBindings","_symbolIterator","isJsObject","exp1","exp2","different","bindingUpdated","exp3","bindingUpdated2","exp4","nextBindingIndex","setElementAttribute","elementAttributeInternal","getSelectedTNode","ɵɵattribute","v0","v1","getBindingIndex","incrementBindingIndex","v2","bindingUpdated3","attrsIndex","localRefsIndex","adjustedIndex","tViewConsts","getOrCreateTNode","getConstant","resolveDirectives","templateFirstCreatePass","createLContainer","isDirectiveHost","createDirectivesInstances","saveResolvedLocalsInData","getContextLView","elementPropertyInternal","ɵɵproperty","isClassBased","createElementNode","getNamespace$1","computeStaticStyling","elementStart","elementStartFirstCreatePass","setUpAttributes","writeDirectClass","writeDirectStyle","getElementDepthCount","increaseElementDepthCount","executeContentQueries","ɵɵelementStart","setCurrentTNodeAsNotParent","decreaseElementDepthCount","elementEnd","hasClassInput","setDirectiveInputsWhichShadowsStyling","hasStyleInput","ɵɵelementEnd","ɵɵelement","elementContainerStartFirstCreatePass","ɵɵelementContainerStart","ɵɵelementContainerEnd","ɵɵelementContainer","isObservable","isSubscribable","listenerFn","eventTargetResolver","listenerInternal","isTNodeDirectiveHost","processOutputs","lCleanupIndex","existingListener","tNodeIdx","cleanupEventName","listenerIdxInLCleanup","findExistingListener","__ngLastListenerFn__","__ngNextListenerFn__","wrapListener","ɵɵlistener","profiler","wrapWithPreventDefault","markViewDirty","executeListenerWithErrorHandling","nextListenerFn","wrapListenerIn_markDirtyAndPreventDefault","nextContextImpl","projectionSlots","wildcardNgContentIndex","ngProjectAsAttrVal","ngProjectAsAttrIdx","getProjectAsAttrValue","isSelectorInSelectorList","componentNode","projectionHeads","tails","componentChild","slotIndex","matchingProjectionSlotIndex","selectorIndex","applyProjection","ɵɵpropertyInterpolate1","ɵɵpropertyInterpolate","interpolatedValue","interpolation1","interpolation2","ɵɵpropertyInterpolate2","interpolation3","ɵɵpropertyInterpolate3","tStylingKey","isPrevDir","isClassBinding","tStylingAtIndex","getTStylingRangePrev","getTStylingRangeNext","foundDuplicate","tStyleRangeAtCursor","isStylingMatch","setTStylingRangeNextDuplicate","setTStylingRangePrevDuplicate","tStylingKeyCursor","parserState","textEnd","keyEnd","valueEnd","consumeClassToken","consumeWhitespace","consumeStyleKey","consumeSeparator","ch1","ch2","ch3","lastChIndex","consumeQuotedText","consumeStyleValue","quoteCharCode","checkStylingProperty","ɵɵstyleProp","ɵɵclassProp","checkStylingMap","styleKeyValueArraySet","styleStringParser","resetParserState","parseStyleNext","parseStyle","getLastParsedKey","getLastParsedValue","keyValueArraySet","classStringParser","parseClassNameNext","parseClassName","stylingFirstUpdatePass","updateStyling","normalizeSuffix","stringParser","hasStylingInputShadow","isInHostBindings","staticPrefix","oldKeyValueArray","newKeyValueArray","oldKey","newKey","setKey","bn","updateStylingMap","styleKeyValueArray","unwrappedValue","toStylingKeyValueArray","isHostBindings","stylingKey","hostDirectiveDef","getCurrentDirectiveDef","residual","collectStylingFromTAttrs","collectStylingFromDirectives","templateStylingKey","bindings","getTemplateHeadTStylingKey","setTemplateHeadTStylingKey","collectResidual","wrapInStaticStylingKey","tStylingKeyWithStatic","isHostBinding","tBindings","tmplHead","tmplTail","isKeyDuplicateOfStatic","toTStylingRange","setTStylingRangeNext","setTStylingRangePrev","markDuplicates","markDuplicateOfResidualStyling","insertTStylingBinding","currentDirective","desiredMarker","currentMarker","tRange","isStylingValuePresent","getTStylingRangeNextDuplicate","findStylingValue","getTStylingRangePrevDuplicate","isProcedural","isImportant","applyStyling","isPrevDirection","rawKey","containsStatics","isStylingMap","valueAtLViewIndex","keyValueArrayGet","textNative","ɵɵtextInterpolate1","ɵɵtextInterpolate","interpolated","textBindingInternal","ɵɵtextInterpolate2","ɵɵtextInterpolate3","i2","v3","bindingUpdated4","interpolation4","ɵɵtextInterpolate4","i3","v4","interpolation5","ɵɵtextInterpolate5","i4","v5","i5","v6","interpolation7","ɵɵtextInterpolate7","ɵɵstyleMap","ɵɵhostProperty","localeEn","LOCALE_DATA","LocaleDataIndex","LocaleId","ExtraData","normalizedLocale","getLocaleData","findLocaleData","PluralCase","DayPeriodsFormat","DayPeriodsStandalone","DaysFormat","DaysStandalone","MonthsFormat","MonthsStandalone","FirstDayOfWeek","WeekendRange","DateFormat","TimeFormat","NumberSymbols","NumberFormats","CurrencyCode","CurrencySymbol","CurrencyName","Currencies","Directionality","pluralMapping","DEFAULT_LOCALE_ID","ELEMENT_MARKER","ICU_MARKER","I18nCreateOpCode","SHIFT","APPEND_EAGERLY","COMMENT","LOCALE_ID$1","tNodeInsertBeforeIndex","i18nParent","anchorRNode","previousTNodes","newTNode","existingTNode","isI18nText","isNewTNodeCreatedBefore","getInsertBeforeIndex","setInsertBeforeIndex","setI18nHandling","addTNodeAndUpdateInsertBeforeIndex","tIcu","currentCase","currentCaseLViewIndex","mergedCode","changeMask","changeMaskCounter","createOpCodes","insertInFrontOf","appendNow","mutableOpCodes","rootRNode","rootIdx","textNodeIndex","parentIdx","getParentFromIcuCreateOpCode","Qe","refIdx","getRefFromIcuCreateOpCode","getTIcu","caseIndex","getCurrentICUCaseIndex","applyMutableOpCodes","anchorIdx","commentValue","commentNodeIndex","createCommentNode","elementNodeIndex","updateOpCodes","bindingsStartIndex","checkBit","skipCodes","sanitizeFn","tNodeOrTagName","rText","applyIcuSwitchCase","applyIcuUpdateCase","activeCaseIndex","applyUpdateOpCodes","icuExpression","bindingValue","cases","resolvedCase","getLocalePluralCase","getPluralCase","getCaseIndex","applyIcuSwitchCaseRemove","removeCodes","nodeOrIcuIndex","_removes","_stack","removeOpCode","enterIcu","icuContainerIteratorNext","BINDING_REGEXP","NESTED_ICU","ICU_BLOCK_REGEXP","SUBTEMPLATE_REGEXP","PH_REGEXP","NGSP_UNICODE_REGEXP","parentTNodeIndex","subTemplateIndex","rootTNode","existingTNodeStack","isRootTemplateMessage","removeInnerTemplateTranslation","getTranslationForTemplate","msgParts","replaceNgsp","i18nParseTextIntoPartsAndICU","i18nStartFirstCreatePassProcessTextNode","icuStart","createTNodeAndAddOpCode","isClosing","createTNodePlaceholder","existingTNodes","isICU","i18nNodeIdx","loader","ensureIcuContainerVisitorLoaded","loadIcuContainerVisitor","assertEqual","setTNodeInsertBeforeIndex","hasBinding","generateBindingUpdateOpCodes","destinationNode","bindingStart","maskIndex","sizeIndex","textParts","toMaskBit","tagMatched","inTemplate","bindingMask","mainBinding","addUpdateIcuSwitch","setTIcu","valueArr","nestedIcus","icuIndex","parseIcuCase","addUpdateIcuUpdate","icuType","prevPos","braceStack","parseICUBlock","caseName","unsafeCaseHtml","inertRootNode","walkIcuTree","sharedUpdateOpCodes","addCreateNodeAndAppend","lowerAttrName","addCreateAttribute","addRemoveNode","COMMENT_NODE","isNestedIcu","addRemoveNestedIcu","appendToParentIdx","createAtIdx","icuCreateOpCode","messageIndex","i18nStartFirstCreatePass","tI18n","applyCreateOpCodes","setInI18nBlock","ɵɵi18nStart","ɵɵi18nEnd","setMaskBit","hasChange","ɵɵi18nExp","applyI18n","viewProviders","resolveProvider","lInjectablesBlueprint","providerFactory","beginIndex","ɵɵdirectiveInject","existingFactoryIndex","registerDestroyHooksIfSupported","existingProvidersFactoryIndex","existingViewProvidersFactoryIndex","doesViewProvidersFactoryExist","factoryFn","componentProviders","multiFactoryAdd","multiFactory","multiViewProvidersFactoryResolver","multiProvidersFactoryResolver","contextIndex","indexInFactory","providerIsTypeProvider","providerIsClassProvider","isClassProvider","existingCallbacksIndex","isComponentProvider","lData","multiResolve","factories","componentCount","multiProviders","processProvidersFn","ComponentRef$1","ComponentFactory$1","_NullComponentFactoryResolver","ERROR_COMPONENT","noComponentFactoryError","ComponentFactoryResolver$1","createElementRef","injectElementRef","Renderer2","nodeAtIndex","getOrCreateRenderer2","injectRenderer2","Sanitizer","Version","NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR","lNode","lViewInAContainer","lViewFirstChildTNode","collectNativeNodes","nodesInSlot","ViewRef$1","_cdRefInjectingView","_appRef","_attachedToViewContainer","viewRefs","destroyLView","storeCleanupWithContext","detectChangesInternal","setIsInCheckNoChangesMode","checkNoChangesInternal","renderDetachView","appRef","RootViewRef","detectChangesInRootView","checkNoChangesInRootView","componentDef","ComponentFactory","nonMinified","templateName","selectorList","stringifyCSSSelector","stringifyCSSSelectorList","isBoundToModule","toRefArray","projectableNodes","rootSelectorOrNode","tElementNode","rootViewInjector","createChainedInjector","hostRenderer","elementName","hostRNode","elementOrSelector","rElement","locateHostElement","getNamespace","rootFlags","playerHandler","clean","createRootContext","rootTView","rootLView","viewRenderer","createRootComponentView","extractAttrsAndClassesFromSelector","Ws","nodesforSlot","hostFeatures","instantiateRootComponent","createRootComponent","LifecycleHooksFeature","ComponentRef","_rootLView","NgModuleRef$1","NgModuleFactory$1","NgModuleRef","_bootstrapComponents","destroyCbs","maybeUnwrapFn","_r3Injector","injectFlags","NgModuleFactory","moduleType","visited","incoming","assertSameOrNotExisting","registerNgModuleType","parentInjector","slotOffset","pureFn","getBindingRoot","updateBinding","getBinding","pureFunction1Internal","pureFunction2Internal","pureFunction3Internal","bindingRoot","getPureFunctionReturnValue","pureFunction4Internal","returnValueIndex","lastReturnValue","pipeName","getPipeDef","pipeFactory","pipeInstance","isPure","EventEmitter_","isAsync","__isAsync","nextFn","errorFn","completeFn","_wrapInTimeout","_results","_emitDistinctChangesOnly","_changesDetected","_changes","symbolIterator","resultsTree","identityAccessor","newResultFlat","arrayEquals","TemplateRef","injectTemplateRef","R3TemplateRef","_declarationLView","_declarationTContainer","declarationViewLQueries","createTemplateRef","injectViewContainerRef","createContainerRef","R3ViewContainerRef","_lContainer","_hostTNode","_hostLView","getViewRefs","viewRef","componentFactoryOrType","indexOrOptions","ngModuleRef","isComponentFactory","componentFactory","contextInjector","viewAttachedToContainer","prevIdx","prevLContainer","prevVCRef","adjustedIdx","_adjustIndex","containerLength","addToArray","trackMovedView","insertView","parentNativeNode","addViewToContainer","attachToViewContainerRef","getOrCreateViewRefs","viewRefsArr","detachedView","commentNode","nativeNextSibling","LQuery_","queryList","setDirty","LQueries_","tQueries","noOfInheritedQueries","viewLQueries","tQuery","getByIndex","indexInDeclarationView","dirtyQueriesWithMatches","getTQuery","TQueryMetadata_","TQueries_","queriesForTemplateRef","childQueryIndex","tqueryClone","tquery","TQuery_","crossesNgTemplate","_appliesToNextNode","_declarationNodeIndex","isApplyingToNode","matchTNode","addMatch","declarationNodeIdx","matchTNodeWithReadOption","getIdxOfMatchingSelector","nodeMatchIdx","directiveOrProviderIdx","matchIdx","matchingIdx","createResultByTNodeType","createSpecialToken","queryIndex","lQuery","tQueryMatches","matchedNodeIdx","createResultForNode","lViewResults","materializeViewResults","collectQueryResults","embeddedLViews","getCurrentQueryIndex","unwrapElementRef","notifyOnChanges","createTQuery","createLQuery","tViewContentQueries","saveContentQueryAndDirectiveIndex","loadQueryInternal","track","bindingPropertyName","ApplicationInitStatus","appInits","initialized","donePromise","rej","asyncInitPromises","initResult","observableAsPromise","APP_ID","_randomChar","PLATFORM_INITIALIZER","APP_BOOTSTRAP_LISTENER","Console","$localize","getGlobalLocale","DEFAULT_CURRENCY_CODE","ModuleWithComponentFactories","ngModuleFactory","componentFactories","Compiler","compileModuleSync","declaration","compileModuleAndAllComponentsSync","enableLongStackTrace","shouldCoalesceEventChangeDetection","shouldCoalesceRunChangeDetection","hasPendingMacrotasks","hasPendingMicrotasks","isStable","onUnstable","onMicrotaskEmpty","onStable","assertZonePatched","_nesting","_outer","_inner","TaskTrackingZoneSpec","longStackTraceZoneSpec","lastRequestAnimationFrameId","nativeRequestAnimationFrame","nativeCancelAnimationFrame","unpatchedRequestAnimationFrame","__symbol__","unpatchedCancelAnimationFrame","getNativeRequestAnimationFrame","delayChangeDetectionForEventsDelegate","isCheckStableRunning","fakeTopEventTask","scheduleEventTask","updateMicroTaskStatus","checkStable","delayChangeDetectionForEvents","isAngularZone","onInvokeTask","applyThis","applyArgs","invokeTask","onLeave","onInvoke","onHasTask","hasTaskState","hasTask","_hasPendingMicrotasks","microTask","macroTask","onHandleError","forkInnerZoneWithAngularBehavior","EMPTY_PAYLOAD","runTask","runGuarded","isInAngularZone","NoopNgZone","Testability","_pendingCount","_isZoneStable","_didWork","_callbacks","taskTrackingZone","_watchAngularEvents","assertNotInAngularZone","_runCallbacksIfReady","doneCb","getPendingTasks","updateCb","macroTasks","creationLocation","addCallback","exactMatch","TestabilityRegistry","_applications","_testabilityGetter","addToWindow","testability","findInAncestors","findTestabilityInTree","_platform","_NoopGetTestability","moduleFactory","ALLOW_MULTIPLE_PLATFORMS","NgProbeToken","PlatformRef","inits","parentPlatformFactory","extraProviders","injectedProviders","createPlatform","assertPlatform","requiredToken","_injector","_destroyListeners","ngZoneOption","ngZoneEventCoalescing","ngZoneRunCoalescing","getNgZone","ngZoneInjector","moduleRef","exceptionHandler","_callAndReportToErrorHandler","initStatus","runInitializers","setLocaleId","assertDefined","_moduleDoBootstrap","compilerOptions","optionsReducer","compileNgModuleFactory","bootstrapModuleFactory","ApplicationRef","ngDoBootstrap","objs","_exceptionHandler","_componentFactoryResolver","_initStatus","_bootstrapListeners","_views","_runningTick","_stable","componentTypes","_onMicrotaskEmptySubscription","isCurrentlyStable","stableSub","unstableSub","assertInAngularZone","merge$1","componentOrFactory","cf","compRef","testabilityRegistry","registerApplication","unregisterApplication","_loadComponent","attachToAppRef","detachFromAppRef","attachView","ChangeDetectorRef","injectChangeDetectorRef","isPipe","createViewRef","DefaultIterableDifferFactory","isListLikeIterable","trackByFn","DefaultIterableDiffer","trackByIdentity","_linkedRecords","_unlinkedRecords","_previousItHead","_itHead","_itTail","_additionsHead","_additionsTail","_movesHead","_movesTail","_removalsHead","_removalsTail","_identityChangesHead","_identityChangesTail","nextIt","nextRemove","addRemoveOffset","moveOffsets","getPreviousIndex","adjPreviousIndex","_nextRemoved","localMovePreviousIndex","localCurrentIndex","_nextPrevious","_nextAdded","_nextMoved","_nextIdentityChange","_reset","itemTrackBy","mayBeDirty","trackById","_verifyReinsertion","_addIdentityChange","_mismatch","iterateListLike","_truncate","previousRecord","_prev","_reinsertAfter","_moveAfter","_addAfter","IterableChangeRecord_","reinsertRecord","_addToMoves","nextRecord","_addToRemovals","_unlink","prevRecord","_prevRemoved","_insertAfter","_DuplicateMap","_prevDup","_nextDup","_DuplicateItemRecordList","_head","_tail","atOrAfterIndex","recordList","moveOffset","DefaultKeyValueDifferFactory","DefaultKeyValueDiffer","_records","_mapHead","_appendAfter","_previousMapHead","_changesHead","_changesTail","_nextChanged","_forEach","_maybeAddToChanges","_getOrCreateRecordForKey","_insertBeforeOrAppend","KeyValueChangeRecord_","_addToAdditions","_addToChanges","IterableDiffers","copied","defaultIterableDiffersFactory","KeyValueDiffers","kv","defaultKeyValueDiffersFactory","platformCore","createPlatformFactory","ApplicationModule","ɵɵdefineNgModule","ɵɵdefineInjector","BaseControlValueAccessor","_elementRef","BuiltInControlValueAccessor","CHECKBOX_VALUE_ACCESSOR","CheckboxControlValueAccessor","DEFAULT_VALUE_ACCESSOR","DefaultValueAccessor","COMPOSITION_BUFFER_MODE","_compositionMode","kr","_composing","ɵgetDOM","getUserAgent","_isAndroid","NG_VALIDATORS","NG_ASYNC_VALIDATORS","EMAIL_REGEXP","minValidator","maxValidator","requiredValidator","requiredTrueValidator","isEmptyInputValue","emailValidator","hasValidLength","minlength","requiredLength","actualLength","minLengthValidator","maxLengthValidator","regexStr","requiredPattern","nullValidator","patternValidator","compose","composeAsync","maxlength","ɵisObservable","arrayOfErrors","isValidatorFn","presentValidators","isPresent","mergeErrors","executeValidators","normalizeValidators","toObservable","controlValidators","dirValidator","_rawValidators","_rawAsyncValidators","currentValidators","makeValidatorsArray","validatorsToAdd","hasValidator","AbstractControlDirective","_onDestroyCallbacks","untouched","statusChanges","valueChanges","_composedValidatorFn","composeValidators","_composedAsyncValidatorFn","composeAsyncValidators","getError","NgControl","valueAccessor","ControlContainer","AbstractControlStatus","cd","_cd","NgControlStatus","NgControlStatusGroup","setUpValidators","writeValue","registerOnChange","_pendingValue","_pendingChange","_pendingDirty","updateOn","updateControl","setUpViewChangePipeline","emitModelEvent","viewToModelUpdate","_registerOnDestroy","_unregisterOnChange","setUpModelChangePipeline","registerOnTouched","_pendingTouched","setUpBlurPipeline","setDisabledState","onDisabledChange","registerOnDisabledChange","_unregisterOnDisabledChange","setUpDisabledChangeHandler","cleanUpValidators","_invokeOnDestroyCallbacks","_registerOnCollectionChange","registerOnValidatorChange","getControlValidators","mergeValidators","asyncValidators","getControlAsyncValidators","asyncValidator","setAsyncValidators","onValidatorChange","isControlUpdated","updatedValidators","updatedAsyncValidators","emitModelToViewChange","viewModel","isFirstChange","_syncPendingControls","valueAccessors","defaultAccessor","builtinAccessor","customAccessor","VALID","INVALID","PENDING","DISABLED","validatorOrOpts","isOptionsObj","isFormControl","isFormGroup","isFormArray","FormArray","getRawValue","controls","_forEachChild","AbstractControl","_hasOwnPendingAsyncValidator","_onCollectionChange","_onDisabledChange","coerceToValidator","coerceToAsyncValidator","validatorFn","asyncValidatorFn","_updateOn","addValidators","removeValidators","onlySelf","markAllAsTouched","markAsUntouched","_updateTouched","_updatePristine","emitEvent","markAsPending","skipPristineCheck","_parentMarkedDirty","_updateValue","_updateAncestors","changeFn","_setInitialStatus","_cancelExistingSubscription","_runValidator","_calculateStatus","_runAsyncValidator","_updateTreeValidity","_allControlsDisabled","_asyncValidationSubscription","_updateControlsErrors","controlToFind","_find","_anyControlsHaveStatus","_anyControls","_anyControlsDirty","_anyControlsTouched","formState","pickValidators","pickAsyncValidators","_applyFormState","_setUpdateStrategy","_initObservables","initialValueIsDefault","_isBoxedValue","emitViewToModelChange","removeListItem","_setUpControls","registerControl","controlName","assertAllValuesPresent","assertControlPresent","patchValue","_reduceChildren","subtreeUpdated","updated","_reduceValue","_registerControl","formDirectiveProvider$1","NgForm","resolvedPromise$1","_directives","ngSubmit","_findContainer","setUpControl","removeControl","setUpFormContainer","syncPendingControls","resetForm","AbstractFormGroupDirective","_checkParentType","formDirective","addFormGroup","removeFormGroup","getFormGroup","controlPath","formControlBinding$1","NgModel","_changeDetectorRef","Ti","_registered","_setValidators","_setAsyncValidators","selectValueAccessor","_checkForErrors","_checkName","oldName","_getPath","_setUpControl","_updateDisabled","isPropertyUpdated","_isStandalone","_setUpStandalone","disabledValue","ɵNgNoValidate","NUMBER_VALUE_ACCESSOR","NumberValueAccessor","RADIO_VALUE_ACCESSOR","RadioControlValueAccessor","RadioControlRegistryModule","RadioControlRegistry","_accessors","accessor","_isSameGroup","fireUncheck","controlPair","_control","_registry","_fn","formControlName","NG_MODEL_WITH_FORM_CONTROL_WARNING","formControlBinding","FormControlDirective","_ngModelWarningConfig","_ngModelWarningSent","_isControlChanged","previousForm","cleanUpControl","_ngModelWarningSentOnce","formDirectiveProvider","FormGroupDirective","_checkFormPresent","_updateValidators","_updateRegistrations","_oldForm","_setUpFormContainer","_cleanUpFormContainer","newCtrl","cleanUpFormContainer","formGroupNameProvider","FormGroupName","_hasInvalidParent","formArrayNameProvider","FormArrayName","addFormArray","removeFormArray","getFormArray","controlNameBinding","FormControlName","_added","updateModel","SELECT_VALUE_ACCESSOR","SelectControlValueAccessor","_optionMap","_idCounter","_compareWith","_buildValueString$1","_getOptionId","_getOptionValue","_extractId$1","NgSelectOption","_select","_registerOption","_setElementValue","SELECT_MULTIPLE_VALUE_ACCESSOR","SelectMultipleControlValueAccessor","optionSelectedStateSetter","_setSelected","selectedOptions","_extractId","ɵNgSelectMultipleOption","_buildValueString","AbstractValidatorDirective","_validator","normalizeInput","createValidator","MAX_VALIDATOR","MaxValidator","toFloat","MIN_VALIDATOR","MinValidator","REQUIRED_VALIDATOR","RequiredValidator","MAX_LENGTH_VALIDATOR","MaxLengthValidator","ɵInternalFormsSharedModule","warnOnNgModelWithFormControl","FormBuilder","controlsConfig","_reduceControls","isAbstractControlOptions","_createControl","controlConfig","urlParsingNode","GenericBrowserDomAdapter","supportsDOMEvents","ɵDomAdapter","BrowserDomAdapter","getDefaultDocument","DocumentFragment","baseElement","getBaseElementHref","pathName","relativePath","ɵsetRootDomAdapter","TRANSITION_ID","SERVER_TRANSITION_PROVIDERS","transitionId","BrowserGetTestability","ɵglobal","getAllTestabilities","getAllRootElements","testabilities","didWork","decrement","didWork_","whenStable","getTestability","isShadowRoot","setTestabilityGetter","BrowserXhr","EVENT_MANAGER_PLUGINS","EventManager","plugins","_eventNameToPlugin","manager","_plugins","_findPluginFor","addGlobalEventListener","plugin","EventManagerPlugin","SharedStylesHost","_stylesSet","additions","onStylesAdded","DomSharedStylesHost","_hostNodes","styleNodes","styleEl","Tn","hostNode","_addStylesToHost","styleNode","NAMESPACE_URIS","xhtml","xlink","math","COMPONENT_REGEX","COMPONENT_VARIABLE","HOST_ATTR","CONTENT_ATTR","eventHandler","DomRendererFactory2","eventManager","sharedStylesHost","rendererByCompId","defaultRenderer","DefaultDomRenderer2","EmulatedEncapsulationDomRenderer2","applyToHost","ShadowDomRenderer","addStyles","removeAttributeNS","decoratePreventDefault","un","contentAttr","componentShortId","shimContentAttribute","hostAttr","shimHostAttribute","hostEl","addHost","removeHost","nodeOrShadowRoot","DomEventsPlugin","_keyMap","Del","Esc","Menu","Scroll","Win","_chromeNumKeyPadMap","MODIFIER_KEY_GETTERS","KeyEventsPlugin","parseEventName","parsedEvent","outsideHandler","eventCallback","fullKey","onAndCancel","domEventName","_normalizeKey","modifierName","keyIdentifier","getEventKey","modifierGetter","getEventFullKey","keyName","platformBrowser","ɵPLATFORM_BROWSER_ID","makeCurrent","ɵsetDocument","BROWSER_MODULE_PROVIDERS","ɵINJECTOR_SCOPE","newTitle","createTitle","DomSanitizer","DomSanitizerImpl","ɵallowSanitizationBypassAndThrow","ɵunwrapSafeValue","ɵ_sanitizeHtml","ɵgetSanitizationBypassType","ɵ_sanitizeUrl","ɵbypassSanitizationTrustHtml","ɵbypassSanitizationTrustStyle","ɵbypassSanitizationTrustScript","ɵbypassSanitizationTrustUrl","ɵbypassSanitizationTrustResourceUrl","domSanitizerImplFactory","EmptyError","_refCount","refCounter","sharedConnection","_connection","ConnectableObservable","subjectFactory","getSubject","_teardown","higherOrderRefCount","hasSeed","emitOnNext","emitBeforeComplete","hasState","scanInternals","Bn","defaultErrorFactory","hasDefaultValue","defaultIfEmpty","throwIfEmpty","RouterEvent","navigationTrigger","restoredState","urlAfterRedirects","pn","GuardsCheckStart","GuardsCheckEnd","shouldActivate","ResolveStart","ResolveEnd","RouteConfigLoadStart","RouteConfigLoadEnd","ChildActivationStart","ChildActivationEnd","ActivationStart","ActivationEnd","PRIMARY_OUTLET","ParamsAsMap","NAVIGATION_CANCELING_ERROR","segments","segmentGroup","posParams","segment","consumed","equalArraysOrString","aSorted","bSorted","pathCompareMap","exact","containee","matrixParams","equalPath","matrixParamsMatch","numberOfChildren","equalSegmentGroups","subset","containsSegmentGroup","paramCompareMap","shallowEqual","containsSegmentGroupHelper","containeePaths","containerPaths","containeeSegment","UrlTree","_queryParamMap","convertToParamMap","DEFAULT_SERIALIZER","UrlSegmentGroup","serializePaths","UrlSegment","_parameterMap","serializePath","UrlSerializer","DefaultUrlSerializer","UrlParser","parseRootSegment","parseQueryParams","parseFragment","serializeSegment","encodeUriQuery","serializeQueryParams","encodeUriFragment","childOutlet","mapChildrenIntoArray","encodeUriString","encodeUriSegment","serializeMatrixParams","SEGMENT_RE","QUERY_PARAM_RE","QUERY_PARAM_VALUE_RE","consumeOptional","peekStartsWith","parseChildren","parseQueryParam","parseSegment","parseParens","matchSegments","parseMatrixParams","parseParam","valueMatch","matchQueryParams","matchUrlQueryParamValue","decodedKey","decodeQuery","decodedVal","currentVal","allowPrimary","outletName","Tree","pathFromRoot","findPath","outlet","RouterState","setRouterState","urlTree","activated","ActivatedRouteSnapshot","RouterStateSnapshot","createEmptyStateSnapshot","emptyUrl","emptyParams","emptyData","emptyQueryParams","ActivatedRoute","futureSnapshot","_futureSnapshot","_routerState","_paramMap","paramsInheritanceStrategy","inheritingStartingFrom","flattenInherited","_resolvedData","urlSegment","lastPathIndex","_urlSegment","_lastPathIndex","_resolve","serializeNode","nextSnapshot","shallowEqualArrays","equalUrlParams","equalSegments","equalParamsAndUrlSegments","routeReuseStrategy","prevState","shouldReuseRoute","createOrReuseChildren","shouldAttach","detachedRouteHandle","createActivatedRoute","Navigation","numberOfDoubleDots","isAbsolute","cmdIdx","outlets","segmentPath","urlPart","computeNavigation","toRoot","startingPosition","modifier","isMatrixParams","createPositionApplyingDoubleDots","findStartingPosition","processChildren","updateSegmentGroupChildren","updateSegmentGroup","oldRoot","oldSegmentGroup","newSegmentGroup","qp","newRoot","replaceSegment","oldSegment","newSegment","cmdWithOutlet","isCommandWithOutlets","currentCommandIndex","currentPathIndex","noMatch","pathIndex","commandIndex","prefixedWith","slicedCommands","createNewSegmentGroup","getOutlets","createNewSegmentChildren","ActivateRoutes","futureState","forwardEvent","parentContexts","futureRoot","currRoot","deactivateChildRoutes","advanceActivatedRoute","activateChildRoutes","futureNode","currNode","nodeChildrenAsMap","childOutletName","futureChild","deactivateRoutes","childName","deactivateRouteAndItsChildren","shouldDetach","detachAndStoreRouteSubtree","deactivateRouteAndOutlet","onOutletDeactivated","attachRef","activateRoutes","getOrCreateContext","onOutletReAttached","_loadedConfig","parentLoadedConfig","cmpFactoryResolver","activateWith","LoadedRouterConfig","INITIAL_VALUE","scan","innerAcc","isUrlTree","OutletContext","ChildrenOutletContexts","RouterOutlet","changeDetector","_activatedRoute","activateEvents","deactivateEvents","attachEvents","detachEvents","onChildOutletCreated","onChildOutletDestroyed","isActivated","childContexts","OutletInjector","ɵEmptyOutletComponent","getFullPath","validateNode","validateConfig","currentRoute","standardizeConfig","sortedConfig","getOutlet","noMatch$1","consumedSegments","remainingSegments","positionalParamSegments","defaultUrlMatcher","slicedSegments","containsEmptyPathMatchesWithNamedOutlets","createChildrenForEmptyPaths","_sourceSegment","_segmentIndexShift","containsEmptyPathMatches","addEmptyPathsToChildrenIfNeeded","emptyPathMatch","primarySegment","Xn","rawSegment","NoMatch$1","AbsoluteRedirect","newTree","ApplyRedirects","configLoader","urlSerializer","allowRedirects","splitGroup","rootSegmentGroup","expandSegmentGroup","createUrlTree","squashSegmentGroup","noMatchError","rootCandidate","expandChildren","expandSegment","childOutlets","sortedRoutes","sortByMatchingOutlets","expandedChild","takeLast","last$1","expandSegmentAgainstRoute","noLeftoversInUrl","isImmediateMatch","matchSegmentAgainstRoute","expandSegmentAgainstRouteUsingRedirect","expandWildCardWithParamsAgainstRouteUsingRedirect","expandRegularSegmentAgainstRouteUsingRedirect","applyRedirectCommands","absoluteRedirect","lineralizeSegments","newSegments","rawSegmentGroup","cfg","getChildConfig","routerConfig","childModule","Ks","splitSegmentGroup","matchedOnOutlet","runCanLoadGuards","shouldLoadResult","navigationCancelingError","canLoadFails","canLoad","canLoadObservables","injectionToken","guardVal","isCanLoad","wrapIntoObservable","prioritizedGuardValue","namedOutletsRedirect","applyRedirectCreatreUrlTree","createSegmentGroup","createQueryParams","redirectToParams","actualParams","sourceName","updatedSegments","createSegments","redirectToSegments","actualSegments","findPosParam","findOrReturn","redirectToUrlSegment","childCandidate","mergeTrivialChildren","CanActivate","CanDeactivate","getChildRouteGuards","getClosestLoadedConfig","futurePath","checks","canDeactivateChecks","canActivateChecks","prevChildren","getRouteGuards","shouldRun","shouldRunGuardsAndResolvers","runGuardsAndResolvers","NoMatch","Recognizer","rootComponentType","processSegmentGroup","routeState","inheritParamsAndData","routeNode","inheritedParamsDataResolve","processSegment","outletChildren","mergedChildren","mergeEmptyPathMatches","sortActivatedRouteSnapshots","processSegmentAgainstRoute","getSourceSegmentGroup","getPathIndexShift","getResolve","fi","mergedNodes","hasEmptyPathConfig","ta","duplicateEmptyPathNode","resultNode","mergedNode","nextResult","RouteReuseStrategy","DefaultRouteReuseStrategy","BaseRouteReuseStrategy","detachedTree","ROUTES","RouterConfigLoader","compiler","onLoadStartListener","onLoadEndListener","_loader$","loadRunner","loadModuleFactory","compileModuleAsync","UrlHandlingStrategy","DefaultUrlHandlingStrategy","newUrlPart","wholeUrl","runExtras","exactMatchOptions","subsetMatchOptions","rootContexts","lastSuccessfulNavigation","currentNavigation","disposed","navigationId","currentPageId","isNgZoneEnabled","defaultErrorHandler","malformedUriErrorHandler","defaultMalformedUriErrorHandler","navigated","lastSuccessfulId","beforePreactivation","defaultRouterHook","afterPreactivation","urlHandlingStrategy","onSameUrlNavigation","urlUpdateStrategy","canceledNavigationResolution","ɵConsole","resetConfig","currentUrlTree","createEmptyUrlTree","rawUrlTree","browserUrlTree","triggerEvent","routerState","createEmptyState","targetPageId","currentRawUrl","extractedUrl","rawUrl","extras","targetSnapshot","currentRouterState","targetRouterState","guards","guardsResult","navigations","setupNavigations","processNavigations","ɵrouterPageId","eventsSubject","initialUrl","previousNavigation","urlTransition","shouldProcessUrl","isBrowserTriggeredNavigation","serializeUrl","applyRedirects$1","applyRedirects","finalUrl","serializer","recognize","newObservableError","recognize$1","skipLocationChange","setBrowserUrl","routesRecognized","navStart","replaceUrl","switchTap","appliedUrlTree","guardsStart","getAllRouteGuards","futureRSS","currRSS","currARS","canDeactivate","canDeactivateObservables","isCanDeactivate","runCanDeactivate","runCanDeactivateChecks","fireChildActivationStart","fireActivationStart","futureARS","canActivateChildGuards","canActivateChild","getCanActivateChild","canActivateChildGuardsMapped","guardsMapped","isCanActivateChild","runCanActivateChild","canActivate","canActivateObservables","isCanActivate","runCanActivate","runCanActivateChecks","checkGuards","guardsEnd","restoreHistory","cancelNavigationTransition","resolveStart","dataResolved","canActivateChecksResolved","getDataKeys","getResolver","resolveNode","resolvedData","runResolve","resolveData","resolveEnd","createRouterState","cancelationReason","isNavigationCancelingError","redirecting","navCancel","mergedTree","scheduleNavigation","navError","setUpLocationChangeListener","locationSubscription","stateCopy","parseUrl","navigationExtras","queryParamsHandling","preserveFragment","removeEmptyProps","validateCommands","matchOptions","containsTree","priorPromise","browserPageId","setTransition","generateNgRouterState","isCurrentPathEqualTo","restoringFromCaughtError","targetPagePosition","browserUrlUpdateOccurred","resetUrlToCurrentUrlTree","routerPageId","RouterLink","tabIndexAttribute","onChanges","setTabIndexIfNotOnNativeEl","newTabIndex","attrBoolValue","RouterLinkWithHref","locationStrategy","updateTargetUrlAndHref","RouterLinkActive","cdr","linkWithHref","routerLinkActiveOptions","isActiveChange","routerEventsSubscription","linksWithHrefs","subscribeToEachLinkOnChanges","linkInputChangesSubscription","allLinkChanges","isLinkActive","hasActiveLinks","isActiveMatchOptions","isActiveCheckFn","PreloadingStrategy","PreloadAllModules","NoPreloading","RouterPreloader","preloadingStrategy","preload","processRoutes","preloadConfig","RouterScroller","viewportScroller","lastId","lastSource","restoredId","scrollPositionRestoration","anchorScrolling","setHistoryScrollRestoration","createScrollEvents","scrollEventsSubscription","consumeScrollEvents","getScrollPosition","scheduleScrollEvent","scrollToPosition","scrollToAnchor","ROUTER_CONFIGURATION","ROUTER_FORROOT_GUARD","ROUTER_PROVIDERS","assignExtraOptionsToRouter","enableTracing","groupEnd","provideRoutes","provideForRootGuard","createRouterScroller","routerNgProbeToken","RouterInitializer","getAppInitializer","ROUTER_INITIALIZER","getBootstrapListener","platformLocationStrategy","useHash","initNavigation","resultOfPreactivationDone","initialNavigation","bootstrappedComponentRef","preloader","routerScroller","setUpPreloading","resetRootComponentType","appInitializer","bootstrapListener","pt","Pt","ut","argsOrArgArray","raceInit","buffers","Pn","hr","basePlacements","popper","variationPlacements","placements","modifierPhases","ShadowRoot","includeScale","isHTMLElement","getDocumentElement","getWindowScroll","getNodeName","assignedSlot","_getComputedStyle","isScrollParent","getScrollParent","getParentNode","_element$ownerDocumen","scrollParent","visualViewport","listScrollParents","getTrueOffsetParent","isTableElement","perspective","willChange","getContainingBlock","isSameNode","clippingParent","rectToClientRect","getWindowScrollBarX","getViewportRect","getInnerBoundingClientRect","winScroll","getDocumentRect","basePlacement","getBasePlacement","variation","getVariation","commonX","commonY","mainAxis","getMainAxisFromPlacement","paddingObject","hashMap","_options$placement","_options$boundary","boundary","_options$rootBoundary","rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","mergePaddingObject","expandToHashMap","popperRect","rects","clippingClientRect","mainClippingParents","clippingParents","clipperElement","getOffsetParent","getClippingParents","clippingRect","accRect","getClientRectFromMixedType","getClippingRect","contextElement","referenceClientRect","popperOffsets","computeOffsets","popperClientRect","elementClientRect","overflowOffsets","offsetData","modifiersData","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","flipVariations","allowedAutoPlacements","preferredPlacement","oppositePlacement","getOppositePlacement","getOppositeVariationPlacement","getExpandedFallbackPlacements","_options$allowedAutoP","allPlacements","allowedPlacements","overflows","detectOverflow","computeAutoPlacement","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","mainVariationSide","altVariationSide","_loop","fittingPlacement","requiresIfExists","mathMax","mathMin","clientRect","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","getAltAxis","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","arrowElement","arrow","arrowRect","getLayoutRect","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","within","minOffset","maxOffset","arrowOffsetParent","offsetModifierValue","tetherMax","preventedOffset","_offsetModifierState$2","_len","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","withinMaxClamp","pa","_state$modifiersData$","toPaddingObject","minProp","maxProp","endDiff","startDiff","clientSize","effect","_ref2","_options$element","requires","elementOrVirtualElement","isFixed","isOffsetParentAnElement","offsetParentIsScaled","isElementScaled","getHTMLElementScroll","getNodeScroll","Nr","modifiers","dep","depModifier","DEFAULT_OPTIONS","generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","orderedModifiers","effectCleanupFns","setOptionsAction","cleanupModifierEffects","scrollParents","orderModifiers","merged","mergeByName","runModifierEffects","_ref3","_ref3$options","forceUpdate","_state$elements","areValidElements","getCompositeRect","_state$orderedModifie","_state$orderedModifie2","onFirstUpdate","unsetSides","_Object$assign2","gpuAcceleration","adaptive","roundOffsets","_offsets$x","_offsets$y","hasX","hasY","sideX","sideY","heightProp","widthProp","_Object$assign","commonStyles","_ref4","dpr","roundOffsetsByDPR","createPopper","popperGenerator","_options$scroll","_options$resize","_ref5","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","mapToStyles","_options$offset","invertDistance","skidding","distanceAndSkiddingToXY","_data$state$placement","onNavigateEvent","onNavigateDateSelect","doSelect","$t","noopFn","runningTransitions","ngbRunTransition","startFn","runningTransition","transition$","endFn","transitionProperty","runInZone","finishTransition$","stop$","endWith","transitionDurationMs","transitionDuration","transitionDelay","getTransitionDurationMs","transitionEnd$","race","ngbCollapsingTransition","hasShownClass","measureCollapsingElementHeightPx","setInitialClasses","NgbConfig","NgbAccordionModule","ngbAlertFadingTransition","NgbAlertConfig","_ngbConfig","dismissible","_animation","NgbAlert","typeChange","NgbAlertModule","NgbButtonsModule","NgbCarouselModule","NgbCollapseConfig","NgbCollapse","ngbCollapseChange","_runTransition","_runTransitionWithEvents","NgbCollapseModule","NgbDate","dateComparator","markDisabled","daysPerWeek","getDaysPerWeek","firstMonthDate","getWeekday","jsDate","NgbCalendar","NgbCalendarGregorian","NGB_DATEPICKER_CALENDAR_FACTORY","toJSDate","checkMonth","expectedMonth","fromJSDate","getMonthFullName","getYearNumerals","weekNumber","NgbDatepickerI18nDefault","NGB_DATEPICKER_18N_FACTORY","_monthsFull","weekdaysStartingOnSunday","NgbDatepickerService","_i18n","_VALIDATORS","dayTemplateData","Nt","displayMonths","focusVisible","toValidDate","isChangedDate","outsideDays","weekdayWidth","weekdaysVisible","_model$","_dateSelect$","firstDate","lastDate","focusDate","prevDisabled","nextDisabled","selectedDate","selectBoxes","_nextState","focusedDate","isDateSelectable","getToday","isChangedMonth","ngbDate","struct","newState","_updateState","_patchContexts","checkMinBeforeMax","checkDateInRange","i18n","monthsToReuse","firstDates","reusedIndex","calendarToday","getFirstViewDate","getWeeksPerMonth","weekObject","getWeekdayLabel","nextDate","getDayAriaLabel","contextUserData","dayObject","currentMonth","currentYear","getWeekNumber","buildMonth","buildMonths","yearChanged","monthChanged","numbers","generateSelectBoxYears","getMonths","generateSelectBoxMonths","prevDate","prevMonthDisabled","nextMonthDisabled","NavigationEvent","PREV","NEXT","NgbDatepickerConfig","NgbDateStructAdapter","NGB_DATEPICKER_DATE_ADAPTER_FACTORY","NgbDatepickerDayView","NgbDatepickerNavigationSelect","_month","_year","monthSelect","yearSelect","kc","us","NgbDatepickerNavigation","Key","Enter","Escape","Space","PageUp","PageDown","End","Home","ArrowLeft","ArrowUp","ArrowRight","ArrowDown","NgbDatepickerKeyboardService","datepicker","focusSelect","NgbDatepickerContent","NgbDatepicker","_service","_ngbDateAdapter","_controlValue","_destroyed$","_publicState","dateSelect","dateSelect$","model$","oldDate","navigationPrevented","newSelectedDate","newFocusedDate","oldFocusedDate","toModel","elementToFocus","focusIns$","_contentEl","focusOuts$","hasClassName","dayTemplate","_defaultDayTemplate","fromModel","Bc","Qi","NgbDatepickerMonth","_keyboardService","processKey","onDateSelect","isContainedIn","matchesSelectorIfAny","closed$","insideElements","insideSelector","wrapAsyncForMobile","escapes$","mouseDowns$","closeableClicks$","withLatestFrom","FOCUSABLE_ELEMENTS_SELECTOR","ngbFocusTrap","stopFocusTrap$","refocusOnClick","lastFocusedElement$","tabEvent","focusedElement","getFocusableBoundaryElements","$r","lastFocusedElement","placementSeparator","spacesRegExp","startPrimaryPlacement","endPrimaryPlacement","startSecondaryPlacement","endSecondaryPlacement","popperStartPrimaryPlacement","popperEndPrimaryPlacement","popperStartSecondaryPlacement","popperEndSecondaryPlacement","baseClass","placementVals","hasAuto","popperPlacements","_placement","getPopperClassPlacement","mainPlacement","bsModifier","bsClassRegExp","popperElement","popperPlacement","newPrimary","classnames","newSecondary","getBootstrapBaseClassPlacement","preventOverflow","popperInstance","positioningOption","popperOptions","updatePopperOptions","getPopperOptions","createPopperLite","NgbInputDatepickerConfig","autoClose","NgbDateParserFormatter","NgbDateISOParserFormatter","NGB_DATEPICKER_PARSER_FORMATTER_FACTORY","dateParts","NgbInputDatepicker","_parserFormatter","_elRef","_vcRef","_dateAdapter","_document","_changeDetector","_cRef","_disabled","_elWithFocus","_model","_positioning","ngbPositioning","_destroyCloseHandlers$","_onTouched","_validatorChange","Co","_zoneSubscription","_fromDateStruct","_writeModelValue","updateView","inputValueChanged","_inputValue","_applyPopupStyling","_applyDatepickerInputs","_subscribeForDatepickerOutputs","positionTarget","appendToBody","_setCloseHandlers","datepickerClass","_applyPopupClass","datepickerInstance","newClass","oldClass","popupEl","navigateEvent","ngbAutoClose","_fromNativeDate","_toNativeDate","NgbDatepickerModule","NgbDropdownConfig","NgbNavbar","NgbDropdownItem","NgbDropdownMenu","dropdown","NgbDropdown","NgbDropdownAnchor","NgbDropdownToggle","ngbNavbar","_bodyContainer","_open","openChange","$n","_positionMenu","_applyPlacementClasses","_applyContainer","_anchor","_menu","dropdownClass","_applyCustomDropdownClass","_resetContainer","itemElements","_getMenuElements","itemElement","isEventFromToggle","_isEventFromToggle","_isDropup","_getFirstPlacement","dropdownMenuElement","bodyContainer","dropdownElement","NgbDropdownModule","ContentRef","_applicationRef","_windowRef","_contentRef","_getContentRef","windowRef","rootNodes","NgbModalBackdrop","_el","NgbActiveModal","NgbModalRef","_windowCmptRef","_backdropCmptRef","_beforeDismiss","_closed","_dismissed","_hidden","dismissEvent","_reject","_removeModalElements","_dismiss","windowTransition$","backdropTransition$","ModalDismissReasons","BACKDROP_CLICK","ESC","NgbModalWindow","_closed$","keyboard","_show","_disableEventHandling","transitions$","_dialogEl","_restoreFocus","_enableEventHandling","_setFocus","_bumpBackdrop","preventClose","autoFocusable","firstFocusable","elWithFocus","Br","bodyStyle","actualPadding","NgbModalStack","_scrollBar","_rendererFactory","_activeWindowCmptHasChanged","_ariaHiddenValues","_scrollBarRestoreFn","_backdropAttributes","_modalRefs","_windowAttributes","_windowCmpts","_activeInstances","activeWindowCmpt","_revertAriaHidden","_setAriaHidden","scrollBarRestoreFn","moduleCFR","contentInjector","containerEl","isDefined","removeBodyClass","_restoreScrollBar","_hideScrollBar","activeModal","contentRef","backdropCmptRef","_attachBackdrop","windowCmptRef","_attachWindowComponent","ngbModalRef","beforeDismiss","_registerModalRef","_registerWindowCmpt","_applyWindowOptions","_applyBackdropOptions","windowInstance","backdropInstance","_createFromTemplateRef","_createFromString","_createFromComponent","contentCmptFactory","modalContentInjector","componentNativeEl","scrollable","unregisterModalRef","ngbWindowCmpt","NgbModalConfig","NgbModal","_moduleCFR","_modalStack","combinedOptions","activeInstances","dismissAll","hasOpenModals","NgbModalModule","NgbNavModule","NgbPaginationModule","Trigger","DEFAULT_ALIASES","triggers","trimmedTriggers","parsedTriggers","triggerPair","manualTriggers","isManual","isOpenedFn","openFn","closeFn","toggleFn","unsubscribeFn","delayOrNoop","openDelay","closeDelay","input$","filteredInput$","currentlyOpen","delayedOpen$","delayedClose$","parseTriggers","observeTriggers","triggerDelay","NgbPopoverConfig","disablePopover","nextId$1","NgbPopoverWindow","NgbPopover","_ngbPopoverWindowId","popoverClass","_popupService","ngbPopover","popoverTitle","_isDisabled","_unregisterListenersFn","listenToTriggers","NgbPopoverModule","NgbProgressbarModule","NgbRatingModule","NgbTimepickerModule","NgbToastModule","NgbTooltipConfig","disableTooltip","NgbTooltipWindow","NgbTooltip","_ngbTooltipWindowId","tooltipClass","_ngbTooltip","NgbTooltipModule","NgbTypeaheadModule","NGB_MODULES","unselect","toggleItem","onItemHover","itemsList","selectTag","viewPortItems","scrollToEnd","unescapedHTMLExp","hasUnescapedHTMLExp","htmlEscapes","NgItemLabelDirective","ngItemLabel","NgOptionTemplateDirective","NgOptgroupTemplateDirective","NgLabelTemplateDirective","NgMultiLabelTemplateDirective","NgHeaderTemplateDirective","NgFooterTemplateDirective","NgNotFoundTemplateDirective","NgTypeToSearchTemplateDirective","NgLoadingTextTemplateDirective","NgTagTemplateDirective","NgLoadingSpinnerTemplateDirective","diacritics","ItemsList","_ngSelect","_selectionModel","_items","_filteredItems","_markedIndex","hideSelected","selectedItems","maxSelectedItems","mapItem","_groups","_groupBy","_flatten","maxItemsSelected","clearSelected","selectableGroupAsModel","_hideSelected","_showSelected","findBy","compareWith","bindValue","resolveNested","bindLabel","keepDisabled","marked","resetFilteredItems","term","stripSpecialChars","filteredItems","searchFn","_defaultSearchFn","ir","_o","matchedItems","xo","Fr","Ho","_stepToItem","markDefault","lastMarkedIndex","_getLastMarkedIndex","$ngOptionLabel","$ngOptionValue","htmlId","dropdownId","findItem","bo","Jr","_getNextItemIndex","markedItem","lastSelectedItem","markedIndex","ni","Xo","isFnKey","uo","isGroupByFn","withoutGroup","isObjectKey","selectableGroup","newId","Backspace","NgDropdownPanelService","_dimensions","panelHeight","itemsPerViewport","scrollPos","itemsLength","indexByScrollTop","maxStart","topPadding","itemTop","lastScroll","itemBottom","CSS_POSITIONS","SCROLL_SCHEDULER","NgDropdownPanelComponent","_panelService","virtualScroll","filterValue","outsideClick","_destroy$","_scrollToEndFired","_updateScrollHeight","_lastScrollPosition","_dropdown","_currentPosition","_itemsLength","_onItemsLengthChanged","_virtualPadding","paddingElementRef","_scrollablePanel","scrollElementRef","_contentPanel","contentElementRef","_handleScroll","_handleOutsideClick","_appendDropdown","_setupMousedownListener","_onItemsChange","startFromOption","getScrollTo","_updateYPosition","_calculateCurrentPosition","ki","_updateDropdownClass","REMOVE_CSS_CLASS","ADD_CSS_CLASS","_onContentScrolled","_checkToClose","_updateItemsRange","_setVirtualHeight","_updateItems","setDimensions","_handleDropdownPosition","_measureDimensions","_renderItemsRange","_startOffset","_fireScrollToEnd","calculateItems","bufferAmount","_updateVirtualHeight","optionHeight","dropdownEl","selectRect","_updateXPosition","NgOptionComponent","stateChange$","_previousLabel","NgSelectConfig","typeToSearchText","addTagText","loadingText","clearAllText","disableVirtualScroll","openOnEnter","appearance","ConsoleService","SELECTION_MODEL_FACTORY","NgSelectComponent","autoFocus","newSelectionModel","markFirst","dropdownPosition","closeOnSelect","selectOnTab","clearOnBackspace","labelForId","inputAttrs","searchWhileComposing","minTermLength","editableSearchTerm","keyDownFn","addTag","blurEvent","changeEvent","openEvent","closeEvent","searchEvent","clearEvent","useDefaultClass","searchTerm","_defaultLabel","_pressedKeys","_isComposing","_keyPress$","clearItem","trackByOption","_mergeGlobalConfig","_itemsAreUsed","_clearSearchOnAdd","clearSearchOnAdd","dropdownPanel","_handleKeyPresses","_setInputAttributes","_setItems","_manualOpen","_setItemsFromNgOptions","handleKeyCode","_handleArrowDown","_handleArrowUp","_handleSpace","_handleEnter","_handleTab","_handleBackspace","handleClearClick","handleArrowClick","_updateNgModel","_clearSearch","_onSelectionChanged","_handleWriteValue","_isTypeahead","noItemsToSelect","markSelectedOrDefault","_editableSearchTerm","unmarkItem","_setSearchTermFromItems","_primitive","handleTag","_validTerm","showAddTag","typeahead","markItem","firstItem","setItems","mapSelectedItems","ngOptions","changedOrDestroyed","validateBinding","ngModel","_isValidWriteValue","isValObject","findByLabel","_scrollToMarked","_changeSearch","scrollToTag","adjustPosition","_nextItemIsTag","_scrollToTag","markNextItem","markPreviousItem","nextStep","clearModel","DefaultSelectionModel","_selected","groupAsModel","childrenCount","_setChildrenSelectedState","_removeChildren","_activeChildren","DefaultSelectionModelFactory","ReplaySubject","_bufferSize","_windowTime","_timestampProvider","Bt","_infiniteTimeWindow","_trimBuffer","adjustedBufferSize","Xt","configOrBufferSize","windowTime","TranslateLoader","TranslateFakeLoader","MissingTranslationHandler","FakeMissingTranslationHandler","o1","o2","keySet","TranslateParser","TranslateDefaultParser","templateMatcher","interpolateString","interpolateFunction","TranslateCompiler","TranslateFakeCompiler","TranslateStore","currentLang","defaultLang","langs","onTranslationChange","onLangChange","onDefaultLangChange","USE_STORE","USE_DEFAULT_LANG","DEFAULT_LANGUAGE","USE_EXTEND","TranslateService","currentLoader","missingTranslationHandler","isolate","_onTranslationChange","_onLangChange","_onDefaultLangChange","_langs","_translations","_translationRequests","_defaultLang","_currentLang","retrieveTranslations","changeDefaultLang","changeLang","getTranslation","loadingTranslations","shareReplay","compileTranslations","updateLangs","shouldMerge","addLangs","kn","getParsedResult","resetLang","browserLang","browserLanguage","browserCultureLang","TranslateDirective","onTranslationChangeSub","checkNodes","onLangChangeSub","onDefaultLangChangeSub","currentParams","setContent","lastKey","lookupKey","trimmedContent","originalContent","lastParams","onTranslation","validArgs"],"sources":["./src/app/_core/authorization/auth.service.ts","./src/app/_core/authorization/feat-auth-guard.service.ts","./src/app/_core/authorization/login.model.ts","./src/app/_core/cypress-expose.ts","./src/app/_core/de-query/model/context-line.model.ts","./src/app/_core/de-query/model/context.model.ts","./src/app/_core/de-query/context.service.ts","./src/app/_core/de-query/de-query.service.ts","./node_modules/ngx-indexed-db/fesm2015/ngx-indexed-db.js","./src/app/_core/de-query/index-db-cache.service.ts","./src/app/_core/de-query/model/grid-column-meta-data.ts","./src/app/_core/format.service.ts","./src/app/_core/global-events.service.ts","./src/app/_core/models/api-route.model.ts","./src/app/_core/models/feature.model.ts","./src/app/_core/models/role.model.ts","./src/app/_core/models/access-group.model.ts","./src/app/_core/models/user.model.ts","./src/app/_core/session.service.ts","./src/app/_core/settings/settings.model.ts","./src/app/_core/settings/settings.service.ts","./node_modules/@aspnet/signalr/dist/esm/Errors.js","./node_modules/@aspnet/signalr/dist/esm/ILogger.js","./node_modules/@aspnet/signalr/dist/esm/HttpClient.js","./node_modules/@aspnet/signalr/dist/esm/TextMessageFormat.js","./node_modules/@aspnet/signalr/dist/esm/Loggers.js","./node_modules/@aspnet/signalr/dist/esm/Utils.js","./node_modules/@aspnet/signalr/dist/esm/HandshakeProtocol.js","./node_modules/@aspnet/signalr/dist/esm/IHubProtocol.js","./node_modules/@aspnet/signalr/dist/esm/HubConnection.js","./node_modules/@aspnet/signalr/dist/esm/ITransport.js","./node_modules/@aspnet/signalr/dist/esm/AbortController.js","./node_modules/@aspnet/signalr/dist/esm/LongPollingTransport.js","./node_modules/@aspnet/signalr/dist/esm/ServerSentEventsTransport.js","./node_modules/@aspnet/signalr/dist/esm/WebSocketTransport.js","./node_modules/@aspnet/signalr/dist/esm/HttpConnection.js","./node_modules/@aspnet/signalr/dist/esm/JsonHubProtocol.js","./node_modules/@aspnet/signalr/dist/esm/HubConnectionBuilder.js","./src/app/_core/signal-r.service.ts","./node_modules/ngx-webstorage-service/fesm2015/ngx-webstorage-service.mjs","./src/app/_core/store.service.ts","./src/app/_core/timezone.service.ts","./src/app/_core/translations.service.ts","./src/app/_shared/ag-grid/components/ag-grid-bit-renderer.component.ts","./src/app/_shared/ag-grid/components/ag-grid-closed-renderer.component.ts","./src/app/_shared/ag-grid/ag-grid-options.service.ts","./src/app/_shared/ag-grid/ag-grid-state.service.ts","./src/app/_shared/ag-grid/ag-grid.service.ts","./src/app/_shared/ag-grid/components/ag-grid-checkbox-header.component.ts","./src/app/_shared/ag-grid/components/ag-grid-checkbox-header.component.html","./src/app/_shared/ag-grid/components/ag-grid-link-renderer.component.ts","./src/app/_shared/ag-grid/components/ag-grid-tooltip.component.ts","./src/app/_shared/datepicker-i18n/datepicker-i18n.ts","./src/app/_shared/directives/agr-renderer.service.ts","./src/app/_shared/directives/auto-focus.directive.ts","./src/app/_shared/directives/resizable.directive.ts","./src/app/_shared/pipes/feature.pipe.ts","./src/app/_shared/pipes/filter.pipe.ts","./src/app/_shared/pipes/format.pipe.ts","./src/app/_shared/pipes/from-now.pipe.ts","./src/app/_shared/pipes/translate.pipe.ts","./src/app/_shared/shared.module.ts","./src/app/_shared/sync-button/sync-button.component.html","./src/app/_shared/sync-button/sync-button.component.ts","./src/app/_shared/toolbar-btn/toolbar-btn.component.ts","./src/app/_shared/toolbar-btn/toolbar-btn.component.html","./src/app/_shared/utils/agr-utils.ts","./src/app/_shared/utils/expression.model.ts","./src/app/item-card/details/details-columns/editable-date-columns/editable-date-columns.component.html","./src/app/item-card/details/details-columns/editable-date-columns/editable-date-columns.component.ts","./src/app/item-card/details/details-columns/editable-lookup-columns/editable-lookup-columns.component.html","./src/app/item-card/details/details-columns/editable-lookup-columns/editable-lookup-columns.component.ts","./src/app/item-card/details/details-columns/editable-number-columns/editable-number-columns.component.html","./src/app/item-card/details/details-columns/editable-number-columns/editable-number-columns.component.ts","./src/app/item-card/details/details-columns/editable-string-columns/editable-string-columns.component.html","./src/app/item-card/details/details-columns/editable-string-columns/editable-string-columns.component.ts","./src/app/item-card/details/details-columns/details-column-model.ts","./src/app/item-card/details/item-card-details.service.ts","./src/app/item-card/models/item-order-route.model.ts","./src/app/item-card/models/item-details.model.ts","./src/app/item-card/models/item-label.model.ts","./src/app/item-card/models/location.model.ts","./src/app/item-card/models/item-simple.model.ts","./src/app/item-card/models/item-undelivered-order.model.ts","./src/app/item-card/item-card.service.ts","./src/app/item-card/models/chart-data-params.model.ts","./src/app/item-card/models/item-card-state.model.ts","./src/app/_shared/loading-dots/loading-dots.component.ts","./src/app/_shared/loading-dots/loading-dots.component.html","./src/app/item-card/chart/models/chart-options.model.ts","./src/app/item-card/chart/item-card-chart.service.ts","./src/app/item-card/grid/models/item-data-point.model.ts","./src/app/_shared/no-data-to-display/no-data-to-display.component.ts","./src/app/item-card/chart/item-card-chart.component.html","./src/app/item-card/chart/item-card-chart.component.ts","./src/app/item-card/grid/item-card-grid.service.ts","./src/app/item-card/grid/item-card-grid.component.ts","./src/app/item-card/grid/item-card-grid.component.html","./src/app/item-card/details/item-card-details-sidebar-pers.ts","./src/app/item-card/details/details-columns/non-editable-columns/non-editable-columns.component.html","./src/app/item-card/details/details-columns/non-editable-columns/non-editable-columns.component.ts","./src/app/item-card/details/item-card-details.component.html","./src/app/item-card/details/item-card-details.component.ts","./src/app/item-card/item-card.component.html","./src/app/item-card/item-card.component.ts","./src/app/item-card/item-card.module.ts","./src/app/nav/execution-list/execution-list.service.ts","./src/app/nav/execution-list/execution-notification.model.ts","./src/app/nav/nav.model.ts","./src/app/settings/users/users-modal/users-modal.service.ts","./src/app/workspaces/details/config/shared/config-checkboxes.model.ts","./src/app/workspaces/details/config/shared/config-cond.model.ts","./src/app/workspaces/details/filters/models/workspace-advanced-filter.model.ts","./src/app/workspaces/details/filters/models/workspace-boolean-filter.model.ts","./src/app/workspaces/details/filters/models/workspace-date-filter.model.ts","./src/app/workspaces/details/filters/models/workspace-filter.model.ts","./src/app/workspaces/details/filters/models/workspace-lookup-filter.model.ts","./src/app/workspaces/details/filters/models/workspace-number-filter.model.ts","./src/app/workspaces/details/filters/models/workspace-period-filter.model.ts","./src/app/workspaces/models/workspace-action.model.ts","./src/app/workspaces/details/config/config-column-aggregation.model.ts","./src/app/workspaces/details/config/config-column-edit-lookup.model.ts","./src/app/workspaces/details/config/config-column-edit.model.ts","./src/app/workspaces/details/config/config-column-format.model.ts","./src/app/workspaces/details/config/config-column-link.model.ts","./src/app/workspaces/details/config/config-column-row.model.ts","./src/app/workspaces/details/config/config-column.model.ts","./src/app/workspaces/models/workspace-column.model.ts","./src/app/workspaces/models/workspace-drilldown.model.ts","./src/app/workspaces/details/config/config-serie-edit.model.ts","./src/app/workspaces/details/config/config-serie-format.model.ts","./src/app/workspaces/details/config/config-serie.model.ts","./src/app/workspaces/models/workspace-serie.model.ts","./src/app/_core/version/api-version.model.ts","./src/app/_core/version/client-version.model.ts","./src/app/_core/version/db-version.model.ts","./src/app/_core/version/app-info.model.ts","./src/environments/environment.prod.ts","./src/app/_core/version/version.service.ts","./src/app/nav/about-modal/about-modal.component.html","./src/app/nav/about-modal/about-modal.component.ts","./src/app/nav/clear-data-modal/clear-data-modal.component.ts","./src/app/nav/clear-data-modal/clear-data-modal.component.html","./src/app/nav/execution-list/execution-list.component.html","./src/app/nav/execution-list/execution-list.component.ts","./src/app/nav/my-profile/my-profile.component.html","./src/app/nav/my-profile/my-profile.component.ts","./src/app/_core/models/custom-action.model.ts","./src/app/nav/custom-actions/custom-actions.service.ts","./src/app/nav/custom-actions/custom-actions.component.html","./src/app/nav/custom-actions/custom-actions.component.ts","./src/app/nav/nav.component.html","./src/app/nav/nav.component.ts","./node_modules/@ngx-progressbar/core/fesm2015/ngx-progressbar-core.js","./node_modules/rxjs/dist/esm/internal/operators/debounce.js","./src/app/app.component.ts","./src/app/app.component.html","./node_modules/@angular/animations/fesm2015/browser.mjs","./node_modules/@angular/platform-browser/fesm2015/animations.mjs","./node_modules/@ngx-progressbar/router/fesm2015/ngx-progressbar-router.js","./src/app/_core/loader.interceptor.ts","./src/app/_core/token.interceptor.ts","./src/app/_core/core.module.ts","./src/app/_core/403-and-404/no-access.component.ts","./src/app/_core/403-and-404/no-access.component.html","./src/app/login/login.component.html","./src/app/login/login.component.ts","./src/app/_core/403-and-404/not-found.component.ts","./src/app/_core/403-and-404/not-found.component.html","./src/app/app-routing.module.ts","./src/app/nav/nav.module.ts","./src/app/app.module.ts","./src/main.ts","./node_modules/source-map-loader/dist/cjs.js","./node_modules/@ag-grid-community/angular/fesm2015/ag-grid-community-angular.js","./node_modules/@ag-grid-community/core/dist/esm/es5/utils/generic.js","./node_modules/@ag-grid-community/core/dist/esm/es5/columns/columnKeyCreator.js","./node_modules/@ag-grid-community/core/dist/esm/es5/utils/object.js","./node_modules/@ag-grid-community/core/dist/esm/es5/utils/function.js","./node_modules/@ag-grid-community/core/dist/esm/es5/context/context.js","./node_modules/@ag-grid-community/core/dist/esm/es5/eventService.js","./node_modules/@ag-grid-community/core/dist/esm/es5/constants/constants.js","./node_modules/@ag-grid-community/core/dist/esm/es5/modules/moduleNames.js","./node_modules/@ag-grid-community/core/dist/esm/es5/modules/moduleRegistry.js","./node_modules/@ag-grid-community/core/dist/esm/es5/entities/column.js","./node_modules/@ag-grid-community/core/dist/esm/es5/utils/array.js","./node_modules/@ag-grid-community/core/dist/esm/es5/entities/columnGroup.js","./node_modules/@ag-grid-community/core/dist/esm/es5/entities/providedColumnGroup.js","./node_modules/@ag-grid-community/core/dist/esm/es5/entities/defaultColumnTypes.js","./node_modules/@ag-grid-community/core/dist/esm/es5/utils/event.js","./node_modules/@ag-grid-community/core/dist/esm/es5/context/beanStub.js","./node_modules/@ag-grid-community/core/dist/esm/es5/columns/columnFactory.js","./node_modules/@ag-grid-community/core/dist/esm/es5/eventKeys.js","./node_modules/@ag-grid-community/core/dist/esm/es5/columns/groupInstanceIdCreator.js","./node_modules/@ag-grid-community/core/dist/esm/es5/utils/string.js","./node_modules/@ag-grid-community/core/dist/esm/es5/utils/map.js","./node_modules/@ag-grid-community/core/dist/esm/es5/columns/columnModel.js","./node_modules/@ag-grid-community/core/dist/esm/es5/columns/columnUtils.js","./node_modules/@ag-grid-community/core/dist/esm/es5/columns/displayedGroupCreator.js","./node_modules/@ag-grid-community/core/dist/esm/es5/propertyKeys.js","./node_modules/@ag-grid-community/core/dist/esm/es5/components/componentUtil.js","./node_modules/@ag-grid-community/core/dist/esm/es5/components/agStackComponentsRegistry.js","./node_modules/@ag-grid-community/core/dist/esm/es5/utils/browser.js","./node_modules/@ag-grid-community/core/dist/esm/es5/utils/dom.js","./node_modules/@ag-grid-community/core/dist/esm/es5/components/colDefUtil.js","./node_modules/@ag-grid-community/core/dist/esm/es5/utils/color.js","./node_modules/@ag-grid-community/core/dist/esm/es5/utils/general.js","./node_modules/@ag-grid-community/core/dist/esm/es5/utils/aria.js","./node_modules/@ag-grid-community/core/dist/esm/es5/utils/csv.js","./node_modules/@ag-grid-community/core/dist/esm/es5/utils/number.js","./node_modules/@ag-grid-community/core/dist/esm/es5/utils/date.js","./node_modules/@ag-grid-community/core/dist/esm/es5/utils/fuzzyMatch.js","./node_modules/@ag-grid-community/core/dist/esm/es5/utils/icon.js","./node_modules/@ag-grid-community/core/dist/esm/es5/utils/keyboard.js","./node_modules/@ag-grid-community/core/dist/esm/es5/utils/mouse.js","./node_modules/@ag-grid-community/core/dist/esm/es5/utils/rowNode.js","./node_modules/@ag-grid-community/core/dist/esm/es5/utils/set.js","./node_modules/@ag-grid-community/core/dist/esm/es5/utils/utils.js","./node_modules/@ag-grid-community/core/dist/esm/es5/utils/numberSequence.js","./node_modules/@ag-grid-community/core/dist/esm/es5/utils/promise.js","./node_modules/@ag-grid-community/core/dist/esm/es5/widgets/customTooltipFeature.js","./node_modules/@ag-grid-community/core/dist/esm/es5/widgets/component.js","./node_modules/@ag-grid-community/core/dist/esm/es5/widgets/componentAnnotations.js","./node_modules/@ag-grid-community/core/dist/esm/es5/filter/floating/provided/readOnlyFloatingFilter.js","./node_modules/@ag-grid-community/core/dist/esm/es5/filter/provided/date/dateCompWrapper.js","./node_modules/@ag-grid-community/core/dist/esm/es5/filter/provided/optionsFactory.js","./node_modules/@ag-grid-community/core/dist/esm/es5/filter/filterLocaleText.js","./node_modules/@ag-grid-community/core/dist/esm/es5/constants/keyCode.js","./node_modules/@ag-grid-community/core/dist/esm/es5/widgets/managedFocusFeature.js","./node_modules/@ag-grid-community/core/dist/esm/es5/filter/provided/providedFilter.js","./node_modules/@ag-grid-community/core/dist/esm/es5/widgets/agAbstractLabel.js","./node_modules/@ag-grid-community/core/dist/esm/es5/widgets/agAbstractField.js","./node_modules/@ag-grid-community/core/dist/esm/es5/widgets/agPickerField.js","./node_modules/@ag-grid-community/core/dist/esm/es5/widgets/agList.js","./node_modules/@ag-grid-community/core/dist/esm/es5/widgets/agSelect.js","./node_modules/@ag-grid-community/core/dist/esm/es5/widgets/agAbstractInputField.js","./node_modules/@ag-grid-community/core/dist/esm/es5/filter/provided/simpleFilter.js","./node_modules/@ag-grid-community/core/dist/esm/es5/filter/provided/scalarFilter.js","./node_modules/@ag-grid-community/core/dist/esm/es5/filter/provided/date/dateFilter.js","./node_modules/@ag-grid-community/core/dist/esm/es5/filter/floating/provided/simpleFloatingFilter.js","./node_modules/@ag-grid-community/core/dist/esm/es5/filter/provided/date/dateFloatingFilter.js","./node_modules/@ag-grid-community/core/dist/esm/es5/filter/provided/date/defaultDateComponent.js","./node_modules/@ag-grid-community/core/dist/esm/es5/filter/provided/number/numberFilter.js","./node_modules/@ag-grid-community/core/dist/esm/es5/filter/provided/text/textFilter.js","./node_modules/@ag-grid-community/core/dist/esm/es5/filter/floating/provided/textInputFloatingFilter.js","./node_modules/@ag-grid-community/core/dist/esm/es5/filter/provided/number/numberFloatingFilter.js","./node_modules/@ag-grid-community/core/dist/esm/es5/filter/provided/text/textFloatingFilter.js","./node_modules/@ag-grid-community/core/dist/esm/es5/widgets/touchListener.js","./node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/cells/column/headerComp.js","./node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/cells/columnGroup/headerGroupComp.js","./node_modules/@ag-grid-community/core/dist/esm/es5/widgets/popupComponent.js","./node_modules/@ag-grid-community/core/dist/esm/es5/rendering/cellEditors/largeTextCellEditor.js","./node_modules/@ag-grid-community/core/dist/esm/es5/rendering/cellEditors/selectCellEditor.js","./node_modules/@ag-grid-community/core/dist/esm/es5/rendering/cellEditors/popupSelectCellEditor.js","./node_modules/@ag-grid-community/core/dist/esm/es5/rendering/cellEditors/textCellEditor.js","./node_modules/@ag-grid-community/core/dist/esm/es5/rendering/cellEditors/popupTextCellEditor.js","./node_modules/@ag-grid-community/core/dist/esm/es5/rendering/cellRenderers/animateShowChangeCellRenderer.js","./node_modules/@ag-grid-community/core/dist/esm/es5/rendering/cellRenderers/animateSlideCellRenderer.js","./node_modules/@ag-grid-community/core/dist/esm/es5/entities/rowNode.js","./node_modules/@ag-grid-community/core/dist/esm/es5/rendering/checkboxSelectionComponent.js","./node_modules/@ag-grid-community/core/dist/esm/es5/dragAndDrop/dragAndDropService.js","./node_modules/@ag-grid-community/core/dist/esm/es5/rendering/row/rowDragComp.js","./node_modules/@ag-grid-community/core/dist/esm/es5/rendering/cellRenderers/groupCellRendererCtrl.js","./node_modules/@ag-grid-community/core/dist/esm/es5/rendering/cellRenderers/groupCellRenderer.js","./node_modules/@ag-grid-community/core/dist/esm/es5/rendering/cellRenderers/loadingCellRenderer.js","./node_modules/@ag-grid-community/core/dist/esm/es5/rendering/overlays/loadingOverlayComponent.js","./node_modules/@ag-grid-community/core/dist/esm/es5/rendering/overlays/noRowsOverlayComponent.js","./node_modules/@ag-grid-community/core/dist/esm/es5/rendering/tooltipComponent.js","./node_modules/@ag-grid-community/core/dist/esm/es5/components/framework/userComponentRegistry.js","./node_modules/@ag-grid-community/core/dist/esm/es5/components/framework/componentTypes.js","./node_modules/@ag-grid-community/core/dist/esm/es5/filter/floating/floatingFilterMapper.js","./node_modules/@ag-grid-community/core/dist/esm/es5/components/framework/userComponentFactory.js","./node_modules/@ag-grid-community/core/dist/esm/es5/entities/sideBar.js","./node_modules/@ag-grid-community/core/dist/esm/es5/gridOptionsWrapper.js","./node_modules/@ag-grid-community/core/dist/esm/es5/utils/changedPath.js","./node_modules/@ag-grid-community/core/dist/esm/es5/selectionService.js","./node_modules/@ag-grid-community/core/dist/esm/es5/columns/columnApi.js","./node_modules/@ag-grid-community/core/dist/esm/es5/interfaces/IRangeService.js","./node_modules/@ag-grid-community/core/dist/esm/es5/rendering/cell/cellRangeFeature.js","./node_modules/@ag-grid-community/core/dist/esm/es5/rendering/cell/cellPositionFeature.js","./node_modules/@ag-grid-community/core/dist/esm/es5/rendering/cell/cellCustomStyleFeature.js","./node_modules/@ag-grid-community/core/dist/esm/es5/widgets/tooltipFeature.js","./node_modules/@ag-grid-community/core/dist/esm/es5/rendering/beans.js","./node_modules/@ag-grid-community/core/dist/esm/es5/rendering/cell/cellMouseListenerFeature.js","./node_modules/@ag-grid-community/core/dist/esm/es5/rendering/cell/cellKeyboardListenerFeature.js","./node_modules/@ag-grid-community/core/dist/esm/es5/rendering/dndSourceComp.js","./node_modules/@ag-grid-community/core/dist/esm/es5/rendering/cell/cellCtrl.js","./node_modules/@ag-grid-community/core/dist/esm/es5/rendering/row/angularRowUtils.js","./node_modules/@ag-grid-community/core/dist/esm/es5/gridBodyComp/rowContainer/rowContainerEventsFeature.js","./node_modules/@ag-grid-community/core/dist/esm/es5/gridBodyComp/viewportSizeFeature.js","./node_modules/@ag-grid-community/core/dist/esm/es5/gridBodyComp/rowContainer/setPinnedLeftWidthFeature.js","./node_modules/@ag-grid-community/core/dist/esm/es5/gridBodyComp/rowContainer/setPinnedRightWidthFeature.js","./node_modules/@ag-grid-community/core/dist/esm/es5/gridBodyComp/rowContainer/setHeightFeature.js","./node_modules/@ag-grid-community/core/dist/esm/es5/gridBodyComp/rowContainer/dragListenerFeature.js","./node_modules/@ag-grid-community/core/dist/esm/es5/gridBodyComp/centerWidthFeature.js","./node_modules/@ag-grid-community/core/dist/esm/es5/gridBodyComp/rowContainer/rowContainerCtrl.js","./node_modules/@ag-grid-community/core/dist/esm/es5/rendering/row/rowCtrl.js","./node_modules/@ag-grid-community/core/dist/esm/es5/rendering/rowRenderer.js","./node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/cells/abstractCell/abstractHeaderCellComp.js","./node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/cells/column/headerCellComp.js","./node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/cells/columnGroup/headerGroupCellComp.js","./node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/cells/floatingFilter/headerFilterCellComp.js","./node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/row/headerRowComp.js","./node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/common/headerNavigationService.js","./node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/gridHeaderCtrl.js","./node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/columnDrag/moveColumnFeature.js","./node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/columnDrag/bodyDropPivotTarget.js","./node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/columnDrag/bodyDropTarget.js","./node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/cells/abstractCell/abstractHeaderCellCtrl.js","./node_modules/@ag-grid-community/core/dist/esm/es5/interfaces/iExcelCreator.js","./node_modules/@ag-grid-community/core/dist/esm/es5/interfaces/iClientSideRowModel.js","./node_modules/@ag-grid-community/core/dist/esm/es5/gridApi.js","./node_modules/@ag-grid-community/core/dist/esm/es5/rendering/features/setLeftFeature.js","./node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/cells/hoverFeature.js","./node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/cells/floatingFilter/headerFilterCellCtrl.js","./node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/cells/cssClassApplier.js","./node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/cells/column/resizeFeature.js","./node_modules/@ag-grid-community/core/dist/esm/es5/widgets/agCheckbox.js","./node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/cells/column/selectAllFeature.js","./node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/cells/column/headerCellCtrl.js","./node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/cells/columnGroup/groupResizeFeature.js","./node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/cells/columnGroup/groupWidthFeature.js","./node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/cells/columnGroup/headerGroupCellCtrl.js","./node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/row/headerRowCtrl.js","./node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/rowContainer/headerRowContainerCtrl.js","./node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/rowContainer/headerRowContainerComp.js","./node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/gridHeaderComp.js","./node_modules/@ag-grid-community/core/dist/esm/es5/filter/filterManager.js","./node_modules/@ag-grid-community/core/dist/esm/es5/valueService/valueService.js","./node_modules/@ag-grid-community/core/dist/esm/es5/styling/layoutFeature.js","./node_modules/@ag-grid-community/core/dist/esm/es5/gridBodyComp/gridBodyScrollFeature.js","./node_modules/@ag-grid-community/core/dist/esm/es5/autoScrollService.js","./node_modules/@ag-grid-community/core/dist/esm/es5/gridBodyComp/rowDragFeature.js","./node_modules/@ag-grid-community/core/dist/esm/es5/gridBodyComp/gridBodyCtrl.js","./node_modules/@ag-grid-community/core/dist/esm/es5/gridBodyComp/gridBodyComp.js","./node_modules/@ag-grid-community/core/dist/esm/es5/valueService/expressionService.js","./node_modules/@ag-grid-community/core/dist/esm/es5/templateService.js","./node_modules/@ag-grid-community/core/dist/esm/es5/focusService.js","./node_modules/@ag-grid-community/core/dist/esm/es5/widgets/popupService.js","./node_modules/@ag-grid-community/core/dist/esm/es5/logger.js","./node_modules/@ag-grid-community/core/dist/esm/es5/rendering/autoWidthCalculator.js","./node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/common/horizontalResizeService.js","./node_modules/@ag-grid-community/core/dist/esm/es5/gridComp/gridCtrl.js","./node_modules/@ag-grid-community/core/dist/esm/es5/widgets/tabGuardCtrl.js","./node_modules/@ag-grid-community/core/dist/esm/es5/widgets/tabGuardComp.js","./node_modules/@ag-grid-community/core/dist/esm/es5/gridComp/gridComp.js","./node_modules/@ag-grid-community/core/dist/esm/es5/dragAndDrop/dragService.js","./node_modules/@ag-grid-community/core/dist/esm/es5/sortController.js","./node_modules/@ag-grid-community/core/dist/esm/es5/gridBodyComp/mouseEventService.js","./node_modules/@ag-grid-community/core/dist/esm/es5/cellNavigationService.js","./node_modules/@ag-grid-community/core/dist/esm/es5/rendering/valueFormatterService.js","./node_modules/@ag-grid-community/core/dist/esm/es5/widgets/agRadioButton.js","./node_modules/@ag-grid-community/core/dist/esm/es5/vanillaFrameworkOverrides.js","./node_modules/@ag-grid-community/core/dist/esm/es5/gridBodyComp/scrollVisibleService.js","./node_modules/@ag-grid-community/core/dist/esm/es5/styling/stylingService.js","./node_modules/@ag-grid-community/core/dist/esm/es5/rendering/columnHoverService.js","./node_modules/@ag-grid-community/core/dist/esm/es5/rendering/columnAnimationService.js","./node_modules/@ag-grid-community/core/dist/esm/es5/columns/autoGroupColService.js","./node_modules/@ag-grid-community/core/dist/esm/es5/pagination/paginationProxy.js","./node_modules/@ag-grid-community/core/dist/esm/es5/pagination/paginationAutoPageSizeService.js","./node_modules/@ag-grid-community/core/dist/esm/es5/valueService/valueCache.js","./node_modules/@ag-grid-community/core/dist/esm/es5/valueService/changeDetectionService.js","./node_modules/@ag-grid-community/core/dist/esm/es5/alignedGridsService.js","./node_modules/@ag-grid-community/core/dist/esm/es5/components/framework/agComponentUtils.js","./node_modules/@ag-grid-community/core/dist/esm/es5/components/framework/componentMetadataProvider.js","./node_modules/@ag-grid-community/core/dist/esm/es5/environment.js","./node_modules/@ag-grid-community/core/dist/esm/es5/misc/animationFrameService.js","./node_modules/@ag-grid-community/core/dist/esm/es5/gridBodyComp/navigationService.js","./node_modules/@ag-grid-community/core/dist/esm/es5/rendering/rowContainerHeightService.js","./node_modules/@ag-grid-community/core/dist/esm/es5/rowNodes/selectableService.js","./node_modules/@ag-grid-community/core/dist/esm/es5/pagination/paginationComp.js","./node_modules/@ag-grid-community/core/dist/esm/es5/misc/resizeObserverService.js","./node_modules/@ag-grid-community/core/dist/esm/es5/rendering/overlays/overlayWrapperComponent.js","./node_modules/@ag-grid-community/core/dist/esm/es5/widgets/agGroupComponent.js","./node_modules/@ag-grid-community/core/dist/esm/es5/rendering/features/positionableFeature.js","./node_modules/@ag-grid-community/core/dist/esm/es5/widgets/agPanel.js","./node_modules/@ag-grid-community/core/dist/esm/es5/widgets/agDialog.js","./node_modules/@ag-grid-community/core/dist/esm/es5/widgets/agInputTextField.js","./node_modules/@ag-grid-community/core/dist/esm/es5/widgets/agInputTextArea.js","./node_modules/@ag-grid-community/core/dist/esm/es5/widgets/agSlider.js","./node_modules/@ag-grid-community/core/dist/esm/es5/widgets/agColorPanel.js","./node_modules/@ag-grid-community/core/dist/esm/es5/widgets/agColorPicker.js","./node_modules/@ag-grid-community/core/dist/esm/es5/widgets/agInputNumberField.js","./node_modules/@ag-grid-community/core/dist/esm/es5/widgets/agInputRange.js","./node_modules/@ag-grid-community/core/dist/esm/es5/widgets/agAngleSelect.js","./node_modules/@ag-grid-community/core/dist/esm/es5/widgets/agToggleButton.js","./node_modules/@ag-grid-community/core/dist/esm/es5/entities/rowPosition.js","./node_modules/@ag-grid-community/core/dist/esm/es5/entities/cellPosition.js","./node_modules/@ag-grid-community/core/dist/esm/es5/pinnedRowModel/pinnedRowModel.js","./node_modules/@ag-grid-community/core/dist/esm/es5/undoRedo/undoRedoStack.js","./node_modules/@ag-grid-community/core/dist/esm/es5/undoRedo/undoRedoService.js","./node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/common/headerPosition.js","./node_modules/@ag-grid-community/core/dist/esm/es5/columns/columnDefFactory.js","./node_modules/@ag-grid-community/core/dist/esm/es5/rendering/row/rowCssClassCalculator.js","./node_modules/@ag-grid-community/core/dist/esm/es5/rowNodeCache/rowNodeBlock.js","./node_modules/@ag-grid-community/core/dist/esm/es5/rowNodeCache/rowNodeBlockLoader.js","./node_modules/@ag-grid-community/core/dist/esm/es5/rowNodes/rowNodeSorter.js","./node_modules/@ag-grid-community/core/dist/esm/es5/ctrlsService.js","./node_modules/@ag-grid-community/core/dist/esm/es5/ctrlsFactory.js","./node_modules/@ag-grid-community/core/dist/esm/es5/gridBodyComp/fakeHScrollCtrl.js","./node_modules/@ag-grid-community/core/dist/esm/es5/gridBodyComp/fakeHScrollComp.js","./node_modules/@ag-grid-community/core/dist/esm/es5/gridBodyComp/pinnedWidthService.js","./node_modules/@ag-grid-community/core/dist/esm/es5/rendering/cellEditors/popupEditorWrapper.js","./node_modules/@ag-grid-community/core/dist/esm/es5/rendering/cell/cellComp.js","./node_modules/@ag-grid-community/core/dist/esm/es5/rendering/row/rowComp.js","./node_modules/@ag-grid-community/core/dist/esm/es5/gridBodyComp/rowContainer/rowContainerComp.js","./node_modules/@ag-grid-community/core/dist/esm/es5/entities/rowNodeEventThrottle.js","./node_modules/@ag-grid-community/core/dist/esm/es5/headerRendering/cells/column/standardMenu.js","./node_modules/@ag-grid-community/core/dist/esm/es5/grid.js","./node_modules/@ag-grid-community/core/dist/esm/es5/layout/tabbedLayout.js","./node_modules/@ag-grid-community/core/dist/esm/es5/interfaces/serverSideTransaction.js","./node_modules/@ag-grid-community/core/dist/esm/es5/widgets/agMenuList.js","./node_modules/@ag-grid-community/core/dist/esm/es5/widgets/agMenuPanel.js","./node_modules/@ag-grid-community/core/dist/esm/es5/widgets/agMenuItemComponent.js","./node_modules/@ag-grid-community/core/dist/esm/es5/widgets/virtualList.js","./node_modules/@ag-grid-community/core/dist/esm/es5/components/framework/frameworkComponentWrapper.js","./node_modules/@ag-grid-community/core/dist/esm/es5/main.js","./node_modules/@ag-grid-community/client-side-row-model/dist/esm/es5/clientSideRowModel/clientSideRowModel.js","./node_modules/@ag-grid-community/client-side-row-model/dist/esm/es5/clientSideRowModel/clientSideNodeManager.js","./node_modules/@ag-grid-community/client-side-row-model/dist/esm/es5/clientSideRowModel/filterStage.js","./node_modules/@ag-grid-community/client-side-row-model/dist/esm/es5/clientSideRowModel/sortStage.js","./node_modules/@ag-grid-community/client-side-row-model/dist/esm/es5/clientSideRowModel/flattenStage.js","./node_modules/@ag-grid-community/client-side-row-model/dist/esm/es5/clientSideRowModel/sortService.js","./node_modules/@ag-grid-community/client-side-row-model/dist/esm/es5/clientSideRowModel/filterService.js","./node_modules/@ag-grid-community/client-side-row-model/dist/esm/es5/clientSideRowModel/immutableService.js","./node_modules/@ag-grid-community/client-side-row-model/dist/esm/es5/clientSideRowModelModule.js","./node_modules/@ag-grid-community/infinite-row-model/dist/esm/es5/infiniteRowModel/infiniteBlock.js","./node_modules/@ag-grid-community/infinite-row-model/dist/esm/es5/infiniteRowModel/infiniteCache.js","./node_modules/@ag-grid-community/infinite-row-model/dist/esm/es5/infiniteRowModel/infiniteRowModel.js","./node_modules/@ag-grid-community/infinite-row-model/dist/esm/es5/infiniteRowModelModule.js","./node_modules/@ag-grid-community/csv-export/dist/esm/es5/csvExport/baseCreator.js","./node_modules/@ag-grid-community/csv-export/dist/esm/es5/csvExport/sessions/baseGridSerializingSession.js","./node_modules/@ag-grid-community/csv-export/dist/esm/es5/csvExport/downloader.js","./node_modules/@ag-grid-community/csv-export/dist/esm/es5/csvExport/sessions/csvSerializingSession.js","./node_modules/@ag-grid-community/csv-export/dist/esm/es5/csvExport/csvCreator.js","./node_modules/@ag-grid-community/csv-export/dist/esm/es5/csvExport/gridSerializer.js","./node_modules/@ag-grid-community/csv-export/dist/esm/es5/csvExportModule.js","./node_modules/@ag-grid-community/csv-export/dist/esm/es5/csvExport/xmlFactory.js","./node_modules/@ag-grid-community/csv-export/dist/esm/es5/csvExport/zipContainer.js","./node_modules/@ag-grid-community/all-modules/dist/esm/es5/main.js","./node_modules/@ag-grid-enterprise/core/dist/esm/es5/licenseManager.js","./node_modules/@ag-grid-enterprise/core/dist/esm/es5/license/md5.js","./node_modules/@ag-grid-enterprise/core/dist/esm/es5/license/watermark.js","./node_modules/@ag-grid-enterprise/core/dist/esm/es5/agGridEnterpriseModule.js","./node_modules/@ag-grid-enterprise/clipboard/dist/esm/es5/clipboard/clipboardService.js","./node_modules/@ag-grid-enterprise/clipboard/dist/esm/es5/clipboardModule.js","./node_modules/@ag-grid-enterprise/column-tool-panel/dist/esm/es5/columnToolPanel/primaryColsHeaderPanel.js","./node_modules/@ag-grid-enterprise/column-tool-panel/dist/esm/es5/columnToolPanel/columnModelItem.js","./node_modules/@ag-grid-enterprise/column-tool-panel/dist/esm/es5/columnToolPanel/toolPanelContextMenu.js","./node_modules/@ag-grid-enterprise/column-tool-panel/dist/esm/es5/columnToolPanel/toolPanelColumnGroupComp.js","./node_modules/@ag-grid-enterprise/column-tool-panel/dist/esm/es5/columnToolPanel/primaryColsListPanelItemDragFeature.js","./node_modules/@ag-grid-enterprise/column-tool-panel/dist/esm/es5/columnToolPanel/toolPanelColumnComp.js","./node_modules/@ag-grid-enterprise/column-tool-panel/dist/esm/es5/columnToolPanel/primaryColsListPanel.js","./node_modules/@ag-grid-enterprise/column-tool-panel/dist/esm/es5/columnToolPanel/pivotModePanel.js","./node_modules/@ag-grid-enterprise/row-grouping/dist/esm/es5/rowGrouping/aggregationStage.js","./node_modules/@ag-grid-enterprise/row-grouping/dist/esm/es5/rowGrouping/batchRemover.js","./node_modules/@ag-grid-enterprise/row-grouping/dist/esm/es5/rowGrouping/groupStage.js","./node_modules/@ag-grid-enterprise/row-grouping/dist/esm/es5/rowGrouping/pivotColDefService.js","./node_modules/@ag-grid-enterprise/row-grouping/dist/esm/es5/rowGrouping/pivotStage.js","./node_modules/@ag-grid-enterprise/row-grouping/dist/esm/es5/rowGrouping/aggFuncService.js","./node_modules/@ag-grid-enterprise/row-grouping/dist/esm/es5/rowGrouping/columnDropZones/dropZoneColumnComp.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/files/ooxml/styles/stylesheet.js","./node_modules/@ag-grid-enterprise/row-grouping/dist/esm/es5/rowGrouping/columnDropZones/baseDropZonePanel.js","./node_modules/@ag-grid-enterprise/row-grouping/dist/esm/es5/rowGrouping/columnDropZones/rowGroupDropZonePanel.js","./node_modules/@ag-grid-enterprise/row-grouping/dist/esm/es5/rowGrouping/columnDropZones/pivotDropZonePanel.js","./node_modules/@ag-grid-enterprise/row-grouping/dist/esm/es5/rowGrouping/columnDropZones/gridHeaderDropZones.js","./node_modules/@ag-grid-enterprise/row-grouping/dist/esm/es5/rowGroupingModule.js","./node_modules/@ag-grid-enterprise/row-grouping/dist/esm/es5/rowGrouping/columnDropZones/valueDropZonePanel.js","./node_modules/@ag-grid-enterprise/column-tool-panel/dist/esm/es5/columnToolPanel/primaryColsPanel.js","./node_modules/@ag-grid-enterprise/column-tool-panel/dist/esm/es5/columnToolPanel/columnToolPanel.js","./node_modules/@ag-grid-enterprise/side-bar/dist/esm/es5/sideBar/horizontalResizeComp.js","./node_modules/@ag-grid-enterprise/side-bar/dist/esm/es5/sideBar/sideBarButtonComp.js","./node_modules/@ag-grid-enterprise/side-bar/dist/esm/es5/sideBar/sideBarButtonsComp.js","./node_modules/@ag-grid-enterprise/side-bar/dist/esm/es5/sideBar/toolPanelWrapper.js","./node_modules/@ag-grid-enterprise/side-bar/dist/esm/es5/sideBar/sideBarComp.js","./node_modules/@ag-grid-enterprise/side-bar/dist/esm/es5/sideBar/common/toolPanelColDefService.js","./node_modules/@ag-grid-enterprise/side-bar/dist/esm/es5/sideBarModule.js","./node_modules/@ag-grid-enterprise/column-tool-panel/dist/esm/es5/columnToolPanel/modelItemUtils.js","./node_modules/@ag-grid-enterprise/column-tool-panel/dist/esm/es5/columnsToolPanelModule.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/files/xml/workbook.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/files/xml/excelWorkbook.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/files/xml/column.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/files/xml/cell.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/files/xml/row.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/files/xml/worksheet.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/files/xml/documentProperties.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/files/xml/styles/alignment.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/files/xml/styles/borders.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/files/xml/styles/font.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/files/xml/styles/interior.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/files/xml/styles/protection.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/files/xml/styles/numberFormat.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/files/xml/styles/style.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/excelXmlFactory.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/assets/excelConstants.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/assets/excelUtils.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/baseExcelSerializingSession.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/excelXmlSerializingSession.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/files/ooxml/core.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/files/ooxml/contentType.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/files/ooxml/contentTypes.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/files/ooxml/drawing.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/files/ooxml/themes/office/colorScheme.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/files/ooxml/themes/office/fontScheme.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/files/ooxml/themes/office/formatScheme.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/files/ooxml/themes/office/themeElements.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/files/ooxml/themes/office.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/files/ooxml/sharedStrings.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/files/ooxml/styles/numberFormat.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/files/ooxml/styles/numberFormats.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/files/ooxml/styles/font.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/files/ooxml/styles/fonts.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/files/ooxml/styles/fill.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/files/ooxml/styles/fills.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/assets/excelLegacyConvert.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/files/ooxml/styles/border.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/files/ooxml/styles/borders.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/files/ooxml/styles/alignment.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/files/ooxml/styles/protection.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/files/ooxml/styles/xf.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/files/ooxml/styles/cellStyleXfs.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/files/ooxml/styles/cellXfs.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/files/ooxml/styles/cellStyle.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/files/ooxml/styles/cellStyles.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/files/ooxml/sheet.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/files/ooxml/sheets.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/files/ooxml/workbook.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/files/ooxml/column.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/files/ooxml/cell.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/files/ooxml/row.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/files/ooxml/mergeCell.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/files/ooxml/worksheet.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/files/ooxml/relationship.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/files/ooxml/relationships.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/excelXlsxFactory.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/excelXlsxSerializingSession.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExport/excelCreator.js","./node_modules/@ag-grid-enterprise/excel-export/dist/esm/es5/excelExportModule.js","./node_modules/@ag-grid-enterprise/filter-tool-panel/dist/esm/es5/filterToolPanel/filtersToolPanelHeaderPanel.js","./node_modules/@ag-grid-enterprise/filter-tool-panel/dist/esm/es5/filterToolPanel/toolPanelFilterComp.js","./node_modules/@ag-grid-enterprise/filter-tool-panel/dist/esm/es5/filterToolPanel/toolPanelFilterGroupComp.js","./node_modules/@ag-grid-enterprise/filter-tool-panel/dist/esm/es5/filterToolPanel/filtersToolPanelListPanel.js","./node_modules/@ag-grid-enterprise/filter-tool-panel/dist/esm/es5/filterToolPanel/filtersToolPanel.js","./node_modules/@ag-grid-enterprise/filter-tool-panel/dist/esm/es5/filtersToolPanelModule.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/chartDatasource.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/chartDataModel.js","./node_modules/ag-charts-community/dist/esm/es5/util/observable.js","./node_modules/ag-charts-community/dist/esm/es5/util/padding.js","./node_modules/ag-charts-community/dist/esm/es5/scene/bbox.js","./node_modules/ag-charts-community/dist/esm/es5/scene/matrix.js","./node_modules/ag-charts-community/dist/esm/es5/util/id.js","./node_modules/ag-charts-community/dist/esm/es5/scene/node.js","./node_modules/ag-charts-community/dist/esm/es5/util/object.js","./node_modules/ag-charts-community/dist/esm/es5/scene/shape/shape.js","./node_modules/ag-charts-community/dist/esm/es5/canvas/hdpiCanvas.js","./node_modules/ag-charts-community/dist/esm/es5/scene/shape/text.js","./node_modules/ag-charts-community/dist/esm/es5/caption.js","./node_modules/ag-charts-community/dist/esm/es5/util/ticks.js","./node_modules/ag-charts-community/dist/esm/es5/interpolate/number.js","./node_modules/ag-charts-community/dist/esm/es5/util/color.js","./node_modules/ag-charts-community/dist/esm/es5/interpolate/color.js","./node_modules/ag-charts-community/dist/esm/es5/interpolate/value.js","./node_modules/ag-charts-community/dist/esm/es5/interpolate/constant.js","./node_modules/ag-charts-community/dist/esm/es5/interpolate/date.js","./node_modules/ag-charts-community/dist/esm/es5/interpolate/array.js","./node_modules/ag-charts-community/dist/esm/es5/interpolate/object.js","./node_modules/ag-charts-community/dist/esm/es5/util/compare.js","./node_modules/ag-charts-community/dist/esm/es5/scale/continuousScale.js","./node_modules/ag-charts-community/dist/esm/es5/util/numberFormat.js","./node_modules/ag-charts-community/dist/esm/es5/util/bisect.js","./node_modules/ag-charts-community/dist/esm/es5/scale/linearScale.js","./node_modules/ag-charts-community/dist/esm/es5/util/array.js","./node_modules/ag-charts-community/dist/esm/es5/util/value.js","./node_modules/ag-charts-community/dist/esm/es5/scene/group.js","./node_modules/ag-charts-community/dist/esm/es5/scene/selection.js","./node_modules/ag-charts-community/dist/esm/es5/scene/shape/line.js","./node_modules/ag-charts-community/dist/esm/es5/scene/polyRoots.js","./node_modules/ag-charts-community/dist/esm/es5/scene/intersection.js","./node_modules/ag-charts-community/dist/esm/es5/scene/path2D.js","./node_modules/ag-charts-community/dist/esm/es5/scene/shape/path.js","./node_modules/ag-charts-community/dist/esm/es5/util/angle.js","./node_modules/ag-charts-community/dist/esm/es5/util/number.js","./node_modules/ag-charts-community/dist/esm/es5/scene/shape/arc.js","./node_modules/ag-charts-community/dist/esm/es5/util/function.js","./node_modules/ag-charts-community/dist/esm/es5/axis.js","./node_modules/ag-charts-community/dist/esm/es5/chart/chartAxis.js","./node_modules/ag-charts-community/dist/esm/es5/chart/axis/numberAxis.js","./node_modules/ag-charts-community/dist/esm/es5/util/secondaryAxisTicks.js","./node_modules/ag-charts-community/dist/esm/es5/scale/bandScale.js","./node_modules/ag-charts-community/dist/esm/es5/chart/axis/categoryAxis.js","./node_modules/ag-charts-community/dist/esm/es5/layout/tree.js","./node_modules/ag-charts-community/dist/esm/es5/chart/axis/groupedCategoryAxis.js","./node_modules/ag-charts-community/dist/esm/es5/util/time/interval.js","./node_modules/ag-charts-community/dist/esm/es5/util/time/millisecond.js","./node_modules/ag-charts-community/dist/esm/es5/util/time/duration.js","./node_modules/ag-charts-community/dist/esm/es5/util/time/second.js","./node_modules/ag-charts-community/dist/esm/es5/util/time/minute.js","./node_modules/ag-charts-community/dist/esm/es5/util/time/hour.js","./node_modules/ag-charts-community/dist/esm/es5/util/time/day.js","./node_modules/ag-charts-community/dist/esm/es5/util/time/week.js","./node_modules/ag-charts-community/dist/esm/es5/util/time/month.js","./node_modules/ag-charts-community/dist/esm/es5/util/time/year.js","./node_modules/ag-charts-community/dist/esm/es5/util/time/utcDay.js","./node_modules/ag-charts-community/dist/esm/es5/util/time/utcYear.js","./node_modules/ag-charts-community/dist/esm/es5/util/time/utcWeek.js","./node_modules/ag-charts-community/dist/esm/es5/util/time/format/locale.js","./node_modules/ag-charts-community/dist/esm/es5/util/time/format/defaultLocale.js","./node_modules/ag-charts-community/dist/esm/es5/scale/timeScale.js","./node_modules/ag-charts-community/dist/esm/es5/chart/axis/timeAxis.js","./node_modules/ag-charts-community/dist/esm/es5/scene/scene.js","./node_modules/ag-charts-community/dist/esm/es5/scene/gradient/linearGradient.js","./node_modules/ag-charts-community/dist/esm/es5/scene/gradient/gradient.js","./node_modules/ag-charts-community/dist/esm/es5/scene/shape/rect.js","./node_modules/ag-charts-community/dist/esm/es5/chart/marker/marker.js","./node_modules/ag-charts-community/dist/esm/es5/chart/marker/square.js","./node_modules/ag-charts-community/dist/esm/es5/chart/markerLabel.js","./node_modules/ag-charts-community/dist/esm/es5/chart/marker/circle.js","./node_modules/ag-charts-community/dist/esm/es5/chart/marker/cross.js","./node_modules/ag-charts-community/dist/esm/es5/chart/marker/diamond.js","./node_modules/ag-charts-community/dist/esm/es5/chart/marker/heart.js","./node_modules/ag-charts-community/dist/esm/es5/chart/marker/plus.js","./node_modules/ag-charts-community/dist/esm/es5/chart/marker/triangle.js","./node_modules/ag-charts-community/dist/esm/es5/chart/marker/util.js","./node_modules/ag-charts-community/dist/esm/es5/chart/legend.js","./node_modules/ag-charts-community/dist/esm/es5/util/sizeMonitor.js","./node_modules/ag-charts-community/dist/esm/es5/util/labelPlacement.js","./node_modules/ag-charts-community/dist/esm/es5/chart/chart.js","./node_modules/ag-charts-community/dist/esm/es5/scene/clipRect.js","./node_modules/ag-charts-community/dist/esm/es5/chart/shapes/rangeHandle.js","./node_modules/ag-charts-community/dist/esm/es5/chart/shapes/rangeMask.js","./node_modules/ag-charts-community/dist/esm/es5/chart/shapes/rangeSelector.js","./node_modules/ag-charts-community/dist/esm/es5/chart/navigator/navigatorMask.js","./node_modules/ag-charts-community/dist/esm/es5/chart/navigator/navigatorHandle.js","./node_modules/ag-charts-community/dist/esm/es5/chart/navigator/navigator.js","./node_modules/ag-charts-community/dist/esm/es5/chart/cartesianChart.js","./node_modules/ag-charts-community/dist/esm/es5/chart/hierarchyChart.js","./node_modules/ag-charts-community/dist/esm/es5/chart/groupedCategoryChart.js","./node_modules/ag-charts-community/dist/esm/es5/chart/label.js","./node_modules/ag-charts-community/dist/esm/es5/chart/series/series.js","./node_modules/ag-charts-community/dist/esm/es5/chart/series/seriesMarker.js","./node_modules/ag-charts-community/dist/esm/es5/chart/series/polar/polarSeries.js","./node_modules/ag-charts-community/dist/esm/es5/chart/polarChart.js","./node_modules/ag-charts-community/dist/esm/es5/chart/series/cartesian/cartesianSeries.js","./node_modules/ag-charts-community/dist/esm/es5/util/equal.js","./node_modules/ag-charts-community/dist/esm/es5/util/string.js","./node_modules/ag-charts-community/dist/esm/es5/util/sanitize.js","./node_modules/ag-charts-community/dist/esm/es5/chart/series/cartesian/areaSeries.js","./node_modules/ag-charts-community/dist/esm/es5/chart/series/cartesian/barSeries.js","./node_modules/ag-charts-community/dist/esm/es5/chart/series/cartesian/lineSeries.js","./node_modules/ag-charts-community/dist/esm/es5/chart/series/cartesian/scatterSeries.js","./node_modules/ag-charts-community/dist/esm/es5/chart/series/cartesian/histogramSeries.js","./node_modules/ag-charts-community/dist/esm/es5/chart/series/hierarchy/hierarchySeries.js","./node_modules/ag-charts-community/dist/esm/es5/scene/dropShadow.js","./node_modules/ag-charts-community/dist/esm/es5/layout/treemap.js","./node_modules/ag-charts-community/dist/esm/es5/layout/hierarchy.js","./node_modules/ag-charts-community/dist/esm/es5/chart/series/hierarchy/treemapSeries.js","./node_modules/ag-charts-community/dist/esm/es5/scene/shape/sector.js","./node_modules/ag-charts-community/dist/esm/es5/chart/series/polar/pieSeries.js","./node_modules/ag-charts-community/dist/esm/es5/util/time/utcMinute.js","./node_modules/ag-charts-community/dist/esm/es5/util/time/utcHour.js","./node_modules/ag-charts-community/dist/esm/es5/util/time/utcMonth.js","./node_modules/ag-charts-community/dist/esm/es5/chart/themes/chartTheme.js","./node_modules/ag-charts-community/dist/esm/es5/chart/themes/darkTheme.js","./node_modules/ag-charts-community/dist/esm/es5/chart/themes/materialLight.js","./node_modules/ag-charts-community/dist/esm/es5/chart/themes/materialDark.js","./node_modules/ag-charts-community/dist/esm/es5/chart/themes/pastelLight.js","./node_modules/ag-charts-community/dist/esm/es5/chart/themes/pastelDark.js","./node_modules/ag-charts-community/dist/esm/es5/chart/themes/solarLight.js","./node_modules/ag-charts-community/dist/esm/es5/chart/themes/solarDark.js","./node_modules/ag-charts-community/dist/esm/es5/chart/themes/vividLight.js","./node_modules/ag-charts-community/dist/esm/es5/chart/themes/vividDark.js","./node_modules/ag-charts-community/dist/esm/es5/chart/mapping/themes.js","./node_modules/ag-charts-community/dist/esm/es5/scale/logScale.js","./node_modules/ag-charts-community/dist/esm/es5/chart/axis/logAxis.js","./node_modules/ag-charts-community/dist/esm/es5/util/json.js","./node_modules/ag-charts-community/dist/esm/es5/chart/mapping/defaults.js","./node_modules/ag-charts-community/dist/esm/es5/chart/mapping/transforms.js","./node_modules/ag-charts-community/dist/esm/es5/chart/mapping/prepareSeries.js","./node_modules/ag-charts-community/dist/esm/es5/chart/mapping/prepare.js","./node_modules/ag-charts-community/dist/esm/es5/chart/agChartV2.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/utils/seriesTypeMapper.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/chartController.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/menu/data/chartDataPanel.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/menu/format/fontPanel.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/menu/format/legend/legendPanel.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/menu/format/axis/axisTicksPanel.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/menu/format/axis/axisPanel.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/menu/format/navigator/navigatorPanel.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/menu/format/chart/paddingPanel.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/menu/format/chart/backgroundPanel.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/menu/format/chart/titlePanel.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/menu/format/chart/chartPanel.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/menu/format/series/shadowPanel.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/menu/format/series/markersPanel.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/menu/format/series/calloutPanel.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/menu/format/series/seriesPanel.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/menu/format/series/fontPanelParams.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/menu/format/formatPanel.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/menu/settings/miniCharts/miniChart.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/menu/settings/miniCharts/miniChartWithAxes.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/menu/settings/miniCharts/miniChartHelpers.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/menu/settings/miniCharts/column/miniColumn.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/menu/settings/miniCharts/column/miniStackedColumn.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/menu/settings/miniCharts/column/miniNormalizedColumn.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/menu/settings/miniCharts/bar/miniBar.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/menu/settings/miniCharts/bar/miniStackedBar.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/menu/settings/miniCharts/bar/miniNormalizedBar.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/menu/settings/miniCharts/pie/miniDoughnut.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/menu/settings/miniCharts/pie/miniPie.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/menu/settings/miniCharts/line/miniLine.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/menu/settings/miniCharts/scatter/miniScatter.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/menu/settings/miniCharts/scatter/miniBubble.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/menu/settings/miniCharts/area/miniArea.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/menu/settings/miniCharts/area/miniStackedArea.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/menu/settings/miniCharts/area/miniNormalizedArea.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/menu/settings/miniCharts/histogram/miniHistogram.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/menu/settings/miniCharts/combo/miniColumnLineCombo.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/menu/settings/miniCharts/combo/miniAreaColumnCombo.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/menu/settings/miniCharts/combo/miniCustomCombo.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/menu/settings/miniChartsContainer.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/menu/settings/chartSettingsPanel.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/menu/tabbedChartMenu.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/menu/chartMenu.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/chartTitle/titleEdit.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/utils/object.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/chartProxies/chartProxy.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/chartProxies/cartesian/cartesianChartProxy.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/utils/color.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/chartProxies/cartesian/barChartProxy.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/chartProxies/cartesian/areaChartProxy.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/chartProxies/cartesian/lineChartProxy.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/chartProxies/polar/polarChartProxy.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/chartProxies/polar/pieChartProxy.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/chartProxies/polar/doughnutChartProxy.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/chartProxies/cartesian/scatterChartProxy.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/chartProxies/cartesian/histogramChartProxy.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/services/chartOptionsService.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/chartProxies/combo/comboChartProxy.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/gridChartComp.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartService.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartModelMigration.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/services/chartTranslationService.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/charts/chartComp/services/chartCrossFilterService.js","./node_modules/@ag-grid-enterprise/range-selection/dist/esm/es5/rangeSelection/rangeService.js","./node_modules/@ag-grid-enterprise/range-selection/dist/esm/es5/rangeSelection/abstractSelectionHandle.js","./node_modules/@ag-grid-enterprise/range-selection/dist/esm/es5/rangeSelection/fillHandle.js","./node_modules/@ag-grid-enterprise/range-selection/dist/esm/es5/rangeSelection/rangeHandle.js","./node_modules/@ag-grid-enterprise/range-selection/dist/esm/es5/rangeSelection/selectionHandleFactory.js","./node_modules/@ag-grid-enterprise/range-selection/dist/esm/es5/rangeSelectionModule.js","./node_modules/@ag-grid-enterprise/charts/dist/esm/es5/gridChartsModule.js","./node_modules/@ag-grid-enterprise/master-detail/dist/esm/es5/masterDetail/detailCellRendererCtrl.js","./node_modules/@ag-grid-enterprise/master-detail/dist/esm/es5/masterDetail/detailCellRenderer.js","./node_modules/@ag-grid-enterprise/master-detail/dist/esm/es5/masterDetailModule.js","./node_modules/@ag-grid-enterprise/menu/dist/esm/es5/menu/enterpriseMenu.js","./node_modules/@ag-grid-enterprise/menu/dist/esm/es5/menu/contextMenu.js","./node_modules/@ag-grid-enterprise/menu/dist/esm/es5/menu/menuItemMapper.js","./node_modules/@ag-grid-enterprise/menu/dist/esm/es5/menuModule.js","./node_modules/@ag-grid-enterprise/multi-filter/dist/esm/es5/multiFilter/multiFilter.js","./node_modules/@ag-grid-enterprise/multi-filter/dist/esm/es5/multiFilter/multiFloatingFilter.js","./node_modules/@ag-grid-enterprise/multi-filter/dist/esm/es5/multiFilterModule.js","./node_modules/@ag-grid-enterprise/rich-select/dist/esm/es5/richSelect/richSelectRow.js","./node_modules/@ag-grid-enterprise/rich-select/dist/esm/es5/richSelect/richSelectCellEditor.js","./node_modules/@ag-grid-enterprise/rich-select/dist/esm/es5/richSelectModule.js","./node_modules/@ag-grid-enterprise/server-side-row-model/dist/esm/es5/serverSideRowModel/serverSideRowModel.js","./node_modules/@ag-grid-enterprise/server-side-row-model/dist/esm/es5/serverSideRowModel/stores/storeUtils.js","./node_modules/@ag-grid-enterprise/server-side-row-model/dist/esm/es5/serverSideRowModel/blocks/blockUtils.js","./node_modules/@ag-grid-enterprise/server-side-row-model/dist/esm/es5/serverSideRowModel/nodeManager.js","./node_modules/@ag-grid-enterprise/server-side-row-model/dist/esm/es5/serverSideRowModel/transactionManager.js","./node_modules/@ag-grid-enterprise/server-side-row-model/dist/esm/es5/serverSideRowModel/listeners/expandListener.js","./node_modules/@ag-grid-enterprise/server-side-row-model/dist/esm/es5/serverSideRowModel/listeners/sortListener.js","./node_modules/@ag-grid-enterprise/server-side-row-model/dist/esm/es5/serverSideRowModel/listeners/filterListener.js","./node_modules/@ag-grid-enterprise/server-side-row-model/dist/esm/es5/serverSideRowModel/blocks/partialStoreBlock.js","./node_modules/@ag-grid-enterprise/server-side-row-model/dist/esm/es5/serverSideRowModel/stores/partialStore.js","./node_modules/@ag-grid-enterprise/server-side-row-model/dist/esm/es5/serverSideRowModel/stores/fullStore.js","./node_modules/@ag-grid-enterprise/server-side-row-model/dist/esm/es5/serverSideRowModel/stores/storeFactory.js","./node_modules/@ag-grid-enterprise/server-side-row-model/dist/esm/es5/serverSideRowModel/listeners/listenerUtils.js","./node_modules/@ag-grid-enterprise/server-side-row-model/dist/esm/es5/serverSideRowModelModule.js","./node_modules/@ag-grid-enterprise/set-filter/dist/esm/es5/clientSideValueExtractor.js","./node_modules/@ag-grid-enterprise/set-filter/dist/esm/es5/setFilter/setValueModel.js","./node_modules/@ag-grid-enterprise/set-filter/dist/esm/es5/setFilter/setFilterListItem.js","./node_modules/@ag-grid-enterprise/set-filter/dist/esm/es5/setFilter/localeText.js","./node_modules/@ag-grid-enterprise/set-filter/dist/esm/es5/setFilter/setFilter.js","./node_modules/@ag-grid-enterprise/set-filter/dist/esm/es5/setFilter/setFloatingFilter.js","./node_modules/@ag-grid-enterprise/set-filter/dist/esm/es5/setFilterModule.js","./node_modules/@ag-grid-enterprise/status-bar/dist/esm/es5/statusBar/statusBarService.js","./node_modules/@ag-grid-enterprise/status-bar/dist/esm/es5/statusBar/statusBar.js","./node_modules/@ag-grid-enterprise/status-bar/dist/esm/es5/statusBar/providedPanels/nameValueComp.js","./node_modules/@ag-grid-enterprise/status-bar/dist/esm/es5/statusBar/providedPanels/totalAndFilteredRowsComp.js","./node_modules/@ag-grid-enterprise/status-bar/dist/esm/es5/statusBar/providedPanels/filteredRowsComp.js","./node_modules/@ag-grid-enterprise/status-bar/dist/esm/es5/statusBar/providedPanels/totalRowsComp.js","./node_modules/@ag-grid-enterprise/status-bar/dist/esm/es5/statusBar/providedPanels/selectedRowsComp.js","./node_modules/@ag-grid-enterprise/status-bar/dist/esm/es5/statusBar/providedPanels/aggregationComp.js","./node_modules/@ag-grid-enterprise/status-bar/dist/esm/es5/statusBarModule.js","./node_modules/@ag-grid-enterprise/viewport-row-model/dist/esm/es5/viewportRowModel/viewportRowModel.js","./node_modules/@ag-grid-enterprise/viewport-row-model/dist/esm/es5/viewportRowModelModule.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/scene/bbox.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/scene/matrix.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/util/id.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/scene/node.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/scene/group.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/util/object.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/scene/shape/shape.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/scene/polyRoots.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/scene/intersection.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/scene/path2D.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/scene/shape/path.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/scene/shape/line.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/scale/bandScale.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/scene/selection.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/canvas/hdpiCanvas.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/scene/scene.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/util/observable.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/util/padding.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/util/value.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/interpolate/number.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/util/color.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/interpolate/color.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/interpolate/value.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/interpolate/constant.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/interpolate/date.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/interpolate/array.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/interpolate/object.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/scale/continuousScale.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/util/ticks.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/util/numberFormat.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/scale/linearScale.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/util/time/interval.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/util/time/millisecond.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/util/time/duration.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/util/time/second.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/util/time/minute.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/util/time/hour.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/util/time/day.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/util/time/week.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/util/time/month.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/util/time/year.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/util/time/utcDay.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/util/time/utcYear.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/util/time/utcWeek.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/util/time/format/locale.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/util/time/format/defaultLocale.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/scale/timeScale.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/util/bisect.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/util/compare.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/util/array.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/sparkline/sparkline.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/sparkline/tooltip/defaultTooltipCss.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/sparkline/tooltip/sparklineTooltip.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/sparkline/marker/marker.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/sparkline/marker/circle.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/sparkline/marker/diamond.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/sparkline/marker/square.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/sparkline/marker/markerFactory.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/util/lineDash.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/sparkline/area/areaSparkline.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/sparkline/line/lineSparkline.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/sparkline/bar-column/rectangle.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/scene/shape/text.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/sparkline/label/label.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/sparkline/label/text.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/sparkline/bar-column/barColumnSparkline.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/sparkline/bar-column/barSparkline.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/sparkline/bar-column/columnSparkline.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/sparkline/agSparkline.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/sparklineCellRenderer.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/tooltip/sparklineTooltipSingleton.js","./node_modules/@ag-grid-enterprise/all-modules/dist/esm/es5/main.js","./node_modules/@ag-grid-enterprise/sparklines/dist/esm/es5/sparklinesModule.js","./node_modules/ang-jsoneditor/fesm2015/ang-jsoneditor.js","./node_modules/angular-resizable-element/fesm2015/angular-resizable-element.js","./node_modules/rxjs/dist/esm/internal/operators/pairwise.js","./node_modules/angular2-toaster/fesm2015/angular2-toaster.js","./node_modules/bowser/es5.js","./node_modules/expression-eval/index.js","./node_modules/highcharts-angular/fesm2015/highcharts-angular.js","./node_modules/highcharts/highcharts.js","./node_modules/highcharts/modules/draggable-points.js","./node_modules/jquery/dist/jquery.js","./node_modules/jsep/build/jsep.js","./node_modules/jsoneditor/dist/jsoneditor.min.js","./node_modules/lodash/lodash.js","./node_modules/moment-timezone/index.js","./node_modules/moment-timezone/moment-timezone.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/regenerator-runtime/runtime.js","./node_modules/rxjs/dist/esm/internal/BehaviorSubject.js","./node_modules/rxjs/dist/esm/internal/util/pipe.js","./node_modules/rxjs/dist/esm/internal/Observable.js","./node_modules/rxjs/dist/esm/internal/util/ObjectUnsubscribedError.js","./node_modules/rxjs/dist/esm/internal/Subject.js","./node_modules/rxjs/dist/esm/internal/NotificationFactories.js","./node_modules/rxjs/dist/esm/internal/Subscriber.js","./node_modules/rxjs/dist/esm/internal/Subscription.js","./node_modules/rxjs/dist/esm/internal/util/UnsubscriptionError.js","./node_modules/rxjs/dist/esm/internal/config.js","./node_modules/rxjs/dist/esm/internal/observable/combineLatest.js","./node_modules/rxjs/dist/esm/internal/operators/concatAll.js","./node_modules/rxjs/dist/esm/internal/observable/concat.js","./node_modules/rxjs/dist/esm/internal/observable/defer.js","./node_modules/rxjs/dist/esm/internal/observable/empty.js","./node_modules/rxjs/dist/esm/internal/observable/forkJoin.js","./node_modules/rxjs/dist/esm/internal/operators/observeOn.js","./node_modules/rxjs/dist/esm/internal/operators/subscribeOn.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleAsyncIterable.js","./node_modules/rxjs/dist/esm/internal/observable/from.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduled.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleObservable.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleArray.js","./node_modules/rxjs/dist/esm/internal/scheduled/schedulePromise.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleIterable.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleReadableStreamLike.js","./node_modules/rxjs/dist/esm/internal/observable/fromEvent.js","./node_modules/rxjs/dist/esm/internal/observable/innerFrom.js","./node_modules/rxjs/dist/esm/internal/observable/merge.js","./node_modules/rxjs/dist/esm/internal/observable/of.js","./node_modules/rxjs/dist/esm/internal/observable/throwError.js","./node_modules/rxjs/dist/esm/internal/util/isDate.js","./node_modules/rxjs/dist/esm/internal/observable/timer.js","./node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js","./node_modules/rxjs/dist/esm/internal/operators/audit.js","./node_modules/rxjs/dist/esm/internal/operators/auditTime.js","./node_modules/rxjs/dist/esm/internal/operators/catchError.js","./node_modules/rxjs/dist/esm/internal/operators/concatMap.js","./node_modules/rxjs/dist/esm/internal/operators/debounceTime.js","./node_modules/rxjs/dist/esm/internal/operators/delayWhen.js","./node_modules/rxjs/dist/esm/internal/operators/ignoreElements.js","./node_modules/rxjs/dist/esm/internal/operators/mapTo.js","./node_modules/rxjs/dist/esm/internal/operators/delay.js","./node_modules/rxjs/dist/esm/internal/operators/distinctUntilChanged.js","./node_modules/rxjs/dist/esm/internal/operators/filter.js","./node_modules/rxjs/dist/esm/internal/operators/finalize.js","./node_modules/rxjs/dist/esm/internal/operators/map.js","./node_modules/rxjs/dist/esm/internal/operators/mergeAll.js","./node_modules/rxjs/dist/esm/internal/operators/mergeInternals.js","./node_modules/rxjs/dist/esm/internal/operators/mergeMap.js","./node_modules/rxjs/dist/esm/internal/operators/share.js","./node_modules/rxjs/dist/esm/internal/operators/skip.js","./node_modules/rxjs/dist/esm/internal/operators/startWith.js","./node_modules/rxjs/dist/esm/internal/operators/switchMap.js","./node_modules/rxjs/dist/esm/internal/operators/take.js","./node_modules/rxjs/dist/esm/internal/operators/takeUntil.js","./node_modules/rxjs/dist/esm/internal/operators/tap.js","./node_modules/rxjs/dist/esm/internal/scheduler/Action.js","./node_modules/rxjs/dist/esm/internal/scheduler/intervalProvider.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsyncAction.js","./node_modules/rxjs/dist/esm/internal/Scheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsyncScheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/animationFrameProvider.js","./node_modules/rxjs/dist/esm/internal/scheduler/AnimationFrameAction.js","./node_modules/rxjs/dist/esm/internal/scheduler/AnimationFrameScheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/animationFrame.js","./node_modules/rxjs/dist/esm/internal/util/Immediate.js","./node_modules/rxjs/dist/esm/internal/scheduler/immediateProvider.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsapAction.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsapScheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/asap.js","./node_modules/rxjs/dist/esm/internal/scheduler/async.js","./node_modules/rxjs/dist/esm/internal/scheduler/dateTimestampProvider.js","./node_modules/rxjs/dist/esm/internal/scheduler/timeoutProvider.js","./node_modules/rxjs/dist/esm/internal/symbol/iterator.js","./node_modules/rxjs/dist/esm/internal/symbol/observable.js","./node_modules/rxjs/dist/esm/internal/util/args.js","./node_modules/rxjs/dist/esm/internal/util/argsArgArrayOrObject.js","./node_modules/rxjs/dist/esm/internal/util/arrRemove.js","./node_modules/rxjs/dist/esm/internal/util/createErrorClass.js","./node_modules/rxjs/dist/esm/internal/util/createObject.js","./node_modules/rxjs/dist/esm/internal/util/errorContext.js","./node_modules/rxjs/dist/esm/internal/util/executeSchedule.js","./node_modules/rxjs/dist/esm/internal/util/identity.js","./node_modules/rxjs/dist/esm/internal/util/isArrayLike.js","./node_modules/rxjs/dist/esm/internal/util/isAsyncIterable.js","./node_modules/rxjs/dist/esm/internal/util/isFunction.js","./node_modules/rxjs/dist/esm/internal/util/isInteropObservable.js","./node_modules/rxjs/dist/esm/internal/util/isIterable.js","./node_modules/rxjs/dist/esm/internal/util/isPromise.js","./node_modules/rxjs/dist/esm/internal/util/isReadableStreamLike.js","./node_modules/rxjs/dist/esm/internal/util/isScheduler.js","./node_modules/rxjs/dist/esm/internal/util/lift.js","./node_modules/rxjs/dist/esm/internal/util/mapOneOrManyArgs.js","./node_modules/rxjs/dist/esm/internal/util/noop.js","./node_modules/rxjs/dist/esm/internal/util/reportUnhandledError.js","./node_modules/rxjs/dist/esm/internal/util/throwUnobservableError.js","./node_modules/timemachine/timemachine.js","./node_modules/ts-md5/dist/md5.js","./node_modules/@angular/common/locales|lazy|/^\\.\\/.*\\.mjs$/|include: /(af%7Cbs%7Cca%7Ccs%7Ccy%7Cda%7Cda-GL%7Cde%7Cde-AT%7Cde-CH%7Cde-LI%7Cde-LU%7Cel%7Cen%7Cen-AU%7Cen-CA%7Cen-GB%7Cen-IN%7Cen-IE%7Cen-MT%7Cen-NZ%7Cen-ZA%7Ces%7Ces-419%7Ces-AR%7Ces-CL%7Ces-MX%7Ces-PE%7Cet%7Cfo%7Cfi%7Cfr%7Cfr-BE%7Cfr-CA%7Cfr-LU%7Cfr-CH%7Chu%7Chr%7Cis%7Cit%7Cit-CH%7Cja%7Clt%7Clv%7Cmk%7Cmt%7Cnb%7Cnn%7Cnl%7Cnl-BE%7Cpl%7Cpt%7Cpt-PT%7Cro%7Cro-MD%7Cru%7Csr%7Csl%7Csk%7Csv%7Csv-AX%7Csv-FI%7Csw%7Ctr%7Cuk)\\.mjs$/|groupOptions: {}|namespace object","/files/repo/agr-client/node_modules/moment/locale|sync|/^\\.\\/.*$/","./node_modules/@angular/animations/fesm2015/animations.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/platform-browser/fesm2015/platform-browser.mjs","./node_modules/rxjs/dist/esm/internal/util/EmptyError.js","./node_modules/rxjs/dist/esm/internal/operators/refCount.js","./node_modules/rxjs/dist/esm/internal/observable/ConnectableObservable.js","./node_modules/rxjs/dist/esm/internal/operators/scanInternals.js","./node_modules/rxjs/dist/esm/internal/operators/scan.js","./node_modules/rxjs/dist/esm/internal/operators/takeLast.js","./node_modules/rxjs/dist/esm/internal/operators/throwIfEmpty.js","./node_modules/rxjs/dist/esm/internal/operators/defaultIfEmpty.js","./node_modules/rxjs/dist/esm/internal/operators/first.js","./node_modules/@angular/router/fesm2015/router.mjs","./node_modules/rxjs/dist/esm/internal/operators/last.js","javascript/esm|/files/repo/agr-client/node_modules/source-map-loader/dist/cjs.js","./node_modules/rxjs/dist/esm/internal/util/argsOrArgArray.js","./node_modules/rxjs/dist/esm/internal/observable/race.js","./node_modules/rxjs/dist/esm/internal/observable/never.js","./node_modules/rxjs/dist/esm/internal/observable/zip.js","./node_modules/rxjs/dist/esm/internal/operators/withLatestFrom.js","./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","./node_modules/@popperjs/core/lib/utils/getBasePlacement.js","./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","./node_modules/@popperjs/core/lib/enums.js","./node_modules/@popperjs/core/lib/dom-utils/getWindow.js","./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","./node_modules/@popperjs/core/lib/utils/math.js","./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","./node_modules/@popperjs/core/lib/dom-utils/contains.js","./node_modules/@popperjs/core/lib/utils/rectToClientRect.js","./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","./node_modules/@popperjs/core/lib/utils/getVariation.js","./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","./node_modules/@popperjs/core/lib/utils/computeOffsets.js","./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","./node_modules/@popperjs/core/lib/utils/expandToHashMap.js","./node_modules/@popperjs/core/lib/utils/detectOverflow.js","./node_modules/@popperjs/core/lib/modifiers/flip.js","./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","./node_modules/@popperjs/core/lib/utils/within.js","./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","./node_modules/@popperjs/core/lib/utils/getAltAxis.js","./node_modules/@popperjs/core/lib/modifiers/arrow.js","./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","./node_modules/@popperjs/core/lib/utils/orderModifiers.js","./node_modules/@popperjs/core/lib/utils/debounce.js","./node_modules/@popperjs/core/lib/createPopper.js","./node_modules/@popperjs/core/lib/utils/mergeByName.js","./node_modules/@popperjs/core/lib/modifiers/eventListeners.js","./node_modules/@popperjs/core/lib/modifiers/computeStyles.js","./node_modules/@popperjs/core/lib/modifiers/applyStyles.js","./node_modules/@popperjs/core/lib/popper-lite.js","./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","./node_modules/@popperjs/core/lib/modifiers/offset.js","./node_modules/@ng-bootstrap/ng-bootstrap/fesm2015/ng-bootstrap.mjs","./node_modules/rxjs/dist/esm/internal/operators/endWith.js","./node_modules/@ng-select/ng-select/fesm2015/ng-select-ng-select.mjs","./node_modules/rxjs/dist/esm/internal/util/isObservable.js","./node_modules/rxjs/dist/esm/internal/ReplaySubject.js","./node_modules/rxjs/dist/esm/internal/operators/shareReplay.js","./node_modules/@ngx-translate/core/fesm2015/ngx-translate-core.mjs"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, of, throwError } from 'rxjs';\nimport { catchError, mergeMap } from 'rxjs/operators';\n\nimport { Login, LoginDTO } from 'src/app/_core/authorization/login.model';\nimport { API_ROOT } from 'src/app/_core/models/api-route.model';\nimport { UserDTO } from 'src/app/_core/models/user.model';\nimport { SessionService } from 'src/app/_core/session.service';\n\nexport enum TokenValidityState {\n no,\n expired,\n requiresRefresh,\n refreshing,\n valid\n}\n\n@Injectable()\nexport class AuthService {\n private refreshingToken: boolean;\n\n constructor(private sessionService: SessionService, private httpClient: HttpClient) {}\n\n // properties\n\n get isRefreshingToken(): boolean {\n return this.refreshingToken;\n }\n\n get token(): string {\n return this.sessionService.token;\n }\n\n // methods\n\n classicLogin(username: string, password: string): Observable {\n this.sessionService.clearUserData();\n return this.doClassicLogin({ username, password, grant_type: 'password' });\n }\n\n auth365Login(code: string, returnUrl: string): Observable {\n this.sessionService.clearUserData();\n return this.doAuth365Login(code, returnUrl);\n }\n\n logout(): void {\n this.sessionService.clearUserData();\n }\n\n isLoggedIn(): boolean {\n const user = this.sessionService.user;\n if (!user || [TokenValidityState.no, TokenValidityState.expired].includes(this.checkTokenValidity())) {\n this.sessionService.clearUserData();\n return false;\n }\n return true;\n }\n\n checkTokenValidity(): TokenValidityState {\n const authData = this.sessionService.authData;\n if (!authData || !authData.accessToken) {\n return TokenValidityState.no;\n }\n if (this.refreshingToken) {\n return TokenValidityState.refreshing;\n }\n const isExpired = new Date().getTime() > authData.expires - 5 * 60 * 1000; // 5 Minutes before\n if (isExpired) {\n return TokenValidityState.requiresRefresh;\n }\n return TokenValidityState.valid;\n }\n\n refreshToken(): Observable {\n this.refreshingToken = true;\n if (this.sessionService.auth365Config) {\n return this.auth365Refresh();\n }\n if (!this.sessionService.authData) {\n this.sessionService.authData = new Login();\n }\n return this.doClassicLogin({ grant_type: 'refresh_token', refresh_token: this.sessionService.authData.refreshToken });\n }\n\n /**\n * Returns true if provided feature/features is available for user.\n */\n hasFeature(features: string[] | string): boolean {\n if (!features || (features && features.length === 0)) {\n return true;\n } // If no feature-specified everybody has access\n const featureArr = typeof features === 'string' ? features.split(',') : features;\n return featureArr.find((feature) => this.hasSingleFeature(feature)) !== undefined;\n }\n\n getLoggedInUser(): Observable {\n return this.httpClient.get(`${API_ROOT}/users/logged-in-user`);\n }\n\n // private\n\n private jsonToUrlEncoded(jsonString: {}): string {\n return Object.keys(jsonString)\n .map((key) => {\n return `${encodeURIComponent(key)}=${encodeURIComponent(jsonString[key])}`;\n })\n .join('&');\n }\n\n private doClassicLogin(body: any): Observable {\n const bodyUrlEnc = this.jsonToUrlEncoded(body);\n const options = { headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' } };\n return this.httpClient.post(`${API_ROOT}/login`, bodyUrlEnc, options).pipe(\n mergeMap((dto: LoginDTO) => {\n this.loginResponse(new Login(dto));\n return this.getLoggedInUserDetails();\n }),\n catchError((error) => {\n this.refreshingToken = false;\n return throwError(error);\n })\n );\n }\n\n private doAuth365Login(code: string, returnUrl: string): Observable {\n return this.httpClient.post(`${API_ROOT}/auth/login-365`, { code, returnUrl }).pipe(\n mergeMap((dto: LoginDTO) => {\n this.loginResponse(new Login(dto));\n this.sessionService.user = { auth365: true };\n return this.getLoggedInUserDetails();\n })\n );\n }\n\n private getLoggedInUserDetails(): Observable {\n return this.getLoggedInUser().pipe(\n mergeMap((userDto) => {\n const isAuth365 = !!this.sessionService.user?.auth365; // Read value before sessionService.user is overwritten\n this.sessionService.user = { ...userDto, auth365: isAuth365 };\n this.sessionService.currentFeatures = userDto.featuresStringList;\n return of(true);\n })\n );\n }\n\n private auth365Refresh(): Observable {\n const body = {\n code: this.sessionService.authData.refreshToken,\n returnUrl: ''\n };\n return this.httpClient.post(`${API_ROOT}/auth/refresh-365`, body).pipe(\n mergeMap((dto: LoginDTO) => {\n this.loginResponse(new Login(dto));\n return of(true);\n }),\n catchError((error) => {\n this.refreshingToken = false;\n return throwError(error);\n })\n );\n }\n\n private hasSingleFeature(feature: string): boolean {\n const features = this.sessionService.currentFeatures;\n if (!features) {\n return false;\n }\n\n return features.indexOf(feature) > -1;\n }\n\n private loginResponse(login: Login): void {\n this.refreshingToken = false;\n this.sessionService.token = login.accessToken;\n this.sessionService.authData = login;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CanActivate, Router, RouterStateSnapshot } from '@angular/router';\n\nimport { AuthService } from 'src/app/_core/authorization/auth.service';\nimport { SettingsService } from 'src/app/_core/settings/settings.service';\n\n@Injectable()\nexport class FeatAuthGuard implements CanActivate {\n constructor(private router: Router, private authService: AuthService, private settingsService: SettingsService) {}\n\n canActivate(route: any, state: RouterStateSnapshot): boolean {\n if (!this.authService.isLoggedIn()) {\n this.router.navigate(['/login'], { queryParams: { returnUrl: state.url } });\n return false;\n }\n\n if (route.data && route.data.expectedFeature && !this.authService.hasFeature(route.data.expectedFeature)) {\n this.router.navigate(['/no-access']);\n return false;\n }\n if (this.settingsService.getValue('start_in_setup')) {\n this.router.navigate(['/erp-setup']);\n return false;\n }\n\n return true;\n }\n}\n","export interface LoginDTO {\n access_token: string;\n expires_in: number; // seconds\n refresh_token: string;\n}\n\n/**\n * This class is stored as a session/local storage object, make sure it only contains primitive properties.\n */\nexport class Login {\n accessToken = '';\n refreshToken = '';\n expires = 0; // milliseconds\n loggedIn = 0; // milliseconds\n\n constructor(dto?: LoginDTO) {\n if (!dto) {\n return;\n }\n this.accessToken = dto.access_token;\n this.refreshToken = dto.refresh_token;\n this.loggedIn = new Date().getTime();\n const expiresIn = dto.expires_in * 1000;\n this.expires = new Date(this.loggedIn + expiresIn).getTime();\n }\n}\n","/* eslint-disable no-unused-vars */\ndeclare global {\n interface Window {\n Cypress: any;\n }\n}\n\n/**\n * Expose app instances to be used in Cypress E2E tests.\n */\nexport function cypressExpose(target: any): void {\n if (!window.Cypress) {\n return;\n }\n if (!window.Cypress.agr) {\n window.Cypress.agr = {};\n }\n window.Cypress.agr[target.constructor.name] = target;\n}\n","import { get, set } from 'lodash';\n\nimport { TranslationsService } from 'src/app/_core/translations.service';\nimport { ConfigColumnBaseDTO } from 'src/app/workspaces/details/config/config-column.model';\nimport { ConfigSerieBaseDTO } from 'src/app/workspaces/details/config/config-serie.model';\nimport { WorkspaceActionConfigDTO } from 'src/app/workspaces/models/workspace-action.model';\n\nexport interface ContextLineDTO {\n name?: string;\n object_type?: string;\n\n action_json?: string;\n action_type?: string;\n aggregation?: string;\n available?: number; // Is 1 or 0\n caption?: string;\n config?: string;\n default_display_div?: number;\n description?: string;\n format?: string;\n group_caption?: string;\n group_name?: string;\n lookup_column?: string;\n lookup?: boolean;\n low_cardinality?: boolean;\n object_dependency?: string;\n period_group?: boolean;\n read_only?: boolean;\n refresh_profile?: string;\n selected_by_default?: boolean;\n series_affected?: string;\n series_js_formula_value?: string;\n series_type?: string;\n summary?: boolean;\n type?: string;\n}\n\ntype ObjectType = 'calculatedColumns' | 'columns' | 'series' | 'filters' | 'planActions';\n\nexport class ContextLine {\n name: string;\n objectType: ObjectType;\n\n actionJson: WorkspaceActionConfigDTO;\n actionType?: string;\n aggregation?: string;\n available?: boolean; // Is 1 or 0\n caption?: string;\n config?: ConfigColumnBaseDTO | ConfigSerieBaseDTO;\n // defaultDisplayDiv?: number; // legacy\n description?: string;\n format?: string;\n groupCaption?: string;\n groupName?: string;\n lookup?: boolean;\n lookupColumn?: string;\n lowCardinality?: boolean;\n objectDependency?: string;\n periodGroup?: boolean;\n readOnly?: boolean;\n refreshProfile?: string;\n selectedByDefault?: boolean;\n seriesAffected?: string;\n seriesJsFormulaValue?: string;\n seriesType?: string;\n summary?: boolean;\n type?: string;\n\n // eslint-disable-next-line max-lines-per-function\n constructor(contextLineDto?: ContextLineDTO) {\n if (!contextLineDto) {\n return;\n }\n this.name = contextLineDto.name;\n this.objectType = contextLineDto.object_type as ObjectType;\n\n this.actionJson = this.parseActionJson(contextLineDto.action_json);\n this.actionType = contextLineDto.action_type;\n this.aggregation = contextLineDto.aggregation;\n this.available = contextLineDto.available === 1; // Is 1 or 0\n this.caption = TranslationsService.get(contextLineDto.caption);\n this.config = this.parseConfig(contextLineDto.config);\n this.description = contextLineDto.description;\n this.format = contextLineDto.format;\n this.groupCaption = TranslationsService.get(contextLineDto.group_caption);\n this.groupName = contextLineDto.group_name;\n this.lookup = contextLineDto.lookup;\n this.lookupColumn = contextLineDto.lookup_column;\n this.lowCardinality = contextLineDto.low_cardinality;\n this.objectDependency = contextLineDto.object_dependency;\n this.periodGroup = contextLineDto.period_group;\n this.readOnly = contextLineDto.read_only;\n this.refreshProfile = contextLineDto.refresh_profile;\n this.selectedByDefault = contextLineDto.selected_by_default;\n this.seriesAffected = contextLineDto.series_affected;\n this.seriesJsFormulaValue = contextLineDto.series_js_formula_value;\n this.seriesType = contextLineDto.series_type;\n this.summary = contextLineDto.summary;\n this.type = contextLineDto.type;\n\n this.migrateDisplayDiv(contextLineDto);\n }\n\n get idColumnName(): string {\n return this.lookupColumn ? this.lookupColumn : this.name;\n }\n\n //////////////////////////////////////////\n\n private parseConfig(config: string): ConfigColumnBaseDTO | ConfigSerieBaseDTO {\n try {\n if (!config) {\n return {};\n }\n return JSON.parse(this.handleIrregularWhiteSpaces(config));\n } catch (error) {\n const location = `${this.objectType} > ${this.name}`;\n console.warn(`AGR: Could not parse config JSON in: ${location}. Error: ${error.toString()}. JSON: ${config}`);\n return {};\n }\n }\n\n private parseActionJson(actionJson: string): WorkspaceActionConfigDTO {\n try {\n return JSON.parse(actionJson);\n } catch (error) {\n const location = `${this.objectType} > ${this.name}`;\n console.warn(`AGR: Could not parse action JSON in: ${location}. Error: ${error.toString()}. JSON: ${actionJson}`);\n return undefined;\n }\n }\n\n /**\n * The whitespace inside the replace regex is NOT space but non-breaking space (character code 160)\n */\n private handleIrregularWhiteSpaces(config: string): string {\n // eslint-disable-next-line no-irregular-whitespace\n return config.replace(/ /g, ' ');\n }\n\n /**\n * Move `data_elements.default_display_div` into `data_elements.config > format`.\n */\n private migrateDisplayDiv(contextLineDto: ContextLineDTO): void {\n if (contextLineDto.default_display_div && !get(this, 'config.format.displayDiv')) {\n set(this, 'config.format.displayDiv', contextLineDto.default_display_div);\n }\n }\n}\n","import { sortBy } from 'lodash';\n\nimport { ContextLine } from 'src/app/_core/de-query/model/context-line.model';\nimport { WorkspaceAdvancedFilter } from 'src/app/workspaces/details/filters/models/workspace-advanced-filter.model';\nimport { WorkspaceBooleanFilter } from 'src/app/workspaces/details/filters/models/workspace-boolean-filter.model';\nimport { WorkspaceDateFilter } from 'src/app/workspaces/details/filters/models/workspace-date-filter.model';\nimport { WorkspaceFilter } from 'src/app/workspaces/details/filters/models/workspace-filter.model';\nimport { WorkspaceLookupFilter } from 'src/app/workspaces/details/filters/models/workspace-lookup-filter.model';\nimport { WorkspaceNumberFilter } from 'src/app/workspaces/details/filters/models/workspace-number-filter.model';\nimport { WorkspacePeriodFilter } from 'src/app/workspaces/details/filters/models/workspace-period-filter.model';\nimport { WorkspaceAction } from 'src/app/workspaces/models/workspace-action.model';\nimport { WorkspaceColumn } from 'src/app/workspaces/models/workspace-column.model';\nimport { WorkspaceDrilldown } from 'src/app/workspaces/models/workspace-drilldown.model';\nimport { WorkspaceSerie } from 'src/app/workspaces/models/workspace-serie.model';\n\nexport class Context {\n contextLines: ContextLine[];\n\n constructor(contextLines: ContextLine[] = []) {\n this.contextLines = sortBy(\n contextLines.filter((contextLine) => contextLine.available),\n 'caption'\n );\n }\n\n getColumnOrCalculatedColumn(name: string): ContextLine {\n return this.contextLines.find((line) => {\n return (line.objectType === 'columns' || line.objectType === 'calculatedColumns') && line.name === name;\n });\n }\n\n getColumn(name: string): ContextLine {\n return this.contextLines.find((line) => line.objectType === 'columns' && line.name === name);\n }\n\n getCalculatedColumn(name: string): ContextLine {\n return this.contextLines.find((line) => line.objectType === 'calculatedColumns' && line.name === name);\n }\n\n getSerie(name: string): ContextLine {\n return this.contextLines.find((line) => line.objectType === 'series' && line.name === name);\n }\n\n getFilter(name: string): ContextLine {\n return this.contextLines.find((line) => line.objectType === 'filters' && line.name === name);\n }\n\n getAction(name: string): ContextLine {\n return this.contextLines.find((line) => line.objectType === 'planActions' && line.name === name);\n }\n\n //////////////////////////////////////////\n\n getAll(): ContextLine[] {\n return this.contextLines;\n }\n\n /**\n * Returns context lines with 'column' and 'calculatedColumn' types.\n */\n getAllColumns(): ContextLine[] {\n return this.contextLines.filter((line) => line.objectType === 'columns' || line.objectType === 'calculatedColumns');\n }\n\n /**\n * Returns Workspace Columns with 'column' and 'calculatedColumn' types from contextLines\n */\n getAllWorkspaceColumns(): WorkspaceColumn[] {\n return this.getAllColumns()\n .map((contextLine) => new WorkspaceColumn(contextLine))\n .sort((a, b) => (a.name < b.name ? -1 : 1))\n .sort((a, b) => (a.groupName < b.groupName ? -1 : 1));\n }\n\n /**\n * Returns context lines with 'column' object type.\n */\n getColumns(): ContextLine[] {\n return this.contextLines.filter((line) => line.objectType === 'columns');\n }\n\n /**\n * Returns Workspace Columns with 'column' object type from contextLines.\n */\n getWorkspaceColumns(): WorkspaceColumn[] {\n return this.getColumns().map((contextLine) => new WorkspaceColumn(contextLine));\n }\n\n /**\n * Returns context lines with 'calculatedColumns' object type.\n */\n getCalculatedColumns(): ContextLine[] {\n return this.contextLines.filter((line) => line.objectType === 'calculatedColumns');\n }\n\n getSeries(): ContextLine[] {\n return this.contextLines.filter((line) => line.objectType === 'series');\n }\n\n getWorkspaceSeries(): WorkspaceSerie[] {\n return this.getSeries()\n .map((contextLine) => new WorkspaceSerie(contextLine))\n .sort((a, b) => (a.name < b.name ? -1 : 1))\n .sort((a, b) => (a.groupName < b.groupName ? -1 : 1));\n }\n\n getFilters(): ContextLine[] {\n return this.contextLines.filter((line) => line.objectType === 'filters');\n }\n\n getActions(): ContextLine[] {\n return this.contextLines.filter((line) => line.objectType === 'planActions');\n }\n\n getWorkspaceActions(): WorkspaceAction[] {\n return this.getActions()\n .filter((line) => !!line.actionJson)\n .map((contextLine) => new WorkspaceAction(contextLine));\n }\n\n getWorkspaceFilters(): WorkspaceFilter[] {\n const columnFilters = this.getFilters().flatMap((filterContext) => {\n const filters: WorkspaceFilter[] = [];\n if (['bit', 'closed'].includes(filterContext.type)) {\n return new WorkspaceBooleanFilter(filterContext);\n }\n if (filterContext.periodGroup) {\n return new WorkspacePeriodFilter(filterContext);\n }\n if (filterContext.type === 'date') {\n filters.push(new WorkspaceDateFilter(filterContext));\n }\n if (['decimal', 'int'].includes(filterContext.type)) {\n filters.push(new WorkspaceNumberFilter(filterContext));\n }\n filters.push(new WorkspaceLookupFilter(filterContext));\n return filters;\n });\n columnFilters.sort((a, b) => (a.name < b.name ? -1 : 1)).sort((a, b) => (a.groupName < b.groupName ? -1 : 1));\n columnFilters.push(new WorkspaceAdvancedFilter());\n return columnFilters;\n }\n\n getWorkspaceDrilldowns(): WorkspaceDrilldown[] {\n return this.getColumns().map((columnContext) => {\n return new WorkspaceDrilldown(columnContext);\n });\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { map, switchMap } from 'rxjs/operators';\n\nimport { IndexDbCacheService } from 'src/app/_core/de-query/index-db-cache.service';\nimport { ContextLine, ContextLineDTO } from 'src/app/_core/de-query/model/context-line.model';\nimport { Context } from 'src/app/_core/de-query/model/context.model';\nimport { DeQuery } from 'src/app/_core/de-query/model/de-query.model';\nimport { API_ROOT } from 'src/app/_core/models/api-route.model';\n\nexport interface DeQueryAvailabilityParams {\n query: DeQuery;\n allActions?: boolean;\n workspaceId?: number;\n tableSetId?: number;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ContextService {\n contextLines: ContextLine[];\n\n constructor(private httpClient: HttpClient, private indexDbCacheService: IndexDbCacheService) {}\n\n getContext(query: DeQuery, tableSetId: number): Observable {\n return this.getContextLines({\n tableSetId,\n query,\n allActions: false\n }).pipe(map((contextLines: ContextLine[]) => new Context(contextLines)));\n }\n\n getMasterContext(workspaceId: number): Observable {\n return this.getContextLines({\n workspaceId,\n query: {},\n allActions: true\n }).pipe(map((contextLines: ContextLine[]) => new Context(contextLines)));\n }\n\n private getContextLines(params: DeQueryAvailabilityParams): Observable {\n return this.indexDbCacheService\n .getContextLineDtos(params, this.getContextLinesFromApi(params))\n .pipe(switchMap((dtos) => of(dtos.map((dto) => new ContextLine(dto)))));\n }\n\n private getContextLinesFromApi(params: DeQueryAvailabilityParams): Observable {\n return this.httpClient.post(`${API_ROOT}/dequery/availability`, {\n query: JSON.stringify(params.query),\n allActions: params.allActions,\n deWorkspaceId: params.workspaceId,\n typeId: params.tableSetId\n });\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { cloneDeep, isEqual } from 'lodash';\nimport { Observable } from 'rxjs';\nimport { delay, map } from 'rxjs/operators';\n\nimport { IndexDbCacheService } from 'src/app/_core/de-query/index-db-cache.service';\nimport { DeQuery } from 'src/app/_core/de-query/model/de-query.model';\nimport { GridColumnMetaData, GridColumnMetaDataDTO } from 'src/app/_core/de-query/model/grid-column-meta-data';\nimport { API_ROOT } from 'src/app/_core/models/api-route.model';\nimport { TranslationsService } from 'src/app/_core/translations.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DeQueryService {\n constructor(private httpClient: HttpClient, private indexDbCacheService: IndexDbCacheService) {}\n\n /**\n * Execute DeQuery.\n * Label is used to better identify what is being queried.\n */\n execQuery(deQuery: DeQuery, label?: string, tableSetId?: number): Observable {\n const url = !label ? `${API_ROOT}/dequery` : `${API_ROOT}/dequery?${label}`;\n const query = this.fixMaxLimitColumns(deQuery);\n return this.httpClient.post(url, {\n query: JSON.stringify(query),\n type_id: tableSetId\n });\n }\n\n execQueryCached(deQuery: DeQuery, label?: string, tableSetId?: number): Observable {\n const apiRequest = this.execQuery(deQuery, label, tableSetId);\n return this.indexDbCacheService.getFromCache(deQuery, apiRequest, tableSetId);\n }\n\n execColumnQuery(deQuery: DeQuery): Observable {\n const query = this.fixMaxLimitColumns(deQuery);\n query.filters = query.filters.filter((filter) => !isEqual(filter.values, [])); // de_query_columns doesn't handle empty filters\n const apiObservable: Observable = this.httpClient.post(`${API_ROOT}/dequery/columns`, {\n query: JSON.stringify(query)\n }) as Observable;\n return this.indexDbCacheService.getGridColumnMetaDataDtos(query, apiObservable).pipe(\n map((dtos: GridColumnMetaDataDTO[]) => {\n return dtos.map((dto) => {\n dto.caption = TranslationsService.get(dto.caption);\n return new GridColumnMetaData(dto);\n });\n })\n );\n }\n\n execAction(action: string, args: any, deQuery: DeQuery): Observable {\n const query = this.fixMaxLimitColumns(deQuery);\n if (args && args.testDelay) {\n return this.httpClient\n .post(`${API_ROOT}/dequery/actions/${action}`, { query: JSON.stringify({ args, query }), cancellationTokenNone: false })\n .pipe(delay(args.testDelay));\n }\n return this.httpClient.post(`${API_ROOT}/dequery/actions/${action}`, {\n query: JSON.stringify({ args, query }),\n cancellationTokenNone: false\n });\n }\n\n // executes action with cancellation token none\n execActionCancellationTokenNone(action: string, args: any, deQuery: DeQuery): Observable {\n const query = this.fixMaxLimitColumns(deQuery);\n if (args && args.testDelay) {\n return this.httpClient\n .post(`${API_ROOT}/dequery/actions/${action}`, { query: JSON.stringify({ args, query }), cancellationTokenNone: true })\n .pipe(delay(args.testDelay));\n }\n return this.httpClient.post(`${API_ROOT}/dequery/actions/${action}`, {\n query: JSON.stringify({ args, query }),\n cancellationTokenNone: true\n });\n }\n\n /**\n * Sets max column limit in case there is no period filter which would otherwise limit the range\n */\n private fixMaxLimitColumns(deQuery: DeQuery): DeQuery {\n if (!deQuery.series || deQuery.series.length === 0) {\n return deQuery;\n }\n const query = cloneDeep(deQuery); // Important to clone, otherwise we are changing the query passed by reference.\n query.pivot.paging.limit = 1000;\n return query;\n }\n}\n","/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass NgxIndexedDB {\n /**\n * @param {?} dbName\n * @param {?} version\n */\n constructor(dbName, version) {\n this.utils = new Utils();\n this.dbWrapper = new DbWrapper(dbName, version);\n }\n /**\n * @param {?} version\n * @param {?=} upgradeCallback\n * @return {?}\n */\n openDatabase(version, upgradeCallback) {\n return new Promise((/**\n * @param {?} resolve\n * @param {?} reject\n * @return {?}\n */\n (resolve, reject) => {\n this.dbWrapper.dbVersion = version;\n /** @type {?} */\n let request = this.utils.indexedDB.open(this.dbWrapper.dbName, version);\n request.onsuccess = (/**\n * @param {?} e\n * @return {?}\n */\n e => {\n this.dbWrapper.db = request.result;\n resolve();\n });\n request.onerror = (/**\n * @param {?} e\n * @return {?}\n */\n e => {\n reject('IndexedDB error: ' + ((/** @type {?} */ (e.target))).errorCode\n ? ((/** @type {?} */ (e.target))).errorCode + ' (' + ((/** @type {?} */ (e.target))).error + ')'\n : ((/** @type {?} */ (e.target))).errorCode);\n });\n if (typeof upgradeCallback === 'function') {\n request.onupgradeneeded = (/**\n * @param {?} e\n * @return {?}\n */\n e => {\n upgradeCallback(e, this.dbWrapper.db);\n });\n }\n }));\n }\n /**\n * @param {?} storeName\n * @param {?} key\n * @return {?}\n */\n getByKey(storeName, key) {\n return new Promise((/**\n * @param {?} resolve\n * @param {?} reject\n * @return {?}\n */\n (resolve, reject) => {\n this.dbWrapper.validateBeforeTransaction(storeName, reject);\n /** @type {?} */\n let transaction = this.dbWrapper.createTransaction(this.dbWrapper.optionsGenerator(DBMode.readonly, storeName, reject, resolve));\n /** @type {?} */\n let objectStore = transaction.objectStore(storeName);\n /** @type {?} */\n let request;\n request = objectStore.get(key);\n request.onsuccess = (/**\n * @param {?} event\n * @return {?}\n */\n function (event) {\n resolve(((/** @type {?} */ (event.target))).result);\n });\n }));\n }\n /**\n * @param {?} storeName\n * @param {?=} keyRange\n * @param {?=} indexDetails\n * @return {?}\n */\n getAll(storeName, keyRange, indexDetails) {\n return new Promise((/**\n * @param {?} resolve\n * @param {?} reject\n * @return {?}\n */\n (resolve, reject) => {\n this.dbWrapper.validateBeforeTransaction(storeName, reject);\n /** @type {?} */\n let transaction = this.dbWrapper.createTransaction(this.dbWrapper.optionsGenerator(DBMode.readonly, storeName, reject, resolve));\n /** @type {?} */\n let objectStore = transaction.objectStore(storeName);\n /** @type {?} */\n let result = [];\n /** @type {?} */\n let request;\n if (indexDetails) {\n /** @type {?} */\n let index = objectStore.index(indexDetails.indexName);\n /** @type {?} */\n let order = indexDetails.order === 'desc' ? 'prev' : 'next';\n request = index.openCursor(keyRange, (/** @type {?} */ (order)));\n }\n else {\n request = objectStore.openCursor(keyRange);\n }\n request.onerror = (/**\n * @param {?} e\n * @return {?}\n */\n function (e) {\n reject(e);\n });\n request.onsuccess = (/**\n * @param {?} evt\n * @return {?}\n */\n function (evt) {\n /** @type {?} */\n let cursor = ((/** @type {?} */ (evt.target))).result;\n if (cursor) {\n result.push(cursor['value']);\n cursor['continue']();\n }\n else {\n resolve(result);\n }\n });\n }));\n }\n /**\n * @param {?} storeName\n * @param {?} value\n * @param {?=} key\n * @return {?}\n */\n add(storeName, value, key) {\n return new Promise((/**\n * @param {?} resolve\n * @param {?} reject\n * @return {?}\n */\n (resolve, reject) => {\n this.dbWrapper.validateBeforeTransaction(storeName, reject);\n /** @type {?} */\n let transaction = this.dbWrapper.createTransaction(this.dbWrapper.optionsGenerator(DBMode.readwrite, storeName, reject, resolve));\n /** @type {?} */\n let objectStore = transaction.objectStore(storeName);\n /** @type {?} */\n let request = objectStore.add(value, key);\n request.onsuccess = (/**\n * @param {?} evt\n * @return {?}\n */\n (evt) => {\n key = evt.target.result;\n resolve(evt);\n });\n }));\n }\n /**\n * @param {?} storeName\n * @param {?=} keyRange\n * @return {?}\n */\n count(storeName, keyRange) {\n return new Promise((/**\n * @param {?} resolve\n * @param {?} reject\n * @return {?}\n */\n (resolve, reject) => {\n this.dbWrapper.validateBeforeTransaction(storeName, reject);\n /** @type {?} */\n let transaction = this.dbWrapper.createTransaction(this.dbWrapper.optionsGenerator(DBMode.readonly, storeName, reject, resolve));\n /** @type {?} */\n let objectStore = transaction.objectStore(storeName);\n /** @type {?} */\n let request;\n request = objectStore.count(keyRange);\n request.onerror = (/**\n * @param {?} e\n * @return {?}\n */\n e => reject(e));\n request.onsuccess = (/**\n * @param {?} e\n * @return {?}\n */\n e => resolve(((/** @type {?} */ (e.target))).result));\n }));\n }\n /**\n * @param {?} storeName\n * @param {?} value\n * @param {?=} key\n * @return {?}\n */\n update(storeName, value, key) {\n return new Promise((/**\n * @param {?} resolve\n * @param {?} reject\n * @return {?}\n */\n (resolve, reject) => {\n this.dbWrapper.validateBeforeTransaction(storeName, reject);\n /** @type {?} */\n let transaction = this.dbWrapper.createTransaction(this.dbWrapper.optionsGenerator(DBMode.readwrite, storeName, reject, resolve));\n /** @type {?} */\n let objectStore = transaction.objectStore(storeName);\n objectStore.put(value, key);\n }));\n }\n /**\n * @param {?} storeName\n * @param {?} key\n * @return {?}\n */\n delete(storeName, key) {\n return new Promise((/**\n * @param {?} resolve\n * @param {?} reject\n * @return {?}\n */\n (resolve, reject) => {\n this.dbWrapper.validateBeforeTransaction(storeName, reject);\n /** @type {?} */\n let transaction = this.dbWrapper.createTransaction(this.dbWrapper.optionsGenerator(DBMode.readwrite, storeName, reject, resolve));\n /** @type {?} */\n let objectStore = transaction.objectStore(storeName);\n objectStore['delete'](key);\n }));\n }\n /**\n * @return {?}\n */\n deleteDatabase() {\n return new Promise((/**\n * @param {?} resolve\n * @param {?} reject\n * @return {?}\n */\n (resolve, reject) => {\n this.dbWrapper.db.close();\n /** @type {?} */\n const deleteDBRequest = this.utils.indexedDB.deleteDatabase(this.dbWrapper.dbName);\n deleteDBRequest.onsuccess = resolve;\n deleteDBRequest.onerror = reject;\n deleteDBRequest.onblocked = (/**\n * @return {?}\n */\n () => {\n throw new Error(\"Unable to delete database because it's blocked\");\n });\n }));\n }\n /**\n * @param {?} storeName\n * @param {?} cursorCallback\n * @param {?=} keyRange\n * @return {?}\n */\n openCursor(storeName, cursorCallback, keyRange) {\n return new Promise((/**\n * @param {?} resolve\n * @param {?} reject\n * @return {?}\n */\n (resolve, reject) => {\n this.dbWrapper.validateBeforeTransaction(storeName, reject);\n /** @type {?} */\n let transaction = this.dbWrapper.createTransaction(this.dbWrapper.optionsGenerator(DBMode.readonly, storeName, reject, resolve));\n /** @type {?} */\n let objectStore = transaction.objectStore(storeName);\n /** @type {?} */\n let request = objectStore.openCursor(keyRange);\n request.onsuccess = (/**\n * @param {?} evt\n * @return {?}\n */\n (evt) => {\n cursorCallback(evt);\n resolve();\n });\n }));\n }\n /**\n * @param {?} storeName\n * @return {?}\n */\n clear(storeName) {\n return new Promise((/**\n * @param {?} resolve\n * @param {?} reject\n * @return {?}\n */\n (resolve, reject) => {\n this.dbWrapper.validateBeforeTransaction(storeName, reject);\n /** @type {?} */\n let transaction = this.dbWrapper.createTransaction(this.dbWrapper.optionsGenerator(DBMode.readwrite, storeName, reject, resolve));\n /** @type {?} */\n let objectStore = transaction.objectStore(storeName);\n objectStore.clear();\n resolve();\n }));\n }\n /**\n * @param {?} storeName\n * @param {?} indexName\n * @param {?} key\n * @return {?}\n */\n getByIndex(storeName, indexName, key) {\n return new Promise((/**\n * @param {?} resolve\n * @param {?} reject\n * @return {?}\n */\n (resolve, reject) => {\n this.dbWrapper.validateBeforeTransaction(storeName, reject);\n /** @type {?} */\n let transaction = this.dbWrapper.createTransaction(this.dbWrapper.optionsGenerator(DBMode.readonly, storeName, reject, resolve));\n /** @type {?} */\n let objectStore = transaction.objectStore(storeName);\n /** @type {?} */\n let index = objectStore.index(indexName);\n /** @type {?} */\n let request = index.get(key);\n request.onsuccess = (/**\n * @param {?} event\n * @return {?}\n */\n event => {\n resolve(((/** @type {?} */ (event.target))).result);\n });\n }));\n }\n}\nif (false) {\n /** @type {?} */\n NgxIndexedDB.prototype.utils;\n /** @type {?} */\n NgxIndexedDB.prototype.dbWrapper;\n}\nclass Utils {\n constructor() {\n this.indexedDB =\n window.indexedDB ||\n ((/** @type {?} */ (window))).mozIndexedDB ||\n ((/** @type {?} */ (window))).webkitIndexedDB ||\n ((/** @type {?} */ (window))).msIndexedDB;\n }\n}\nif (false) {\n /** @type {?} */\n Utils.prototype.indexedDB;\n}\n/**\n * @record\n */\nfunction IndexDetails() { }\nif (false) {\n /** @type {?} */\n IndexDetails.prototype.indexName;\n /** @type {?} */\n IndexDetails.prototype.order;\n}\nclass DbWrapper {\n /**\n * @param {?} dbName\n * @param {?} version\n */\n constructor(dbName, version) {\n this.dbName = dbName;\n this.dbVersion = version || 1;\n }\n /**\n * @param {?} storeName\n * @return {?}\n */\n validateStoreName(storeName) {\n return this.db.objectStoreNames.contains(storeName);\n }\n /**\n * @param {?} storeName\n * @param {?} reject\n * @return {?}\n */\n validateBeforeTransaction(storeName, reject) {\n if (!this.db) {\n reject('You need to use the openDatabase function to create a database before you query it!');\n }\n if (!this.validateStoreName(storeName)) {\n reject('objectStore does not exists: ' + storeName);\n }\n }\n /**\n * @param {?} options\n * @return {?}\n */\n createTransaction(options) {\n /** @type {?} */\n let trans = this.db.transaction(options.storeName, options.dbMode);\n trans.onerror = options.error;\n trans.oncomplete = options.complete;\n trans.onabort = options.abort;\n return trans;\n }\n /**\n * @param {?} type\n * @param {?} storeName\n * @param {?} reject\n * @param {?} resolve\n * @return {?}\n */\n optionsGenerator(type, storeName, reject, resolve) {\n return {\n storeName: storeName,\n dbMode: type,\n error: (/**\n * @param {?} e\n * @return {?}\n */\n (e) => {\n reject(e);\n }),\n complete: (/**\n * @param {?} e\n * @return {?}\n */\n (e) => {\n resolve();\n }),\n abort: (/**\n * @param {?} e\n * @return {?}\n */\n (e) => {\n reject(e);\n })\n };\n }\n}\nif (false) {\n /** @type {?} */\n DbWrapper.prototype.dbName;\n /** @type {?} */\n DbWrapper.prototype.dbVersion;\n /** @type {?} */\n DbWrapper.prototype.db;\n}\n/**\n * @record\n */\nfunction Options() { }\nif (false) {\n /** @type {?} */\n Options.prototype.storeName;\n /** @type {?} */\n Options.prototype.dbMode;\n /** @type {?} */\n Options.prototype.error;\n /** @type {?} */\n Options.prototype.complete;\n /** @type {?|undefined} */\n Options.prototype.abort;\n}\n/** @enum {string} */\nconst DBMode = {\n readonly: 'readonly',\n readwrite: 'readwrite',\n};\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\nexport { NgxIndexedDB };\n\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { NgxIndexedDB } from 'ngx-indexed-db';\nimport { Observable, Subject, from, of } from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\nimport { Md5 } from 'ts-md5';\n\nimport { DeQueryAvailabilityParams } from 'src/app/_core/de-query/context.service';\nimport { ContextLineDTO } from 'src/app/_core/de-query/model/context-line.model';\nimport { DeQuery } from 'src/app/_core/de-query/model/de-query.model';\nimport { GridColumnMetaDataDTO } from 'src/app/_core/de-query/model/grid-column-meta-data';\nimport { API_ROOT } from 'src/app/_core/models/api-route.model';\nimport { AgrUtils } from 'src/app/_shared/utils/agr-utils';\nimport { DeQueryPayload } from 'src/app/dashboard/element-query-builder';\n\ninterface CacheItem {\n obj: any;\n cachedAt: number;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class IndexDbCacheService {\n private db: NgxIndexedDB;\n private openPromise: Promise;\n private activeRequests: Map> = new Map();\n\n constructor(private httpClient: HttpClient) {\n this.openPromise = new Promise((resolve, reject) => {\n const db = new NgxIndexedDB('agrIndexedDB', 2); // Increment version number if adding a new object store.\n db.openDatabase(2, (event: IDBVersionChangeEvent) => {\n // Increment version here as well.\n if (event.oldVersion < 1) {\n (event.target as IDBOpenDBRequest).result.createObjectStore('context');\n (event.target as IDBOpenDBRequest).result.createObjectStore('columns');\n (event.target as IDBOpenDBRequest).result.createObjectStore('dashboard-chart');\n (event.target as IDBOpenDBRequest).result.createObjectStore('dashboard-kpi');\n }\n if (event.oldVersion < 2) {\n (event.target as IDBOpenDBRequest).result.createObjectStore('de-query');\n }\n }).then(() => {\n this.db = db;\n resolve(this.db);\n }, reject);\n });\n }\n\n getGridColumnMetaDataDtos(query: DeQuery, apiObservable: Observable): Observable {\n // TODO: strip filter values, except for period filters\n const hash = Md5.hashStr(JSON.stringify(query));\n return this.getThroughCacheStore('columns', hash, apiObservable);\n }\n\n getContextLineDtos(params: DeQueryAvailabilityParams, apiObservable: Observable): Observable {\n const hash = Md5.hashStr(this.stringifyDeQueryAvailabilityParams(params));\n return this.getThroughCacheStore('context', hash, apiObservable);\n }\n\n getDashboardChart(query: DeQueryPayload, apiObservable: Observable): Observable {\n const hash = Md5.hashStr(JSON.stringify(query));\n return this.getThroughCacheStore('dashboard-chart', hash, apiObservable);\n }\n\n getDashboardKpi(query: DeQueryPayload, apiObservable: Observable<{}[]>): Observable<{}[]> {\n const hash = Md5.hashStr(JSON.stringify(query));\n return this.getThroughCacheStore('dashboard-kpi', hash, apiObservable);\n }\n\n getFromCache(query: DeQuery, apiObservable: Observable, tableSetId?: number): Observable {\n const hashString = !isNaN(tableSetId) ? `${JSON.stringify(query)}${tableSetId}` : JSON.stringify(query);\n const hash = Md5.hashStr(hashString);\n return this.getThroughCacheStore('de-query', hash, apiObservable);\n }\n\n /**\n * Clear all data in IndexedDB.\n */\n clear(): void {\n this.db.clear('context').catch(() => {});\n this.db.clear('columns').catch(() => {});\n this.db.clear('dashboard-chart').catch(() => {});\n this.db.clear('dashboard-kpi').catch(() => {});\n this.db.clear('de-query').catch(() => {});\n this.httpClient.delete(`${API_ROOT}/cache`).subscribe();\n }\n\n private stringifyDeQueryAvailabilityParams(params: DeQueryAvailabilityParams): string {\n return JSON.stringify({\n query: this.stripQueryFilterValues(params.query),\n allActions: params.allActions,\n workspaceId: params.workspaceId,\n tableSetId: params.tableSetId\n });\n }\n\n private stripQueryFilterValues(query: DeQuery): DeQuery {\n if (!query.filters) {\n return query;\n }\n return {\n queryType: query.queryType,\n columns: query.columns,\n filters: query.filters.map((filter) => ({ column: filter.column, operator: filter.operator, values: [0] })),\n series: query.series,\n pivot: query.pivot\n };\n }\n\n // eslint-disable-next-line max-lines-per-function\n private getThroughCacheStore(store: string, hash: string, notFoundObservable: Observable): Observable {\n if (this.activeRequests.has(`${store}-${hash}`)) {\n return this.activeRequests.get(`${store}-${hash}`).asObservable();\n }\n const subject = new Subject();\n this.activeRequests.set(`${store}-${hash}`, subject);\n\n from(this.getCachedItemValue(this.getCacheItem(store, hash)))\n .pipe(\n switchMap((itemValue: ItemType) => {\n if (itemValue) {\n subject.next(itemValue);\n this.activeRequests.delete(`${store}-${hash}`);\n subject.complete();\n return of(undefined);\n }\n return notFoundObservable.pipe(\n switchMap((dtos) => {\n this.storeCacheItem(store, hash, dtos)\n .then()\n .finally(() => {\n subject.next(dtos);\n this.activeRequests.delete(`${store}-${hash}`);\n subject.complete();\n });\n return of(undefined);\n })\n );\n })\n )\n .subscribe();\n\n return subject;\n }\n\n private async getCachedItemValue(cacheItemPromise: Promise): Promise {\n try {\n const cacheItem: CacheItem = await cacheItemPromise;\n return this.isValid(cacheItem) ? cacheItem.obj : undefined;\n } catch (err) {\n console.warn('AGR: Error getting data from IndexedDB', err);\n }\n }\n\n /**\n * Cached objects in IndexedDB is only valid for one day.\n */\n private isValid(cacheItem: CacheItem): boolean {\n if (!cacheItem || !cacheItem.cachedAt) {\n return false;\n }\n const cached = new Date(cacheItem.cachedAt);\n const today = new Date();\n return AgrUtils.isSameDay(cached, today);\n }\n\n private async storeCacheItem(storeName: string, hash: string, value: any): Promise {\n const cacheItem = { obj: value, cachedAt: new Date().getTime() };\n const db = await this.getDb();\n const existingValue = await db.getByKey(storeName, hash);\n if (!existingValue) {\n return db.add(storeName, cacheItem, hash);\n }\n return db.update(storeName, cacheItem, hash);\n }\n\n private async getCacheItem(storeName: string, hash: string): Promise {\n const db = await this.getDb();\n return db.getByKey(storeName, hash);\n }\n\n private async getDb(): Promise {\n if (this.db) {\n return this.db;\n }\n return this.openPromise;\n }\n}\n","export type PeriodType = 'past' | 'present' | 'future' | undefined;\n\nexport type GridColumnType = 'column_ds_col' | 'data_series_col' | 'total_col' | 'data_col' | 'column_col';\n\nexport type ColumnValueType = 'decimal' | 'int' | 'string' | 'date';\n\nexport interface GridColumnMetaDataDTO {\n aggr_as?: string; // One of aggr_as types coming from query.columns\n caption?: string;\n col_id_value?: number;\n column_type?: GridColumnType;\n description?: string;\n is_col_id_range?: boolean;\n lookup?: boolean;\n lookup_column?: string;\n name?: string;\n num?: number;\n rel_id_value?: number;\n type?: ColumnValueType;\n}\n\nexport class GridColumnMetaData {\n aggrAs?: string;\n caption: string;\n colIdValue?: number;\n columnType: GridColumnType;\n description?: string;\n isColIdRange?: boolean;\n lookup: boolean;\n lookupColumn?: string;\n name: string;\n num: number;\n type: ColumnValueType;\n periodType?: PeriodType;\n relIdValue?: number;\n\n constructor(dto: GridColumnMetaDataDTO) {\n this.aggrAs = dto.aggr_as;\n this.caption = dto.caption;\n this.colIdValue = dto.col_id_value;\n this.columnType = dto.column_type;\n this.description = dto.description;\n this.isColIdRange = dto.is_col_id_range;\n this.lookup = dto.lookup;\n this.lookupColumn = dto.lookup_column;\n this.name = dto.name;\n this.num = dto.num;\n this.type = dto.type;\n this.relIdValue = dto.rel_id_value;\n\n if (dto.rel_id_value !== undefined && dto.rel_id_value !== null) {\n this.periodType = dto.rel_id_value < 0 ? 'past' : dto.rel_id_value > 0 ? 'future' : 'present';\n }\n }\n\n get isDataSeriesTotalOrDataColumn(): boolean {\n return this.columnType === 'total_col' || this.columnType === 'data_col';\n }\n\n get isDataSeriesDataColumn(): boolean {\n return this.columnType === 'data_col';\n }\n\n get isColumnColumn(): boolean {\n return this.columnType === 'column_col' || this.columnType === 'column_ds_col';\n }\n\n get isDataSeriesLabelColumn(): boolean {\n return this.columnType === 'data_series_col';\n }\n}\n","/* eslint-disable complexity */\n/* eslint-disable max-lines-per-function */\n/* eslint-disable max-lines */\n/* eslint-disable max-len */\nimport {\n NumberSymbol,\n formatCurrency,\n formatDate,\n formatNumber,\n formatPercent,\n getCurrencySymbol,\n getLocaleNumberSymbol,\n registerLocaleData\n} from '@angular/common';\nimport { Injectable } from '@angular/core';\nimport * as moment from 'moment';\n\nimport { SessionService } from 'src/app/_core/session.service';\nimport { SettingsService } from 'src/app/_core/settings/settings.service';\nimport { StoreService } from 'src/app/_core/store.service';\n\nconst enum FormatType {\n integer = 1,\n number,\n currency,\n percent,\n percentage,\n date,\n datetime,\n time,\n duration,\n durationHuman,\n id,\n invalid\n}\n\ninterface Persistent {\n initialLocales: string[]; // Locales that are registered on startup\n}\n\n/**\n * TO ADD a locale:\n * 1. add it to the webpackInclude magic comment in registerLocaleData()\n * 2. add it to the const availableLocales array\n * 3. add it to `private defaultLocales` if it is important to make the locale available immediately to all clients\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class FormatService {\n availableLocales: Locale[] = availableLocales;\n private registeredLocales = new Set();\n private defaultLocales = ['en', 'en-GB', 'is', 'fo', 'fr', 'de', 'es', 'da', 'nb', 'sv'];\n private persistent: Persistent = {\n initialLocales: this.defaultLocales\n };\n private persistentKey = 'formatService';\n\n private formatStringToType = {\n id: FormatType.id,\n int: FormatType.integer,\n integer: FormatType.integer,\n number: FormatType.number,\n decimal: FormatType.number,\n float: FormatType.number,\n currency: FormatType.currency,\n percent: FormatType.percent,\n percentage: FormatType.percentage,\n date: FormatType.date,\n datetime: FormatType.datetime,\n time: FormatType.time,\n duration: FormatType.duration,\n durationHuman: FormatType.durationHuman\n };\n\n constructor(private sessionService: SessionService, private settingsService: SettingsService, private storeService: StoreService) {\n this.loadPersistent();\n this.initialLocaleRegistration();\n }\n\n get numberLocale(): string {\n return this.getNumberLocale();\n }\n get dateLocale(): string {\n return this.getLocale();\n }\n get decimalSeparator(): string {\n return getLocaleNumberSymbol(this.numberLocale, NumberSymbol.Decimal);\n }\n get thousandSeparator(): string {\n return getLocaleNumberSymbol(this.numberLocale, NumberSymbol.Group);\n }\n\n /**\n * The one and only API for format service!\n * Formats any number, currency, percentage, date, datetime, time\n * given a correctly structured AGR @formatString and returns a formatted string\n * @param value The value to format\n * @param formatString String delimited by colons like 'currency:USD:en'\n */\n format(value: string | number | Date | boolean, formatString: string): string {\n if (typeof value === 'boolean') {\n return value.toString();\n }\n if (value !== 0 && !value) {\n return '';\n }\n const formatType = this.getFormatType(formatString);\n switch (formatType) {\n case FormatType.integer:\n return formatNumber(Number(value), this.getNumberLocale(), '1.0-0');\n case FormatType.number:\n return formatNumber(Number(value), this.getNumberLocale(), this.getNumberDigitsInfo(formatString));\n case FormatType.percent:\n return formatPercent(Number(value), this.getNumberLocale(), this.getPercentageDigitsInfo(formatString));\n case FormatType.percentage:\n return formatPercent(+(Number(value) / 100).toFixed(8), this.getNumberLocale(), this.getPercentageDigitsInfo(formatString));\n case FormatType.currency:\n return this.formatCurrency(Number(value), formatString);\n case FormatType.date:\n return !value\n ? ''\n : this.isValidDate(value)\n ? formatDate(this.parseDate(value), this.getDateFormat(formatString), this.getLocale())\n : String(value);\n case FormatType.datetime:\n return !value\n ? ''\n : this.isValidDate(value)\n ? formatDate(this.parseDate(value), this.getDateTimeFormat(formatString), this.getLocale())\n : String(value);\n case FormatType.time:\n return !value\n ? ''\n : this.isValidDate(value)\n ? formatDate(this.parseDate(value), this.getTimeFormat(formatString), this.getLocale())\n : String(value);\n case FormatType.duration:\n return this.formatDuration(value, this.getDurationFormat(formatString));\n case FormatType.durationHuman:\n return this.formatHumanizedDuration(value);\n case FormatType.id:\n return String(value);\n case FormatType.invalid:\n return String(value);\n default:\n return String(value);\n }\n }\n\n /**\n * Gets the locale code from 1. local storage (user) or 2. default settings or 3. fallback to 'en-GB'\n */\n getLocale(): string {\n let localeCode = (this.sessionService.user && this.sessionService.user.locale) || this.settingsService.locale();\n localeCode = localeCode && this.isAvailableLocale(localeCode) ? localeCode : 'en-GB';\n this.registerLocaleData(localeCode);\n return localeCode;\n }\n\n registerLocaleData(localeCode: string): Promise {\n const isAvailable = this.availableLocales.some((locale) => locale.code === localeCode);\n if (!isAvailable || this.isRegisteredLocale(localeCode)) {\n return undefined;\n }\n this.registeredLocales.add(localeCode);\n this.savePersistent();\n return import(\n /* webpackInclude: /(af|bs|ca|cs|cy|da|da-GL|de|de-AT|de-CH|de-LI|de-LU|el|en|en-AU|en-CA|en-GB|en-IN|en-IE|en-MT|en-NZ|en-ZA|es|es-419|es-AR|es-CL|es-MX|es-PE|et|fo|fi|fr|fr-BE|fr-CA|fr-LU|fr-CH|hu|hr|is|it|it-CH|ja|lt|lv|mk|mt|nb|nn|nl|nl-BE|pl|pt|pt-PT|ro|ro-MD|ru|sr|sl|sk|sv|sv-AX|sv-FI|sw|tr|uk)\\.mjs$/ */\n `/node_modules/@angular/common/locales/${localeCode}.mjs`\n ).then((module) => {\n registerLocaleData(module.default);\n });\n }\n\n private getFormatType(formatString: string): FormatType {\n const formatType = formatString ? this.formatStringToType[formatString.split(':')[0]] : '';\n return formatType ? formatType : FormatType.invalid;\n }\n\n private formatCurrency(value: number, formatString: string): string {\n const locale = this.getCurrencyLocale(formatString);\n const currencySymbol = this.getCurrencySymbol(formatString);\n const currencyCode = this.getCurrencyCode(formatString);\n const digitsInfo = this.getCurrencyDigitsInfo(formatString);\n return formatCurrency(value, locale, currencySymbol, currencyCode, digitsInfo);\n }\n\n private getNumberLocale(): string {\n let localeCode = this.sessionService.user.locale;\n localeCode = this.isAvailableLocale(localeCode) ? localeCode : this.settingsService.currencyLocale();\n return this.isAvailableLocale(localeCode) ? localeCode : this.getLocale();\n }\n\n /**\n * Returns the locale from a formatString or the global @locale if non is present\n * @param formatString e.g 'currency:ISK:is'\n */\n private getCurrencyLocale(formatString: string): string {\n const localeCode = formatString.split(':')[2]; // The position of locale for a currency type\n return this.isAvailableLocale(localeCode) ? localeCode : this.getNumberLocale();\n }\n\n private getCurrencySymbol(formatString: string): string {\n const currencyCode = this.getCurrencyCode(formatString);\n const locale = this.getCurrencyLocale(formatString);\n return getCurrencySymbol(currencyCode, 'narrow', locale);\n }\n\n /**\n * Get the ISO-4217 currency designator ('USD', 'EUR', 'ISK')\n * from a currency type format string.\n * Checks if value is a number and ignores e.g currency:2 (AGR 5 formatString)\n * @param formatString e.g 'currency:USD:en'\n */\n private getCurrencyCode(formatString: string): string {\n const currencyCode = formatString.split(':')[1];\n return currencyCode && isNaN(+currencyCode) ? currencyCode.toUpperCase() : this.getCurrency();\n }\n\n /**\n * Gets the 4th value as fractionDigits from a currency format string and builds a 'digitsInfo' string\n * @param formatString e.g 'currency:USD:en:3'\n */\n private getCurrencyDigitsInfo(formatString: string): string {\n const fractionDigits = Number(formatString.split(':')[3]);\n return !isNaN(fractionDigits) ? `1.${fractionDigits}-${fractionDigits}` : '';\n }\n\n private getCurrency(): string {\n const currency = this.settingsService.currency();\n return currency ? currency.toUpperCase() : 'GBP';\n }\n\n private isValidDate(value: string | number | Date): boolean {\n const date = new Date(value);\n if (date instanceof Date && !isNaN(+date)) {\n return true;\n }\n if (moment(value, 'DD-MM-YYYY').isValid()) {\n return true;\n }\n return moment(value).isValid();\n }\n\n /**\n * Javascript Date expects an ISO 8601 input if date is formatted differently we have to handle that\n */\n private parseDate(value: string | number | Date): Date {\n if (isDateOnlyString(value)) {\n return new Date(`${value}T00:00`);\n } // T00:00 required so date is represented in client time zone\n if (isExpectedInput(value)) {\n return new Date(value);\n }\n return moment(value, 'DD-MM-YYYY').toDate(); // If value is a non ISO string we default to 'DD/MM/YYYY', format\n\n function isExpectedInput(input: string | number | Date): boolean {\n const days = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']; // When grouping formatted days new Date().toString() is input\n return typeof input !== 'string' || moment(input, moment.ISO_8601).isValid() || days.includes(input.substr(0, 3));\n }\n\n function isDateOnlyString(input: string | number | Date): boolean {\n return typeof input === 'string' && moment(input, moment.ISO_8601).isValid() && input.length === 10;\n }\n }\n\n /**\n * Expects a formatString 'date', 'datetime' or 'time' and returns the substring behind the first colon ':'\n * that should contain, Angular formatDate() parameters i.e ISO-8601 representation of dates.\n * @param formatString e.g 'datetime:d. MMMM y, hh:mm:ss'\n */\n private getDateFormatString(formatString: string): string {\n const indexOfColon = formatString.indexOf(':') + 1;\n return indexOfColon ? formatString.substring(indexOfColon) : '';\n }\n\n private getDateFormat(formatString: string): string {\n let format = this.getDateFormatString(formatString);\n format = !format ? this.settingsService.localeDateFormat() : format;\n return !format ? 'mediumDate' : format;\n }\n\n private getDateTimeFormat(formatString: string): string {\n let format = this.getDateFormatString(formatString);\n format = !format ? this.settingsService.localeDateTimeFormat() : format;\n return !format ? 'medium' : format;\n }\n\n private getTimeFormat(formatString: string): string {\n let format = this.getDateFormatString(formatString);\n format = !format ? this.settingsService.localeTimeFormat() : format;\n return !format ? 'mediumTime' : format;\n }\n\n private getDurationFormat(formatString: string): string {\n let format = this.getDateFormatString(formatString);\n format = !format ? this.settingsService.localeDurationFormat() : format;\n return !format ? 'HH:mm:ss' : format;\n }\n\n /**\n * Converts AGR formatString info to an Angular 'digitsInfo' string as\n * {minIntegerDigits}.{minFractionDigits}-{maxFractionDigits} e.g '1.3-3'\n * @param formatString e.g. 'number', 'number:2', 'number:2:4'\n */\n private getNumberDigitsInfo(formatString: string): string {\n let minFractionDigits = Math.abs(Number(formatString.split(':')[1]));\n minFractionDigits = isNaN(minFractionDigits) ? undefined : minFractionDigits;\n let maxFractionDigits = Math.abs(Number(formatString.split(':')[2]));\n maxFractionDigits = isNaN(maxFractionDigits) || maxFractionDigits < minFractionDigits ? minFractionDigits : maxFractionDigits;\n return minFractionDigits === undefined\n ? `1.0-${this.getGlobalMaxNumberFractionDigits()}`\n : `1.${minFractionDigits}-${maxFractionDigits}`;\n }\n\n private getGlobalMaxNumberFractionDigits(): number {\n const maxFractionDigits = Math.abs(Number(this.settingsService.maxNumberFractionDigits()));\n return isNaN(maxFractionDigits) ? 99 : maxFractionDigits;\n }\n\n private getPercentageDigitsInfo(formatString: string): string {\n let minFractionDigits = Math.abs(Number(formatString.split(':')[1]));\n minFractionDigits = isNaN(minFractionDigits) ? undefined : minFractionDigits;\n let maxFractionDigits = Math.abs(Number(formatString.split(':')[2]));\n maxFractionDigits = isNaN(maxFractionDigits) || maxFractionDigits < minFractionDigits ? minFractionDigits : maxFractionDigits;\n return minFractionDigits === undefined\n ? `1.0-${this.getGlobalMaxPercentageFractionDigits()}`\n : `1.${minFractionDigits}-${maxFractionDigits}`;\n }\n\n private getGlobalMaxPercentageFractionDigits(): number {\n const maxFractionDigits = Math.abs(Number(this.settingsService.maxPercentageFractionDigits()));\n return isNaN(maxFractionDigits) ? 99 : maxFractionDigits;\n }\n\n private formatDuration(value: number | string | Date, formatString: string): string {\n const duration = value instanceof Date ? value : !isNaN(+value) ? new Date(+value) : new Date(value);\n if (isNaN(duration.getTime())) {\n return String(value);\n }\n return moment.utc(moment.duration(duration.getTime(), 'milliseconds').asMilliseconds()).locale(this.dateLocale).format(formatString);\n }\n\n private formatHumanizedDuration(value: number | string | Date): string {\n const duration = value instanceof Date ? value : new Date(value);\n return moment.duration(duration.getTime()).locale(this.dateLocale).humanize();\n }\n\n private isAvailableLocale(localeCode: string): boolean {\n const isAvailable = this.availableLocales.some((locale) => locale.code === localeCode);\n if (!this.isRegisteredLocale(localeCode)) {\n this.registerLocaleData(localeCode);\n }\n return isAvailable;\n }\n\n private isRegisteredLocale(localeCode: string): boolean {\n return this.registeredLocales.has(localeCode);\n }\n\n /**\n * Registers locales in system and user settings\n * Registers locales in default array or in local storage\n */\n private initialLocaleRegistration(): void {\n if (this.persistent.initialLocales.length < this.defaultLocales.length) {\n this.defaultLocales.map((localeCode) => this.registerLocaleData(localeCode));\n } else {\n this.persistent.initialLocales.map((localeCode) => this.registerLocaleData(localeCode));\n }\n this.registerLocaleData(this.settingsService.locale());\n this.registerLocaleData(this.settingsService.currencyLocale());\n if (this.sessionService.user) {\n this.registerLocaleData(this.sessionService.user.locale);\n }\n }\n\n private loadPersistent(): void {\n this.persistent = this.storeService.load(this.persistentKey, this.persistent) as Persistent;\n }\n\n private savePersistent(): void {\n this.persistent.initialLocales = [...this.registeredLocales];\n this.storeService.set(this.persistentKey, this.persistent);\n }\n}\n\nexport interface Locale {\n code: string;\n language: string;\n name: string;\n region?: string;\n caption?: string;\n}\n\nconst availableLocales: Locale[] = [\n { code: 'af', language: 'Afrikaans', name: 'Afrikaans' },\n { code: 'bs', language: 'Bosnian', name: 'Bosanski' },\n { code: 'ca', language: 'Catalan', name: 'Català' },\n { code: 'cs', language: 'Czech', name: 'Čeština' },\n { code: 'cy', language: 'Welsh', name: 'Cymraeg' },\n { code: 'da-GL', language: 'Danish', name: 'Dansk', region: 'Greenland' },\n { code: 'da', language: 'Danish', name: 'Dansk', region: 'Denmark' },\n { code: 'de-AT', language: 'Austrian German', name: 'Österreichisches Deutsch', region: 'Austria' },\n { code: 'de-CH', language: 'Swiss High German', name: 'Schweizer Hochdeutsch', region: 'Switzerland' },\n { code: 'de-LI', language: 'German', name: 'Deutsch', region: 'Liechtenstein' },\n { code: 'de-LU', language: 'German', name: 'Deutsch', region: 'Luxembourg' },\n { code: 'de', language: 'German', name: 'Deutsch' },\n { code: 'el', language: 'Greek', name: 'Ελληνικά' },\n { code: 'en-AU', language: 'English', name: 'Australian English', region: 'Australia' },\n { code: 'en-CA', language: 'English', name: 'Canadian English', region: 'Canada' },\n { code: 'en-GB', language: 'English', name: 'British English', region: 'Great Britain' },\n { code: 'en-IE', language: 'English', name: 'English', region: 'Ireland' },\n { code: 'en-IN', language: 'English', name: 'English', region: 'India' },\n { code: 'en-MT', language: 'English', name: 'English', region: 'Malta' },\n { code: 'en-NZ', language: 'English', name: 'English', region: 'New Zealand' },\n { code: 'en', language: 'English', name: 'American English', region: 'United States' },\n { code: 'en-ZA', language: 'English', name: 'English', region: 'Southern Africa' },\n { code: 'es-419', language: 'Latin American Spanish', name: 'Español latinoamericano' },\n { code: 'es-AR', language: 'Spanish', name: 'Español', region: 'Argentina' },\n { code: 'es-CL', language: 'Spanish', name: 'Español', region: 'Chile' },\n { code: 'es-MX', language: 'Mexican Spanish', name: 'Español de México', region: 'Mexico' },\n { code: 'es-PE', language: 'Spanish', name: 'Español', region: 'Peru' },\n { code: 'es', language: 'Spanish', name: 'Español' },\n { code: 'et', language: 'Estonian', name: 'Eesti' },\n { code: 'fi', language: 'Finnish', name: 'Suomi' },\n { code: 'fo', language: 'Faroese', name: 'Føroyskt' },\n { code: 'fr-BE', language: 'French', name: 'Français', region: 'Belgium' },\n { code: 'fr-CA', language: 'Canadian French', name: 'Français Canadien', region: 'Canada' },\n { code: 'fr-CH', language: 'French', name: 'Français', region: 'Switzerland' },\n { code: 'fr-LU', language: 'French', name: 'Français', region: 'Luxembourg' },\n { code: 'fr', language: 'French', name: 'Français', region: 'France' },\n { code: 'hr', language: 'Croatian', name: 'Hrvatski' },\n { code: 'hu', language: 'Hungarian', name: 'Magyar' },\n { code: 'is', language: 'Icelandic', name: 'Íslenska' },\n { code: 'it-CH', language: 'Italian', name: 'Italiano', region: 'Switzerland' },\n { code: 'it', language: 'Italian', name: 'Italiano' },\n { code: 'ja', language: 'Japanese', name: '日本語' },\n { code: 'lt', language: 'Lithuanian', name: 'Lietuvių' },\n { code: 'lv', language: 'Latvian', name: 'Latviešu' },\n { code: 'mk', language: 'Macedonian', name: 'Македонски' },\n { code: 'mt', language: 'Maltese', name: 'Malti' },\n { code: 'nb', language: 'Norwegian Bokmål', name: 'Norsk Bokmål' },\n { code: 'nl-BE', language: 'Flemish', name: 'Nederlands (België)', region: 'Belgium' },\n { code: 'nl', language: 'Dutch', name: 'Nederlands', region: 'Netherlands' },\n { code: 'nn', language: 'Norwegian Nynorsk', name: 'Norsk Nynorsk' },\n { code: 'pl', language: 'Polish', name: 'Polski' },\n { code: 'pt-PT', language: 'European Portuguese', name: 'Português Europeu', region: 'Portugal' },\n { code: 'pt', language: 'Portuguese', name: 'Português' },\n { code: 'ro-MD', language: 'Moldavian', name: 'Română (Republica Moldova)' },\n { code: 'ro', language: 'Romanian', name: 'Română' },\n { code: 'ru', language: 'Russian', name: 'Русский' },\n { code: 'sk', language: 'Slovak', name: 'Slovaščina' },\n { code: 'sl', language: 'Slovenian', name: 'Slovenščina' },\n { code: 'sr', language: 'Serbian', name: 'Српски' },\n { code: 'sv-AX', language: 'Swedish', name: 'Svenska', region: 'Åland Islands' },\n { code: 'sv-FI', language: 'Swedish', name: 'Svenska', region: 'Finland' },\n { code: 'sv', language: 'Swedish', name: 'Svenska' },\n { code: 'sw', language: 'Swahili', name: 'Kiswahili' },\n { code: 'tr', language: 'Turkish', name: 'Türkçe' },\n { code: 'uk', language: 'Ukrainian', name: 'українська' }\n].map((locale: Locale) => {\n const regionString = locale.region ? `, ${locale.region}` : '';\n locale.caption = `${locale.name} - ${locale.language}${regionString} (${locale.code})`;\n return locale;\n});\n","import { EventEmitter, Injectable } from '@angular/core';\nimport { debounce } from 'lodash';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { ItemCardUpdateMessage } from 'src/app/item-card/models/item-card-update-message.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class GlobalEventsService {\n showNavBarEvent$: BehaviorSubject = new BehaviorSubject(false);\n redrawNavBarEvent$ = new EventEmitter();\n updateItemCardEvent$ = new EventEmitter();\n refreshItemCardEvent$ = new EventEmitter();\n\n refreshItemCard = debounce(\n (itemId?) => {\n this.triggerRefreshItemCard(itemId);\n },\n 400,\n { leading: true, trailing: true }\n );\n updateItemCard = debounce(\n (itemId, orderId?) => {\n this.triggerUpdateItemCard(itemId, orderId);\n },\n 400,\n { leading: true, trailing: true }\n );\n refreshDetailsColumn = debounce(\n (column) => {\n this.triggerRefreshItemCardDetailsColumn(column);\n },\n 400,\n { leading: true, trailing: true }\n );\n\n private hasBroadcastChannel = 'BroadcastChannel' in self;\n private itemBroadcastChannel: BroadcastChannel;\n\n constructor() {\n if (!this.hasBroadcastChannel) {\n return;\n }\n this.itemBroadcastChannel = new BroadcastChannel('item');\n this.itemBroadcastChannel.onmessage = this.itemMessageReceived.bind(this);\n }\n\n showNavBar(): void {\n this.showNavBarEvent$.next(true);\n }\n\n hideNavBar(): void {\n this.showNavBarEvent$.next(false);\n }\n\n redrawNavBar(): void {\n this.redrawNavBarEvent$.emit();\n }\n\n refreshOtherItemCards(itemId?: number): void {\n if (!this.hasBroadcastChannel) {\n return;\n }\n this.itemBroadcastChannel.postMessage({ itemId, refresh: true });\n }\n\n refreshOtherItemCardsDetailsColumns(column?: string): void {\n if (!this.hasBroadcastChannel) {\n return;\n }\n this.itemBroadcastChannel.postMessage({ column, refresh: true });\n }\n\n itemMessageReceived(event: MessageEvent): void {\n const message: ItemCardUpdateMessage = { ...event.data, ...{ isBroadcast: true } };\n message.refresh ? this.refreshItemCardEvent$.emit(message) : this.updateItemCardEvent$.emit(message);\n }\n\n private triggerRefreshItemCard(itemId?: number): void {\n this.refreshItemCardEvent$.emit({ itemId });\n this.refreshOtherItemCards(itemId);\n }\n\n private triggerRefreshItemCardDetailsColumn(column?: string): void {\n this.updateItemCardEvent$.emit({ column });\n this.refreshOtherItemCardsDetailsColumns(column);\n }\n\n private triggerUpdateItemCard(itemId: number, orderId?: number): void {\n this.updateItemCardEvent$.emit({ itemId, orderId });\n if (!this.hasBroadcastChannel) {\n return;\n }\n this.itemBroadcastChannel.postMessage({ itemId, orderId });\n }\n}\n","/* eslint-disable @typescript-eslint/naming-convention */\nexport const API_ROOT = '/api';\n","export interface FeatureDTO {\n id: number;\n featureRef: string;\n caption?: string;\n description?: string;\n enabled?: boolean;\n system?: boolean;\n workspace_feature?: boolean;\n}\n\n/**\n * Feature\n */\nexport class Feature {\n id: number;\n featureRef: string;\n caption: string;\n description?: string;\n enabled?: boolean;\n system?: boolean;\n workspaceFeature?: boolean;\n\n constructor(featureDto?: FeatureDTO) {\n if (!featureDto) {\n return;\n }\n this.id = featureDto.id;\n this.featureRef = featureDto.featureRef;\n this.caption = featureDto.caption;\n this.description = featureDto.description;\n this.enabled = featureDto.enabled;\n this.system = featureDto.system;\n this.workspaceFeature = featureDto.workspace_feature;\n }\n\n toDto(): FeatureDTO {\n return {\n id: this.id,\n featureRef: this.featureRef,\n caption: this.caption,\n description: this.description,\n enabled: this.enabled,\n system: this.system,\n workspace_feature: this.workspaceFeature\n };\n }\n}\n","import { Feature, FeatureDTO } from 'src/app/_core/models/feature.model';\nimport { TimezoneService } from 'src/app/_core/timezone.service';\n\nexport interface RoleDTO {\n id: number;\n name: string;\n caption: string;\n createdAt: string; // Date\n updatedAt: string; // Date\n features: FeatureDTO[];\n}\n\nexport class Role {\n id: number;\n name: string;\n caption: string;\n createdAt: Date;\n updatedAt: Date;\n features: Feature[] = [];\n\n constructor(dto: RoleDTO) {\n this.id = dto.id;\n this.name = dto.name;\n this.caption = dto.caption;\n this.createdAt = TimezoneService.serverTimeToClientTime(dto.createdAt);\n this.updatedAt = TimezoneService.serverTimeToClientTime(dto.updatedAt);\n this.features = dto.features ? dto.features.map((featureDto) => new Feature(featureDto)) : this.features;\n }\n\n get captionAndRoleId(): string {\n return `${this.caption} (${this.name})`;\n }\n\n toDto(): RoleDTO {\n return {\n id: this.id,\n name: this.name,\n caption: this.caption,\n createdAt: TimezoneService.dateToISOString(this.createdAt),\n updatedAt: TimezoneService.dateToISOString(this.updatedAt),\n features: this.features.map((feature) => feature.toDto())\n };\n }\n}\n","export interface AccessGroupDTO {\n id: number;\n accessGroupName: string;\n refTableId: number;\n accessType: string;\n isInclusive: boolean;\n}\n\nexport class AccessGroup {\n id: number;\n name: string;\n refTableId: number;\n accessType: string;\n isInclusive: boolean;\n\n constructor(dto: AccessGroupDTO) {\n this.id = dto.id;\n this.name = dto.accessGroupName;\n this.refTableId = dto.refTableId;\n this.accessType = dto.accessType;\n this.isInclusive = dto.isInclusive;\n }\n\n toDto(): AccessGroupDTO {\n return {\n id: this.id,\n accessGroupName: this.name,\n refTableId: this.refTableId,\n accessType: this.accessType,\n isInclusive: this.isInclusive\n };\n }\n}\n","import { AccessGroup, AccessGroupDTO } from 'src/app/_core/models/access-group.model';\nimport { FeatureDTO } from 'src/app/_core/models/feature.model';\nimport { Role, RoleDTO } from 'src/app/_core/models/role.model';\nimport { TimezoneService } from 'src/app/_core/timezone.service';\n\n/**\n * User interface is based on the UserDTO from API.\n * All properties need to be optional because the user can be in so many states:\n * E.g. login user data, logged in user, create user, my profile user.\n */\nexport interface UserDTO {\n id?: number; // optional for create user\n userId?: number; // Used for my profile\n username?: string; // optional for my profile\n email?: string;\n name?: string;\n auth365?: boolean;\n language?: string;\n locale?: string;\n created_at?: string; // Date\n roles?: RoleDTO[];\n accessGroups?: AccessGroupDTO[];\n system?: boolean; // if system user\n currentPassword?: string;\n password?: string; // new? password\n passwordConfirmation?: string;\n editingPassword?: boolean; // Used for my profile\n deleted?: boolean;\n\n featuresStringList?: string[];\n features?: FeatureDTO[];\n}\n\nexport interface UserBasicInfoDTO {\n id: number;\n auth365: boolean;\n username: string;\n name: string;\n email: string;\n language: string;\n}\n\nexport interface UserUpdateResponse {\n user: UserDTO;\n Success: boolean;\n error: any;\n Password: string;\n}\n\nexport class User {\n id?: number;\n username?: string;\n email?: string;\n name?: string;\n auth365?: boolean;\n language?: string;\n locale?: string;\n createdAt?: Date;\n roles?: Role[];\n accessGroups?: AccessGroup[];\n system?: boolean;\n currentPassword?: string;\n password?: string;\n passwordConfirmation?: string;\n deleted?: boolean;\n\n constructor(user?: UserDTO) {\n if (!user) {\n return;\n }\n this.id = user.id;\n this.username = user.username;\n this.email = user.email;\n this.name = user.name;\n this.auth365 = user.auth365;\n this.language = user.language;\n this.locale = user.locale;\n this.createdAt = TimezoneService.serverTimeToClientTime(user.created_at);\n this.roles = Array.isArray(user.roles) ? user.roles.map((role) => new Role(role)) : [];\n this.accessGroups = (user.accessGroups || []).map((dto) => new AccessGroup(dto));\n this.system = user.system;\n this.deleted = user.deleted;\n }\n\n get nameAndUserId(): string {\n return `${this.name} (${this.username})`;\n }\n\n toDto(): UserDTO {\n return {\n id: this.id,\n username: this.username,\n email: this.email,\n name: this.name,\n auth365: this.auth365,\n language: this.language,\n locale: this.locale,\n created_at: TimezoneService.dateToISOString(this.createdAt),\n roles: this.roles.map((role) => role.toDto()),\n accessGroups: this.accessGroups.map((group) => group.toDto()),\n system: this.system,\n currentPassword: this.currentPassword,\n password: this.password,\n passwordConfirmation: this.passwordConfirmation,\n deleted: this.deleted\n };\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\n\nimport { Login } from 'src/app/_core/authorization/login.model';\nimport { GlobalEventsService } from 'src/app/_core/global-events.service';\nimport { API_ROOT } from 'src/app/_core/models/api-route.model';\nimport { Auth365Config, BaseConfig } from 'src/app/_core/models/base-config.model';\nimport { UserDTO } from 'src/app/_core/models/user.model';\nimport { StoreService } from 'src/app/_core/store.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SessionService {\n auth365Config: Auth365Config;\n sessionKeys = ['session.user', 'session.token', 'session.authData', 'session.features'];\n\n get token(): string {\n return this.storeService.get('session.token') as string;\n }\n set token(token: string) {\n this.storeService.set('session.token', token);\n }\n get authData(): Login {\n this.validateAuthData();\n return this.storeService.get('session.authData') as Login;\n }\n set authData(authData: Login) {\n this.storeService.set('session.authData', authData);\n }\n get user(): UserDTO {\n return this.storeService.get('session.user') as UserDTO;\n }\n set user(user: UserDTO) {\n this.storeService.set('session.user', user);\n }\n get currentFeatures(): string[] {\n return this.storeService.get('session.features') as string[];\n }\n set currentFeatures(features: string[]) {\n this.storeService.set('session.features', features);\n }\n get returnUrl(): string {\n return this.storeService.get('session.returnUrl') as string;\n }\n set returnUrl(value: string) {\n if (value) {\n this.storeService.set('session.returnUrl', value);\n return;\n }\n this.storeService.remove('session.returnUrl');\n }\n\n constructor(private globalEventsService: GlobalEventsService, private httpClient: HttpClient, private storeService: StoreService) {}\n\n /**\n * Initialized at app startup from core.module.ts\n * Set session properties:\n * - Check if api uses auth365. null if not being used.\n */\n async initialize(): Promise {\n return new Promise((resolve, reject) => {\n this.httpClient.get(`${API_ROOT}/settings/base`).subscribe(\n (baseConfig: BaseConfig) => {\n this.auth365Config = baseConfig.auth365;\n if (this.user) {\n this.globalEventsService.showNavBar();\n }\n if (this.user && this.userAndAppConfigMismatch()) {\n this.clearUserData();\n }\n resolve({});\n },\n (err) => {\n window.alert('AGR Error: Failed to load settings from API');\n console.error('AGR: Failed to load settings from API');\n reject(err);\n }\n );\n });\n }\n\n /**\n * Clear user login data.\n */\n clearUserData(): void {\n this.sessionKeys.map((key) => this.storeService.remove(key));\n }\n\n /**\n * Clear local storage but keep user login data and any data stored on keys in @notDelete.\n */\n clear(): void {\n const notDeletedKeys = [...this.sessionKeys, 'lastUsedLanguage'];\n const tempStore = new Map();\n notDeletedKeys.forEach((key) => {\n tempStore.set(key, this.storeService.get(key));\n });\n localStorage.clear();\n tempStore.forEach((value, key) => this.storeService.set(key, value));\n }\n\n private userAndAppConfigMismatch(): boolean {\n const userHasAuth365 = !!this.user.auth365;\n const appHasAuth365 = !!this.auth365Config;\n return userHasAuth365 !== appHasAuth365;\n }\n\n private validateAuthData(): void {\n if (!this.storeService.isValidModel('session.authData', new Login())) {\n this.clearUserData();\n }\n }\n}\n","export interface SettingDTO {\n settingKey?: string;\n settingValue?: any;\n defaultValue?: any;\n dataType?: string;\n description?: string;\n caption?: string;\n groupKey?: string;\n insertBy?: string;\n insertDate?: string; // Date\n groupKeyNavigation?: string;\n}\n\n/**\n * MBE Report\n */\nexport class Setting {\n key?: string;\n value?: any;\n defaultValue?: any;\n dataType?: string;\n group?: string;\n caption?: string;\n description?: string;\n\n static toDto(setting: Setting): SettingDTO {\n const settingDto: SettingDTO = {};\n if (!setting) {\n return {};\n }\n\n settingDto.settingKey = setting.key;\n settingDto.settingValue = stringifyValue(setting.value, setting.dataType);\n settingDto.defaultValue = setting.defaultValue;\n settingDto.dataType = setting.dataType;\n settingDto.groupKey = setting.group;\n settingDto.caption = setting.caption;\n settingDto.description = setting.description;\n\n return settingDto;\n\n function stringifyValue(value: any, dataType: string): string {\n return dataType === 'json' ? JSON.stringify(value) : value.toString();\n }\n }\n\n // eslint-disable-next-line max-lines-per-function\n constructor(setting?: SettingDTO) {\n if (!setting) {\n return;\n }\n this.key = setting.settingKey;\n this.value = parseValue(setting.settingValue, setting.dataType);\n this.defaultValue = setting.defaultValue;\n this.dataType = setting.dataType;\n this.group = setting.groupKey ? setting.groupKey : '';\n this.caption = setting.caption ? setting.caption : '';\n this.description = setting.description;\n\n /**\n * Convert value strings to type depending on dataType attribute.\n */\n function parseValue(value: any, dataType: string): any {\n if (!value) {\n return;\n }\n switch (dataType) {\n case 'boolean':\n return value === 'true';\n case 'integer' || 'decimal':\n return +value; // to number\n case 'json':\n return JSON.parse(value);\n default:\n return value;\n }\n }\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { isNil, uniqBy } from 'lodash';\nimport { Observable } from 'rxjs';\n\nimport { API_ROOT } from 'src/app/_core/models/api-route.model';\nimport { BaseConfig } from 'src/app/_core/models/base-config.model';\nimport { Setting, SettingDTO } from 'src/app/_core/settings/settings.model';\nimport { TranslationsService } from 'src/app/_core/translations.service';\nimport { SyncBtnState } from 'src/app/_shared/sync-button/sync-button.component';\nimport { MainNavigation, SettingsNavigation } from 'src/app/nav/nav.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SettingsService {\n private settings: Setting[] = [];\n\n constructor(private httpClient: HttpClient) {}\n\n /**\n * Initialized at app startup from core.module.ts\n */\n async initialize(): Promise {\n return new Promise((resolve, reject) => {\n this.httpClient.get(`${API_ROOT}/settings/base`).subscribe(\n (baseConfig: BaseConfig) => {\n this.settings = baseConfig.settings\n .map((setting: SettingDTO) => new Setting(setting))\n .sort((a, b) => (a.key < b.key ? -1 : 1))\n .sort((a, b) => (a.group < b.group ? -1 : 1))\n .filter((setting) => !!setting.group);\n resolve(baseConfig);\n },\n (err) => {\n window.alert('AGR Error: Failed to load settings from API');\n console.error('AGR: Failed to load settings from API');\n reject(err);\n }\n );\n });\n }\n\n /**\n * Get setting object by name or all settings.\n */\n getSetting(key: string): Setting {\n return this.settings.find((setting) => setting.key === key);\n }\n\n /**\n * Get all settings.\n */\n getAll(): Setting[] {\n return this.settings;\n }\n\n /**\n * Get all settings, filtered by caption and/or group.\n */\n getFiltered(searchString: string = ''): Setting[] {\n if (searchString === '') {\n return this.settings;\n }\n return this.settings.filter((setting) => {\n const caption = TranslationsService.get(setting.caption);\n const group = TranslationsService.get(setting.group);\n const key = TranslationsService.get(setting.key);\n return (\n caption.toLowerCase().indexOf(searchString.toLowerCase()) > -1 ||\n group.toLowerCase().indexOf(searchString.toLowerCase()) > -1 ||\n key.indexOf(searchString.toLowerCase()) > -1\n );\n });\n }\n\n /**\n * Get setting value by setting name.\n */\n getValue(name: string): any {\n const setting = this.getSetting(name);\n return setting ? setting.value : undefined;\n }\n\n /**\n * Update setting in database.\n */\n update(setting: Setting): Observable {\n const settingDTO = Setting.toDto(setting);\n return this.httpClient.put(`${API_ROOT}/settings/${setting.key}`, settingDTO);\n }\n\n /**\n * Get groups from settings.\n */\n getGroupNames(): string[] {\n if (!this.settings) {\n return [];\n }\n const groupNames = this.settings.map((setting) => setting.group);\n return uniqBy(groupNames, (name) => name);\n }\n\n /**\n * Get groups from settings, filtered by setting caption.\n */\n getGroupNamesFiltered(caption: string): string[] {\n if (!this.settings) {\n return [];\n }\n const groupNames = this.getFiltered(caption).map((setting) => setting.group);\n return uniqBy(groupNames, (name) => name);\n }\n\n /**\n * Use upper and lower cell count limits from settings to get sync button state.\n */\n getSyncBtnState(cellCount?: number): SyncBtnState {\n const lowerLimit = this.getValue('sync_btn_lower_limit');\n const upperLimit = this.getValue('sync_btn_upper_limit');\n if (cellCount === undefined || cellCount < 0) {\n return 'disabled';\n }\n if (!cellCount || cellCount < lowerLimit) {\n return 'autosync';\n }\n if (cellCount >= upperLimit) {\n return 'warning';\n }\n return 'primary';\n }\n\n /**\n * Update Inventory Insights\n */\n runInsights(): Observable<{}> {\n return this.httpClient.post(`${API_ROOT}/settings/run/insights`, {});\n }\n\n // Specific settings and their functions\n\n // app\n accentedSort(): boolean {\n return this.getValue('accented_sort');\n }\n onlineCheck(): boolean {\n return this.getValue('online_check');\n }\n serverTimezone(): string {\n return this.getValue('server_timezone');\n }\n isEnterprise(): boolean {\n return this.getValue('agr_system') === 'enterprise';\n }\n\n // erp setup\n startInSetup(): boolean {\n return this.getValue('start_in_setup');\n }\n disableRetailPages(): boolean {\n return this.getValue('disable_retail_pages');\n }\n\n // Language and Region settings (locale)\n currency(): string {\n return this.getValue('currency');\n }\n currencyLocale(): string {\n return this.getValue('currency_locale');\n }\n locale(): string {\n return this.getValue('locale');\n }\n localeDateFormat(): string {\n return this.getValue('locale_date_format');\n }\n localeDateTimeFormat(): string {\n return this.getValue('locale_date_time_format');\n }\n localeTimeFormat(): string {\n return this.getValue('locale_time_format');\n }\n localeDurationFormat(): string {\n return this.getValue('locale_duration_format');\n }\n maxNumberFractionDigits(): string {\n return this.getValue('format_number_digits');\n }\n maxPercentageFractionDigits(): string {\n return this.getValue('format_percentage_digits');\n }\n\n defaultLanguage(): string {\n return this.getValue('language');\n }\n cloudTranslations(): boolean {\n return this.getValue('cloud_translations');\n }\n\n // Item Card\n imagePrefix(): string {\n return this.getValue('image_prefix');\n }\n imageLookupProperty(): string {\n return this.getValue('image_lookup_property');\n }\n imagePostfix(): string {\n return this.getValue('image_postfix');\n }\n startOfWeek(): number {\n const value = this.getValue('item_card_start_week');\n return isNil(value) || isNaN(+value) || +value > 6 || +value < 0 ? 1 : +value;\n }\n hideWeekNumber(): boolean {\n return this.getValue('item_card_hide_week_number');\n }\n\n // navigation\n appNavigation(): MainNavigation {\n return new MainNavigation(this.getSetting('app_navigation'));\n }\n settingsNavigation(): SettingsNavigation {\n return new SettingsNavigation(this.getSetting('settings_navigation'));\n }\n homePage(): string {\n return new MainNavigation(this.getSetting('app_navigation')).defaultModule.toDto().homepage;\n }\n documentationUrl(): string {\n return this.getValue('documentation_url');\n }\n\n orderLogicUndeliveredDays(): number {\n return +this.getValue('order_logic_undelivered_days');\n }\n ordersCountGrid(): boolean {\n return this.getValue('orders_count_grid');\n }\n\n // Workspace\n workspaceMaxColumns(): number {\n return +this.getValue('workspace_max_columns');\n }\n}\n","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var 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 function (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\n/** Error thrown when an HTTP request fails. */\r\nvar HttpError = /** @class */ (function (_super) {\r\n __extends(HttpError, _super);\r\n /** Constructs a new instance of {@link @aspnet/signalr.HttpError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n * @param {number} statusCode The HTTP status code represented by this error.\r\n */\r\n function HttpError(errorMessage, statusCode) {\r\n var _newTarget = this.constructor;\r\n var _this = this;\r\n var trueProto = _newTarget.prototype;\r\n _this = _super.call(this, errorMessage) || this;\r\n _this.statusCode = statusCode;\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n _this.__proto__ = trueProto;\r\n return _this;\r\n }\r\n return HttpError;\r\n}(Error));\r\nexport { HttpError };\r\n/** Error thrown when a timeout elapses. */\r\nvar TimeoutError = /** @class */ (function (_super) {\r\n __extends(TimeoutError, _super);\r\n /** Constructs a new instance of {@link @aspnet/signalr.TimeoutError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n */\r\n function TimeoutError(errorMessage) {\r\n var _newTarget = this.constructor;\r\n if (errorMessage === void 0) { errorMessage = \"A timeout occurred.\"; }\r\n var _this = this;\r\n var trueProto = _newTarget.prototype;\r\n _this = _super.call(this, errorMessage) || this;\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n _this.__proto__ = trueProto;\r\n return _this;\r\n }\r\n return TimeoutError;\r\n}(Error));\r\nexport { TimeoutError };\r\n","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n// These values are designed to match the ASP.NET Log Levels since that's the pattern we're emulating here.\r\n/** Indicates the severity of a log message.\r\n *\r\n * Log Levels are ordered in increasing severity. So `Debug` is more severe than `Trace`, etc.\r\n */\r\nexport var LogLevel;\r\n(function (LogLevel) {\r\n /** Log level for very low severity diagnostic messages. */\r\n LogLevel[LogLevel[\"Trace\"] = 0] = \"Trace\";\r\n /** Log level for low severity diagnostic messages. */\r\n LogLevel[LogLevel[\"Debug\"] = 1] = \"Debug\";\r\n /** Log level for informational diagnostic messages. */\r\n LogLevel[LogLevel[\"Information\"] = 2] = \"Information\";\r\n /** Log level for diagnostic messages that indicate a non-fatal problem. */\r\n LogLevel[LogLevel[\"Warning\"] = 3] = \"Warning\";\r\n /** Log level for diagnostic messages that indicate a failure in the current operation. */\r\n LogLevel[LogLevel[\"Error\"] = 4] = \"Error\";\r\n /** Log level for diagnostic messages that indicate a failure that will terminate the entire application. */\r\n LogLevel[LogLevel[\"Critical\"] = 5] = \"Critical\";\r\n /** The highest possible log level. Used when configuring logging to indicate that no log messages should be emitted. */\r\n LogLevel[LogLevel[\"None\"] = 6] = \"None\";\r\n})(LogLevel || (LogLevel = {}));\r\n","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var 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 function (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\nvar __assign = (this && this.__assign) || Object.assign || function(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))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n};\r\nimport { HttpError, TimeoutError } from \"./Errors\";\r\nimport { LogLevel } from \"./ILogger\";\r\n/** Represents an HTTP response. */\r\nvar HttpResponse = /** @class */ (function () {\r\n function HttpResponse(statusCode, statusText, content) {\r\n this.statusCode = statusCode;\r\n this.statusText = statusText;\r\n this.content = content;\r\n }\r\n return HttpResponse;\r\n}());\r\nexport { HttpResponse };\r\n/** Abstraction over an HTTP client.\r\n *\r\n * This class provides an abstraction over an HTTP client so that a different implementation can be provided on different platforms.\r\n */\r\nvar HttpClient = /** @class */ (function () {\r\n function HttpClient() {\r\n }\r\n HttpClient.prototype.get = function (url, options) {\r\n return this.send(__assign({}, options, { method: \"GET\", url: url }));\r\n };\r\n HttpClient.prototype.post = function (url, options) {\r\n return this.send(__assign({}, options, { method: \"POST\", url: url }));\r\n };\r\n HttpClient.prototype.delete = function (url, options) {\r\n return this.send(__assign({}, options, { method: \"DELETE\", url: url }));\r\n };\r\n return HttpClient;\r\n}());\r\nexport { HttpClient };\r\n/** Default implementation of {@link @aspnet/signalr.HttpClient}. */\r\nvar DefaultHttpClient = /** @class */ (function (_super) {\r\n __extends(DefaultHttpClient, _super);\r\n /** Creates a new instance of the {@link @aspnet/signalr.DefaultHttpClient}, using the provided {@link @aspnet/signalr.ILogger} to log messages. */\r\n function DefaultHttpClient(logger) {\r\n var _this = _super.call(this) || this;\r\n _this.logger = logger;\r\n return _this;\r\n }\r\n /** @inheritDoc */\r\n DefaultHttpClient.prototype.send = function (request) {\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n var xhr = new XMLHttpRequest();\r\n xhr.open(request.method, request.url, true);\r\n xhr.withCredentials = true;\r\n xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\r\n // Explicitly setting the Content-Type header for React Native on Android platform.\r\n xhr.setRequestHeader(\"Content-Type\", \"text/plain;charset=UTF-8\");\r\n if (request.headers) {\r\n Object.keys(request.headers)\r\n .forEach(function (header) { return xhr.setRequestHeader(header, request.headers[header]); });\r\n }\r\n if (request.responseType) {\r\n xhr.responseType = request.responseType;\r\n }\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = function () {\r\n xhr.abort();\r\n };\r\n }\r\n if (request.timeout) {\r\n xhr.timeout = request.timeout;\r\n }\r\n xhr.onload = function () {\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = null;\r\n }\r\n if (xhr.status >= 200 && xhr.status < 300) {\r\n resolve(new HttpResponse(xhr.status, xhr.statusText, xhr.response || xhr.responseText));\r\n }\r\n else {\r\n reject(new HttpError(xhr.statusText, xhr.status));\r\n }\r\n };\r\n xhr.onerror = function () {\r\n _this.logger.log(LogLevel.Warning, \"Error from HTTP request. \" + xhr.status + \": \" + xhr.statusText);\r\n reject(new HttpError(xhr.statusText, xhr.status));\r\n };\r\n xhr.ontimeout = function () {\r\n _this.logger.log(LogLevel.Warning, \"Timeout from HTTP request.\");\r\n reject(new TimeoutError());\r\n };\r\n xhr.send(request.content || \"\");\r\n });\r\n };\r\n return DefaultHttpClient;\r\n}(HttpClient));\r\nexport { DefaultHttpClient };\r\n","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n// Not exported from index\r\n/** @private */\r\nvar TextMessageFormat = /** @class */ (function () {\r\n function TextMessageFormat() {\r\n }\r\n TextMessageFormat.write = function (output) {\r\n return \"\" + output + TextMessageFormat.RecordSeparator;\r\n };\r\n TextMessageFormat.parse = function (input) {\r\n if (input[input.length - 1] !== TextMessageFormat.RecordSeparator) {\r\n throw new Error(\"Message is incomplete.\");\r\n }\r\n var messages = input.split(TextMessageFormat.RecordSeparator);\r\n messages.pop();\r\n return messages;\r\n };\r\n TextMessageFormat.RecordSeparatorCode = 0x1e;\r\n TextMessageFormat.RecordSeparator = String.fromCharCode(TextMessageFormat.RecordSeparatorCode);\r\n return TextMessageFormat;\r\n}());\r\nexport { TextMessageFormat };\r\n","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n/** A logger that does nothing when log messages are sent to it. */\r\nvar NullLogger = /** @class */ (function () {\r\n function NullLogger() {\r\n }\r\n /** @inheritDoc */\r\n // tslint:disable-next-line\r\n NullLogger.prototype.log = function (_logLevel, _message) {\r\n };\r\n /** The singleton instance of the {@link @aspnet/signalr.NullLogger}. */\r\n NullLogger.instance = new NullLogger();\r\n return NullLogger;\r\n}());\r\nexport { NullLogger };\r\n","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { NullLogger } from \"./Loggers\";\r\n/** @private */\r\nvar Arg = /** @class */ (function () {\r\n function Arg() {\r\n }\r\n Arg.isRequired = function (val, name) {\r\n if (val === null || val === undefined) {\r\n throw new Error(\"The '\" + name + \"' argument is required.\");\r\n }\r\n };\r\n Arg.isIn = function (val, values, name) {\r\n // TypeScript enums have keys for **both** the name and the value of each enum member on the type itself.\r\n if (!(val in values)) {\r\n throw new Error(\"Unknown \" + name + \" value: \" + val + \".\");\r\n }\r\n };\r\n return Arg;\r\n}());\r\nexport { Arg };\r\n/** @private */\r\nexport function getDataDetail(data, includeContent) {\r\n var length = null;\r\n if (isArrayBuffer(data)) {\r\n length = \"Binary data of length \" + data.byteLength;\r\n if (includeContent) {\r\n length += \". Content: '\" + formatArrayBuffer(data) + \"'\";\r\n }\r\n }\r\n else if (typeof data === \"string\") {\r\n length = \"String data of length \" + data.length;\r\n if (includeContent) {\r\n length += \". Content: '\" + data + \"'.\";\r\n }\r\n }\r\n return length;\r\n}\r\n/** @private */\r\nexport function formatArrayBuffer(data) {\r\n var view = new Uint8Array(data);\r\n // Uint8Array.map only supports returning another Uint8Array?\r\n var str = \"\";\r\n view.forEach(function (num) {\r\n var pad = num < 16 ? \"0\" : \"\";\r\n str += \"0x\" + pad + num.toString(16) + \" \";\r\n });\r\n // Trim of trailing space.\r\n return str.substr(0, str.length - 1);\r\n}\r\n/** @private */\r\nexport function sendMessage(logger, transportName, httpClient, url, accessTokenFactory, content, logMessageContent) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _a, headers, token, response;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0: return [4 /*yield*/, accessTokenFactory()];\r\n case 1:\r\n token = _b.sent();\r\n if (token) {\r\n headers = (_a = {},\r\n _a[\"Authorization\"] = \"Bearer \" + token,\r\n _a);\r\n }\r\n logger.log(LogLevel.Trace, \"(\" + transportName + \" transport) sending data. \" + getDataDetail(content, logMessageContent) + \".\");\r\n return [4 /*yield*/, httpClient.post(url, {\r\n content: content,\r\n headers: headers,\r\n })];\r\n case 2:\r\n response = _b.sent();\r\n logger.log(LogLevel.Trace, \"(\" + transportName + \" transport) request complete. Response status: \" + response.statusCode + \".\");\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n/** @private */\r\nexport function createLogger(logger) {\r\n if (logger === undefined) {\r\n return new ConsoleLogger(LogLevel.Information);\r\n }\r\n if (logger === null) {\r\n return NullLogger.instance;\r\n }\r\n if (logger.log) {\r\n return logger;\r\n }\r\n return new ConsoleLogger(logger);\r\n}\r\n/** @private */\r\nvar Subject = /** @class */ (function () {\r\n function Subject(cancelCallback) {\r\n this.observers = [];\r\n this.cancelCallback = cancelCallback;\r\n }\r\n Subject.prototype.next = function (item) {\r\n for (var _i = 0, _a = this.observers; _i < _a.length; _i++) {\r\n var observer = _a[_i];\r\n observer.next(item);\r\n }\r\n };\r\n Subject.prototype.error = function (err) {\r\n for (var _i = 0, _a = this.observers; _i < _a.length; _i++) {\r\n var observer = _a[_i];\r\n if (observer.error) {\r\n observer.error(err);\r\n }\r\n }\r\n };\r\n Subject.prototype.complete = function () {\r\n for (var _i = 0, _a = this.observers; _i < _a.length; _i++) {\r\n var observer = _a[_i];\r\n if (observer.complete) {\r\n observer.complete();\r\n }\r\n }\r\n };\r\n Subject.prototype.subscribe = function (observer) {\r\n this.observers.push(observer);\r\n return new SubjectSubscription(this, observer);\r\n };\r\n return Subject;\r\n}());\r\nexport { Subject };\r\n/** @private */\r\nvar SubjectSubscription = /** @class */ (function () {\r\n function SubjectSubscription(subject, observer) {\r\n this.subject = subject;\r\n this.observer = observer;\r\n }\r\n SubjectSubscription.prototype.dispose = function () {\r\n var index = this.subject.observers.indexOf(this.observer);\r\n if (index > -1) {\r\n this.subject.observers.splice(index, 1);\r\n }\r\n if (this.subject.observers.length === 0) {\r\n this.subject.cancelCallback().catch(function (_) { });\r\n }\r\n };\r\n return SubjectSubscription;\r\n}());\r\nexport { SubjectSubscription };\r\n/** @private */\r\nvar ConsoleLogger = /** @class */ (function () {\r\n function ConsoleLogger(minimumLogLevel) {\r\n this.minimumLogLevel = minimumLogLevel;\r\n }\r\n ConsoleLogger.prototype.log = function (logLevel, message) {\r\n if (logLevel >= this.minimumLogLevel) {\r\n switch (logLevel) {\r\n case LogLevel.Critical:\r\n case LogLevel.Error:\r\n console.error(LogLevel[logLevel] + \": \" + message);\r\n break;\r\n case LogLevel.Warning:\r\n console.warn(LogLevel[logLevel] + \": \" + message);\r\n break;\r\n case LogLevel.Information:\r\n console.info(LogLevel[logLevel] + \": \" + message);\r\n break;\r\n default:\r\n // console.debug only goes to attached debuggers in Node, so we use console.log for Trace and Debug\r\n console.log(LogLevel[logLevel] + \": \" + message);\r\n break;\r\n }\r\n }\r\n };\r\n return ConsoleLogger;\r\n}());\r\nexport { ConsoleLogger };\r\n/** @private */\r\nexport function isArrayBuffer(val) {\r\n return val && typeof ArrayBuffer !== \"undefined\" &&\r\n (val instanceof ArrayBuffer ||\r\n // Sometimes we get an ArrayBuffer that doesn't satisfy instanceof\r\n (val.constructor && val.constructor.name === \"ArrayBuffer\"));\r\n}\r\n","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nimport { TextMessageFormat } from \"./TextMessageFormat\";\r\nimport { isArrayBuffer } from \"./Utils\";\r\n/** @private */\r\nvar HandshakeProtocol = /** @class */ (function () {\r\n function HandshakeProtocol() {\r\n }\r\n // Handshake request is always JSON\r\n HandshakeProtocol.prototype.writeHandshakeRequest = function (handshakeRequest) {\r\n return TextMessageFormat.write(JSON.stringify(handshakeRequest));\r\n };\r\n HandshakeProtocol.prototype.parseHandshakeResponse = function (data) {\r\n var responseMessage;\r\n var messageData;\r\n var remainingData;\r\n if (isArrayBuffer(data)) {\r\n // Format is binary but still need to read JSON text from handshake response\r\n var binaryData = new Uint8Array(data);\r\n var separatorIndex = binaryData.indexOf(TextMessageFormat.RecordSeparatorCode);\r\n if (separatorIndex === -1) {\r\n throw new Error(\"Message is incomplete.\");\r\n }\r\n // content before separator is handshake response\r\n // optional content after is additional messages\r\n var responseLength = separatorIndex + 1;\r\n messageData = String.fromCharCode.apply(null, binaryData.slice(0, responseLength));\r\n remainingData = (binaryData.byteLength > responseLength) ? binaryData.slice(responseLength).buffer : null;\r\n }\r\n else {\r\n var textData = data;\r\n var separatorIndex = textData.indexOf(TextMessageFormat.RecordSeparator);\r\n if (separatorIndex === -1) {\r\n throw new Error(\"Message is incomplete.\");\r\n }\r\n // content before separator is handshake response\r\n // optional content after is additional messages\r\n var responseLength = separatorIndex + 1;\r\n messageData = textData.substring(0, responseLength);\r\n remainingData = (textData.length > responseLength) ? textData.substring(responseLength) : null;\r\n }\r\n // At this point we should have just the single handshake message\r\n var messages = TextMessageFormat.parse(messageData);\r\n responseMessage = JSON.parse(messages[0]);\r\n // multiple messages could have arrived with handshake\r\n // return additional data to be parsed as usual, or null if all parsed\r\n return [remainingData, responseMessage];\r\n };\r\n return HandshakeProtocol;\r\n}());\r\nexport { HandshakeProtocol };\r\n","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n/** Defines the type of a Hub Message. */\r\nexport var MessageType;\r\n(function (MessageType) {\r\n /** Indicates the message is an Invocation message and implements the {@link @aspnet/signalr.InvocationMessage} interface. */\r\n MessageType[MessageType[\"Invocation\"] = 1] = \"Invocation\";\r\n /** Indicates the message is a StreamItem message and implements the {@link @aspnet/signalr.StreamItemMessage} interface. */\r\n MessageType[MessageType[\"StreamItem\"] = 2] = \"StreamItem\";\r\n /** Indicates the message is a Completion message and implements the {@link @aspnet/signalr.CompletionMessage} interface. */\r\n MessageType[MessageType[\"Completion\"] = 3] = \"Completion\";\r\n /** Indicates the message is a Stream Invocation message and implements the {@link @aspnet/signalr.StreamInvocationMessage} interface. */\r\n MessageType[MessageType[\"StreamInvocation\"] = 4] = \"StreamInvocation\";\r\n /** Indicates the message is a Cancel Invocation message and implements the {@link @aspnet/signalr.CancelInvocationMessage} interface. */\r\n MessageType[MessageType[\"CancelInvocation\"] = 5] = \"CancelInvocation\";\r\n /** Indicates the message is a Ping message and implements the {@link @aspnet/signalr.PingMessage} interface. */\r\n MessageType[MessageType[\"Ping\"] = 6] = \"Ping\";\r\n /** Indicates the message is a Close message and implements the {@link @aspnet/signalr.CloseMessage} interface. */\r\n MessageType[MessageType[\"Close\"] = 7] = \"Close\";\r\n})(MessageType || (MessageType = {}));\r\n","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nimport { HandshakeProtocol } from \"./HandshakeProtocol\";\r\nimport { MessageType } from \"./IHubProtocol\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { Arg, Subject } from \"./Utils\";\r\nvar DEFAULT_TIMEOUT_IN_MS = 30 * 1000;\r\n/** Represents a connection to a SignalR Hub. */\r\nvar HubConnection = /** @class */ (function () {\r\n function HubConnection(connection, logger, protocol) {\r\n var _this = this;\r\n Arg.isRequired(connection, \"connection\");\r\n Arg.isRequired(logger, \"logger\");\r\n Arg.isRequired(protocol, \"protocol\");\r\n this.serverTimeoutInMilliseconds = DEFAULT_TIMEOUT_IN_MS;\r\n this.logger = logger;\r\n this.protocol = protocol;\r\n this.connection = connection;\r\n this.handshakeProtocol = new HandshakeProtocol();\r\n this.connection.onreceive = function (data) { return _this.processIncomingData(data); };\r\n this.connection.onclose = function (error) { return _this.connectionClosed(error); };\r\n this.callbacks = {};\r\n this.methods = {};\r\n this.closedCallbacks = [];\r\n this.id = 0;\r\n }\r\n /** @internal */\r\n // Using a public static factory method means we can have a private constructor and an _internal_\r\n // create method that can be used by HubConnectionBuilder. An \"internal\" constructor would just\r\n // be stripped away and the '.d.ts' file would have no constructor, which is interpreted as a\r\n // public parameter-less constructor.\r\n HubConnection.create = function (connection, logger, protocol) {\r\n return new HubConnection(connection, logger, protocol);\r\n };\r\n /** Starts the connection.\r\n *\r\n * @returns {Promise} A Promise that resolves when the connection has been successfully established, or rejects with an error.\r\n */\r\n HubConnection.prototype.start = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var handshakeRequest;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n handshakeRequest = {\r\n protocol: this.protocol.name,\r\n version: this.protocol.version,\r\n };\r\n this.logger.log(LogLevel.Debug, \"Starting HubConnection.\");\r\n this.receivedHandshakeResponse = false;\r\n return [4 /*yield*/, this.connection.start(this.protocol.transferFormat)];\r\n case 1:\r\n _a.sent();\r\n this.logger.log(LogLevel.Debug, \"Sending handshake request.\");\r\n return [4 /*yield*/, this.connection.send(this.handshakeProtocol.writeHandshakeRequest(handshakeRequest))];\r\n case 2:\r\n _a.sent();\r\n this.logger.log(LogLevel.Information, \"Using HubProtocol '\" + this.protocol.name + \"'.\");\r\n // defensively cleanup timeout in case we receive a message from the server before we finish start\r\n this.cleanupTimeout();\r\n this.configureTimeout();\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /** Stops the connection.\r\n *\r\n * @returns {Promise} A Promise that resolves when the connection has been successfully terminated, or rejects with an error.\r\n */\r\n HubConnection.prototype.stop = function () {\r\n this.logger.log(LogLevel.Debug, \"Stopping HubConnection.\");\r\n this.cleanupTimeout();\r\n return this.connection.stop();\r\n };\r\n /** Invokes a streaming hub method on the server using the specified name and arguments.\r\n *\r\n * @typeparam T The type of the items returned by the server.\r\n * @param {string} methodName The name of the server method to invoke.\r\n * @param {any[]} args The arguments used to invoke the server method.\r\n * @returns {IStreamResult} An object that yields results from the server as they are received.\r\n */\r\n HubConnection.prototype.stream = function (methodName) {\r\n var _this = this;\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments[_i];\r\n }\r\n var invocationDescriptor = this.createStreamInvocation(methodName, args);\r\n var subject = new Subject(function () {\r\n var cancelInvocation = _this.createCancelInvocation(invocationDescriptor.invocationId);\r\n var cancelMessage = _this.protocol.writeMessage(cancelInvocation);\r\n delete _this.callbacks[invocationDescriptor.invocationId];\r\n return _this.connection.send(cancelMessage);\r\n });\r\n this.callbacks[invocationDescriptor.invocationId] = function (invocationEvent, error) {\r\n if (error) {\r\n subject.error(error);\r\n return;\r\n }\r\n if (invocationEvent.type === MessageType.Completion) {\r\n if (invocationEvent.error) {\r\n subject.error(new Error(invocationEvent.error));\r\n }\r\n else {\r\n subject.complete();\r\n }\r\n }\r\n else {\r\n subject.next((invocationEvent.item));\r\n }\r\n };\r\n var message = this.protocol.writeMessage(invocationDescriptor);\r\n this.connection.send(message)\r\n .catch(function (e) {\r\n subject.error(e);\r\n delete _this.callbacks[invocationDescriptor.invocationId];\r\n });\r\n return subject;\r\n };\r\n /** Invokes a hub method on the server using the specified name and arguments. Does not wait for a response from the receiver.\r\n *\r\n * The Promise returned by this method resolves when the client has sent the invocation to the server. The server may still\r\n * be processing the invocation.\r\n *\r\n * @param {string} methodName The name of the server method to invoke.\r\n * @param {any[]} args The arguments used to invoke the server method.\r\n * @returns {Promise} A Promise that resolves when the invocation has been successfully sent, or rejects with an error.\r\n */\r\n HubConnection.prototype.send = function (methodName) {\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments[_i];\r\n }\r\n var invocationDescriptor = this.createInvocation(methodName, args, true);\r\n var message = this.protocol.writeMessage(invocationDescriptor);\r\n return this.connection.send(message);\r\n };\r\n /** Invokes a hub method on the server using the specified name and arguments.\r\n *\r\n * The Promise returned by this method resolves when the server indicates it has finished invoking the method. When the promise\r\n * resolves, the server has finished invoking the method. If the server method returns a result, it is produced as the result of\r\n * resolving the Promise.\r\n *\r\n * @typeparam T The expected return type.\r\n * @param {string} methodName The name of the server method to invoke.\r\n * @param {any[]} args The arguments used to invoke the server method.\r\n * @returns {Promise} A Promise that resolves with the result of the server method (if any), or rejects with an error.\r\n */\r\n HubConnection.prototype.invoke = function (methodName) {\r\n var _this = this;\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments[_i];\r\n }\r\n var invocationDescriptor = this.createInvocation(methodName, args, false);\r\n var p = new Promise(function (resolve, reject) {\r\n _this.callbacks[invocationDescriptor.invocationId] = function (invocationEvent, error) {\r\n if (error) {\r\n reject(error);\r\n return;\r\n }\r\n if (invocationEvent.type === MessageType.Completion) {\r\n var completionMessage = invocationEvent;\r\n if (completionMessage.error) {\r\n reject(new Error(completionMessage.error));\r\n }\r\n else {\r\n resolve(completionMessage.result);\r\n }\r\n }\r\n else {\r\n reject(new Error(\"Unexpected message type: \" + invocationEvent.type));\r\n }\r\n };\r\n var message = _this.protocol.writeMessage(invocationDescriptor);\r\n _this.connection.send(message)\r\n .catch(function (e) {\r\n reject(e);\r\n delete _this.callbacks[invocationDescriptor.invocationId];\r\n });\r\n });\r\n return p;\r\n };\r\n /** Registers a handler that will be invoked when the hub method with the specified method name is invoked.\r\n *\r\n * @param {string} methodName The name of the hub method to define.\r\n * @param {Function} newMethod The handler that will be raised when the hub method is invoked.\r\n */\r\n HubConnection.prototype.on = function (methodName, newMethod) {\r\n if (!methodName || !newMethod) {\r\n return;\r\n }\r\n methodName = methodName.toLowerCase();\r\n if (!this.methods[methodName]) {\r\n this.methods[methodName] = [];\r\n }\r\n // Preventing adding the same handler multiple times.\r\n if (this.methods[methodName].indexOf(newMethod) !== -1) {\r\n return;\r\n }\r\n this.methods[methodName].push(newMethod);\r\n };\r\n HubConnection.prototype.off = function (methodName, method) {\r\n if (!methodName) {\r\n return;\r\n }\r\n methodName = methodName.toLowerCase();\r\n var handlers = this.methods[methodName];\r\n if (!handlers) {\r\n return;\r\n }\r\n if (method) {\r\n var removeIdx = handlers.indexOf(method);\r\n if (removeIdx !== -1) {\r\n handlers.splice(removeIdx, 1);\r\n if (handlers.length === 0) {\r\n delete this.methods[methodName];\r\n }\r\n }\r\n }\r\n else {\r\n delete this.methods[methodName];\r\n }\r\n };\r\n /** Registers a handler that will be invoked when the connection is closed.\r\n *\r\n * @param {Function} callback The handler that will be invoked when the connection is closed. Optionally receives a single argument containing the error that caused the connection to close (if any).\r\n */\r\n HubConnection.prototype.onclose = function (callback) {\r\n if (callback) {\r\n this.closedCallbacks.push(callback);\r\n }\r\n };\r\n HubConnection.prototype.processIncomingData = function (data) {\r\n this.cleanupTimeout();\r\n if (!this.receivedHandshakeResponse) {\r\n data = this.processHandshakeResponse(data);\r\n this.receivedHandshakeResponse = true;\r\n }\r\n // Data may have all been read when processing handshake response\r\n if (data) {\r\n // Parse the messages\r\n var messages = this.protocol.parseMessages(data, this.logger);\r\n for (var _i = 0, messages_1 = messages; _i < messages_1.length; _i++) {\r\n var message = messages_1[_i];\r\n switch (message.type) {\r\n case MessageType.Invocation:\r\n this.invokeClientMethod(message);\r\n break;\r\n case MessageType.StreamItem:\r\n case MessageType.Completion:\r\n var callback = this.callbacks[message.invocationId];\r\n if (callback != null) {\r\n if (message.type === MessageType.Completion) {\r\n delete this.callbacks[message.invocationId];\r\n }\r\n callback(message);\r\n }\r\n break;\r\n case MessageType.Ping:\r\n // Don't care about pings\r\n break;\r\n case MessageType.Close:\r\n this.logger.log(LogLevel.Information, \"Close message received from server.\");\r\n // We don't want to wait on the stop itself.\r\n // tslint:disable-next-line:no-floating-promises\r\n this.connection.stop(message.error ? new Error(\"Server returned an error on close: \" + message.error) : null);\r\n break;\r\n default:\r\n this.logger.log(LogLevel.Warning, \"Invalid message type: \" + message.type);\r\n break;\r\n }\r\n }\r\n }\r\n this.configureTimeout();\r\n };\r\n HubConnection.prototype.processHandshakeResponse = function (data) {\r\n var _a;\r\n var responseMessage;\r\n var remainingData;\r\n try {\r\n _a = this.handshakeProtocol.parseHandshakeResponse(data), remainingData = _a[0], responseMessage = _a[1];\r\n }\r\n catch (e) {\r\n var message = \"Error parsing handshake response: \" + e;\r\n this.logger.log(LogLevel.Error, message);\r\n var error = new Error(message);\r\n // We don't want to wait on the stop itself.\r\n // tslint:disable-next-line:no-floating-promises\r\n this.connection.stop(error);\r\n throw error;\r\n }\r\n if (responseMessage.error) {\r\n var message = \"Server returned handshake error: \" + responseMessage.error;\r\n this.logger.log(LogLevel.Error, message);\r\n // We don't want to wait on the stop itself.\r\n // tslint:disable-next-line:no-floating-promises\r\n this.connection.stop(new Error(message));\r\n }\r\n else {\r\n this.logger.log(LogLevel.Debug, \"Server handshake complete.\");\r\n }\r\n return remainingData;\r\n };\r\n HubConnection.prototype.configureTimeout = function () {\r\n var _this = this;\r\n if (!this.connection.features || !this.connection.features.inherentKeepAlive) {\r\n // Set the timeout timer\r\n this.timeoutHandle = setTimeout(function () { return _this.serverTimeout(); }, this.serverTimeoutInMilliseconds);\r\n }\r\n };\r\n HubConnection.prototype.serverTimeout = function () {\r\n // The server hasn't talked to us in a while. It doesn't like us anymore ... :(\r\n // Terminate the connection, but we don't need to wait on the promise.\r\n // tslint:disable-next-line:no-floating-promises\r\n this.connection.stop(new Error(\"Server timeout elapsed without receiving a message from the server.\"));\r\n };\r\n HubConnection.prototype.invokeClientMethod = function (invocationMessage) {\r\n var _this = this;\r\n var methods = this.methods[invocationMessage.target.toLowerCase()];\r\n if (methods) {\r\n methods.forEach(function (m) { return m.apply(_this, invocationMessage.arguments); });\r\n if (invocationMessage.invocationId) {\r\n // This is not supported in v1. So we return an error to avoid blocking the server waiting for the response.\r\n var message = \"Server requested a response, which is not supported in this version of the client.\";\r\n this.logger.log(LogLevel.Error, message);\r\n // We don't need to wait on this Promise.\r\n // tslint:disable-next-line:no-floating-promises\r\n this.connection.stop(new Error(message));\r\n }\r\n }\r\n else {\r\n this.logger.log(LogLevel.Warning, \"No client method with the name '\" + invocationMessage.target + \"' found.\");\r\n }\r\n };\r\n HubConnection.prototype.connectionClosed = function (error) {\r\n var _this = this;\r\n var callbacks = this.callbacks;\r\n this.callbacks = {};\r\n Object.keys(callbacks)\r\n .forEach(function (key) {\r\n var callback = callbacks[key];\r\n callback(undefined, error ? error : new Error(\"Invocation canceled due to connection being closed.\"));\r\n });\r\n this.cleanupTimeout();\r\n this.closedCallbacks.forEach(function (c) { return c.apply(_this, [error]); });\r\n };\r\n HubConnection.prototype.cleanupTimeout = function () {\r\n if (this.timeoutHandle) {\r\n clearTimeout(this.timeoutHandle);\r\n }\r\n };\r\n HubConnection.prototype.createInvocation = function (methodName, args, nonblocking) {\r\n if (nonblocking) {\r\n return {\r\n arguments: args,\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n }\r\n else {\r\n var id = this.id;\r\n this.id++;\r\n return {\r\n arguments: args,\r\n invocationId: id.toString(),\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n }\r\n };\r\n HubConnection.prototype.createStreamInvocation = function (methodName, args) {\r\n var id = this.id;\r\n this.id++;\r\n return {\r\n arguments: args,\r\n invocationId: id.toString(),\r\n target: methodName,\r\n type: MessageType.StreamInvocation,\r\n };\r\n };\r\n HubConnection.prototype.createCancelInvocation = function (id) {\r\n return {\r\n invocationId: id,\r\n type: MessageType.CancelInvocation,\r\n };\r\n };\r\n return HubConnection;\r\n}());\r\nexport { HubConnection };\r\n","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n// This will be treated as a bit flag in the future, so we keep it using power-of-two values.\r\n/** Specifies a specific HTTP transport type. */\r\nexport var HttpTransportType;\r\n(function (HttpTransportType) {\r\n /** Specifies no transport preference. */\r\n HttpTransportType[HttpTransportType[\"None\"] = 0] = \"None\";\r\n /** Specifies the WebSockets transport. */\r\n HttpTransportType[HttpTransportType[\"WebSockets\"] = 1] = \"WebSockets\";\r\n /** Specifies the Server-Sent Events transport. */\r\n HttpTransportType[HttpTransportType[\"ServerSentEvents\"] = 2] = \"ServerSentEvents\";\r\n /** Specifies the Long Polling transport. */\r\n HttpTransportType[HttpTransportType[\"LongPolling\"] = 4] = \"LongPolling\";\r\n})(HttpTransportType || (HttpTransportType = {}));\r\n/** Specifies the transfer format for a connection. */\r\nexport var TransferFormat;\r\n(function (TransferFormat) {\r\n /** Specifies that only text data will be transmitted over the connection. */\r\n TransferFormat[TransferFormat[\"Text\"] = 1] = \"Text\";\r\n /** Specifies that binary data will be transmitted over the connection. */\r\n TransferFormat[TransferFormat[\"Binary\"] = 2] = \"Binary\";\r\n})(TransferFormat || (TransferFormat = {}));\r\n","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n// Rough polyfill of https://developer.mozilla.org/en-US/docs/Web/API/AbortController\r\n// We don't actually ever use the API being polyfilled, we always use the polyfill because\r\n// it's a very new API right now.\r\n// Not exported from index.\r\n/** @private */\r\nvar AbortController = /** @class */ (function () {\r\n function AbortController() {\r\n this.isAborted = false;\r\n }\r\n AbortController.prototype.abort = function () {\r\n if (!this.isAborted) {\r\n this.isAborted = true;\r\n if (this.onabort) {\r\n this.onabort();\r\n }\r\n }\r\n };\r\n Object.defineProperty(AbortController.prototype, \"signal\", {\r\n get: function () {\r\n return this;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AbortController.prototype, \"aborted\", {\r\n get: function () {\r\n return this.isAborted;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return AbortController;\r\n}());\r\nexport { AbortController };\r\n","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nimport { AbortController } from \"./AbortController\";\r\nimport { HttpError, TimeoutError } from \"./Errors\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { Arg, getDataDetail, sendMessage } from \"./Utils\";\r\nvar SHUTDOWN_TIMEOUT = 5 * 1000;\r\n// Not exported from 'index', this type is internal.\r\n/** @private */\r\nvar LongPollingTransport = /** @class */ (function () {\r\n function LongPollingTransport(httpClient, accessTokenFactory, logger, logMessageContent, shutdownTimeout) {\r\n this.httpClient = httpClient;\r\n this.accessTokenFactory = accessTokenFactory || (function () { return null; });\r\n this.logger = logger;\r\n this.pollAbort = new AbortController();\r\n this.logMessageContent = logMessageContent;\r\n this.shutdownTimeout = shutdownTimeout || SHUTDOWN_TIMEOUT;\r\n }\r\n Object.defineProperty(LongPollingTransport.prototype, \"pollAborted\", {\r\n // This is an internal type, not exported from 'index' so this is really just internal.\r\n get: function () {\r\n return this.pollAbort.aborted;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n LongPollingTransport.prototype.connect = function (url, transferFormat) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var pollOptions, token, closeError, pollUrl, response;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n Arg.isRequired(url, \"url\");\r\n Arg.isRequired(transferFormat, \"transferFormat\");\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this.url = url;\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) Connecting\");\r\n if (transferFormat === TransferFormat.Binary && (typeof new XMLHttpRequest().responseType !== \"string\")) {\r\n // This will work if we fix: https://github.com/aspnet/SignalR/issues/742\r\n throw new Error(\"Binary protocols over XmlHttpRequest not implementing advanced features are not supported.\");\r\n }\r\n pollOptions = {\r\n abortSignal: this.pollAbort.signal,\r\n headers: {},\r\n timeout: 90000,\r\n };\r\n if (transferFormat === TransferFormat.Binary) {\r\n pollOptions.responseType = \"arraybuffer\";\r\n }\r\n return [4 /*yield*/, this.accessTokenFactory()];\r\n case 1:\r\n token = _a.sent();\r\n this.updateHeaderToken(pollOptions, token);\r\n pollUrl = url + \"&_=\" + Date.now();\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) polling: \" + pollUrl);\r\n return [4 /*yield*/, this.httpClient.get(pollUrl, pollOptions)];\r\n case 2:\r\n response = _a.sent();\r\n if (response.statusCode !== 200) {\r\n this.logger.log(LogLevel.Error, \"(LongPolling transport) Unexpected response code: \" + response.statusCode);\r\n // Mark running as false so that the poll immediately ends and runs the close logic\r\n closeError = new HttpError(response.statusText, response.statusCode);\r\n this.running = false;\r\n }\r\n else {\r\n this.running = true;\r\n }\r\n // tslint:disable-next-line:no-floating-promises\r\n this.poll(this.url, pollOptions, closeError);\r\n return [2 /*return*/, Promise.resolve()];\r\n }\r\n });\r\n });\r\n };\r\n LongPollingTransport.prototype.updateHeaderToken = function (request, token) {\r\n if (token) {\r\n // tslint:disable-next-line:no-string-literal\r\n request.headers[\"Authorization\"] = \"Bearer \" + token;\r\n return;\r\n }\r\n // tslint:disable-next-line:no-string-literal\r\n if (request.headers[\"Authorization\"]) {\r\n // tslint:disable-next-line:no-string-literal\r\n delete request.headers[\"Authorization\"];\r\n }\r\n };\r\n LongPollingTransport.prototype.poll = function (url, pollOptions, closeError) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var token, pollUrl, response, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, , 8, 9]);\r\n _a.label = 1;\r\n case 1:\r\n if (!this.running) return [3 /*break*/, 7];\r\n return [4 /*yield*/, this.accessTokenFactory()];\r\n case 2:\r\n token = _a.sent();\r\n this.updateHeaderToken(pollOptions, token);\r\n _a.label = 3;\r\n case 3:\r\n _a.trys.push([3, 5, , 6]);\r\n pollUrl = url + \"&_=\" + Date.now();\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) polling: \" + pollUrl);\r\n return [4 /*yield*/, this.httpClient.get(pollUrl, pollOptions)];\r\n case 4:\r\n response = _a.sent();\r\n if (response.statusCode === 204) {\r\n this.logger.log(LogLevel.Information, \"(LongPolling transport) Poll terminated by server\");\r\n this.running = false;\r\n }\r\n else if (response.statusCode !== 200) {\r\n this.logger.log(LogLevel.Error, \"(LongPolling transport) Unexpected response code: \" + response.statusCode);\r\n // Unexpected status code\r\n closeError = new HttpError(response.statusText, response.statusCode);\r\n this.running = false;\r\n }\r\n else {\r\n // Process the response\r\n if (response.content) {\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) data received. \" + getDataDetail(response.content, this.logMessageContent));\r\n if (this.onreceive) {\r\n this.onreceive(response.content);\r\n }\r\n }\r\n else {\r\n // This is another way timeout manifest.\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) Poll timed out, reissuing.\");\r\n }\r\n }\r\n return [3 /*break*/, 6];\r\n case 5:\r\n e_1 = _a.sent();\r\n if (!this.running) {\r\n // Log but disregard errors that occur after we were stopped by DELETE\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) Poll errored after shutdown: \" + e_1.message);\r\n }\r\n else {\r\n if (e_1 instanceof TimeoutError) {\r\n // Ignore timeouts and reissue the poll.\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) Poll timed out, reissuing.\");\r\n }\r\n else {\r\n // Close the connection with the error as the result.\r\n closeError = e_1;\r\n this.running = false;\r\n }\r\n }\r\n return [3 /*break*/, 6];\r\n case 6: return [3 /*break*/, 1];\r\n case 7: return [3 /*break*/, 9];\r\n case 8:\r\n // Indicate that we've stopped so the shutdown timer doesn't get registered.\r\n this.stopped = true;\r\n // Clean up the shutdown timer if it was registered\r\n if (this.shutdownTimer) {\r\n clearTimeout(this.shutdownTimer);\r\n }\r\n // Fire our onclosed event\r\n if (this.onclose) {\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) Firing onclose event. Error: \" + (closeError || \"\"));\r\n this.onclose(closeError);\r\n }\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) Transport finished.\");\r\n return [7 /*endfinally*/];\r\n case 9: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n LongPollingTransport.prototype.send = function (data) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n if (!this.running) {\r\n return [2 /*return*/, Promise.reject(new Error(\"Cannot send until the transport is connected\"))];\r\n }\r\n return [2 /*return*/, sendMessage(this.logger, \"LongPolling\", this.httpClient, this.url, this.accessTokenFactory, data, this.logMessageContent)];\r\n });\r\n });\r\n };\r\n LongPollingTransport.prototype.stop = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var deleteOptions, token;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, , 3, 4]);\r\n this.running = false;\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) sending DELETE request to \" + this.url + \".\");\r\n deleteOptions = {\r\n headers: {},\r\n };\r\n return [4 /*yield*/, this.accessTokenFactory()];\r\n case 1:\r\n token = _a.sent();\r\n this.updateHeaderToken(deleteOptions, token);\r\n return [4 /*yield*/, this.httpClient.delete(this.url, deleteOptions)];\r\n case 2:\r\n _a.sent();\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) DELETE request accepted.\");\r\n return [3 /*break*/, 4];\r\n case 3:\r\n // Abort the poll after the shutdown timeout if the server doesn't stop the poll.\r\n if (!this.stopped) {\r\n this.shutdownTimer = setTimeout(function () {\r\n _this.logger.log(LogLevel.Warning, \"(LongPolling transport) server did not terminate after DELETE request, canceling poll.\");\r\n // Abort any outstanding poll\r\n _this.pollAbort.abort();\r\n }, this.shutdownTimeout);\r\n }\r\n return [7 /*endfinally*/];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n return LongPollingTransport;\r\n}());\r\nexport { LongPollingTransport };\r\n","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { Arg, getDataDetail, sendMessage } from \"./Utils\";\r\n/** @private */\r\nvar ServerSentEventsTransport = /** @class */ (function () {\r\n function ServerSentEventsTransport(httpClient, accessTokenFactory, logger, logMessageContent) {\r\n this.httpClient = httpClient;\r\n this.accessTokenFactory = accessTokenFactory || (function () { return null; });\r\n this.logger = logger;\r\n this.logMessageContent = logMessageContent;\r\n }\r\n ServerSentEventsTransport.prototype.connect = function (url, transferFormat) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var token;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n Arg.isRequired(url, \"url\");\r\n Arg.isRequired(transferFormat, \"transferFormat\");\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n if (typeof (EventSource) === \"undefined\") {\r\n throw new Error(\"'EventSource' is not supported in your environment.\");\r\n }\r\n this.logger.log(LogLevel.Trace, \"(SSE transport) Connecting\");\r\n return [4 /*yield*/, this.accessTokenFactory()];\r\n case 1:\r\n token = _a.sent();\r\n if (token) {\r\n url += (url.indexOf(\"?\") < 0 ? \"?\" : \"&\") + (\"access_token=\" + encodeURIComponent(token));\r\n }\r\n this.url = url;\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n var opened = false;\r\n if (transferFormat !== TransferFormat.Text) {\r\n reject(new Error(\"The Server-Sent Events transport only supports the 'Text' transfer format\"));\r\n }\r\n var eventSource = new EventSource(url, { withCredentials: true });\r\n try {\r\n eventSource.onmessage = function (e) {\r\n if (_this.onreceive) {\r\n try {\r\n _this.logger.log(LogLevel.Trace, \"(SSE transport) data received. \" + getDataDetail(e.data, _this.logMessageContent) + \".\");\r\n _this.onreceive(e.data);\r\n }\r\n catch (error) {\r\n if (_this.onclose) {\r\n _this.onclose(error);\r\n }\r\n return;\r\n }\r\n }\r\n };\r\n eventSource.onerror = function (e) {\r\n var error = new Error(e.message || \"Error occurred\");\r\n if (opened) {\r\n _this.close(error);\r\n }\r\n else {\r\n reject(error);\r\n }\r\n };\r\n eventSource.onopen = function () {\r\n _this.logger.log(LogLevel.Information, \"SSE connected to \" + _this.url);\r\n _this.eventSource = eventSource;\r\n opened = true;\r\n resolve();\r\n };\r\n }\r\n catch (e) {\r\n return Promise.reject(e);\r\n }\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n ServerSentEventsTransport.prototype.send = function (data) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n if (!this.eventSource) {\r\n return [2 /*return*/, Promise.reject(new Error(\"Cannot send until the transport is connected\"))];\r\n }\r\n return [2 /*return*/, sendMessage(this.logger, \"SSE\", this.httpClient, this.url, this.accessTokenFactory, data, this.logMessageContent)];\r\n });\r\n });\r\n };\r\n ServerSentEventsTransport.prototype.stop = function () {\r\n this.close();\r\n return Promise.resolve();\r\n };\r\n ServerSentEventsTransport.prototype.close = function (e) {\r\n if (this.eventSource) {\r\n this.eventSource.close();\r\n this.eventSource = null;\r\n if (this.onclose) {\r\n this.onclose(e);\r\n }\r\n }\r\n };\r\n return ServerSentEventsTransport;\r\n}());\r\nexport { ServerSentEventsTransport };\r\n","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { Arg, getDataDetail } from \"./Utils\";\r\n/** @private */\r\nvar WebSocketTransport = /** @class */ (function () {\r\n function WebSocketTransport(accessTokenFactory, logger, logMessageContent) {\r\n this.logger = logger;\r\n this.accessTokenFactory = accessTokenFactory || (function () { return null; });\r\n this.logMessageContent = logMessageContent;\r\n }\r\n WebSocketTransport.prototype.connect = function (url, transferFormat) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var token;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n Arg.isRequired(url, \"url\");\r\n Arg.isRequired(transferFormat, \"transferFormat\");\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n if (typeof (WebSocket) === \"undefined\") {\r\n throw new Error(\"'WebSocket' is not supported in your environment.\");\r\n }\r\n this.logger.log(LogLevel.Trace, \"(WebSockets transport) Connecting\");\r\n return [4 /*yield*/, this.accessTokenFactory()];\r\n case 1:\r\n token = _a.sent();\r\n if (token) {\r\n url += (url.indexOf(\"?\") < 0 ? \"?\" : \"&\") + (\"access_token=\" + encodeURIComponent(token));\r\n }\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n url = url.replace(/^http/, \"ws\");\r\n var webSocket = new WebSocket(url);\r\n if (transferFormat === TransferFormat.Binary) {\r\n webSocket.binaryType = \"arraybuffer\";\r\n }\r\n // tslint:disable-next-line:variable-name\r\n webSocket.onopen = function (_event) {\r\n _this.logger.log(LogLevel.Information, \"WebSocket connected to \" + url);\r\n _this.webSocket = webSocket;\r\n resolve();\r\n };\r\n webSocket.onerror = function (event) {\r\n reject(event.error);\r\n };\r\n webSocket.onmessage = function (message) {\r\n _this.logger.log(LogLevel.Trace, \"(WebSockets transport) data received. \" + getDataDetail(message.data, _this.logMessageContent) + \".\");\r\n if (_this.onreceive) {\r\n _this.onreceive(message.data);\r\n }\r\n };\r\n webSocket.onclose = function (event) {\r\n // webSocket will be null if the transport did not start successfully\r\n _this.logger.log(LogLevel.Trace, \"(WebSockets transport) socket closed.\");\r\n if (_this.onclose) {\r\n if (event.wasClean === false || event.code !== 1000) {\r\n _this.onclose(new Error(\"Websocket closed with status code: \" + event.code + \" (\" + event.reason + \")\"));\r\n }\r\n else {\r\n _this.onclose();\r\n }\r\n }\r\n };\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n WebSocketTransport.prototype.send = function (data) {\r\n if (this.webSocket && this.webSocket.readyState === WebSocket.OPEN) {\r\n this.logger.log(LogLevel.Trace, \"(WebSockets transport) sending data. \" + getDataDetail(data, this.logMessageContent) + \".\");\r\n this.webSocket.send(data);\r\n return Promise.resolve();\r\n }\r\n return Promise.reject(\"WebSocket is not in the OPEN state\");\r\n };\r\n WebSocketTransport.prototype.stop = function () {\r\n if (this.webSocket) {\r\n this.webSocket.close();\r\n this.webSocket = null;\r\n }\r\n return Promise.resolve();\r\n };\r\n return WebSocketTransport;\r\n}());\r\nexport { WebSocketTransport };\r\n","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nimport { DefaultHttpClient } from \"./HttpClient\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { HttpTransportType, TransferFormat } from \"./ITransport\";\r\nimport { LongPollingTransport } from \"./LongPollingTransport\";\r\nimport { ServerSentEventsTransport } from \"./ServerSentEventsTransport\";\r\nimport { Arg, createLogger } from \"./Utils\";\r\nimport { WebSocketTransport } from \"./WebSocketTransport\";\r\nvar MAX_REDIRECTS = 100;\r\n/** @private */\r\nvar HttpConnection = /** @class */ (function () {\r\n function HttpConnection(url, options) {\r\n if (options === void 0) { options = {}; }\r\n this.features = {};\r\n Arg.isRequired(url, \"url\");\r\n this.logger = createLogger(options.logger);\r\n this.baseUrl = this.resolveUrl(url);\r\n options = options || {};\r\n options.accessTokenFactory = options.accessTokenFactory || (function () { return null; });\r\n options.logMessageContent = options.logMessageContent || false;\r\n this.httpClient = options.httpClient || new DefaultHttpClient(this.logger);\r\n this.connectionState = 2 /* Disconnected */;\r\n this.options = options;\r\n }\r\n HttpConnection.prototype.start = function (transferFormat) {\r\n transferFormat = transferFormat || TransferFormat.Binary;\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this.logger.log(LogLevel.Debug, \"Starting connection with transfer format '\" + TransferFormat[transferFormat] + \"'.\");\r\n if (this.connectionState !== 2 /* Disconnected */) {\r\n return Promise.reject(new Error(\"Cannot start a connection that is not in the 'Disconnected' state.\"));\r\n }\r\n this.connectionState = 0 /* Connecting */;\r\n this.startPromise = this.startInternal(transferFormat);\r\n return this.startPromise;\r\n };\r\n HttpConnection.prototype.send = function (data) {\r\n if (this.connectionState !== 1 /* Connected */) {\r\n throw new Error(\"Cannot send data if the connection is not in the 'Connected' State.\");\r\n }\r\n return this.transport.send(data);\r\n };\r\n HttpConnection.prototype.stop = function (error) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.connectionState = 2 /* Disconnected */;\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.startPromise];\r\n case 2:\r\n _a.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n e_1 = _a.sent();\r\n return [3 /*break*/, 4];\r\n case 4:\r\n if (!this.transport) return [3 /*break*/, 6];\r\n this.stopError = error;\r\n return [4 /*yield*/, this.transport.stop()];\r\n case 5:\r\n _a.sent();\r\n this.transport = null;\r\n _a.label = 6;\r\n case 6: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n HttpConnection.prototype.startInternal = function (transferFormat) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var url, negotiateResponse, redirects, _loop_1, this_1, state_1, e_2;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n url = this.baseUrl;\r\n this.accessTokenFactory = this.options.accessTokenFactory;\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 12, , 13]);\r\n if (!this.options.skipNegotiation) return [3 /*break*/, 5];\r\n if (!(this.options.transport === HttpTransportType.WebSockets)) return [3 /*break*/, 3];\r\n // No need to add a connection ID in this case\r\n this.transport = this.constructTransport(HttpTransportType.WebSockets);\r\n // We should just call connect directly in this case.\r\n // No fallback or negotiate in this case.\r\n return [4 /*yield*/, this.transport.connect(url, transferFormat)];\r\n case 2:\r\n // We should just call connect directly in this case.\r\n // No fallback or negotiate in this case.\r\n _a.sent();\r\n return [3 /*break*/, 4];\r\n case 3: throw Error(\"Negotiation can only be skipped when using the WebSocket transport directly.\");\r\n case 4: return [3 /*break*/, 11];\r\n case 5:\r\n negotiateResponse = null;\r\n redirects = 0;\r\n _loop_1 = function () {\r\n var accessToken_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this_1.getNegotiationResponse(url)];\r\n case 1:\r\n negotiateResponse = _a.sent();\r\n // the user tries to stop the connection when it is being started\r\n if (this_1.connectionState === 2 /* Disconnected */) {\r\n return [2 /*return*/, { value: void 0 }];\r\n }\r\n if (negotiateResponse.url) {\r\n url = negotiateResponse.url;\r\n }\r\n if (negotiateResponse.accessToken) {\r\n accessToken_1 = negotiateResponse.accessToken;\r\n this_1.accessTokenFactory = function () { return accessToken_1; };\r\n }\r\n redirects++;\r\n return [2 /*return*/];\r\n }\r\n });\r\n };\r\n this_1 = this;\r\n _a.label = 6;\r\n case 6: return [5 /*yield**/, _loop_1()];\r\n case 7:\r\n state_1 = _a.sent();\r\n if (typeof state_1 === \"object\")\r\n return [2 /*return*/, state_1.value];\r\n _a.label = 8;\r\n case 8:\r\n if (negotiateResponse.url && redirects < MAX_REDIRECTS) return [3 /*break*/, 6];\r\n _a.label = 9;\r\n case 9:\r\n if (redirects === MAX_REDIRECTS && negotiateResponse.url) {\r\n throw Error(\"Negotiate redirection limit exceeded.\");\r\n }\r\n return [4 /*yield*/, this.createTransport(url, this.options.transport, negotiateResponse, transferFormat)];\r\n case 10:\r\n _a.sent();\r\n _a.label = 11;\r\n case 11:\r\n if (this.transport instanceof LongPollingTransport) {\r\n this.features.inherentKeepAlive = true;\r\n }\r\n this.transport.onreceive = this.onreceive;\r\n this.transport.onclose = function (e) { return _this.stopConnection(e); };\r\n // only change the state if we were connecting to not overwrite\r\n // the state if the connection is already marked as Disconnected\r\n this.changeState(0 /* Connecting */, 1 /* Connected */);\r\n return [3 /*break*/, 13];\r\n case 12:\r\n e_2 = _a.sent();\r\n this.logger.log(LogLevel.Error, \"Failed to start the connection: \" + e_2);\r\n this.connectionState = 2 /* Disconnected */;\r\n this.transport = null;\r\n throw e_2;\r\n case 13: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n HttpConnection.prototype.getNegotiationResponse = function (url) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _a, token, headers, negotiateUrl, response, e_3;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0: return [4 /*yield*/, this.accessTokenFactory()];\r\n case 1:\r\n token = _b.sent();\r\n if (token) {\r\n headers = (_a = {},\r\n _a[\"Authorization\"] = \"Bearer \" + token,\r\n _a);\r\n }\r\n negotiateUrl = this.resolveNegotiateUrl(url);\r\n this.logger.log(LogLevel.Debug, \"Sending negotiation request: \" + negotiateUrl);\r\n _b.label = 2;\r\n case 2:\r\n _b.trys.push([2, 4, , 5]);\r\n return [4 /*yield*/, this.httpClient.post(negotiateUrl, {\r\n content: \"\",\r\n headers: headers,\r\n })];\r\n case 3:\r\n response = _b.sent();\r\n if (response.statusCode !== 200) {\r\n throw Error(\"Unexpected status code returned from negotiate \" + response.statusCode);\r\n }\r\n return [2 /*return*/, JSON.parse(response.content)];\r\n case 4:\r\n e_3 = _b.sent();\r\n this.logger.log(LogLevel.Error, \"Failed to complete negotiation with the server: \" + e_3);\r\n throw e_3;\r\n case 5: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n HttpConnection.prototype.createConnectUrl = function (url, connectionId) {\r\n return url + (url.indexOf(\"?\") === -1 ? \"?\" : \"&\") + (\"id=\" + connectionId);\r\n };\r\n HttpConnection.prototype.createTransport = function (url, requestedTransport, negotiateResponse, requestedTransferFormat) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var connectUrl, transports, _i, transports_1, endpoint, transport, ex_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n connectUrl = this.createConnectUrl(url, negotiateResponse.connectionId);\r\n if (!this.isITransport(requestedTransport)) return [3 /*break*/, 2];\r\n this.logger.log(LogLevel.Debug, \"Connection was provided an instance of ITransport, using that directly.\");\r\n this.transport = requestedTransport;\r\n return [4 /*yield*/, this.transport.connect(connectUrl, requestedTransferFormat)];\r\n case 1:\r\n _a.sent();\r\n // only change the state if we were connecting to not overwrite\r\n // the state if the connection is already marked as Disconnected\r\n this.changeState(0 /* Connecting */, 1 /* Connected */);\r\n return [2 /*return*/];\r\n case 2:\r\n transports = negotiateResponse.availableTransports;\r\n _i = 0, transports_1 = transports;\r\n _a.label = 3;\r\n case 3:\r\n if (!(_i < transports_1.length)) return [3 /*break*/, 9];\r\n endpoint = transports_1[_i];\r\n this.connectionState = 0 /* Connecting */;\r\n transport = this.resolveTransport(endpoint, requestedTransport, requestedTransferFormat);\r\n if (!(typeof transport === \"number\")) return [3 /*break*/, 8];\r\n this.transport = this.constructTransport(transport);\r\n if (!(negotiateResponse.connectionId === null)) return [3 /*break*/, 5];\r\n return [4 /*yield*/, this.getNegotiationResponse(url)];\r\n case 4:\r\n negotiateResponse = _a.sent();\r\n connectUrl = this.createConnectUrl(url, negotiateResponse.connectionId);\r\n _a.label = 5;\r\n case 5:\r\n _a.trys.push([5, 7, , 8]);\r\n return [4 /*yield*/, this.transport.connect(connectUrl, requestedTransferFormat)];\r\n case 6:\r\n _a.sent();\r\n this.changeState(0 /* Connecting */, 1 /* Connected */);\r\n return [2 /*return*/];\r\n case 7:\r\n ex_1 = _a.sent();\r\n this.logger.log(LogLevel.Error, \"Failed to start the transport '\" + HttpTransportType[transport] + \"': \" + ex_1);\r\n this.connectionState = 2 /* Disconnected */;\r\n negotiateResponse.connectionId = null;\r\n return [3 /*break*/, 8];\r\n case 8:\r\n _i++;\r\n return [3 /*break*/, 3];\r\n case 9: throw new Error(\"Unable to initialize any of the available transports.\");\r\n }\r\n });\r\n });\r\n };\r\n HttpConnection.prototype.constructTransport = function (transport) {\r\n switch (transport) {\r\n case HttpTransportType.WebSockets:\r\n return new WebSocketTransport(this.accessTokenFactory, this.logger, this.options.logMessageContent);\r\n case HttpTransportType.ServerSentEvents:\r\n return new ServerSentEventsTransport(this.httpClient, this.accessTokenFactory, this.logger, this.options.logMessageContent);\r\n case HttpTransportType.LongPolling:\r\n return new LongPollingTransport(this.httpClient, this.accessTokenFactory, this.logger, this.options.logMessageContent);\r\n default:\r\n throw new Error(\"Unknown transport: \" + transport + \".\");\r\n }\r\n };\r\n HttpConnection.prototype.resolveTransport = function (endpoint, requestedTransport, requestedTransferFormat) {\r\n var transport = HttpTransportType[endpoint.transport];\r\n if (transport === null || transport === undefined) {\r\n this.logger.log(LogLevel.Debug, \"Skipping transport '\" + endpoint.transport + \"' because it is not supported by this client.\");\r\n }\r\n else {\r\n var transferFormats = endpoint.transferFormats.map(function (s) { return TransferFormat[s]; });\r\n if (transportMatches(requestedTransport, transport)) {\r\n if (transferFormats.indexOf(requestedTransferFormat) >= 0) {\r\n if ((transport === HttpTransportType.WebSockets && typeof WebSocket === \"undefined\") ||\r\n (transport === HttpTransportType.ServerSentEvents && typeof EventSource === \"undefined\")) {\r\n this.logger.log(LogLevel.Debug, \"Skipping transport '\" + HttpTransportType[transport] + \"' because it is not supported in your environment.'\");\r\n }\r\n else {\r\n this.logger.log(LogLevel.Debug, \"Selecting transport '\" + HttpTransportType[transport] + \"'\");\r\n return transport;\r\n }\r\n }\r\n else {\r\n this.logger.log(LogLevel.Debug, \"Skipping transport '\" + HttpTransportType[transport] + \"' because it does not support the requested transfer format '\" + TransferFormat[requestedTransferFormat] + \"'.\");\r\n }\r\n }\r\n else {\r\n this.logger.log(LogLevel.Debug, \"Skipping transport '\" + HttpTransportType[transport] + \"' because it was disabled by the client.\");\r\n }\r\n }\r\n return null;\r\n };\r\n HttpConnection.prototype.isITransport = function (transport) {\r\n return transport && typeof (transport) === \"object\" && \"connect\" in transport;\r\n };\r\n HttpConnection.prototype.changeState = function (from, to) {\r\n if (this.connectionState === from) {\r\n this.connectionState = to;\r\n return true;\r\n }\r\n return false;\r\n };\r\n HttpConnection.prototype.stopConnection = function (error) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n this.transport = null;\r\n // If we have a stopError, it takes precedence over the error from the transport\r\n error = this.stopError || error;\r\n if (error) {\r\n this.logger.log(LogLevel.Error, \"Connection disconnected with error '\" + error + \"'.\");\r\n }\r\n else {\r\n this.logger.log(LogLevel.Information, \"Connection disconnected.\");\r\n }\r\n this.connectionState = 2 /* Disconnected */;\r\n if (this.onclose) {\r\n this.onclose(error);\r\n }\r\n return [2 /*return*/];\r\n });\r\n });\r\n };\r\n HttpConnection.prototype.resolveUrl = function (url) {\r\n // startsWith is not supported in IE\r\n if (url.lastIndexOf(\"https://\", 0) === 0 || url.lastIndexOf(\"http://\", 0) === 0) {\r\n return url;\r\n }\r\n if (typeof window === \"undefined\" || !window || !window.document) {\r\n throw new Error(\"Cannot resolve '\" + url + \"'.\");\r\n }\r\n // Setting the url to the href propery of an anchor tag handles normalization\r\n // for us. There are 3 main cases.\r\n // 1. Relative path normalization e.g \"b\" -> \"http://localhost:5000/a/b\"\r\n // 2. Absolute path normalization e.g \"/a/b\" -> \"http://localhost:5000/a/b\"\r\n // 3. Networkpath reference normalization e.g \"//localhost:5000/a/b\" -> \"http://localhost:5000/a/b\"\r\n var aTag = window.document.createElement(\"a\");\r\n aTag.href = url;\r\n this.logger.log(LogLevel.Information, \"Normalizing '\" + url + \"' to '\" + aTag.href + \"'.\");\r\n return aTag.href;\r\n };\r\n HttpConnection.prototype.resolveNegotiateUrl = function (url) {\r\n var index = url.indexOf(\"?\");\r\n var negotiateUrl = url.substring(0, index === -1 ? url.length : index);\r\n if (negotiateUrl[negotiateUrl.length - 1] !== \"/\") {\r\n negotiateUrl += \"/\";\r\n }\r\n negotiateUrl += \"negotiate\";\r\n negotiateUrl += index === -1 ? \"\" : url.substring(index);\r\n return negotiateUrl;\r\n };\r\n return HttpConnection;\r\n}());\r\nexport { HttpConnection };\r\nfunction transportMatches(requestedTransport, actualTransport) {\r\n return !requestedTransport || ((actualTransport & requestedTransport) !== 0);\r\n}\r\n","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nimport { MessageType } from \"./IHubProtocol\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { NullLogger } from \"./Loggers\";\r\nimport { TextMessageFormat } from \"./TextMessageFormat\";\r\nvar JSON_HUB_PROTOCOL_NAME = \"json\";\r\n/** Implements the JSON Hub Protocol. */\r\nvar JsonHubProtocol = /** @class */ (function () {\r\n function JsonHubProtocol() {\r\n /** @inheritDoc */\r\n this.name = JSON_HUB_PROTOCOL_NAME;\r\n /** @inheritDoc */\r\n this.version = 1;\r\n /** @inheritDoc */\r\n this.transferFormat = TransferFormat.Text;\r\n }\r\n /** Creates an array of {@link @aspnet/signalr.HubMessage} objects from the specified serialized representation.\r\n *\r\n * @param {string} input A string containing the serialized representation.\r\n * @param {ILogger} logger A logger that will be used to log messages that occur during parsing.\r\n */\r\n JsonHubProtocol.prototype.parseMessages = function (input, logger) {\r\n // The interface does allow \"ArrayBuffer\" to be passed in, but this implementation does not. So let's throw a useful error.\r\n if (typeof input !== \"string\") {\r\n throw new Error(\"Invalid input for JSON hub protocol. Expected a string.\");\r\n }\r\n if (!input) {\r\n return [];\r\n }\r\n if (logger === null) {\r\n logger = NullLogger.instance;\r\n }\r\n // Parse the messages\r\n var messages = TextMessageFormat.parse(input);\r\n var hubMessages = [];\r\n for (var _i = 0, messages_1 = messages; _i < messages_1.length; _i++) {\r\n var message = messages_1[_i];\r\n var parsedMessage = JSON.parse(message);\r\n if (typeof parsedMessage.type !== \"number\") {\r\n throw new Error(\"Invalid payload.\");\r\n }\r\n switch (parsedMessage.type) {\r\n case MessageType.Invocation:\r\n this.isInvocationMessage(parsedMessage);\r\n break;\r\n case MessageType.StreamItem:\r\n this.isStreamItemMessage(parsedMessage);\r\n break;\r\n case MessageType.Completion:\r\n this.isCompletionMessage(parsedMessage);\r\n break;\r\n case MessageType.Ping:\r\n // Single value, no need to validate\r\n break;\r\n case MessageType.Close:\r\n // All optional values, no need to validate\r\n break;\r\n default:\r\n // Future protocol changes can add message types, old clients can ignore them\r\n logger.log(LogLevel.Information, \"Unknown message type '\" + parsedMessage.type + \"' ignored.\");\r\n continue;\r\n }\r\n hubMessages.push(parsedMessage);\r\n }\r\n return hubMessages;\r\n };\r\n /** Writes the specified {@link @aspnet/signalr.HubMessage} to a string and returns it.\r\n *\r\n * @param {HubMessage} message The message to write.\r\n * @returns {string} A string containing the serialized representation of the message.\r\n */\r\n JsonHubProtocol.prototype.writeMessage = function (message) {\r\n return TextMessageFormat.write(JSON.stringify(message));\r\n };\r\n JsonHubProtocol.prototype.isInvocationMessage = function (message) {\r\n this.assertNotEmptyString(message.target, \"Invalid payload for Invocation message.\");\r\n if (message.invocationId !== undefined) {\r\n this.assertNotEmptyString(message.invocationId, \"Invalid payload for Invocation message.\");\r\n }\r\n };\r\n JsonHubProtocol.prototype.isStreamItemMessage = function (message) {\r\n this.assertNotEmptyString(message.invocationId, \"Invalid payload for StreamItem message.\");\r\n if (message.item === undefined) {\r\n throw new Error(\"Invalid payload for StreamItem message.\");\r\n }\r\n };\r\n JsonHubProtocol.prototype.isCompletionMessage = function (message) {\r\n if (message.result && message.error) {\r\n throw new Error(\"Invalid payload for Completion message.\");\r\n }\r\n if (!message.result && message.error) {\r\n this.assertNotEmptyString(message.error, \"Invalid payload for Completion message.\");\r\n }\r\n this.assertNotEmptyString(message.invocationId, \"Invalid payload for Completion message.\");\r\n };\r\n JsonHubProtocol.prototype.assertNotEmptyString = function (value, errorMessage) {\r\n if (typeof value !== \"string\" || value === \"\") {\r\n throw new Error(errorMessage);\r\n }\r\n };\r\n return JsonHubProtocol;\r\n}());\r\nexport { JsonHubProtocol };\r\n","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nimport { HttpConnection } from \"./HttpConnection\";\r\nimport { HubConnection } from \"./HubConnection\";\r\nimport { JsonHubProtocol } from \"./JsonHubProtocol\";\r\nimport { NullLogger } from \"./Loggers\";\r\nimport { Arg, ConsoleLogger } from \"./Utils\";\r\n/** A builder for configuring {@link @aspnet/signalr.HubConnection} instances. */\r\nvar HubConnectionBuilder = /** @class */ (function () {\r\n function HubConnectionBuilder() {\r\n }\r\n HubConnectionBuilder.prototype.configureLogging = function (logging) {\r\n Arg.isRequired(logging, \"logging\");\r\n if (isLogger(logging)) {\r\n this.logger = logging;\r\n }\r\n else {\r\n this.logger = new ConsoleLogger(logging);\r\n }\r\n return this;\r\n };\r\n HubConnectionBuilder.prototype.withUrl = function (url, transportTypeOrOptions) {\r\n Arg.isRequired(url, \"url\");\r\n this.url = url;\r\n // Flow-typing knows where it's at. Since HttpTransportType is a number and IHttpConnectionOptions is guaranteed\r\n // to be an object, we know (as does TypeScript) this comparison is all we need to figure out which overload was called.\r\n if (typeof transportTypeOrOptions === \"object\") {\r\n this.httpConnectionOptions = transportTypeOrOptions;\r\n }\r\n else {\r\n this.httpConnectionOptions = {\r\n transport: transportTypeOrOptions,\r\n };\r\n }\r\n return this;\r\n };\r\n /** Configures the {@link @aspnet/signalr.HubConnection} to use the specified Hub Protocol.\r\n *\r\n * @param {IHubProtocol} protocol The {@link @aspnet/signalr.IHubProtocol} implementation to use.\r\n */\r\n HubConnectionBuilder.prototype.withHubProtocol = function (protocol) {\r\n Arg.isRequired(protocol, \"protocol\");\r\n this.protocol = protocol;\r\n return this;\r\n };\r\n /** Creates a {@link @aspnet/signalr.HubConnection} from the configuration options specified in this builder.\r\n *\r\n * @returns {HubConnection} The configured {@link @aspnet/signalr.HubConnection}.\r\n */\r\n HubConnectionBuilder.prototype.build = function () {\r\n // If httpConnectionOptions has a logger, use it. Otherwise, override it with the one\r\n // provided to configureLogger\r\n var httpConnectionOptions = this.httpConnectionOptions || {};\r\n // If it's 'null', the user **explicitly** asked for null, don't mess with it.\r\n if (httpConnectionOptions.logger === undefined) {\r\n // If our logger is undefined or null, that's OK, the HttpConnection constructor will handle it.\r\n httpConnectionOptions.logger = this.logger;\r\n }\r\n // Now create the connection\r\n if (!this.url) {\r\n throw new Error(\"The 'HubConnectionBuilder.withUrl' method must be called before building the connection.\");\r\n }\r\n var connection = new HttpConnection(this.url, httpConnectionOptions);\r\n return HubConnection.create(connection, this.logger || NullLogger.instance, this.protocol || new JsonHubProtocol());\r\n };\r\n return HubConnectionBuilder;\r\n}());\r\nexport { HubConnectionBuilder };\r\nfunction isLogger(logger) {\r\n return logger.log !== undefined;\r\n}\r\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable, NgZone } from '@angular/core';\nimport * as signalR from '@aspnet/signalr';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { API_ROOT } from 'src/app/_core/models/api-route.model';\n\n/**\n * Signal R\n *\n * Config set in core.module.ts\n * Connection is started and stopped in app.component.ts\n *\n * API:\n * Hub defined in Common/Hubs/NotificationsHub.cs\n * See also: Common/Utils/HubUtils.cs\n *\n * When action is started TaskUtils.cs is used:\n * StartExecutionTask() -> ExecuteAsyncQuery() -> HubUtils.SendNotification(notifications) -> Pops up in Execution List dropdown\n */\n\nexport enum SignalRStatus {\n off = 0,\n on = 1,\n lost = 2\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SignalRService {\n connection: signalR.HubConnection | undefined;\n status: SignalRStatus = SignalRStatus.off;\n statusSubject: BehaviorSubject;\n private retryIntervalMs = 20000;\n\n constructor(private httpClient: HttpClient, private ngZone: NgZone) {}\n\n createConnection(): void {\n this.ngZone.runOutsideAngular(() => {\n this.statusSubject = new BehaviorSubject(undefined);\n this.connection = new signalR.HubConnectionBuilder().withUrl('/signalr').build();\n this.connection.onclose(this.onSignalRclose.bind(this));\n this.startSignalr();\n });\n }\n\n startSignalr(): void {\n this.connection.start().then(() => {\n this.status = SignalRStatus.on;\n this.statusSubject.next(this.status);\n this.register();\n });\n }\n\n register(): void {\n this.connection.invoke('GetConnectionId').then((connectionId) => {\n this.httpClient.put(`${API_ROOT}/notifications/register-signalr-id/${connectionId}`, {}).subscribe();\n });\n }\n\n stopConnection(): void {\n this.status = SignalRStatus.off;\n if (this.connection) {\n this.connection.stop();\n }\n }\n\n private onSignalRclose(): void {\n if (this.status === SignalRStatus.off) {\n this.statusSubject.next(this.status);\n return;\n }\n this.status = SignalRStatus.lost;\n this.statusSubject.next(this.status);\n setTimeout(this.retryConnection.bind(this), this.retryIntervalMs);\n }\n\n private retryConnection(): void {\n if (this.status !== SignalRStatus.lost) {\n return;\n }\n try {\n this.startSignalr();\n } catch (ex) {\n // Ignore errors to not clutter up the console, since errors can be expected\n }\n }\n}\n","import * as i0 from '@angular/core';\nimport { InjectionToken, NgModule } from '@angular/core';\n\n/**\r\n * A storage service implementation that is used as a proxy for another storage service. This is used to create storage services with a\r\n * different default transcoder.\r\n */\r\nclass ProxyStorageService {\r\n /**\r\n * Creates a new `ProxyStorageService` instance that uses the specified transcoder by default for read and write operations. Actual\r\n * read and writes are delegated to given storage service.\r\n *\r\n * @param defaultTranscoder Transcoder which is to be used by default for storage read and write operations.\r\n * @param subject Storage service which should handle to actual storage of data.\r\n */\r\n constructor(defaultTranscoder, subject) {\r\n this.defaultTranscoder = defaultTranscoder;\r\n this.subject = subject;\r\n }\r\n /**\r\n * Checks whether an entry with the specified key exists in the storage.\r\n *\r\n * @param key Identifier of the entry for which its presence in the storage is to be checked.\r\n * @returns `true` if an entry with the specified key exists in the storage, `false` if not.\r\n */\r\n has(key) {\r\n return this.subject.has(key);\r\n }\r\n /*\r\n * Retrieves the value stored for the entry that is associated with the specified key. The given decoder is used to convert the stored\r\n * value to the desired type. If no entry for the specified key exists or if the decoder is unable to decode the stored value, then\r\n * `undefined` will be returned.\r\n *\r\n * @param key Identifier of the entry whose value is to be retrieved.\r\n * @param decoder Decoder to use for converting the stored value to the desired return type.\r\n * @returns Value of the entry that is identified by the specified key. In case the entry does not exist or if it cannot be\r\n * loaded (due to a decoding issue), then `undefined` will be returned by this function.\r\n */\r\n get(key, decoder) {\r\n return this.subject.get(key, decoder !== null && decoder !== void 0 ? decoder : this.defaultTranscoder);\r\n }\r\n /**\r\n * Creates or updates the entry identified by the specified key with the given value. The specified encoder is used to convert the given\r\n * value into a format that can be stored by the storage service's underlying storage.\r\n *\r\n * Storing a value into the storage service will ensure that an equivalent of the value can be read back, i.e. the data and structure of\r\n * the value will be the same. It, however, does not necessarily return the same reference.\r\n *\r\n * @param key Identifier of the entry which is to be created or updated.\r\n * @param value Value which is to be stored.\r\n * @param encoder Encoder used to convert the given value into a format that can be used for storage.\r\n */\r\n set(key, value, encoder) {\r\n this.subject.set(key, value, encoder !== null && encoder !== void 0 ? encoder : this.defaultTranscoder);\r\n }\r\n /**\r\n * Removes the entry that is identified by the specified key. Attempting to remove an entry for an unknown key will have no effect.\r\n * Attempting to retrieve an entry via the `get` method after it has been removed will result in `undefined`.\r\n *\r\n * @param key Identifier of the entry which is to be removed.\r\n */\r\n remove(key) {\r\n this.subject.remove(key);\r\n }\r\n /**\r\n * Clears the storage by removing all entries. Subsequent `get(x)` calls for a key *x* will return `undefined`, until a new value is set\r\n * for key *x*.\r\n */\r\n clear() {\r\n this.subject.clear();\r\n }\r\n /**\r\n * Creates a new storage service that uses the specified transcoder by default for read and write operations. The new storage service\r\n * uses the storage service on which this function is invoked as underlying storage. Both storage services will thus be able to access\r\n * the same data.\r\n *\r\n * The default transcoder will not be changed for the storage service on which this function is invoked.\r\n *\r\n * @param transcoder Transcoder that should be used by default for read and write operations by the new storage service.\r\n * @returns A new storage service that uses the specified transcoder by default.\r\n */\r\n withDefaultTranscoder(transcoder) {\r\n return new ProxyStorageService(transcoder, this.subject);\r\n }\r\n}\n\n/**\r\n * Base implementation for storage services.\r\n */\r\nclass BaseStorageService {\r\n /**\r\n * Creates a new `BaseStorageService` that uses the specified transcoder by default for read and write operations.\r\n *\r\n * @param defaultTranscoder Transcoder which is to be used by default for storage read and write operations.\r\n */\r\n constructor(defaultTranscoder) {\r\n this.defaultTranscoder = defaultTranscoder;\r\n }\r\n /**\r\n * Retrieves the value stored for the entry that is associated with the specified key. The given decoder is used to convert the stored\r\n * value to the desired type. If no entry for the specified key exists or if the decoder is unable to decode the stored value, then\r\n * `undefined` will be returned.\r\n *\r\n * @param key Identifier of the entry whose value is to be retrieved.\r\n * @param decoder Decoder to use for converting the stored value to the desired return type.\r\n * @returns Value of the entry that is identified by the specified key. In case the entry does not exist or if it cannot be\r\n * loaded (due to a decoding issue), then `undefined` will be returned by this function.\r\n */\r\n get(key, decoder) {\r\n const value = this.getItem(key);\r\n return value !== undefined ? (decoder !== null && decoder !== void 0 ? decoder : this.defaultTranscoder).decode(value) : undefined;\r\n }\r\n /**\r\n * Creates or updates the entry identified by the specified key with the given value. The specified encoder is used to convert the given\r\n * value into a format that can be stored by the storage service's underlying storage.\r\n *\r\n * Storing a value into the storage service will ensure that an equivalent of the value can be read back, i.e. the data and structure of\r\n * the value will be the same. It, however, does not necessarily return the same reference.\r\n *\r\n * @param key Identifier of the entry which is to be created or updated.\r\n * @param value Value which is to be stored.\r\n * @param encoder Encoder used to convert the given value into a format that can be used for storage.\r\n */\r\n set(key, value, encoder) {\r\n this.setItem(key, (encoder !== null && encoder !== void 0 ? encoder : this.defaultTranscoder).encode(value));\r\n }\r\n /**\r\n * Creates a new storage service that uses the specified transcoder by default for read and write operations. The new storage service\r\n * uses the storage service on which this function is invoked as underlying storage. Both storage services will thus be able to access\r\n * the same data.\r\n *\r\n * The default transcoder will not be changed for the storage service on which this function is invoked.\r\n *\r\n * @param transcoder Transcoder that should be used by default for read and write operations by the new storage service.\r\n * @returns A new storage service that uses the specified transcoder by default.\r\n */\r\n withDefaultTranscoder(transcoder) {\r\n return new ProxyStorageService(transcoder, this);\r\n }\r\n}\n\n/** Transcoder that encodes values as JSON strings. */\r\nclass JsonStorageTranscoder {\r\n encode(value) {\r\n return JSON.stringify(value);\r\n }\r\n decode(value) {\r\n try {\r\n return JSON.parse(value);\r\n }\r\n catch (error) {\r\n return undefined;\r\n }\r\n }\r\n}\r\n/** Transcoder that encodes/decodes strings **as is**, i.e. values are not modified in any way. */\r\nclass StringStorageTranscoder {\r\n encode(value) {\r\n return value;\r\n }\r\n decode(value) {\r\n return value;\r\n }\r\n}\r\n/** Transcoder that encodes/decodes `boolean` values. */\r\nclass BooleanStorageTranscoder {\r\n encode(value) {\r\n return value.toString();\r\n }\r\n decode(value) {\r\n if (value === 'true') {\r\n return true;\r\n }\r\n if (value === 'false') {\r\n return false;\r\n }\r\n return undefined;\r\n }\r\n}\r\n/** Transcoder that encodes/decodes `number` values. */\r\nclass NumberStorageTranscoder {\r\n encode(value) {\r\n return value.toString();\r\n }\r\n decode(value) {\r\n const parsedNumber = Number(value);\r\n return Number.isFinite(parsedNumber) ? parsedNumber : undefined;\r\n }\r\n}\r\n/** Transcoder that encodes/decodes `Date` values to ISO strings. */\r\nclass DateIsoStorageTranscoder {\r\n encode(value) {\r\n return value.toISOString();\r\n }\r\n decode(value) {\r\n const timestamp = Date.parse(value);\r\n return isNaN(timestamp) ? undefined : new Date(timestamp);\r\n }\r\n}\r\n/** Transcoder that encodes/decodes `Date` values to epoch timestamps. */\r\nclass DateEpochStorageTranscoder {\r\n encode(value) {\r\n return value.valueOf().toString();\r\n }\r\n decode(value) {\r\n const timestamp = parseInt(value, 10);\r\n return isNaN(timestamp) ? undefined : new Date(timestamp);\r\n }\r\n}\r\n/** A set of storage transcoders. */\r\nconst StorageTranscoders = {\r\n /** Transcoder that encodes values as JSON strings. */\r\n JSON: new JsonStorageTranscoder(),\r\n /** Transcoder that encodes/decodes strings **as is**, i.e. values are not modified in any way. */\r\n STRING: new StringStorageTranscoder(),\r\n /** Transcoder that encodes/decodes `boolean` values. */\r\n BOOLEAN: new BooleanStorageTranscoder(),\r\n /** Transcoder that encodes/decodes `number` values. */\r\n NUMBER: new NumberStorageTranscoder(),\r\n /** Transcoder that encodes/decodes `Date` values into ISO strings. */\r\n DATE_ISO_STRING: new DateIsoStorageTranscoder(),\r\n /** Transcoder that encodes/decodes `Date` values into epoch timestamps. */\r\n DATE_EPOCH_TIME: new DateEpochStorageTranscoder(),\r\n};\n\n/**\r\n * A volatile `StorageService` implementation. This service guarantees that data stored will remain available as long as the application\r\n * instance is active. After the application is terminated all data will be lost.\r\n */\r\nclass InMemoryStorageService extends BaseStorageService {\r\n /**\r\n * Creates a new `InMemoryStorageService` instance.\r\n */\r\n constructor() {\r\n super(StorageTranscoders.JSON);\r\n /** A map that serves as the underlying backing storage for this service. */\r\n this.storage = new Map();\r\n }\r\n /**\r\n * Checks whether an entry with the specified key exists in the storage.\r\n *\r\n * @param key Identifier of the entry for which its presence in the storage is to be checked.\r\n * @returns `true` if an entry with the specified key exists in the storage, `false` if not.\r\n */\r\n has(key) {\r\n return this.storage.has(key);\r\n }\r\n /**\r\n * Removes the entry that is identified by the specified key. Attempting to remove an entry for an unknown key will have no effect.\r\n * Attempting to retrieve an entry via the `get` method after it has been removed will result in `undefined`.\r\n *\r\n * @param key Identifier of the entry which is to be removed.\r\n */\r\n remove(key) {\r\n this.storage.delete(key);\r\n }\r\n /**\r\n * Clears the storage by removing all entries. Subsequent `get(x)` calls for a key *x* will return `undefined`, until a new value is set\r\n * for key *x*.\r\n */\r\n clear() {\r\n this.storage.clear();\r\n }\r\n /**\r\n * Performs the actual retrieval of a value from storage.\r\n *\r\n * @param key Identifier of the entry whose value is to be retrieved.\r\n * @returns The value that is stored for the specified entry or `undefined` if no entry exists for the specified key.\r\n */\r\n getItem(key) {\r\n if (!this.storage.has(key)) {\r\n return undefined;\r\n }\r\n return this.storage.get(key);\r\n }\r\n /**\r\n * Stores the provided value using specified key in the storage.\r\n *\r\n * @param key Identifier of the entry for which the value is to be stored.\r\n * @param value The value that is to be stored.\r\n */\r\n setItem(key, value) {\r\n this.storage.set(key, value);\r\n }\r\n}\n\n/**\r\n * An implementation of `StorageService` interface that uses an underlying (web) `Storage` object, such as `localStorage` and\r\n * `sessionStorage`, as backing data store. This class basically wraps the `Storage` object so it can be accessed through the\r\n * `StorageService` interface.\r\n */\r\nclass WebStorageService extends BaseStorageService {\r\n /**\r\n * Creates a new `WebStorageService` instance that uses the specified (web) storage object as underlying backing storage.\r\n *\r\n * @param storage Storage object which is to be wrapped in a class that implements the `StorageService` interface.\r\n */\r\n constructor(storage) {\r\n super(StorageTranscoders.JSON);\r\n this.storage = storage;\r\n }\r\n /**\r\n * Checks whether an entry with the specified key exists in the storage.\r\n *\r\n * @param key Identifier of the entry for which its presence in the storage is to be checked.\r\n * @returns `true` if an entry with the specified key exists in the storage, `false` if not.\r\n */\r\n has(key) {\r\n return this.storage.getItem(key) !== null;\r\n }\r\n /**\r\n * Removes the entry that is identified by the specified key. Attempting to remove an entry for an unknown key will have no effect.\r\n * Attempting to retrieve an entry via the `get` method after it has been removed will result in `undefined`.\r\n *\r\n * @param key Identifier of the entry which is to be removed.\r\n */\r\n remove(key) {\r\n this.storage.removeItem(key);\r\n }\r\n /**\r\n * Clears the storage by removing all entries. Subsequent `get(x)` calls for a key *x* will return `undefined`, until a new value is set\r\n * for key *x*.\r\n */\r\n clear() {\r\n this.storage.clear();\r\n }\r\n /**\r\n * Performs the actual retrieval of a value from storage.\r\n *\r\n * @param key Identifier of the entry whose value is to be retrieved.\r\n * @returns The value that is stored for the specified entry or `undefined` if no entry exists for the specified key.\r\n */\r\n getItem(key) {\r\n const value = this.storage.getItem(key);\r\n return value !== null ? value : undefined;\r\n }\r\n /**\r\n * Stores the provided value using specified key in the storage.\r\n *\r\n * @param key Identifier of the entry for which the value is to be stored.\r\n * @param value The value that is to be stored.\r\n */\r\n setItem(key, value) {\r\n return this.storage.setItem(key, value);\r\n }\r\n}\r\n/**\r\n * Checks whether the specified (web) storage is available and functional. This might not be the case for older browsers. However even\r\n * certain browsers that do support the web storage API can, under some circumstances, have non functional storage objects. For example,\r\n * Safari is known to have `localStorage` and `sessionStorage` throw exceptions in private mode.\r\n *\r\n * @param storage Storage object which is to be tested for availability.\r\n * @returns `true` if the specified storage can be used, `false` if not.\r\n */\r\nfunction isStorageAvailable(storage) {\r\n // Check if storage is available.\r\n if (!storage) {\r\n return false;\r\n }\r\n // Check if the storage can actually be accessed.\r\n try {\r\n const now = Date.now();\r\n const testItemKey = `storage-test-entry-${now}`;\r\n const testItemValue = `storage-test-value-${now}`;\r\n storage.setItem(testItemKey, testItemValue);\r\n const retrievedItemValue = storage.getItem(testItemKey);\r\n storage.removeItem(testItemKey);\r\n return retrievedItemValue === testItemValue;\r\n }\r\n catch (error) {\r\n return false;\r\n }\r\n}\r\n/**\r\n * Checks whether session storage is available and functional. This might not be the case for older browsers. However even certain browsers\r\n * that do support the web storage API can, under some circumstances, have non functional storage objects. For example, Safari is known to\r\n * have `sessionStorage` throw exceptions in private mode.\r\n *\r\n * @returns `true` if session storage can be used, `false` if not.\r\n */\r\nfunction isSessionStorageAvailable() {\r\n try {\r\n if (typeof sessionStorage !== 'undefined') {\r\n return isStorageAvailable(sessionStorage);\r\n }\r\n }\r\n catch (_a) { }\r\n return false;\r\n}\r\n/**\r\n * Checks whether local storage is available and functional. This might not be the case for older browsers. However even certain browsers\r\n * that do support the web storage API can, under some circumstances, have non functional storage objects. For example, Safari is known to\r\n * have `localStorage` throw exceptions in private mode.\r\n *\r\n * @returns `true` if local storage can be used, `false` if not.\r\n */\r\nfunction isLocalStorageAvailable() {\r\n try {\r\n if (typeof localStorage !== 'undefined') {\r\n return isStorageAvailable(localStorage);\r\n }\r\n }\r\n catch (_a) { }\r\n return false;\r\n}\n\nfunction sessionStorageFactory() {\r\n if (isSessionStorageAvailable()) {\r\n return new WebStorageService(sessionStorage);\r\n }\r\n return new InMemoryStorageService();\r\n}\r\n/** Injection token for the session storage service. */\r\nconst SESSION_STORAGE = new InjectionToken('SESSION_STORAGE', { providedIn: 'root', factory: sessionStorageFactory });\r\nfunction localStorageFactory() {\r\n if (isLocalStorageAvailable()) {\r\n return new WebStorageService(localStorage);\r\n }\r\n return new InMemoryStorageService();\r\n}\r\n/** Injection token for the local storage service. */\r\nconst LOCAL_STORAGE = new InjectionToken('LOCAL_STORAGE', { providedIn: 'root', factory: localStorageFactory });\n\n/**\r\n * @deprecated You no longer need to import the `StorageServiceModule`, since the `SESSION_STORAGE` and `LOCAL_STORAGE` injection tokens are\r\n * now 'self providing' in the root injector.\r\n */\r\nclass StorageServiceModule {\r\n}\r\nStorageServiceModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: StorageServiceModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\r\nStorageServiceModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: StorageServiceModule });\r\nStorageServiceModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: StorageServiceModule });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.1.1\", ngImport: i0, type: StorageServiceModule, decorators: [{\r\n type: NgModule\r\n }] });\n\n/**\r\n * Generated bundle index. Do not edit.\r\n */\n\nexport { BaseStorageService, BooleanStorageTranscoder, DateEpochStorageTranscoder, DateIsoStorageTranscoder, InMemoryStorageService, JsonStorageTranscoder, LOCAL_STORAGE, NumberStorageTranscoder, ProxyStorageService, SESSION_STORAGE, StorageServiceModule, StorageTranscoders, StringStorageTranscoder, WebStorageService, isLocalStorageAvailable, isSessionStorageAvailable, isStorageAvailable, localStorageFactory, sessionStorageFactory };\n","import { Inject, Injectable } from '@angular/core';\n\nimport { LOCAL_STORAGE, StorageService } from 'ngx-webstorage-service';\nimport { UserDTO } from 'src/app/_core/models/user.model';\n\n@Injectable({\n providedIn: 'root'\n})\n/**\n * Store any object in local storage on a key-value pair basis\n */\nexport class StoreService {\n constructor(@Inject(LOCAL_STORAGE) private storageService: StorageService) {}\n\n get(key: string): string | number | boolean | {} {\n return this.storageService.get(this.getKey(key));\n }\n\n set(key: string, value: string | number | boolean | {}): void {\n this.storageService.set(this.getKey(key), value);\n }\n\n remove(key: string): void {\n this.storageService.remove(this.getKey(key));\n }\n\n /**\n * Restores saved @object if it exists and is of same type,\n * otherwise returns the @object unchanged and saves it\n * @param key to the local storage\n * @param object default state of object to return if nothing/invalid is retrieved\n * @param overwrite overwrites the stored value if the (persistent/state) object has different properties. Defaults to true\n */\n load(key: string, object: {}, overwrite: boolean = true): {} {\n const stored = this.get(key);\n if (!stored || typeof stored !== 'object' || (overwrite && !this.hasSameProperties(object, stored))) {\n this.set(key, object);\n return object;\n }\n return stored;\n }\n\n isValidModel(key: string, model: {}): boolean {\n const storedModel = this.get(key);\n const isInvalid = !storedModel || typeof storedModel !== 'object' || !this.hasSameProperties(model, storedModel);\n return !isInvalid;\n }\n\n private hasSameProperties(a: {}, b: {}): boolean {\n const aKeys = Object.keys(a).sort();\n const bKeys = Object.keys(b).sort();\n return JSON.stringify(aKeys) === JSON.stringify(bKeys);\n }\n\n /**\n * Prefixes and returns key with user id so stored values can be user specific\n * Ignores session keys (session.xxx) and globalKeys (data shared between sessions, not user specific)\n */\n private getKey(key: string): string {\n const globalKeys = ['lastUsedLanguage'];\n if (key.includes('session.') || globalKeys.includes(key)) {\n return key;\n }\n const sessionUser = this.storageService.get('session.user') as UserDTO;\n const id = sessionUser && !isNaN(sessionUser.id) ? sessionUser.id : '';\n return `${id}.${key}`;\n }\n}\n","import { Injectable } from '@angular/core';\nimport * as moment from 'moment-timezone';\n\nimport { FormatService } from 'src/app/_core/format.service';\nimport { SettingsService } from 'src/app/_core/settings/settings.service';\n\n@Injectable({\n providedIn: 'root'\n})\n/**\n * Used to fix timezone issues caused by clients and servers in different time zones\n * also issues caused by timezone information missing in date strings from the API/database\n */\nexport class TimezoneService {\n static settings: SettingsService;\n static formatService: FormatService;\n\n /**\n * This function is used for received server time that has no time zone indication e.g. '2019-10-31 T 09:34:44.36'\n *\n * The function assumes that the server is sending time data in UTC time unless otherwise defined in settings 'server_timezone'\n *\n * If this function is used and the value is sent back to the server then use clientTimeToServerTime() function\n */\n static serverTimeToClientTime(value: string | number | Date | undefined): Date | undefined {\n if (!value) {\n return undefined;\n }\n // If TimeZone indicated in string don't adjust time, e.g. '2019-10-31T09:34:44.36Z' or '2019-10-31T09:34:44.36-04:00'\n if (typeof value === 'string' && (value.indexOf('Z') > -1 || ['-', '+'].includes(value[value.length - 6]))) {\n return new Date(value);\n }\n const timezone = TimezoneService.settings.serverTimezone();\n const serverOffset = timezone ? moment.tz.zone(timezone).utcOffset(new Date(value).getTime()) * 60 * 1000 : 0;\n return new Date(new Date(value).getTime() - (new Date(value).getTimezoneOffset() * 60 * 1000 - serverOffset));\n }\n\n /**\n * Converts client local time to server time (UTC) and returns ISO 8601 string for the server\n * e.g 'Thu Oct 31 2019 05:34:44 GMT-0400 (Eastern Daylight Time)' becomes => \"2019-10-31 T 09:34:44.360Z\"\n */\n static dateToISOString(value: Date | undefined): string | undefined {\n return value ? value.toISOString() : undefined;\n }\n\n /**\n * Dates are represented as milliseconds in Highcharts but are dates in the database.\n * A certain millisecond from beginning of time (1970) is represented differently in every time zone e.g.\n * 1577836800000 ms: (1. jan 2020 00:00:00 in Iceland GMT) but (31. december 2019 19:00:00 in New York)\n *\n * This function fixes this so that: If you're in New York this function would shift 1577836800000 to 1577854800000 to be\n * 1st jan 2020 00:00:00 in New York, as we are only interested in the date value of the timestamp.\n *\n * The reason this function is different than serverTimeToClientTime above and inverts the offset calculations can be explained by first\n * understanding that: new Date(0) and new Date('1970-01-01T00:00:00') is not the same time unless the object construction\n * is happening in a UTC timezone. In a non UTC timezone you'd have to add the offset to one object or subtract it from the other.\n */\n static chartDataMillisecondsToClientTime(millisecondsDate: number): number {\n const timezone = TimezoneService.settings.serverTimezone();\n const serverOffset = timezone ? moment.tz.zone(timezone).utcOffset(new Date(millisecondsDate).getTime()) * 60 * 1000 : 0;\n return millisecondsDate - serverOffset + new Date(millisecondsDate).getTimezoneOffset() * 60 * 1000;\n }\n\n static chartDataMillisecondsToServerTime(millisecondsDate: number): number {\n const timezone = TimezoneService.settings.serverTimezone();\n const serverOffset = timezone ? moment.tz.zone(timezone).utcOffset(new Date(millisecondsDate).getTime()) * 60 * 1000 : 0;\n return millisecondsDate + serverOffset - new Date(millisecondsDate).getTimezoneOffset() * 60 * 1000;\n }\n\n /**\n * Converts a Date object (which always includes time) but is representing a Date only ... to date ISO format\n * e.g Wed Nov 06 2019 00:00:00 GMT-0500 becomes '2019-11-06'\n */\n static dateToString(value: Date | undefined): string | undefined {\n return !value ? undefined : TimezoneService.formatService.format(value, 'date:yyyy-MM-dd');\n }\n\n /**\n * Converts a Date object to ISO string in local time which \"changes\" the actual value, used for display purposes e.g Export to CSV/Excel\n * e.g Wed Mar 03 2020 23:00:00 GMT-0500 becomes '2020-03-03 23:00:00'\n */\n static toISOStringLocal(value: Date): string | undefined {\n if (!value) {\n return undefined;\n }\n if (!(value instanceof Date)) {\n return value;\n }\n return `${TimezoneService.dateToString(value)} ${value.toTimeString().split(' ')[0]}`;\n }\n\n constructor(private settingsService: SettingsService, private formatService: FormatService) {\n TimezoneService.settings = this.settingsService;\n TimezoneService.formatService = this.formatService;\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Observable, forkJoin, of } from 'rxjs';\nimport { finalize, map } from 'rxjs/operators';\n\nimport { API_ROOT } from 'src/app/_core/models/api-route.model';\nimport { SessionService } from 'src/app/_core/session.service';\nimport { SettingsService } from 'src/app/_core/settings/settings.service';\nimport { StoreService } from 'src/app/_core/store.service';\n\nexport interface Translation {\n id: number;\n key: string;\n value: string;\n language: string;\n}\n\nexport interface Language {\n id: number;\n code: string; // ISO 639-1 code\n name: string; // Native name of language\n description: string; // English name of language\n caption?: string; // Custom name, combination of code and name.\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TranslationsService {\n static translateService: TranslateService;\n\n /**\n * Returns the translated value or the key if the value was not found.\n */\n static get(key?: string): string {\n if (!key || !TranslationsService.translateService || !TranslationsService.translateService.instant) {\n return key;\n }\n return TranslationsService.translateAndReplacePlaceholder(key);\n }\n\n constructor(\n private httpClient: HttpClient,\n private translateService: TranslateService,\n private sessionService: SessionService,\n private settingsService: SettingsService,\n private storeService: StoreService\n ) {\n TranslationsService.translateService = translateService;\n }\n\n /**\n * Finds '%s' in return value and replaces with whatever comes after the ',' in the translation key.\n * E.g. GOT_X_MINUTES,10 -> Got %s minutes -> Got 10 minutes.\n */\n private static translateAndReplacePlaceholder(key: string): string {\n if (!key) {\n return;\n }\n const keySplit = key.split(',');\n const keyBase = keySplit[0];\n const params: string[] = keySplit.slice(1, keySplit.length);\n if (params.length === 0) {\n return TranslationsService.translateService.instant(keyBase);\n }\n let translation = TranslationsService.translateService.instant(keySplit[0]);\n if (translation === keyBase) {\n return key;\n }\n params.forEach((param) => {\n translation = translation.replace('%s', param);\n });\n return translation;\n }\n\n /**\n * Initialized at app startup from core.module.ts\n * Get translations and set ngx-translate\n */\n async initialize(): Promise {\n const language = this.getLanguage();\n return new Promise((resolve) => {\n forkJoin([this.setFallbackTranslations(), this.setTranslations(language)]).subscribe(\n () => {\n resolve();\n },\n () => {\n window.alert('AGR Error: Failed to load translations from API\\nPotential App Service error!');\n console.error('AGR: Failed to load translations from API - Check App Service');\n resolve();\n }\n );\n });\n }\n\n getLanguage(): string {\n let lang = this.sessionService.user ? this.sessionService.user.language : undefined;\n lang = lang ? lang : (this.storeService.get('lastUsedLanguage') as string);\n lang = lang ? lang : this.settingsService.defaultLanguage();\n return lang ? lang : 'en';\n }\n\n /**\n * Activates language for app.\n */\n setTranslations(language: string): Observable {\n const isLocal = !this.settingsService.cloudTranslations();\n return this.httpClient.get(`${API_ROOT}/translations/${language}?local=${isLocal}`).pipe(\n map((translations: Translation[]) => {\n this.translateService.setTranslation(language, this.toTranslationsObj(translations));\n this.activateLanguage(language);\n return true;\n })\n );\n }\n\n /**\n * Save last used language.\n */\n storeLanguage(language: string): void {\n if (language === 'null') {\n return;\n }\n this.storeService.set('lastUsedLanguage', language);\n }\n\n getAvailableLanguages(): Observable {\n return this.httpClient.get('https://pool.agrdynamics.com/api/languages').pipe(\n map((languages: Language[]) =>\n languages.map((language) => {\n language.caption = `${language.name} (${language.code})`;\n return language;\n })\n )\n );\n }\n\n /**\n * Sets English as fallback language for app\n */\n private setFallbackTranslations(): Observable {\n if (localStorage.getItem('disableFallbackTranslations') === 'true') {\n return of(true).pipe(finalize(() => true));\n }\n return this.httpClient.get(`${API_ROOT}/translations/en?local=true`).pipe(\n map((translations: Translation[]) => {\n this.translateService.setTranslation('en', this.toTranslationsObj(translations));\n this.translateService.setDefaultLang('en');\n return true;\n })\n );\n }\n\n /**\n * Activates language using ngx-translate and saves lastUsedLanguage in local storage.\n */\n private activateLanguage(language: string): void {\n this.translateService.use(language);\n this.storeLanguage(language);\n }\n\n private toTranslationsObj(translations: Translation[]): { [key in string]: string } {\n if (!translations || translations.length === 0) {\n return {};\n }\n return translations.reduce((acc, translation) => {\n acc[translation.key] = translation.value;\n return acc;\n }, {});\n }\n}\n","import { Component } from '@angular/core';\nimport { ICellRendererAngularComp } from '@ag-grid-community/angular';\nimport { ICellRendererParams } from '@ag-grid-community/core';\n\n@Component({\n selector: 'agr-ag-grid-boolean-component',\n template: ` {{ caption | agrTranslate }} `,\n styles: [\n `\n .badge {\n display: inline;\n padding: 2px 6px !important;\n font-size: 12px;\n height: 17px !important;\n position: relative;\n top: -0.5px;\n }\n `\n ]\n})\nexport class AgGridBitRendererComponent implements ICellRendererAngularComp {\n isTrue: boolean;\n isUndefined: boolean;\n bgClass: string;\n caption: string;\n\n agInit(params: ICellRendererParams): void {\n this.setIsTrue(params.getValue());\n this.isUndefined = this.isTrue === undefined;\n this.bgClass = this.isTrue ? 'bg-primary' : 'bg-light';\n this.caption = this.isTrue ? 'YES' : 'NO';\n }\n\n setIsTrue(value: boolean | string): void {\n if (value === undefined) {\n return;\n }\n // the value is a string when grouped ('true' | 'false') but otherwise a boolean\n if (typeof value === 'string') {\n this.isTrue = value === 'true' ? true : value === 'false' ? false : undefined;\n } else if (typeof value === 'boolean') {\n this.isTrue = value;\n }\n }\n\n refresh(): boolean {\n return true;\n }\n}\n","import { Component } from '@angular/core';\nimport { ICellRendererAngularComp } from '@ag-grid-community/angular';\nimport { ICellRendererParams } from '@ag-grid-community/core';\n@Component({\n selector: 'agr-ag-grid-closed-component',\n template: `{{ caption | agrTranslate }}`,\n styles: [\n `\n .badge {\n display: inline;\n padding: 2px 6px !important;\n font-size: 12px;\n height: 17px !important;\n position: relative;\n top: -0.5px;\n }\n `\n ]\n})\nexport class AgGridClosedRendererComponent implements ICellRendererAngularComp {\n isClosed: boolean;\n isUndefined: boolean;\n bgClass: string;\n caption: string;\n\n agInit(params: ICellRendererParams): void {\n this.setIsClosed(params.getValue());\n this.isUndefined = this.isClosed === undefined;\n this.bgClass = this.isClosed ? 'bg-secondary' : 'bg-success';\n this.caption = this.isClosed ? 'CLOSED' : 'OPEN';\n }\n\n setIsClosed(value: boolean | string): void {\n if (value === undefined) {\n return;\n }\n // the value is a string when grouped ('true' | 'false') but otherwise a boolean\n if (typeof value === 'string') {\n this.isClosed = value === 'true' ? true : value === 'false' ? false : undefined;\n } else if (typeof value === 'boolean') {\n this.isClosed = value;\n }\n }\n\n refresh(): boolean {\n return true;\n }\n}\n","/* eslint-disable max-lines */\nimport {\n GridOptions,\n ICellRendererParams,\n PostProcessPopupParams,\n ProcessCellForExportParams,\n ValueFormatterParams,\n ValueGetterParams,\n ValueParserParams\n} from '@ag-grid-community/core';\nimport { Injectable } from '@angular/core';\nimport { ToasterService } from 'angular2-toaster';\nimport { cloneDeep, get, merge } from 'lodash';\n\nimport { FormatService } from 'src/app/_core/format.service';\nimport { SettingsService } from 'src/app/_core/settings/settings.service';\nimport { TimezoneService } from 'src/app/_core/timezone.service';\nimport { TranslationsService } from 'src/app/_core/translations.service';\nimport { AgGridService } from 'src/app/_shared/ag-grid/ag-grid.service';\nimport { AgrGridOptions } from 'src/app/_shared/ag-grid/agr-grid-options.model';\nimport { AgGridBitRendererComponent } from 'src/app/_shared/ag-grid/components/ag-grid-bit-renderer.component';\nimport { AgGridClosedRendererComponent } from 'src/app/_shared/ag-grid/components/ag-grid-closed-renderer.component';\nimport { AgGridTooltipComponent } from 'src/app/_shared/ag-grid/components/ag-grid-tooltip.component';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AgGridOptionsService {\n /**\n * Common options.\n * The default options used across all grids in AGR 6 apart from the simple grid found in erp setup.\n */\n private commonOptions: AgrGridOptions = {\n accentedSort: this.settingsService.accentedSort(),\n autoGroupColumnDef: { comparator: this.groupComparator.bind(this) },\n enableRangeSelection: true,\n groupSelectsFiltered: true,\n pivotMode: false,\n suppressRowDeselection: false,\n rowGroupPanelShow: 'always',\n suppressAggFuncInHeader: true,\n sideBar: {\n toolPanels: ['columns', 'filters'],\n defaultToolPanel: ''\n },\n statusBar: {\n statusPanels: [\n { statusPanel: 'agTotalRowCountComponent', align: 'left' },\n { statusPanel: 'agFilteredRowCountComponent' },\n { statusPanel: 'agSelectedRowCountComponent' },\n { statusPanel: 'agAggregationComponent' }\n ]\n },\n suppressCopyRowsToClipboard: true,\n excelStyles: [\n { id: 'booleanType', dataType: 'Boolean' },\n { id: 'stringType', dataType: 'String' },\n { id: 'dateType', dataType: 'DateTime' }\n ],\n popupParent: document.querySelector('body'),\n postProcessPopup: (params: PostProcessPopupParams) => {\n if (params.type !== 'columnMenu') {\n return;\n }\n setTimeout(() => {\n const menuWidth = params.ePopup.offsetWidth;\n const leftPos = params.ePopup.offsetLeft;\n if (leftPos + menuWidth + 25 > window.innerWidth) {\n params.ePopup.style.left = `${window.innerWidth - menuWidth - 25}px`;\n }\n });\n },\n components: {\n gridTooltipComponent: AgGridTooltipComponent\n },\n /**\n * Events.\n */\n onDisplayedColumnsChanged: (event): void => {\n this.agGridService.autoResizeColumnHeaders(event.api);\n },\n onColumnResized: (event): void => {\n this.agGridService.autoResizeColumnHeaders(event.api);\n },\n onRowDataChanged: (event): void => {\n this.agGridService.autoResizeColumnHeaders(event.api);\n },\n\n /**\n * Default column defs.\n */\n defaultColDef: {\n enableRowGroup: true,\n filter: 'agTextColumnFilter',\n floatingFilter: true,\n enableValue: true,\n resizable: true,\n sortable: true,\n tooltipComponent: 'gridTooltipComponent',\n cellClassRules: {\n 'text-end': (params) => params.colDef.aligning === 'right',\n 'text-center': (params) => params.colDef.aligning === 'center',\n 'ag-cell-number': (params) => this.getColumnType(params.colDef.format) === 'number',\n 'ag-cell-integer': (params) => this.getColumnType(params.colDef.format) === 'integer',\n 'ag-cell-currency': (params) => this.getColumnType(params.colDef.format) === 'currency',\n editable: (params) => {\n if (typeof params.colDef.editable === 'function') {\n const isEditable = params.colDef.editable({ ...params, column: params.columnApi.getColumn(params.colDef) });\n return isEditable && !params.node.group;\n }\n return params.colDef.editable && !params.node.group;\n },\n locked: (params) => params.node.locked\n }\n },\n /**\n * Column types.\n */\n columnTypes: {\n bit: {\n aligning: 'center',\n filter: 'agSetColumnFilter',\n filterParams: {\n valueGetter: (params: ValueGetterParams) => {\n return params.data[params.colDef.field] ? `${TranslationsService.get('YES')}` : `${TranslationsService.get('NO')}`;\n }\n },\n cellRenderer: AgGridBitRendererComponent\n },\n closed: {\n allowedAggFuncs: ['distinct'],\n filter: 'agSetColumnFilter',\n cellRenderer: AgGridClosedRendererComponent\n },\n checkbox: {\n cellRenderer: (params: ICellRendererParams) =>\n ``,\n filter: false // True False values can be sorted, no real need for filtering\n },\n currency: {\n aggFunc: 'sum',\n aligning: 'right',\n filter: 'agNumberColumnFilter',\n valueParser: this.parseNumeric.bind(this),\n valueFormatter: (params: ValueFormatterParams) => this.formatNumeric(params, 'integer')\n },\n date: {\n filter: 'agDateColumnFilter',\n filterParams: {\n inRangeInclusive: true,\n buttons: ['clearButton'],\n filterOptions: ['lessThanOrEqual', 'greaterThan', 'greaterThanOrEqual', 'inRange']\n },\n valueFormatter: (params: ValueFormatterParams) => this.formatTime(params, 'date')\n },\n datetime: {\n filter: 'agDateColumnFilter',\n filterParams: {\n inRangeInclusive: true,\n buttons: ['clearButton'],\n filterOptions: ['lessThanOrEqual', 'greaterThan', 'greaterThanOrEqual', 'inRange']\n },\n valueFormatter: (params: ValueFormatterParams) => this.formatTime(params, 'datetime')\n },\n time: {\n filter: false,\n valueFormatter: (params: ValueFormatterParams) => this.formatTime(params, 'time')\n },\n duration: {\n filter: false,\n valueFormatter: (params: ValueFormatterParams) => {\n return !isNaN(+params.value) ? this.formatNumeric(params, 'duration') : this.formatTime(params, 'duration');\n }\n },\n string: { filter: 'agTextColumnFilter' },\n translateString: {\n filter: 'agTextColumnFilter',\n valueFormatter: (params) => {\n return this.translateString(params.value);\n }\n },\n lookup: { filter: 'agSetColumnFilter' },\n integer: {\n aggFunc: 'sum',\n aligning: 'right',\n filter: 'agNumberColumnFilter',\n valueParser: this.parseNumeric.bind(this),\n valueFormatter: (params: ValueFormatterParams) => this.formatNumeric(params, 'integer')\n },\n number: {\n aggFunc: 'sum',\n aligning: 'right',\n filter: 'agNumberColumnFilter',\n valueParser: this.parseNumeric.bind(this),\n valueFormatter: (params: ValueFormatterParams) => this.formatNumeric(params, 'number')\n },\n percent: {\n aggFunc: 'avg',\n aligning: 'right',\n filter: 'agNumberColumnFilter',\n valueParser: this.parseNumeric.bind(this),\n valueFormatter: (params: ValueFormatterParams) => this.formatNumeric(params, 'percent')\n },\n id: {\n aligning: 'right',\n filter: 'agNumberColumnFilter',\n valueParser: this.parseNumeric.bind(this),\n valueFormatter: (params: ValueFormatterParams) => this.formatService.format(params.value, 'id')\n }\n },\n\n /**\n * Templates\n */\n overlayLoadingTemplate: `
\n
\n
\n
\n
\n
\n
`,\n overlayNoRowsTemplate: `

\n \"App
\n \n ${TranslationsService.get('NO_DATA_TO_DISPLAY')}
\n
\n

`,\n\n /**\n * Internationalization.\n * Doc: https://www.ag-grid.com/javascript-grid-internationalisation/\n */\n localeText: {\n // for filter panel\n page: TranslationsService.get('AG_GRID_PAGE'),\n more: TranslationsService.get('AG_GRID_MORE'),\n to: TranslationsService.get('AG_GRID_TO'),\n of: TranslationsService.get('AG_GRID_OF'),\n next: TranslationsService.get('AG_GRID_NEXT'),\n last: TranslationsService.get('AG_GRID_LAST'),\n first: TranslationsService.get('AG_GRID_FIRST'),\n previous: TranslationsService.get('AG_GRID_PREVIOUS'),\n loadingOoo: TranslationsService.get('AG_GRID_LOADING_OOO'),\n // for set filter\n selectAll: TranslationsService.get('AG_GRID_SELECT_ALL'),\n searchOoo: TranslationsService.get('AG_GRID_SEARCH_OOO'),\n blanks: TranslationsService.get('AG_GRID_BLANKS'),\n // for number filter and text filter\n filterOoo: TranslationsService.get('AG_GRID_FILTER_OOO'),\n applyFilter: TranslationsService.get('AG_GRID_APPLY_FILTER'),\n notEqual: TranslationsService.get('AG_GRID_NOT_EQUAL'),\n blank: TranslationsService.get('AG_GRID_BLANK'),\n notBlank: TranslationsService.get('AG_GRID_NOT_BLANK'),\n // for number filter\n equals: TranslationsService.get('AG_GRID_EQUALS'),\n lessThan: TranslationsService.get('AG_GRID_LESS_THAN'),\n greaterThan: TranslationsService.get('AG_GRID_GREATER_THAN'),\n lessThanOrEqual: TranslationsService.get('AG_GRID_LESS_THAN_OR_EQUAL'),\n greaterThanOrEqual: TranslationsService.get('AG_GRID_GREATER_THAN_OR_EQUAL'),\n inRange: TranslationsService.get('AG_GRID_IN_RANGE'),\n inRangeStart: TranslationsService.get('AG_GRID_RANGE_START'),\n inRangeEnd: TranslationsService.get('AG_GRID_RANGE_END'),\n // for text filter\n contains: TranslationsService.get('AG_GRID_CONTAINS'),\n notContains: TranslationsService.get('AG_GRID_NOT_CONTAINS'),\n startsWith: TranslationsService.get('AG_GRID_STARTS_WITH'),\n endsWith: TranslationsService.get('AG_GRID_ENDS_WITH'),\n // the header of the default group column\n group: TranslationsService.get('AG_GRID_GROUP'),\n // tool panel\n columns: TranslationsService.get('AG_GRID_COLUMNS'),\n filters: TranslationsService.get('AG_GRID_FILTERS'),\n rowGroupColumns: TranslationsService.get('AG_GRID_ROW_GROUP_COLUMNS'),\n rowGroupColumnsEmptyMessage: TranslationsService.get('AG_GRID_ROW_GROUP_COLUMNS_EMPTY_MESSAGE'),\n valueColumns: TranslationsService.get('AG_GRID_VALUE_COLUMNS'),\n pivotMode: TranslationsService.get('AG_GRID_PIVOT_MODE'),\n groups: TranslationsService.get('AG_GRID_GROUPS'),\n values: TranslationsService.get('AG_GRID_VALUES'),\n pivots: TranslationsService.get('AG_GRID_PIVOTS'),\n valueColumnsEmptyMessage: TranslationsService.get('AG_GRID_VALUE_COLUMNS_EMPTY_MESSAGE'),\n pivotColumnsEmptyMessage: TranslationsService.get('AG_GRID_PIVOT_COLUMNS_EMPTY_MESSAGE'),\n toolPanelButton: TranslationsService.get('AG_GRID_TOOL_PANEL_BUTTON'),\n // other\n noRowsToShow: TranslationsService.get('AG_GRID_NO_ROWS_TO_SHOW'),\n // enterprise menu\n pinColumn: TranslationsService.get('AG_GRID_PIN_COLUMN'),\n valueAggregation: TranslationsService.get('AG_GRID_VALUE_AGGREGATION'),\n autosizeThiscolumn: TranslationsService.get('AG_GRID_AUTOSIZE_THIS_COLUMN'),\n autosizeAllColumns: TranslationsService.get('AG_GRID_AUTOSIZE_ALL_COLUMNS'),\n groupBy: TranslationsService.get('AG_GRID_GROUP_BY'),\n ungroupBy: TranslationsService.get('AG_GRID_UNGROUP_BY'),\n resetColumns: TranslationsService.get('AG_GRID_RESET_COLUMNS'),\n expandAll: TranslationsService.get('AG_GRID_EXPAND_ALL'),\n collapseAll: TranslationsService.get('AG_GRID_COLLAPSE_ALL'),\n toolPanel: TranslationsService.get('AG_GRID_TOOL_PANEL'),\n export: TranslationsService.get('AG_GRID_EXPORT'),\n csvExport: TranslationsService.get('AG_GRID_CSV_EXPORT'),\n excelExport: TranslationsService.get('AG_GRID_EXCEL_EXPORT'),\n // enterprise menu pinning\n pinLeft: TranslationsService.get('AG_GRID_PIN_LEFT'),\n pinRight: TranslationsService.get('AG_GRID_PIN_RIGHT'),\n noPin: TranslationsService.get('AG_GRID_NO_PIN'),\n // enterprise menu aggregation and status panel\n avg: TranslationsService.get('AG_GRID_AVERAGE'),\n sum: TranslationsService.get('AG_GRID_SUM'),\n min: TranslationsService.get('AG_GRID_MIN'),\n max: TranslationsService.get('AG_GRID_MAX'),\n distinct: TranslationsService.get('AG_GRID_DISTINCT'),\n none: TranslationsService.get('AG_GRID_NONE'),\n count: TranslationsService.get('AG_GRID_COUNT'),\n average: TranslationsService.get('AG_GRID_AVERAGE'),\n // status bar\n rowCount: TranslationsService.get('AG_GRID_TOTAL_ROWS'),\n // standard menu\n copy: TranslationsService.get('AG_GRID_COPY'),\n copyWithHeaders: TranslationsService.get('AG_GRID_COPY_WITH_HEADERS'),\n ctrlC: TranslationsService.get('AG_GRID_CTRL_C'),\n paste: TranslationsService.get('AG_GRID_PASTE'),\n ctrlV: TranslationsService.get('AG_GRID_CTRL_V')\n },\n /**\n * Clipboard processing should be identical to excel/csv export in ag-grid.service.ts\n */\n processCellForClipboard: (params: ProcessCellForExportParams) => {\n if (params.value instanceof Date && params.column.getColDef().type === 'date') {\n return TimezoneService.dateToString(params.value);\n }\n if (params.value instanceof Date && params.column.getColDef().type === 'datetime') {\n return TimezoneService.toISOStringLocal(params.value);\n }\n return params.value;\n }\n };\n\n /**\n * List Grid.\n * Report list, Plans list, Users etc.\n * Note that all properties defined in dataOptions must also be set in listOptions (will otherwise affect each other).\n */\n private listOptions: GridOptions = {\n rowSelection: 'single',\n rowHeight: 30,\n enableCellChangeFlash: true\n };\n\n /**\n * List Grid with multi select.\n * E.g. Scheduler grid\n * Note that all properties defined in dataOptions must also be set in listOptions (will otherwise affect each other).\n */\n private listMultiSelectOptions: GridOptions = {\n enableCellChangeFlash: true,\n rowSelection: 'multiple',\n rowHeight: 30,\n // doc: https://www.ag-grid.com/javascript-grid-context-menu/#context-menu\n getContextMenuItems: (params) => {\n return [\n {\n name: TranslationsService.get('AG_GRID_SELECT_ALL'),\n action: () => {\n params.api.selectAllFiltered();\n }\n },\n {\n name: TranslationsService.get('AG_GRID_DESELECT_ALL'),\n action: () => {\n params.api.deselectAllFiltered();\n }\n },\n 'separator',\n 'copy',\n 'copyWithHeaders',\n 'paste',\n 'separator',\n {\n name: TranslationsService.get('AG_GRID_EXPORT'),\n subMenu: ['excelExport', 'csvExport']\n }\n ];\n }\n };\n\n /**\n * Data Grid.\n * Report Details, Orders, Translations.\n */\n private dataOptions: GridOptions = {\n rowSelection: 'multiple',\n suppressRowClickSelection: true, // Use AgGridService.addRowSelectColumn instead\n groupSelectsChildren: true,\n rowHeight: 21,\n rowClassRules: {\n 'ag-row-child': (params) => params.node.level !== 0\n },\n // doc: https://www.ag-grid.com/javascript-grid-context-menu/#context-menu\n getContextMenuItems: (params) => {\n return [\n {\n name: TranslationsService.get('AG_GRID_SELECT_ALL'),\n action: () => {\n params.api.selectAllFiltered();\n }\n },\n {\n name: TranslationsService.get('AG_GRID_DESELECT_ALL'),\n action: () => {\n params.api.deselectAllFiltered();\n }\n },\n 'separator',\n 'copy',\n 'copyWithHeaders',\n 'paste',\n 'separator',\n 'expandAll',\n 'contractAll',\n 'separator',\n {\n name: TranslationsService.get('AG_GRID_EXPORT'),\n icon: '',\n subMenu: ['excelExport', 'csvExport']\n }\n ];\n }\n };\n\n /**\n * Simple Grid.\n * ERP Setup grids: Vendors, Locations etc.\n */\n private simpleOptions: GridOptions = {\n rowHeight: 28,\n sideBar: false,\n rowGroupPanelShow: 'never',\n statusBar: { statusPanels: [] }\n };\n\n ////////////////////////////\n\n constructor(\n private agGridService: AgGridService,\n private formatService: FormatService,\n private settingsService: SettingsService,\n private toasterService: ToasterService\n ) {}\n\n getListOptions(): GridOptions {\n return merge(cloneDeep(this.commonOptions), cloneDeep(this.listOptions));\n }\n\n getListMultiSelectOptions(): GridOptions {\n return merge(cloneDeep(this.commonOptions), cloneDeep(this.listMultiSelectOptions));\n }\n\n getDataOptions(): GridOptions {\n return merge(cloneDeep(this.commonOptions), cloneDeep(this.dataOptions));\n }\n\n getSimpleOptions(): GridOptions {\n return merge(this.getDataOptions(), cloneDeep(this.simpleOptions));\n }\n\n getColumnType(columnFormat: string): string {\n if (!columnFormat) {\n return '';\n }\n const type = columnFormat.split(':')[0];\n const types = {\n bit: 'bit',\n closed: 'closed',\n currency: 'currency',\n date: 'date',\n datetime: 'datetime',\n decimal: 'number',\n duration: 'duration',\n float: 'number',\n id: 'id',\n int: 'integer',\n integer: 'integer',\n number: 'number',\n percent: 'percent',\n percentage: 'percent',\n string: 'string',\n time: 'time',\n translateString: 'translateString'\n };\n if (types[type]) {\n return types[type];\n }\n this.toasterService.pop('warning', `${TranslationsService.get('COLUMN_FORMAT_UNKOWN')} ${columnFormat}.`);\n return type;\n }\n\n // private\n\n /**\n * Sort grouped columns whether they include numbers or strings.\n */\n groupComparator(a: string | number | Date, b: string | number | Date): number {\n if (!a || !b) {\n return 0;\n }\n if (isNaN(Number(a)) || isNaN(Number(b))) {\n if (this.isDate(a as string) || this.isDate(b as string)) {\n return this.sortDate(a as Date, b as Date);\n }\n return this.sortString(a as string, b as string);\n }\n return (a as number) - (b as number);\n }\n\n private isDate(a: string): boolean {\n return !isNaN(Date.parse(a));\n }\n\n private sortDate(a: Date, b: Date): number {\n if (!a) {\n return 1;\n }\n if (!b) {\n return -1;\n }\n if (new Date(a) < new Date(b)) {\n return -1;\n }\n if (new Date(a) > new Date(b)) {\n return 1;\n }\n return 0;\n }\n\n private sortString(a: string, b: string): number {\n if (this.settingsService.accentedSort()) {\n return a.localeCompare(b, this.settingsService.locale());\n }\n if (!a) {\n return 1;\n }\n if (!b) {\n return -1;\n }\n if (a.toLowerCase() < b.toLowerCase()) {\n return -1;\n }\n if (a.toLowerCase() > b.toLowerCase()) {\n return 1;\n }\n return 0;\n }\n\n // Format and parse\n private translateString(params: string): string {\n return TranslationsService.get(params);\n }\n\n private formatTime(params: ValueFormatterParams, format: string): string {\n if (this.matchesDistinctAggregation(params.value)) {\n return params.value;\n }\n const formatVal = get(params.colDef, 'format', format);\n const value = params.value && !isNaN(Date.parse(params.value)) ? this.formatService.format(params.value, formatVal) : params.value;\n return value === 'undefined' ? '' : value;\n }\n\n private formatNumeric(params: ValueFormatterParams, format: string): string {\n const formatVal = get(params.colDef, 'format', format);\n const value = !isNaN(params.value) ? this.formatService.format(params.value, formatVal) : params.value;\n return value === 'undefined' ? '' : value;\n }\n\n private parseNumeric(params: ValueParserParams): number {\n return params.newValue === '' ? undefined : +`${params.newValue}`.replace(',', '.');\n }\n\n private matchesDistinctAggregation(value: any): boolean {\n const val = Array.isArray(value) ? value[0] : value;\n const match = /^[0-9]+\\s\\([^0-9]+\\)$/.exec(val);\n return val && typeof val !== 'object' && !!match; // matches \"123 (distinct)\" or \"123 (some text)\";\n }\n}\n","import { AgGridAngular } from '@ag-grid-community/angular';\nimport { ColumnApi, ColumnState, GetMainMenuItemsParams, GridApi } from '@ag-grid-community/core';\nimport { Injectable } from '@angular/core';\n\nimport { StoreService } from 'src/app/_core/store.service';\n\n/**\n * Interfaces are created from unnamed ag grid interfaces.\n * See getColumnGroupState().\n */\nexport interface AgGridColumnGroupState {\n groupId: string;\n open: boolean;\n}\n\nexport interface AgrGridState {\n alignModel?: any;\n columnGroupState: AgGridColumnGroupState[];\n columnState: ColumnState[];\n filterModel: any;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AgGridStateService {\n constructor(private storeService: StoreService) {}\n\n // Load\n\n /**\n * Find state in local storage and applies it if found.\n */\n loadGridState(key: string, grid: AgGridAngular, setInputFocus: boolean = true): void {\n this.loadAlignModel(key, grid);\n this.loadColumnState(key, grid);\n this.loadFilterModel(key, grid);\n this.loadFocusedCell(key, grid, setInputFocus);\n }\n\n loadAlignModel(key: string, grid: AgGridAngular): void {\n const alignModel = this.storeService.get(this.getAlignModelKey(key));\n if (alignModel) {\n this.setAlignModel(alignModel, grid.columnApi);\n }\n }\n\n loadColumnState(key: string, grid: AgGridAngular): void {\n let columnStates = this.storeService.get(this.getColumnKey(key)) as ColumnState[];\n if (!columnStates) {\n return;\n }\n columnStates = this.fixRowSelectColumn(columnStates);\n grid.columnApi.applyColumnState({ state: columnStates, applyOrder: true });\n }\n\n loadFilterModel(key: string, grid: AgGridAngular): void {\n const filterModel = this.storeService.get(this.getFilterModelKey(key));\n if (filterModel) {\n grid.api.setFilterModel(filterModel);\n }\n }\n\n loadFocusedCell(key: string, grid: AgGridAngular, setInputFocus: boolean = true): void {\n setTimeout(() => {\n const rowIndex = this.storeService.get(this.getFocusedCellRowIndexKey(key)) as number;\n const colKey = this.storeService.get(this.getFocusedCellColKeyKey(key)) as string;\n if (rowIndex === undefined || !colKey) {\n return;\n }\n grid.api.ensureIndexVisible(rowIndex, 'middle');\n if (grid.gridOptions.suppressRowClickSelection) {\n // data grids\n if (setInputFocus) {\n grid.api.setFocusedCell(0, colKey);\n } else {\n const rowNode = grid.api.getDisplayedRowAtIndex(0);\n rowNode.setSelected(true);\n }\n } else {\n const node = grid.api.getDisplayedRowAtIndex(rowIndex);\n if (node) {\n node.setSelected(true);\n }\n }\n }, 100);\n }\n\n // Keys\n\n getAlignModelKey(key: string): string {\n return `${key}.alignModel`;\n }\n getColumnKey(key: string): string {\n return `${key}.columnState`;\n }\n getFilterModelKey(key: string): string {\n return `${key}.filterModel`;\n }\n getFocusedCellRowIndexKey(key: string): string {\n return `${key}.focusedCellRowIndex`;\n }\n getFocusedCellColKeyKey(key: string): string {\n return `${key}.focusedCellColKey`;\n }\n\n // Events\n\n // eslint-disable-next-line max-lines-per-function\n monitorChanges(key: string, grid: AgGridAngular, callback: any = () => {}): void {\n grid.api.addEventListener('cellFocused', () => {\n this.saveFocusedCell(key, grid.api);\n callback();\n });\n grid.api.addEventListener('columnMoved', () => {\n this.saveGridState(key, grid.columnApi);\n callback();\n });\n grid.api.addEventListener('columnResized', () => {\n this.saveGridState(key, grid.columnApi);\n callback();\n });\n grid.api.addEventListener('columnVisible', () => {\n this.saveGridState(key, grid.columnApi);\n callback();\n });\n grid.api.addEventListener('columnPinned', () => {\n this.saveGridState(key, grid.columnApi);\n callback();\n });\n grid.api.addEventListener('modelUpdated', () => {\n this.saveGridState(key, grid.columnApi);\n callback();\n });\n grid.api.addEventListener('rowGroupOpened', () => {\n this.saveGridState(key, grid.columnApi);\n callback();\n });\n grid.api.addEventListener('expandOrCollapseAll', () => {\n this.saveGridState(key, grid.columnApi);\n callback();\n });\n grid.api.addEventListener('sortChanged', () => {\n this.saveGridState(key, grid.columnApi);\n callback();\n });\n grid.api.addEventListener('filterChanged', () => {\n this.saveFilterModel(key, grid.api);\n callback();\n });\n }\n\n //////////////////////////////////////////\n\n /**\n * Get grid state. Used to save grid state in DB.\n */\n getState(grid: AgGridAngular): AgrGridState {\n return {\n alignModel: this.getAlignModel(grid.columnApi),\n columnGroupState: grid.columnApi.getColumnGroupState(),\n columnState: this.fixRowSelectColumn(grid.columnApi.getColumnState()),\n filterModel: grid.api.getFilterModel()\n };\n }\n\n /**\n * Check if state has been saved for given key.\n */\n hasGridState(key: string): boolean {\n const savedState = this.storeService.get(this.getColumnKey(key)) as ColumnState[];\n return !!savedState;\n }\n\n /**\n * Remove state from local storage.\n */\n clearState(key: string): void {\n this.storeService.remove(this.getColumnKey(key));\n this.storeService.remove(this.getFilterModelKey(key));\n this.storeService.remove(this.getAlignModelKey(key));\n }\n\n /**\n * Update colDef with aligning property.\n */\n setAlignModel(alignModel: {}, columnApi: ColumnApi): void {\n try {\n let column;\n let colDef;\n for (const colId of Object.keys(alignModel)) {\n column = columnApi.getColumn(colId);\n colDef = column.getColDef();\n colDef.aligning = alignModel[colId];\n }\n } catch (error) {\n return;\n }\n }\n\n // Save\n\n saveGrid(key: string, gridApi: GridApi, columnApi: ColumnApi): void {\n this.saveGridState(key, columnApi);\n this.saveFilterModel(key, gridApi);\n }\n\n saveAlignModel(key: string, params: GetMainMenuItemsParams): void {\n this.storeService.set(this.getAlignModelKey(key), this.getAlignModel(params.columnApi));\n params.api.dispatchEvent({ type: 'modelUpdated' }); // trigger event listener in monitorChanges\n }\n\n private saveFocusedCell(key: string, gridApi: GridApi): void {\n const focusedCell = gridApi.getFocusedCell();\n if (gridApi && focusedCell && focusedCell.column) {\n this.storeService.set(this.getFocusedCellRowIndexKey(key), focusedCell.rowIndex);\n this.storeService.set(this.getFocusedCellColKeyKey(key), focusedCell.column.getId());\n }\n }\n\n private saveGridState(key: string, columnApi: ColumnApi): void {\n if (columnApi) {\n this.storeService.set(this.getColumnKey(key), this.fixRowSelectColumn(columnApi.getColumnState()));\n }\n }\n\n private saveFilterModel(key: string, gridApi: GridApi): void {\n if (gridApi) {\n this.storeService.set(this.getFilterModelKey(key), gridApi.getFilterModel());\n }\n }\n\n //////////////////////////////////////////\n\n /**\n * Creates align model depending on colDef.aligning.\n * e.g. {item_no: \"center\", primary_vendor_id: \"right\"}\n */\n private getAlignModel(columnApi: ColumnApi): {} {\n const alignModel = {};\n const visibleColumns = columnApi.getAllDisplayedColumns();\n let colDef;\n visibleColumns.forEach((column) => {\n colDef = column.getColDef();\n if (colDef.aligning) {\n alignModel[column.getColId()] = colDef.aligning;\n }\n });\n\n return alignModel;\n }\n\n /**\n * Moves checkboxes column to far left and ensures it is visible.\n *\n * RowSelect column is the checkbox column.\n * Column Defs for RowSelect column is in AgGridService.\n */\n private fixRowSelectColumn(columnStates: ColumnState[]): ColumnState[] {\n const rowSelectState = columnStates.find((state) => state.colId === 'RowSelect');\n if (rowSelectState) {\n rowSelectState.hide = false;\n const index = columnStates.indexOf(rowSelectState);\n columnStates.unshift(columnStates.splice(index, 1)[0]); // Move to first\n }\n return columnStates;\n }\n}\n","/* eslint-disable max-lines-per-function */\nimport { AgGridAngular } from '@ag-grid-community/angular';\nimport { BaseExportParams, GetMainMenuItemsParams, GridApi, MenuItemDef, ProcessCellForExportParams } from '@ag-grid-community/core';\nimport { Injectable } from '@angular/core';\nimport { groupBy } from 'lodash';\n\nimport { TimezoneService } from 'src/app/_core/timezone.service';\nimport { TranslationsService } from 'src/app/_core/translations.service';\nimport { AgGridStateService } from 'src/app/_shared/ag-grid/ag-grid-state.service';\nimport { AgGridCheckboxHeaderComponent } from 'src/app/_shared/ag-grid/components/ag-grid-checkbox-header.component';\nimport { OrderException } from 'src/app/orders/models/order-exception.model';\nimport { WorkspaceGridData } from 'src/app/workspaces/details/grid/models/workspace-grid-data.model';\n\ninterface CustomExportParams {\n exceptionDefsMap?: Map;\n}\n@Injectable({\n providedIn: 'root'\n})\nexport class AgGridService {\n constructor(private agGridStateService: AgGridStateService) {}\n\n /**\n * Automatically column header hight depending on header content.\n * This function is assigned to events in AgGridOptions service.\n * You might have to call it manually if events are overridden in component.\n */\n autoResizeColumnHeaders(gridApi: GridApi): void {\n if (!gridApi) {\n return;\n }\n // fix issue when more than one grid in page (e.g. item card > table)\n // @ts-ignore\n const gridId = gridApi.getModel().gridOptionsWrapper.environment.eGridDiv.id || '';\n const selector = gridId ? `#${gridId} .ag-header-cell-label` : '.ag-header-cell-label';\n const gridMinHeight = 24;\n gridApi.setHeaderHeight(gridMinHeight);\n const headerCells = document.querySelectorAll(selector);\n let minHeight = gridMinHeight;\n headerCells.forEach((cell) => {\n minHeight = Math.max(minHeight, cell.scrollHeight);\n });\n gridApi.setHeaderHeight(minHeight + 4);\n }\n\n /**\n * Add AGR's custom distinct aggregation option.\n */\n addDistinctAggregation(gridApi: GridApi): void {\n gridApi.addAggFunc('distinct', (params) => {\n const groups = groupBy(params.values);\n delete groups['']; // ignore empty values\n const groupSize = Object.keys(groups).length;\n if (groupSize === 1) {\n return Object.keys(groups)[0];\n }\n if (groupSize === 0) {\n return '';\n }\n return `${groupSize} (${TranslationsService.get('AG_GRID_DISTINCT')})`;\n });\n }\n\n /**\n * Adds Aligning options to column menu.\n */\n addCustomColumnMenu(key: string, grid: AgGridAngular): any {\n grid.getMainMenuItems = (params: GetMainMenuItemsParams) => {\n // Note: The menu changes depending on if the grid is grouped or not.\n const menuItems: (string | MenuItemDef)[] = params.defaultItems.splice(0); // use default menu items\n const align = {\n name: TranslationsService.get('AG_GRID_ALIGN'),\n subMenu: [\n {\n name: TranslationsService.get('AG_GRID_LEFT'),\n icon: '',\n action: () => {\n this.alignColumn('left', key, params);\n }\n },\n {\n name: TranslationsService.get('AG_GRID_CENTER'),\n icon: '',\n action: () => {\n this.alignColumn('center', key, params);\n }\n },\n {\n name: TranslationsService.get('AG_GRID_RIGHT'),\n icon: '',\n action: () => {\n this.alignColumn('right', key, params);\n }\n }\n ]\n };\n\n const clearFilters = {\n name: TranslationsService.get('AG_GRID_CLEAR_ALL_FILTERS'),\n action: () => {\n grid.api.setFilterModel({});\n }\n };\n\n const autoSizeThisColumnSkipHeader = {\n name: TranslationsService.get('AG_GRID_AUTOSIZE_THIS_COLUMN_SKIP_HEADER'),\n action: () => {\n grid.columnApi.autoSizeColumn(params.column, true);\n }\n };\n\n const autoSizeAllColumnsSkipHeader = {\n name: TranslationsService.get('AG_GRID_AUTOSIZE_ALL_COLUMNS_SKIP_HEADER'),\n action: () => {\n grid.columnApi.autoSizeAllColumns(true);\n }\n };\n\n const sizeColumnsToFit = {\n name: TranslationsService.get('AG_GRID_SIZE_COLUMNS_TO_FIT'),\n action: () => {\n grid.api.sizeColumnsToFit();\n }\n };\n\n menuItems.unshift(align); // add to front\n menuItems.splice(menuItems.indexOf('autoSizeThis') - 1, 0, 'separator', clearFilters);\n menuItems.splice(menuItems.indexOf('autoSizeThis') + 1, 0, autoSizeThisColumnSkipHeader);\n menuItems.splice(menuItems.indexOf('autoSizeAll') + 1, 0, autoSizeAllColumnsSkipHeader, sizeColumnsToFit);\n\n return menuItems;\n };\n }\n\n /**\n * Custom AG Grid Navigation.\n * When Enter is pressed:\n * • Navigate down if:\n * Cell is not editable\n * Cell is in row group\n * If user is stopping cell edit\n * • Don't navigate if:\n * 'Shift' is pressed\n * If starting cell edit\n */\n addEnterBtnEvents(grid: AgGridAngular, gridId?: string): void {\n let editing = false;\n grid.api.addEventListener('cellEditingStarted', () => (editing = true));\n grid.api.addEventListener('cellEditingStopped', () => (editing = false));\n // The rootSelector enables more than one grid to be loaded at a time\n const selector = gridId ? `#${gridId}` : 'ag-grid-angular.ag-theme-alpine';\n // Custom 'Enter' events (aka. Enter Enter)\n // enterMovesDownAfterEdit won't work because we want shift+enter to hold focus on current cell\n if (!document.querySelector(selector)) {\n return;\n }\n document.querySelector(selector).addEventListener('keydown', (evt: KeyboardEvent) => {\n if (editing && evt.key === 'Enter' && evt.shiftKey) {\n return; // shift + enter -> exit cell without navigating\n }\n if (editing && evt.key === 'Enter') {\n this.navigateDown(grid);\n }\n });\n }\n\n /**\n * Add column that contains checkboxes. Used in data grids.\n */\n addRowSelectColumn(grid: AgGridAngular): void {\n const colDefs = grid.columnApi.getAllColumns().map((column) => column.getColDef());\n if (colDefs.find((colDef) => colDef.field === 'RowSelect')) {\n return;\n }\n colDefs.unshift({\n headerName: TranslationsService.get('CHECKBOX'),\n field: 'RowSelect',\n width: 40,\n minWidth: 40,\n maxWidth: 40,\n suppressMenu: true,\n enableRowGroup: false,\n filter: false,\n pinned: 'left',\n sortable: false,\n resizable: false,\n headerComponentFramework: AgGridCheckboxHeaderComponent,\n // Add checkbox when colId is 'RowSelect'\n checkboxSelection: (params) => {\n const rowSelectColumn = params.columnApi.getAllDisplayedColumns().find((column) => column.getColId() === 'RowSelect');\n return rowSelectColumn === params.column;\n }\n });\n grid.api.setColumnDefs(colDefs);\n }\n\n setFloatingFilter(isActive: boolean, grid: AgGridAngular): void {\n if (!grid) {\n return;\n }\n isActive ? grid.api.setFloatingFiltersHeight(38) : grid.api.setFloatingFiltersHeight(0);\n }\n\n /**\n * Exports to excel/csv with universal cellProcessing settings\n * cellCallback should be identical to clipboard processing in ag-grid-options.service.ts\n */\n exportToFile(output: 'excel' | 'csv', grid: AgGridAngular, fileName?: string, customParams?: CustomExportParams): void {\n // eslint-disable-line max-len\n const exportParams: BaseExportParams = {\n fileName,\n processCellCallback: (params: ProcessCellForExportParams): string => {\n const colDef = params.column.getColDef();\n if (colDef && colDef.field === 'field_name') {\n return this.getSerieName(params);\n }\n if (params.value instanceof Date) {\n return this.getExcelDateValue(params);\n }\n const isExceptionGroupColumn = !!colDef.cellRendererParams?.exceptionDefsMap && !!colDef.cellRendererParams?.isGrouped;\n if (colDef?.colId === 'exception_list' || isExceptionGroupColumn) {\n return this.getOrderExceptionsValue(params, customParams);\n }\n return params.value;\n }\n };\n output === 'excel' ? grid.api.exportDataAsExcel(exportParams) : grid.api.exportDataAsCsv(exportParams);\n }\n\n private getExcelDateValue(params: ProcessCellForExportParams): string {\n if (params.column.getColDef().type === 'date') {\n return TimezoneService.dateToString(params.value);\n }\n if (params.column.getColDef().type === 'datetime') {\n return TimezoneService.toISOStringLocal(params.value);\n }\n return params.value;\n }\n\n private getSerieName(params: ProcessCellForExportParams): string {\n const gridData: WorkspaceGridData = params.context.gridData;\n const serie = gridData.gridQuery.seriesByName[params.value];\n if (!serie) {\n return '';\n }\n return serie.caption;\n }\n\n private getOrderExceptionsValue(params: ProcessCellForExportParams, customParams: CustomExportParams): string {\n // eslint-disable-line max-len\n if (!customParams.exceptionDefsMap || !params.value) {\n return ' ';\n }\n if (params.value instanceof Array && params.value[0] === '') {\n return ' ';\n }\n const exceptionIds =\n params.value instanceof String ? params.value.split(',').filter((value) => !!value && value !== 'agg') : params.value; // eslint-disable-line max-len\n return exceptionIds instanceof Array\n ? exceptionIds.map((id) => TranslationsService.get(customParams.exceptionDefsMap.get(+id)?.name)).toString()\n : TranslationsService.get(customParams.exceptionDefsMap.get(+exceptionIds)?.name);\n }\n\n /**\n * Start editing next row after pressing enter key\n */\n private navigateDown(grid: AgGridAngular): void {\n const currentCell = grid.api.getFocusedCell();\n const finalRowIndex = grid.api.getDisplayedRowCount() - 1;\n // If we are editing the last row in the grid, don't move to next line\n const nextRowIndex = currentCell.rowIndex === finalRowIndex ? currentCell.rowIndex : currentCell.rowIndex + 1;\n setTimeout(() => {\n // Timeout required, Angular seems to cancel/revert the cell focus otherwise\n grid.api.setFocusedCell(nextRowIndex, currentCell.column.getColId());\n grid.api.clearRangeSelection();\n });\n }\n\n private alignColumn(aligning: string, key: string, params: GetMainMenuItemsParams): void {\n const colDef = params.column.getColDef() as any;\n colDef.aligning = aligning; // attribute used in gridOptionsService (see cellClassRules)\n this.agGridStateService.saveAlignModel(key, params);\n params.api.redrawRows();\n }\n}\n","import { IHeaderAngularComp } from '@ag-grid-community/angular';\nimport { IHeaderParams } from '@ag-grid-community/core';\nimport { Component } from '@angular/core';\n\n/**\n * Show data as link.\n * Doc: https://www.ag-grid.com/javascript-grid-cell-rendering-components/#angular-cell-render-components\n * Note: Row groups do not have params.data object.\n */\n\n@Component({\n selector: 'agr-ag-grid-checkbox-header',\n templateUrl: './ag-grid-checkbox-header.component.html'\n})\nexport class AgGridCheckboxHeaderComponent implements IHeaderAngularComp {\n params: IHeaderParams;\n agIconCheckboxClass: 'ag-checked' | 'ag-unchecked' | 'ag-indeterminate';\n\n constructor() {}\n\n // called on init\n agInit(params: IHeaderParams): void {\n this.params = params;\n this.agIconCheckboxClass = 'ag-unchecked';\n this.addSelectionChangedEvent();\n }\n\n refresh(): boolean {\n return true;\n }\n\n //////////////////////////////////////////\n\n toggleChecked(): void {\n const selectedRowsCount = this.params.api.getSelectedRows().length;\n if (selectedRowsCount === this.getRowCount()) {\n this.params.api.deselectAllFiltered();\n this.agIconCheckboxClass = 'ag-unchecked';\n } else {\n this.params.api.selectAllFiltered();\n this.agIconCheckboxClass = 'ag-checked';\n }\n }\n\n private addSelectionChangedEvent(): void {\n this.params.api.addEventListener('selectionChanged', () => {\n const selectedRowsCount = this.params.api.getSelectedRows().length;\n if (selectedRowsCount === 0) {\n this.agIconCheckboxClass = 'ag-unchecked';\n } else if (selectedRowsCount === this.getRowCount()) {\n this.agIconCheckboxClass = 'ag-checked';\n } else {\n this.agIconCheckboxClass = 'ag-indeterminate';\n }\n });\n }\n\n /**\n * Count rows after filter minus the row groups\n */\n private getRowCount(): number {\n let count = 0;\n this.params.api.forEachNodeAfterFilter((node) => {\n if (!node.hasChildren()) {\n count += 1;\n }\n });\n return count;\n }\n}\n","\n \n\n","import { Component } from '@angular/core';\n\nimport { ICellRendererAngularComp } from '@ag-grid-community/angular';\n\n/**\n * Show data as link.\n * Doc: https://www.ag-grid.com/javascript-grid-cell-rendering-components/#angular-cell-render-components\n * Note: Row groups do not have params.data object.\n */\n\n@Component({\n selector: 'agr-ag-grid-link-renderer',\n template: `{{ value }}`,\n styles: []\n})\nexport class AgGridLinkRendererComponent implements ICellRendererAngularComp {\n value: number | string | Date | boolean;\n url: string;\n // Use colDef.cellRendererParams to add parameters below\n pathRoot: string; // e.g. 'reports'\n urlFields: string[]; // e.g. 'id'\n\n constructor() {}\n\n // called on init\n agInit(params: any): void {\n this.value = params.getValue();\n this.url = params.pathRoot;\n this.urlFields = params.urlFields;\n\n this.url = `/${this.url}`;\n this.urlFields.forEach((field) => {\n const path = params.data ? params.data[field] : params.node.allLeafChildren[0].data[field];\n if (path) {\n this.url = `${this.url}/${path}`;\n }\n });\n }\n\n refresh(): boolean {\n return true;\n }\n}\n","import { ITooltipAngularComp } from '@ag-grid-community/angular';\nimport { ITooltipParams } from '@ag-grid-community/core';\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'agr-ag-grid-tooltip-component',\n template: `\n {{ headerName }}\n
\n `,\n styleUrls: ['./ag-grid-tooltip.component.scss']\n})\nexport class AgGridTooltipComponent implements ITooltipAngularComp {\n params: any;\n headerName: string;\n description: string;\n isHeader: boolean;\n getGui: any;\n\n agInit(params: ITooltipParams): void {\n this.params = params;\n this.isHeader = params.rowIndex === undefined;\n this.headerName = params.colDef.headerName;\n this.description = params.value || '';\n }\n}\n","import { FormStyle, TranslationWidth, getLocaleDayNames, getLocaleMonthNames } from '@angular/common';\nimport { Injectable } from '@angular/core';\nimport { NgbDateStruct, NgbDatepickerI18n } from '@ng-bootstrap/ng-bootstrap';\n\nimport { FormatService } from 'src/app/_core/format.service';\n\n@Injectable()\nexport class DatepickerI18n extends NgbDatepickerI18n {\n constructor(private formatService: FormatService) {\n super();\n }\n\n getWeekdayLabel(weekday: number): string {\n return getLocaleDayNames(this.formatService.dateLocale, FormStyle.Standalone, TranslationWidth.Abbreviated)[weekday % 7];\n }\n getMonthShortName(month: number): string {\n return getLocaleMonthNames(this.formatService.dateLocale, FormStyle.Standalone, TranslationWidth.Abbreviated)[month - 1];\n }\n getMonthFullName(month: number): string {\n return this.getMonthShortName(month);\n }\n getDayAriaLabel(date: NgbDateStruct): string {\n return new Date(`${date.year}-${date.month}-${date.day}`).toDateString();\n }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { ElementRef, Inject, Injectable, PLATFORM_ID } from '@angular/core';\n/**\n * Used to provide a way to invoke element methods.\n * Based on https://github.com/angular/angular/issues/13818#issuecomment-372276031\n * and the source code of the old Renderer V1.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class AgrRendererService {\n constructor(@Inject(PLATFORM_ID) private platformId: {}) {}\n\n invokeElementMethod(eleRef: ElementRef, method: string, args: any[] = []): void {\n if (isPlatformBrowser(this.platformId)) {\n const element = eleRef.nativeElement;\n element[method].apply(element, args);\n }\n }\n}\n","import { AfterContentInit, Directive, ElementRef, Input, OnChanges } from '@angular/core';\nimport { AgrRendererService } from 'src/app/_shared/directives/agr-renderer.service';\n\n@Directive({\n selector: '[agrAutoFocus]'\n})\nexport class AgrAutofocusDirective implements AfterContentInit, OnChanges {\n @Input() agrAutoFocus: boolean;\n\n constructor(private el: ElementRef, private agrRendererService: AgrRendererService) {}\n\n ngOnChanges(): void {\n if (!this.agrAutoFocus) {\n return;\n }\n this.focus();\n }\n\n ngAfterContentInit(): void {\n this.focus();\n }\n\n private focus(): void {\n setTimeout(() => {\n this.agrRendererService.invokeElementMethod(this.el, 'focus');\n }, 1);\n }\n}\n","/* eslint-disable @typescript-eslint/no-this-alias */\nimport { Directive, ElementRef, Input, NgZone, OnDestroy, OnInit, Renderer2 } from '@angular/core';\n\nimport { ResizableDirective, ResizeEvent } from 'angular-resizable-element';\nimport { Subscription } from 'rxjs';\n\nexport interface ResizableView {\n visible: boolean;\n size: number;\n}\n\n@Directive({\n selector: '[agrResizable]'\n})\nexport class AgrResizableDirective extends ResizableDirective implements OnInit, OnDestroy {\n @Input() maxWidth = 10000;\n @Input() minWidth = 220;\n @Input() maxHeight = 10000;\n @Input() minHeight = 220;\n @Input() agrResizable?: string;\n\n enableGhostResize = true;\n resizeCursorPrecision = 5;\n resizeSubscription: Subscription;\n /**\n * Super() calls the constructor of the parent class that is extended\n */\n constructor(renderer2: Renderer2, elementRef: ElementRef, ngZone: NgZone) {\n super(undefined, renderer2, elementRef, ngZone);\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.resizeSubscription =\n this.agrResizable === 'sidebar'\n ? this.resizing.subscribe((evt) => {\n const that = this;\n this.onHorizontalResizeEnd(evt, that);\n })\n : this.resizing.subscribe((evt) => {\n const that = this;\n this.onVerticalResizeEnd(evt, that);\n });\n\n this.validateResize = (evt) => {\n const that = this;\n if (this.agrResizable === 'sidebar') {\n return this.validateHorizontal(evt, that);\n }\n return this.validateVertical(evt, that);\n };\n }\n\n ngOnDestroy(): void {\n if (this.resizeSubscription) {\n this.resizeSubscription.unsubscribe();\n }\n }\n\n validateHorizontal(event: ResizeEvent, ref: AgrResizableDirective): boolean {\n return isWithinBounds();\n\n function isWithinBounds(): boolean {\n const maxWidth = ref.maxWidth > window.innerWidth ? window.innerWidth : ref.maxWidth;\n return !(\n event.rectangle.width &&\n event.rectangle.height &&\n (event.rectangle.width < ref.minWidth || event.rectangle.width > maxWidth)\n );\n }\n }\n\n validateVertical(event: ResizeEvent, ref: AgrResizableDirective): boolean {\n return isWithinBounds();\n\n function isWithinBounds(): boolean {\n const maxHeight = ref.maxHeight > window.innerHeight ? window.innerHeight : ref.maxHeight;\n return !(\n event.rectangle.width &&\n event.rectangle.height &&\n (event.rectangle.height < ref.minHeight || event.rectangle.height > maxHeight)\n );\n }\n }\n\n onHorizontalResizeEnd(event: ResizeEvent, ref: any): void {\n ref.renderer.setStyle(ref.elm.nativeElement, 'width', `${event.rectangle.width}` + 'px');\n setTimeout(() => {\n window.dispatchEvent(new Event('resize'));\n });\n }\n\n onVerticalResizeEnd(event: ResizeEvent, ref: any): void {\n ref.renderer.setStyle(ref.elm.nativeElement, 'height', `${event.rectangle.height}` + 'px');\n setTimeout(() => {\n window.dispatchEvent(new Event('resize'));\n });\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { AuthService } from 'src/app/_core/authorization/auth.service';\n\n@Pipe({\n name: 'agrFeature'\n})\nexport class FeaturePipe implements PipeTransform {\n constructor(private authService: AuthService) {}\n\n transform(featureRef: string): any {\n return this.authService.hasFeature(featureRef);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\ninterface Search {\n key: string;\n value: string;\n}\n\n@Pipe({\n name: 'filter'\n})\nexport class FilterPipe implements PipeTransform {\n transform(items: any[], search: Search): any[] {\n if (!items || items.length === 0) {\n return [];\n }\n if (!search || !search.key || !search.value) {\n return items;\n }\n return items.filter((item: any) => {\n return item[search.key].toLowerCase().indexOf(search.value.toLowerCase()) !== -1;\n });\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { FormatService } from 'src/app/_core/format.service';\n\n@Pipe({\n name: 'agrFormat'\n})\nexport class FormatPipe implements PipeTransform {\n constructor(private formatService: FormatService) {}\n\n transform(value: number | string | Date, args?: string): any {\n return this.formatService.format(value, args);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport * as moment from 'moment';\n\nimport { FormatService } from 'src/app/_core/format.service';\n\n/**\n * Impure pipe (rendered every digest cycle)\n * so moment.fromNow() can update its return value\n */\n@Pipe({\n name: 'agrFromNow',\n // eslint-disable-next-line @angular-eslint/no-pipe-impure\n pure: false\n})\nexport class FromNowPipe implements PipeTransform {\n constructor(private formatService: FormatService) {}\n\n transform(value: number | string | Date): string {\n return moment(value).locale(this.formatService.dateLocale).fromNow();\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TranslationsService } from 'src/app/_core/translations.service';\n\n@Pipe({\n name: 'agrTranslate'\n})\nexport class TranslatePipe implements PipeTransform {\n constructor() {}\n\n transform(key: string): string {\n return TranslationsService.get(key);\n }\n}\n","// imports\nimport { AgGridModule } from '@ag-grid-community/angular';\nimport { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\nimport { NgSelectModule } from '@ng-select/ng-select';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { NgJsonEditorModule } from 'ang-jsoneditor';\nimport { ResizableDirective, ResizableModule, ResizeHandleDirective } from 'angular-resizable-element';\n\n// declarations\nimport { AgGridCheckboxHeaderComponent } from 'src/app/_shared/ag-grid/components/ag-grid-checkbox-header.component';\nimport { AgGridTooltipComponent } from 'src/app/_shared/ag-grid/components/ag-grid-tooltip.component';\nimport { AgGridLinkRendererComponent } from 'src/app/_shared/ag-grid/components/ag-grid-link-renderer.component';\nimport { ConfirmModalComponent } from 'src/app/_shared/confirm-modal/confirm-modal.component';\nimport { DeleteModalComponent } from 'src/app/_shared/delete-modal/delete-modal.component';\nimport { ColorsComponent } from 'src/app/_shared/dev-utils/colors/colors.component';\nimport { AgrAutofocusDirective } from 'src/app/_shared/directives/auto-focus.directive';\nimport { AgrIndeterminateDirective } from 'src/app/_shared/directives/indeterminate.directive';\nimport { AgrResizableDirective } from 'src/app/_shared/directives/resizable.directive';\nimport { JsonEditorModalComponent } from 'src/app/_shared/json-editor-modal/json-editor-modal.component';\nimport { LoadingDotsComponent } from 'src/app/_shared/loading-dots/loading-dots.component';\nimport { OrdersCreateModalComponent } from 'src/app/_shared/orders-create-modal/orders-create-modal.component';\nimport { SyncButtonComponent } from 'src/app/_shared/sync-button/sync-button.component';\nimport { ToolbarBtnComponent } from 'src/app/_shared/toolbar-btn/toolbar-btn.component';\n\n// pipes\nimport { FeaturePipe } from 'src/app/_shared/pipes/feature.pipe';\nimport { FilterPipe } from 'src/app/_shared/pipes/filter.pipe';\nimport { FormatPipe } from 'src/app/_shared/pipes/format.pipe';\nimport { FromNowPipe } from 'src/app/_shared/pipes/from-now.pipe';\nimport { ItemNoPipe } from 'src/app/_shared/pipes/item-no.pipe';\nimport { TranslatePipe } from 'src/app/_shared/pipes/translate.pipe';\nimport { AgGridBitRendererComponent } from 'src/app/_shared/ag-grid/components/ag-grid-bit-renderer.component';\nimport { AgGridClosedRendererComponent } from 'src/app/_shared/ag-grid/components/ag-grid-closed-renderer.component';\nimport { NoDataToDisplayComponent } from 'src/app/_shared/no-data-to-display/no-data-to-display.component';\n\n@NgModule({\n imports: [\n AgGridModule.withComponents([AgGridCheckboxHeaderComponent, AgGridTooltipComponent, AgGridLinkRendererComponent]),\n CommonModule,\n FormsModule,\n HttpClientModule,\n NgbModule,\n NgJsonEditorModule,\n NgSelectModule,\n ReactiveFormsModule,\n ResizableModule,\n RouterModule,\n TranslateModule.forChild()\n ],\n declarations: [\n AgrAutofocusDirective,\n AgrIndeterminateDirective,\n AgrResizableDirective,\n ConfirmModalComponent,\n DeleteModalComponent,\n JsonEditorModalComponent,\n LoadingDotsComponent,\n NoDataToDisplayComponent,\n OrdersCreateModalComponent,\n SyncButtonComponent,\n ToolbarBtnComponent,\n // pipes\n FeaturePipe,\n FormatPipe,\n FilterPipe,\n FromNowPipe,\n ItemNoPipe,\n TranslatePipe,\n // ag-grid\n AgGridBitRendererComponent,\n AgGridClosedRendererComponent,\n AgGridCheckboxHeaderComponent,\n AgGridLinkRendererComponent,\n AgGridTooltipComponent,\n // dev utils\n ColorsComponent\n ],\n exports: [\n AgrAutofocusDirective,\n AgrIndeterminateDirective,\n AgrResizableDirective,\n ConfirmModalComponent,\n DeleteModalComponent,\n JsonEditorModalComponent,\n LoadingDotsComponent,\n NoDataToDisplayComponent,\n OrdersCreateModalComponent,\n SyncButtonComponent,\n ToolbarBtnComponent,\n // pipes\n FeaturePipe,\n FormatPipe,\n FilterPipe,\n FromNowPipe,\n ItemNoPipe,\n TranslatePipe,\n // dev utils\n ColorsComponent,\n // 3rd party\n CommonModule,\n NgbModule,\n NgSelectModule,\n TranslateModule,\n ResizableDirective,\n ResizeHandleDirective\n ],\n providers: [ResizableDirective, ResizeHandleDirective]\n})\nexport class SharedModule {}\n","
\n \n \n \n \n \n \n -1\">{{ 'ROWS' | agrTranslate }}: {{ rowCount | agrFormat: 'integer' }}\n -1\">{{ 'CELLS' | agrTranslate }}: {{ cellCount | agrFormat: 'integer' }}\n
\n\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output } from '@angular/core';\nimport { StoreService } from 'src/app/_core/store.service';\n\n/**\n * The sync button is used to overlay AgGrid when it is out of sync.\n * Place right above the ag-grid component in markup.\n *\n * State\n * Primary and warning will only change button and badge color.\n * When state = 'disabled' the button turns gray and gets 'ban' icon but button is still clickable.\n * When state = 'autosync' the button is not visible.\n *\n * Cell & Row Count\n * If cell or row count has value the badge is displayed.\n * When both have value it is possible to toggle between them by clicking the badge.\n */\n\nexport type SyncBtnState = 'autosync' | 'primary' | 'warning' | 'disabled';\ninterface Pers {\n displayCellCount?: boolean;\n}\n\n@Component({\n selector: 'agr-sync-button',\n templateUrl: './sync-button.component.html',\n styleUrls: ['./sync-button.component.scss']\n})\nexport class SyncButtonComponent implements OnInit, OnChanges {\n @Input() visible: boolean; // show or hide the component\n @Input() state: SyncBtnState;\n @Input() rowCount?: number;\n @Input() cellCount?: number;\n @Output() readonly clicked = new EventEmitter();\n stateClasses = {\n autosync: { badge: '', border: 'none' },\n primary: { badge: 'bg-primary', border: 'blue' },\n warning: { badge: 'bg-warning', border: 'yellow' },\n disabled: { badge: 'bg-gray-400', border: 'gray' }\n };\n pers: Pers = {\n displayCellCount: false // used to toggle row/cell count in badge\n };\n hasRowCount: boolean;\n hasCellCount: boolean;\n\n constructor(private storeService: StoreService) {}\n\n ngOnInit(): void {\n this.pers = this.storeService.load('syncButton', this.pers) as Pers;\n }\n\n ngOnChanges(): void {\n this.hasRowCount = this.rowCount !== undefined;\n this.hasCellCount = this.cellCount !== undefined;\n if (!this.hasCellAndRowCount()) {\n this.pers.displayCellCount = this.hasCellCount;\n }\n }\n\n onBadgeClick(): void {\n if (!this.hasCellAndRowCount()) {\n return;\n }\n this.pers.displayCellCount = !this.pers.displayCellCount;\n this.storeService.set('syncButton', this.pers);\n }\n\n hasCellAndRowCount(): boolean {\n return this.hasRowCount && this.hasCellCount;\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\n@Component({\n selector: 'agr-toolbar-btn',\n templateUrl: './toolbar-btn.component.html'\n})\nexport class ToolbarBtnComponent implements OnInit {\n // Click event needs to come from button element for [disabled] to work\n @Output() readonly btnClick: EventEmitter = new EventEmitter();\n\n @Input() btnType?: string; // See btnTypes for available types\n @Input() active?: boolean; // Adds 'active' class\n @Input() disabled?: boolean; // Disables the button\n @Input() highlight?: boolean; // Highlights the button\n @Input() unsavedChanges?: boolean; // Highlights the button to indicate unsaved changes\n // Optional overrides\n @Input() style?: 'success' | 'warning' | 'danger';\n @Input() icon?: string; // Override icon name\n @Input() translationKey?: string; // Override translation key - Used in tooltip\n @Input() postfix?: string; // Override postfix - Postfixed to translation\n @Input() btnId: string; // HTML id of the button (default 'tb-btn-[btnType])\n @Input() placement = 'top'; // Tooltip placement value, overwrite e.g. 'top-left' for first/last btn in toolbars\n\n /**\n * Key has match with this.btnType\n * type: ['icon name', 'translation key', 'postfix']\n */\n btnTypes = {\n calendar: ['calendar', 'CALENDAR'],\n chart: ['line-chart', 'CHART'],\n close: ['close', ''],\n confirm: ['check', 'CONFIRM', '...'],\n create: ['plus', 'CREATE', '...'],\n delete: ['trash', 'DELETE', '...'],\n edit: ['pencil', 'EDIT', '...'],\n excel: ['file-excel-o', 'EXPORT_TO_EXCEL'],\n filter: ['filter', 'FILTER'],\n history: ['history', 'HISTORY'],\n image: ['image', 'PRODUCT_IMAGE'],\n info: ['info', 'INFO'],\n itemCard: ['bar-chart', 'ITEM_CARD'],\n newWindow: ['external-link', 'OPEN_IN_NEW_WINDOW'],\n order: ['shopping-cart', 'CREATE_ORDER', '...'],\n recalculate: ['calculator', 'RECALCULATE'],\n redo: ['repeat', 'REDO'],\n save: ['save', 'SAVE'],\n start: ['play', 'START'],\n stop: ['stop', 'STOP'],\n sync: ['refresh', 'SYNC_GRID'],\n unconfirm: ['undo', 'UNCONFIRM', '...'],\n undo: ['undo', 'UNDO'],\n view: ['eye', 'VIEW_DETAILS']\n };\n btnClass: string;\n\n constructor() {}\n\n ngOnInit(): void {\n this.initializeProperties();\n }\n\n /**\n * Apply values from predefined button types\n */\n private initializeProperties(): void {\n if (this.btnTypes[this.btnType]) {\n this.icon = this.icon || this.btnTypes[this.btnType][0];\n this.translationKey = this.translationKey || this.btnTypes[this.btnType][1];\n this.postfix = this.postfix !== undefined ? this.postfix : this.btnTypes[this.btnType][2] || '';\n }\n this.btnId = this.btnId || `tb-btn-${this.btnType}`;\n this.btnClass = this.style ? `btn-${this.style}` : 'agr-toolbar-btn-default';\n }\n}\n","\n \n\n","export class AgrUtils {\n /**\n * Recursively removes empty objects and arrays from an object.\n */\n static deleteEmpty(config: object, level: number = 0): object {\n if (level > 3) {\n return config;\n }\n Object.keys(config).forEach((key) => {\n // Some (rare) cases use null value in config json, these should not be deleted\n if (typeof config[key] !== 'object' || config[key] === null) {\n return;\n }\n if (Object.entries(config[key]).length === 0) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete config[key];\n } else {\n AgrUtils.deleteEmpty(config[key], level + 1);\n if (Object.entries(config[key]).length === 0) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete config[key];\n }\n }\n });\n return config;\n }\n\n /**\n * Changes class to JS object and removes all properties that have undefined value.\n */\n static sanitize(obj: object): object {\n return JSON.parse(JSON.stringify(obj));\n }\n\n /**\n * Parse a string containing a numerical value into a number. The value can be formatted as a number or currency and\n * have any number of leading non-digit values.\n *\n * Specifically written to deal with the nightmare of extracting formatted strings from Excel which can have any\n * kind of formatting attached to it.\n *\n * This method uses best effort to get the proper numerical value\n * @param value The value containing numeric value to extract\n * @param likelyDecimalSeparator The most likely decimal separator. This is used if the decimal point can not be\n * deduced from the following rules of thumb:\n * 1) If a number has two (or more) different non-digits then the last non-digit is the decimal point separator\n * 2) If a number has a non-digit repeated then it must be a thousand separator and no separator is present\n * 3) If a number has one, two, four or more digits after the last and only non-digit then the non-digit is a decimal\n * separator\n *\n * If none of the above rules apply we can not reliably deduce whether that separator is a thousand\n * separator or a decimal separator. In this case if the only separator is the likelyDecimalSeparator then the number\n * is assumed to have a decimal fraction, otherwise it is not.\n *\n * Note for future: If this mechanism is not robust enough to handle paste from Excel it might be possible to improve it\n * by looking at all values being pasted and infer from it the actual decimal separator used.\n */\n static extractNumerical(value: string, likelyDecimalSeparator: string): number {\n const rawValue = AgrUtils.extractRawNumber(value);\n if (rawValue === undefined) {\n return undefined;\n }\n const nonDigits = AgrUtils.getFirstAndLastNonDigitIdx(rawValue);\n // If there are no non digits, then just return the number\n if (nonDigits.firstIdx === -1 && nonDigits.lastIdx === -1) {\n return Number(rawValue);\n }\n // If the first separator is different from the last separator then the last separator is the decimal separator\n if (rawValue[nonDigits.firstIdx] !== rawValue[nonDigits.lastIdx]) {\n return AgrUtils.convertToNumber(rawValue, nonDigits.lastIdx);\n }\n // If there are at least two (identical) separators then there is no decimal point in the number\n if (nonDigits.firstIdx !== nonDigits.lastIdx) {\n return AgrUtils.convertToNumber(rawValue, -1);\n }\n // If the last separator is not exactly the fourth last character then this separator must be the decimal separator\n if (nonDigits.lastIdx !== rawValue.length - 4) {\n return AgrUtils.convertToNumber(rawValue, nonDigits.lastIdx);\n }\n // If the last separator is the likely decimal separator return it as such\n if (rawValue[nonDigits.lastIdx] === likelyDecimalSeparator) {\n return AgrUtils.convertToNumber(rawValue, nonDigits.lastIdx);\n }\n // Otherwise, assume there is no decimal separator\n return AgrUtils.convertToNumber(rawValue, -1);\n }\n\n static isSameDay(first: Date, second: Date): boolean {\n if (!first || !second) {\n return false;\n }\n return first.getFullYear() === second.getFullYear() && first.getMonth() === second.getMonth() && first.getDate() === second.getDate();\n }\n\n private static convertToNumber(value: string, idxOfDecimalPoint: number): number {\n const numString = value\n .split('')\n .map((place, idx) => (idx === idxOfDecimalPoint ? '.' : place === '.' ? ' ' : place))\n .filter((place) => place === '-' || place === '.' || (place.charCodeAt(0) >= 48 && place.charCodeAt(0) <= 57))\n .join('');\n const num = Number(numString);\n if (isNaN(num)) {\n return undefined;\n }\n return num;\n }\n\n private static getFirstAndLastNonDigitIdx(value: string): { firstIdx: number; lastIdx: number } {\n const splitRawValue = value.split('');\n const firstIdx = splitRawValue.findIndex((place) => place !== '-' && (place.charCodeAt(0) < 48 || place.charCodeAt(0) > 57));\n let lastIdx = splitRawValue.reverse().findIndex((place) => place !== '-' && (place.charCodeAt(0) < 48 || place.charCodeAt(0) > 57));\n if (lastIdx !== -1) {\n lastIdx = splitRawValue.length - lastIdx - 1;\n }\n return { firstIdx, lastIdx };\n }\n\n private static extractRawNumber(value: string): string {\n const splitValue = value.split('');\n const idxOfFirst = splitValue.findIndex((place) => place === '-' || (place.charCodeAt(0) >= 48 && place.charCodeAt(0) <= 57));\n let idxOfLast = splitValue.reverse().findIndex((place) => place.charCodeAt(0) >= 48 && place.charCodeAt(0) <= 57);\n if (idxOfFirst === -1 || idxOfLast === -1) {\n return undefined;\n }\n idxOfLast = splitValue.length - idxOfLast;\n return value.substring(idxOfFirst, idxOfLast);\n }\n}\n","import * as expr from 'expression-eval';\nimport { flatten, uniq } from 'lodash';\nimport * as moment from 'moment';\n\nexport class Expression {\n readonly identifiers: string[];\n readonly jsExpression?: string;\n readonly parseTree: expr.parse.Expression;\n\n constructor(exprOrString: string | expr.parse.Expression) {\n if (typeof exprOrString === 'string') {\n this.jsExpression = exprOrString;\n this.parseTree = this.parseExpression();\n } else {\n this.parseTree = exprOrString;\n }\n this.identifiers = uniq(flatten(Array.from(new Set(this.extractIdsFromNode(this.parseTree)))));\n }\n\n evaluate(params: (string | number | undefined)[]): string | number | undefined {\n const context = {\n pc: (oldVal, newVal) => {\n if (!oldVal) {\n return undefined;\n }\n return ((newVal - oldVal) / oldVal) * 100;\n },\n getDateInt: () => parseInt(moment().format('YYYYMMDD'), 10),\n null: undefined\n };\n this.identifiers.forEach((id, idx) => (context[id] = params[idx] ? params[idx] : 0));\n const retVal = expr.eval(this.parseTree, context);\n if (typeof retVal === 'number' && isNaN(retVal)) {\n return undefined;\n }\n return retVal;\n }\n\n // eslint-disable-next-line max-lines-per-function, complexity\n replaceIdentifiers(node: any, replacementFun: (identifierNode: any) => any): any {\n switch (node.type) {\n case 'ArrayExpression':\n return {\n type: 'ArrayExpression',\n elements: node.elements.map((element) => this.replaceIdentifiers(element, replacementFun))\n };\n case 'BinaryExpression':\n return {\n type: 'BinaryExpression',\n operator: node.operator,\n left: this.replaceIdentifiers(node.left, replacementFun),\n right: this.replaceIdentifiers(node.right, replacementFun)\n };\n case 'CallExpression':\n return {\n type: 'CallExpression',\n arguments: node.arguments.map((argument) => this.replaceIdentifiers(argument, replacementFun)),\n callee: node.callee\n };\n case 'Compound':\n return {\n type: 'Compound',\n body: node.body.map((body) => this.replaceIdentifiers(body, replacementFun))\n };\n case 'ConditionalExpression':\n return {\n type: 'ConditionalExpression',\n test: this.replaceIdentifiers(node.test, replacementFun),\n consequent: this.replaceIdentifiers(node.consequent, replacementFun),\n alternate: this.replaceIdentifiers(node.alternate, replacementFun)\n };\n case 'Identifier':\n return replacementFun(node);\n case 'Literal':\n return {\n type: 'Literal',\n value: node.value,\n raw: node.raw\n };\n case 'LogicalExpression':\n return {\n type: 'LogicalExpression',\n operator: node.operator,\n left: this.replaceIdentifiers(node.left, replacementFun),\n right: this.replaceIdentifiers(node.right, replacementFun)\n };\n case 'MemberExpression':\n return {\n type: 'MemberExpression',\n computed: node.computed,\n object: this.replaceIdentifiers(node.object, replacementFun),\n property: this.replaceIdentifiers(node.property, replacementFun)\n };\n case 'ThisExpression':\n return {\n type: 'ThisExpression'\n };\n case 'UnaryExpression':\n return {\n type: 'UnaryExpression',\n operator: node.operator,\n argument: this.replaceIdentifiers(node.argument, replacementFun),\n prefix: node.prefix\n };\n default:\n throw new Error(`Unexpected node type: '${node.type}'`);\n }\n }\n\n private parseExpression(): expr.parse.Expression {\n try {\n return expr.parse(this.jsExpression.replace(/ or /g, ' || '));\n } catch (error) {\n console.warn(`AGR: Error parsing jsExpression: '${this.jsExpression}'`, error.toString());\n return expr.parse(`'error'`);\n }\n }\n // eslint-disable-next-line complexity\n private extractIdsFromNode(node: any): string[] {\n switch (node.type) {\n case 'ArrayExpression':\n return node.elements.map((subNode) => this.extractIdsFromNode(subNode));\n case 'BinaryExpression':\n return this.extractIdsFromNode(node.left).concat(this.extractIdsFromNode(node.right));\n case 'CallExpression':\n return node.arguments.map((subNode) => this.extractIdsFromNode(subNode));\n case 'Compound':\n return node.body.map((subNode) => this.extractIdsFromNode(subNode));\n case 'ConditionalExpression':\n return this.extractIdsFromNode(node.test)\n .concat(this.extractIdsFromNode(node.consequent))\n .concat(this.extractIdsFromNode(node.alternate));\n case 'Identifier':\n return [node.name];\n case 'LogicalExpression':\n return this.extractIdsFromNode(node.left).concat(this.extractIdsFromNode(node.right));\n case 'MemberExpression':\n return this.extractIdsFromNode(node.object).concat(this.extractIdsFromNode(node.property));\n case 'UnaryExpression':\n return this.extractIdsFromNode(node.argument);\n default:\n return [];\n }\n }\n}\n","
\n {{ column.caption | agrTranslate }}\n \n
{{ column.caption | agrTranslate }}
\n {{ column.description | agrTranslate }}\n
\n \n
\n \n \n
\n
\n
\n \n \n {{ getValue() | agrFormat: column.type }}\n \n\n \n\n \n {{ column.globalSettingValue }}\n
\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { DetailsColumn } from 'src/app/item-card/details/details-columns/details-column-model';\nimport { ItemCardDetailsService } from 'src/app/item-card/details/item-card-details.service';\nimport { NgbDate, NgbDateStruct } from '@ng-bootstrap/ng-bootstrap';\nimport * as moment from 'moment';\nimport { isNil, isUndefined } from 'lodash';\n\n@Component({\n selector: '[agr-details-date-columns]', // eslint-disable-line @angular-eslint/component-selector\n templateUrl: './editable-date-columns.component.html',\n styleUrls: ['../details-columns.component.scss']\n})\nexport class EditableDateColumnsComponent implements OnInit {\n @Input() column: DetailsColumn;\n @Input() itemId: number;\n @Input() formGroup: FormGroup;\n @Input() bulkUpdate: boolean;\n @Output() readonly changed = new EventEmitter();\n\n editing: Boolean = false;\n today = new Date();\n model: NgbDateStruct;\n minDate: NgbDateStruct;\n maxDate: NgbDateStruct;\n datePickerPast: NgbDateStruct = { year: 1901, month: 1, day: 1 };\n datePickerFuture: NgbDateStruct = { year: 2100, month: 1, day: 1 };\n datePickerToday: NgbDateStruct = { year: new Date().getFullYear(), month: new Date().getMonth() + 1, day: new Date().getDate() };\n\n useGlobal: Boolean;\n\n constructor(private itemCardDetailsService: ItemCardDetailsService) {}\n\n ngOnInit(): void {\n this.formGroup.get(this.column.name).setValue(this.column.value);\n this.getMinDate();\n this.getMaxDate();\n }\n\n getValue(): string {\n return this.column.overwriteValue ? this.column.overwriteValue : this.column.value;\n }\n\n onDateSelected(date: NgbDate): void {\n const value = moment(`${date.year}-${date.month}-${date.day}`, 'YYYY-MM-DD').format();\n this.editing = false;\n const invalidValue = value === null; // Validation\n if (invalidValue) {\n this.reset();\n return;\n }\n this.formGroup.get(this.column.name).markAsDirty();\n this.column.overwriteValue = value;\n if (!this.bulkUpdate) {\n this.update();\n }\n }\n\n hasOverwriteValue(): boolean {\n if (isNil(this.column.overwriteValue) || isUndefined(this.column.overwriteValue)) {\n return this.bulkUpdate ? this.formGroup.get(this.column.name).dirty : false;\n }\n return true;\n }\n\n reset(): void {\n this.column.overwriteValue = undefined;\n this.formGroup.get(this.column.name).markAsPristine();\n if (!this.bulkUpdate) {\n this.update();\n }\n }\n\n close(): void {\n this.editing = false;\n }\n\n toggleGlobal(): void {\n this.useGlobal = !this.useGlobal;\n if (this.useGlobal) {\n this.column.overwriteValue = undefined;\n this.formGroup.get(this.column.name).markAsDirty();\n }\n if (!this.useGlobal) {\n this.formGroup.get(this.column.name).markAsPristine();\n }\n }\n\n private update(): void {\n this.itemCardDetailsService.updateValues(this.column, this.column.overwriteValue, this.itemId).subscribe(() => {\n this.changed.emit();\n });\n }\n\n private getMinDate(): void {\n const minDate = this.column.config.edit.dateConditions.minDate;\n this.minDate = minDate ? (minDate === 'today' ? this.datePickerToday : this.setDate(minDate)) : this.datePickerPast;\n }\n\n private getMaxDate(): void {\n const maxDate = this.column.config.edit.dateConditions.maxDate;\n this.maxDate = maxDate ? (maxDate === 'today' ? this.datePickerToday : this.setDate(maxDate)) : this.datePickerFuture;\n }\n\n private setDate(date: string): NgbDateStruct {\n return { year: new Date(date).getFullYear(), month: new Date(date).getMonth() + 1, day: new Date(date).getDate() };\n }\n}\n","
\n {{ column.caption | agrTranslate }}\n \n
{{ column.caption | agrTranslate }}
\n {{ column.description | agrTranslate }}\n
\n \n
\n \n \n
\n
\n
\n
\n \n {{ getLookupValue() }}\n
\n \n
\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { isNil, isNumber } from 'lodash';\nimport { Subscription } from 'rxjs';\nimport { DetailsColumn } from 'src/app/item-card/details/details-columns/details-column-model';\nimport { ItemCardDetailsService } from 'src/app/item-card/details/item-card-details.service';\n@Component({\n selector: '[agr-details-lookup-columns]', // eslint-disable-line @angular-eslint/component-selector\n templateUrl: './editable-lookup-columns.component.html',\n styleUrls: ['../details-columns.component.scss']\n})\nexport class EditableLookupColumnsComponent implements OnInit {\n @Input() column: DetailsColumn;\n @Input() itemId: number;\n @Input() formGroup: FormGroup;\n @Input() bulkUpdate: boolean;\n @Output() readonly changed = new EventEmitter();\n changedLookupSubscription: Subscription;\n useGlobal: boolean = false;\n\n constructor(private itemCardDetailsService: ItemCardDetailsService) {}\n\n ngOnInit(): void {}\n\n getNextLookupValue(): void {\n const indexOfCurrent = this.column.lookupOptions.findIndex((option) => option.id === this.getValueUsed());\n this.column.overwriteValue = this.column.lookupOptions[(indexOfCurrent + 1) % this.column.lookupOptions.length].id;\n this.formGroup.get(this.column.name).markAsDirty();\n if (!this.bulkUpdate) {\n this.update();\n }\n }\n\n hasOverwriteValue(): boolean {\n if (isNil(this.column.overwriteValue)) {\n return this.bulkUpdate ? this.formGroup.get(this.column.name).dirty : false;\n }\n return true;\n }\n\n reset(): void {\n this.column.overwriteValue = undefined;\n this.formGroup.get(this.column.name).markAsPristine();\n if (!this.bulkUpdate) {\n this.update();\n }\n }\n\n getLookupValue(): string {\n let option = undefined;\n if (!this.column.lookupOptions || (this.bulkUpdate && !this.hasOverwriteValue())) {\n return undefined;\n }\n if (this.useGlobal) {\n option = this.column.lookupOptions.find((option) => option.id === this.getBitId(this.column.globalSettingValue));\n } else {\n let lookupId = this.getValueUsed();\n option = this.column.lookupOptions.find((option) => option.id === this.getBitId(lookupId));\n }\n return option ? option.value : undefined;\n }\n\n toggleGlobal(): void {\n this.useGlobal = !this.useGlobal;\n if (this.useGlobal) {\n this.column.overwriteValue = undefined;\n this.formGroup.get(this.column.name).markAsDirty();\n }\n if (!this.useGlobal) {\n this.formGroup.get(this.column.name).markAsPristine();\n }\n }\n\n private getValueUsed(): number {\n let value = this.hasOverwriteValue() ? this.column.overwriteValue : this.column.value ?? this.column.globalSettingValue;\n return this.getBitId(value);\n }\n\n private getBitId(lookupId: number | boolean): number {\n return isNumber(lookupId) ? lookupId : lookupId ? 1 : 0;\n }\n\n private update(): void {\n this.itemCardDetailsService.updateValues(this.column, this.column.overwriteValue, this.itemId).subscribe(() => {\n this.changed.emit();\n });\n }\n}\n","
\n {{ column.caption | agrTranslate }}\n \n
{{ column.caption | agrTranslate }}
\n {{ column.description | agrTranslate }}\n
\n \n
\n \n \n
\n
\n
\n \n \n {{ getValue() | agrFormat: column.type + ':2' }}\n \n \n {{ column.globalSettingValue }}\n
\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { isNumber } from 'lodash';\nimport { DetailsColumn } from 'src/app/item-card/details/details-columns/details-column-model';\nimport { ItemCardDetailsService } from 'src/app/item-card/details/item-card-details.service';\n\n@Component({\n selector: '[agr-details-number-columns]', // eslint-disable-line @angular-eslint/component-selector\n templateUrl: './editable-number-columns.component.html',\n styleUrls: ['../details-columns.component.scss']\n})\nexport class EditableNumberColumnsComponent {\n @Input() column: DetailsColumn;\n @Input() itemId: number;\n @Input() formGroup: FormGroup;\n @Input() bulkUpdate: boolean;\n @Output() readonly changed = new EventEmitter();\n\n editing: Boolean = false;\n maxInput: number;\n useGlobal: Boolean;\n\n constructor(private itemCardDetailsService: ItemCardDetailsService) {}\n\n blur(): void {\n this.editing = false;\n const value = this.formGroup.get(this.column.name).value;\n if (value === null) {\n this.formGroup.get(this.column.name).markAsPristine();\n return;\n }\n if (this.bulkUpdate) {\n this.column.overwriteValue = value;\n }\n }\n\n startEditing(): void {\n this.formGroup.get(this.column.name).setValue(this.getValue());\n this.formGroup.get(this.column.name).markAsTouched();\n this.editing = true;\n }\n\n updateNumber(): void {\n this.editing = false;\n let value = this.formGroup.get(this.column.name).value;\n value = this.validate(value);\n this.column.overwriteValue = value;\n if (!this.bulkUpdate) {\n this.update();\n }\n this.blur();\n }\n\n hasOverwriteValue(): boolean {\n return this.bulkUpdate ? this.formGroup.get(this.column.name).dirty : isNumber(this.column.overwriteValue);\n }\n\n getValue(): number {\n return this.hasOverwriteValue() ? this.column.overwriteValue : this.column.value;\n }\n\n toggleGlobal(): void {\n this.useGlobal = !this.useGlobal;\n if (this.useGlobal) {\n this.column.overwriteValue = undefined;\n this.formGroup.get(this.column.name).markAsDirty();\n }\n if (!this.useGlobal) {\n this.formGroup.get(this.column.name).markAsPristine();\n }\n }\n\n private validate(value: any): any {\n if (this.column.type === 'percentage' && value > 100) {\n return 100;\n }\n if (this.column.name === '_confidence_factor' && value > 0 && value < 50) {\n return 50;\n }\n return value;\n }\n\n private update(): void {\n this.itemCardDetailsService.updateValues(this.column, this.column.overwriteValue, this.itemId).subscribe(() => {\n this.formGroup.get(this.column.name).markAsDirty();\n this.changed.emit();\n });\n }\n}\n","
\n {{ column.caption | agrTranslate }}\n \n
{{ column.caption | agrTranslate }}
\n {{ column.description | agrTranslate }}\n
\n \n
\n \n \n
\n
\n
\n {{ getValue() }}\n \n
\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { DetailsColumn } from 'src/app/item-card/details/details-columns/details-column-model';\nimport { ItemCardDetailsService } from 'src/app/item-card/details/item-card-details.service';\n\n@Component({\n selector: '[agr-details-string-columns]', // eslint-disable-line @angular-eslint/component-selector\n templateUrl: './editable-string-columns.component.html',\n styleUrls: ['../details-columns.component.scss']\n})\nexport class EditableStringColumnsComponent {\n @Input() column: DetailsColumn;\n @Input() itemId: number;\n @Input() formGroup: FormGroup;\n @Input() bulkUpdate: boolean;\n @Output() readonly changed = new EventEmitter();\n\n editing: Boolean = false;\n useGlobal: Boolean;\n\n constructor(private itemCardDetailsService: ItemCardDetailsService) {}\n\n getValue(): number {\n return this.column.overwriteValue ? this.column.overwriteValue : this.column.value;\n }\n\n blur(): void {\n this.formGroup.get(this.column.name).setValue(this.column.value);\n this.formGroup.get(this.column.name).markAsTouched();\n this.editing = false;\n }\n\n startEditing(): void {\n this.editing = true;\n }\n\n updateString(): void {\n this.editing = false;\n this.column.overwriteValue = this.formGroup.get(this.column.name).value;\n if (!this.bulkUpdate) {\n this.update();\n }\n this.blur();\n }\n\n hasOverwriteValue(): boolean {\n if (this.column.overwriteValue || this.column.overwriteValue === 0) {\n return true;\n }\n return false;\n }\n\n toggleGlobal(): void {\n this.useGlobal = !this.useGlobal;\n if (this.useGlobal) {\n this.column.overwriteValue = undefined;\n this.formGroup.get(this.column.name).markAsDirty();\n }\n if (!this.useGlobal) {\n this.formGroup.get(this.column.name).markAsPristine();\n }\n }\n\n private update(): void {\n this.itemCardDetailsService.updateValues(this.column, this.column.overwriteValue, this.itemId).subscribe(() => {\n this.blur();\n this.changed.emit();\n });\n }\n}\n","import { ContextLine } from 'src/app/_core/de-query/model/context-line.model';\n\nexport interface LookupOption {\n id: number;\n value: string;\n}\nexport interface Config {\n edit?: {\n enabled?: boolean;\n bulkEnabled?: boolean;\n targetIdColumn?: string;\n dateConditions?: { minDate?: string; maxDate?: string };\n lookupConfig?: {\n query?: { columns: [name: string] };\n fixedOptions?: LookupOption[];\n idColumn?: string;\n nameColumn?: string;\n };\n };\n}\n/**\n * Contains the data needed for an edit action of a cell\n */\nexport class DetailsColumn {\n readonly name: string;\n readonly caption: string;\n readonly description: string;\n readonly groupName: string;\n readonly type: string;\n value: any;\n readonly config: Config;\n overwriteValue: any;\n globalSettingValue: any;\n lookupOptions?: LookupOption[];\n\n constructor(contextLine: ContextLine, value: any, overwriteValue?: any, globalValue?: any) {\n this.name = contextLine.name;\n this.caption = contextLine.caption;\n this.description = contextLine.description;\n this.groupName = contextLine.groupName;\n this.type = contextLine.type;\n this.value = value ?? globalValue;\n this.overwriteValue = overwriteValue;\n this.globalSettingValue = globalValue;\n this.config = contextLine.config.itemDetails;\n }\n\n isEditable(): boolean {\n return !!this.config?.edit.enabled;\n }\n\n isBulkUpdateEnabled(): boolean {\n return this.isEditable() ? this.config.edit.bulkEnabled : false;\n }\n\n isDateColumn(): boolean {\n if (this.type === 'date') {\n return true;\n }\n return false;\n }\n\n isNumberColumn(): boolean {\n if (\n (this.type === 'int' || this.type === 'currency' || this.type === 'decimal' || this.type === 'percentage') &&\n this.config.edit.lookupConfig === undefined\n ) {\n return true;\n }\n return false;\n }\n\n isLookupColumn(): boolean {\n if (this.config.edit.lookupConfig !== undefined) {\n return true;\n }\n return false;\n }\n\n isStringColumn(): boolean {\n if (this.type === 'string' && this.config.edit.lookupConfig === undefined) {\n return true;\n }\n return false;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { map, Observable } from 'rxjs';\nimport { ContextService } from 'src/app/_core/de-query/context.service';\nimport { DeQueryService } from 'src/app/_core/de-query/de-query.service';\nimport { ContextLine } from 'src/app/_core/de-query/model/context-line.model';\nimport { DetailsColumn, LookupOption } from 'src/app/item-card/details/details-columns/details-column-model';\nimport { Context } from 'src/app/_core/de-query/model/context.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ItemCardDetailsService {\n httpClient: any;\n http: any;\n\n constructor(private contextService: ContextService, private deQueryService: DeQueryService) {}\n\n getColumns(): Observable {\n return this.contextService.getContext({}, 3).pipe(map((context: Context) => context.getColumns()));\n }\n\n // eslint-disable-next-line max-lines-per-function\n getDetails(allColumns: ContextLine[], itemId?: number): Observable {\n const allDetailColumns = allColumns.filter((column) => {\n return column.groupName !== '_undelivered' && column.groupName !== '_order_routes_info' && !column.name.includes('exp');\n });\n return this.deQueryService\n .execQuery({\n queryType: 'distinct',\n columns: allDetailColumns.map((column) => ({ name: column.name })),\n filters: [{ column: { name: '_item_id' }, values: [itemId], operator: 'IN' }]\n })\n .pipe(\n map((details) => {\n return allColumns.reduce((result, column) => {\n if (!column.name.includes('global') && !column.name.includes('overwrite')) {\n return result.concat(\n new DetailsColumn(\n column,\n details[0][column.name],\n details[0][`${column.name}_overwrite`],\n details[0][`${column.name}_global`]\n )\n );\n }\n return result;\n }, []);\n }),\n map((detailsData) => {\n return this.getLookupOptions(detailsData, itemId);\n })\n );\n }\n\n getBulkUpdateDetails(allColumns: ContextLine[], itemId: number): Observable {\n return this.getDetails(allColumns, itemId).pipe(\n map((detailsData) => {\n return detailsData\n .filter((column) => column.isBulkUpdateEnabled())\n .map((column) => {\n column.value = undefined;\n return column;\n });\n })\n );\n }\n\n getUndeliveredOrders(allColumns: ContextLine[], itemId: number): Observable {\n const undeliveredColumns = allColumns.filter((column) => column.groupName === '_undelivered');\n return this.deQueryService\n .execQuery({\n queryType: 'distinct',\n columns: undeliveredColumns.map((column) => ({ name: column.name })),\n filters: [{ column: { name: '_item_id' }, values: [itemId], operator: 'IN' }]\n })\n .pipe(\n map((undeliveredOrders) => {\n return undeliveredOrders.map((undeliveredOrder) => {\n return undeliveredColumns.map((column) => {\n return new DetailsColumn(column, undeliveredOrder[column.name]);\n });\n });\n })\n );\n }\n\n getOrderRoutes(allColumns: ContextLine[], itemId: number): Observable {\n const orderRouteColumns = allColumns.filter((column) => column.groupName === '_order_route_info');\n return this.deQueryService\n .execQuery({\n queryType: 'distinct',\n columns: orderRouteColumns.map((column) => ({ name: column.name })),\n filters: [{ column: { name: '_item_id' }, values: [itemId], operator: 'IN' }]\n })\n .pipe(\n map((orderRoutes) => {\n return orderRoutes.map((orderRoute) => {\n return orderRouteColumns.map((column) => {\n return new DetailsColumn(column, orderRoute[column.name]);\n });\n });\n })\n );\n }\n\n getExpiringStock(allColumns: ContextLine[], itemId: number): Observable {\n const expStockColumn = allColumns.filter((column) => column.name.includes('exp') && !column.name.includes('undelivered'));\n return this.deQueryService\n .execQuery({\n queryType: 'distinct',\n columns: expStockColumn.map((column) => ({ name: column.name })),\n filters: [{ column: { name: '_item_id' }, values: [itemId], operator: 'IN' }]\n })\n .pipe(\n map((expStocks) => {\n return expStocks.map((expStock) => {\n return expStockColumn.map((column) => {\n return new DetailsColumn(column, expStock[column.name]);\n });\n });\n })\n );\n }\n\n getLookupOptions(columns: DetailsColumn[], itemId: number): any {\n return columns.map((column) => {\n if (column.config && column.isLookupColumn()) {\n if (column.config.edit.lookupConfig.fixedOptions) {\n column.lookupOptions = column.config.edit.lookupConfig.fixedOptions;\n return column;\n } else {\n this.getLookupOptionsByQuery(column.config, itemId).subscribe((option) => {\n column.lookupOptions = option;\n return column;\n });\n return column;\n }\n }\n return column;\n });\n }\n\n getLookupOptionsByQuery(config: any, itemId: number): Observable {\n return this.deQueryService\n .execQuery({\n queryType: 'distinct',\n columns: config.edit.lookupConfig.query.columns,\n filters: [{ column: { name: '_item_id' }, values: [itemId], operator: 'IN' }]\n })\n .pipe(\n map((contextLines) => {\n return contextLines.map((contextLine) => {\n return {\n id: contextLine[config.edit.lookupConfig.idColumn],\n value: contextLine[config.edit.lookupConfig.nameColumn]\n };\n });\n })\n );\n }\n\n getOverwriteValues(columns: ContextLine[], itemId: number): Observable {\n return this.deQueryService.execQuery({\n columns: columns.map((column) => ({ name: column.name })),\n filters: [{ column: { name: '_item_id' }, values: [itemId], operator: 'IN' }]\n });\n }\n\n getGlobalSettingValues(columns: ContextLine[], itemId: number): Observable {\n return this.deQueryService.execQuery({\n columns: columns.map((column) => ({ name: column.name })),\n filters: [{ column: { name: '_item_id' }, values: [itemId], operator: 'IN' }]\n });\n }\n\n updateValues(updateColumn: DetailsColumn, newValue: any, itemId: number): Observable {\n return this.deQueryService.execAction(\n 'update_value',\n {\n newValue,\n oldValue: updateColumn.value,\n targetColumn: updateColumn.config.edit.targetIdColumn,\n targetColumnChanged: updateColumn.config.edit.targetIdColumn\n },\n { filters: [{ column: { name: '_item_id' }, values: [itemId], operator: 'IN' }] }\n );\n }\n}\n","import { ItemOrderRouteDTO } from 'src/app/item-card/models/item-card-dto.model';\n\nexport class ItemOrderRoute {\n id: number;\n name: string;\n isPrimary: boolean;\n minOrder: number;\n costPrice: number;\n leadTimeDays: number;\n quantityPerUnit: number;\n quantityPerLayer: number;\n quantityPerPallet: number;\n\n constructor(orderRouteDTO?: ItemOrderRouteDTO) {\n if (!orderRouteDTO) {\n return;\n }\n this.id = orderRouteDTO.id;\n this.name = orderRouteDTO.label;\n this.isPrimary = orderRouteDTO.primaryRoute;\n this.minOrder = orderRouteDTO.minOrder;\n this.costPrice = orderRouteDTO.costPrice;\n this.leadTimeDays = orderRouteDTO.leadTimeDays;\n this.quantityPerUnit = orderRouteDTO.orderMultiple;\n this.quantityPerLayer = orderRouteDTO.qtyLayer;\n this.quantityPerPallet = orderRouteDTO.qtyPallet;\n }\n}\n","/* eslint-disable complexity */\n/* eslint-disable max-lines-per-function */\n/* eslint-disable max-classes-per-file */\nimport { TimezoneService } from 'src/app/_core/timezone.service';\nimport { EventModelDTO, ItemDTO } from 'src/app/item-card/models/item-card-dto.model';\nimport { ItemOrderRoute } from 'src/app/item-card/models/item-order-route.model';\n\nexport type ItemEditableProperty =\n | 'additionalLeadTime'\n | 'orderFrequency'\n | 'minStock'\n | 'maxStock'\n | 'confidenceFactor'\n | 'skipForecastToDate'\n | 'forecastFromDate'\n | 'forecastToDate'\n | 'eventModel';\n\nclass EventModel {\n id: number;\n name: string;\n\n constructor(eventModelDto?: EventModelDTO) {\n if (!eventModelDto) {\n return;\n }\n this.id = eventModelDto.id;\n this.name = eventModelDto.name;\n }\n}\n\nexport class ItemDetails {\n // Basic\n id: number;\n location: string;\n name: string;\n articleNo: string;\n itemGroup: string;\n abcGrouping: string;\n closed: boolean;\n imageId: string;\n // Item Details\n size: string;\n color: string;\n style: string;\n description: string;\n weight: number;\n volume: number;\n salePrice: number;\n additionalLeadTime: number;\n additionalLeadTimeOverwrite = false;\n orderFrequency: number;\n orderFrequencyOverwrite = false;\n // Stock Info\n stock: number;\n undelivered: number;\n wastageDays: number;\n minStock: number;\n minStockOverwrite = false;\n maxStock: number;\n maxStockOverwrite = false;\n // Forecast Settings\n confidenceFactor: number;\n confidenceFactorOverwrite = false;\n skipForecastToDate: Date;\n skipForecastToDateOverwrite = false;\n forecastFromDate: Date;\n forecastFromDateOverwrite = false;\n forecastToDate: Date;\n forecastToDateOverwrite = false;\n eventModel: EventModel = new EventModel();\n eventModelOverwrite = false;\n eventModels: EventModel[] = [];\n // Order Routes\n primaryOrderRoute: ItemOrderRoute = new ItemOrderRoute();\n selectedOrderRoute = new ItemOrderRoute();\n orderRoutes: ItemOrderRoute[] = [];\n minOrder: number;\n costPrice: number;\n leadTimeDays: number;\n quantityPerUnit: number;\n quantityPerLayer: number;\n quantityPerPallet: number;\n private selectedOrderRouteIndex = 0;\n // This is private for a reason, don't use\n private itemDto: ItemDTO;\n\n constructor(item?: ItemDTO) {\n if (!item) {\n return;\n }\n this.id = item.id;\n this.location = item.location.name;\n this.name = item.name;\n this.articleNo = item.articleNo;\n this.itemGroup = item.itemGroup.name;\n this.abcGrouping = item.abcGrouping;\n this.closed = item.closed;\n this.imageId = item.imageId;\n this.size = item.size;\n this.color = item.color;\n this.style = item.style;\n this.description = item.description;\n this.weight = item.weight;\n this.volume = item.volume;\n this.salePrice = item.salePrice;\n this.additionalLeadTime = this.getAdditionalLeadTime(item);\n this.additionalLeadTimeOverwrite = item.itemDetail.additionalLeadTimeDaysOverwrite !== null;\n this.orderFrequency = this.getOrderFrequency(item);\n this.orderFrequencyOverwrite = item.itemDetail.orderFrequencyDaysOverwrite !== null;\n this.stock = item.totalStock;\n this.undelivered = item.totalUndelivered;\n this.wastageDays = item.wastageDays;\n this.minStock = this.getMinStock(item);\n this.minStockOverwrite = item.itemDetail.minStockOverwrite !== null;\n this.maxStock = this.getMaxStock(item);\n this.maxStockOverwrite = item.itemDetail.maxStockOverwrite !== null;\n this.confidenceFactor = this.getConfidenceFactor(item);\n this.confidenceFactorOverwrite = item.itemDetail.confidenceFactorOverwrite !== null;\n this.skipForecastToDate = this.getSkipForecastToDate(item);\n this.skipForecastToDateOverwrite = item.itemDetail.skipForcToDateOverwrite !== null;\n this.forecastFromDate = this.getForecastFromDate(item);\n this.forecastFromDateOverwrite = item.itemDetail.forecastFromDateOverwrite !== null;\n this.forecastToDate = this.getForecastToDate(item);\n this.forecastToDateOverwrite = item.itemDetail.forecastToDateOverwrite !== null;\n this.eventModel = this.getEventModel(item);\n this.eventModels =\n item.itemDetail.eventModelOptions && item.itemDetail.eventModelOptions.length > 0\n ? item.itemDetail.eventModelOptions.map((eventModel) => new EventModel(eventModel))\n : [];\n this.primaryOrderRoute = new ItemOrderRoute(item.primaryOrderRoute);\n this.orderRoutes =\n item.itemOrderRoutes && item.itemOrderRoutes.length > 0\n ? item.itemOrderRoutes.map((orderRouteDTO) => new ItemOrderRoute(orderRouteDTO))\n : [];\n this.selectedOrderRouteIndex = this.orderRoutes.findIndex((route) => route.isPrimary);\n this.selectedOrderRouteIndex = this.selectedOrderRouteIndex === -1 ? 0 : this.selectedOrderRouteIndex;\n this.selectedOrderRoute = this.orderRoutes.length > 0 ? this.orderRoutes[this.selectedOrderRouteIndex] : new ItemOrderRoute();\n this.itemDto = item;\n }\n\n toggleNextSelectedOrderRoute(): void {\n this.selectedOrderRouteIndex = (this.selectedOrderRouteIndex + 1) % this.orderRoutes.length;\n this.selectedOrderRoute = this.orderRoutes[this.selectedOrderRouteIndex];\n }\n\n selectNextEventModel(): void {\n if (!this.eventModel || this.eventModels.length === 0) {\n return;\n }\n let selectedEventModel = this.eventModels.findIndex((eventModel) => eventModel.id === this.eventModel.id);\n selectedEventModel = selectedEventModel === -1 ? 0 : selectedEventModel;\n const nextEventModel = (selectedEventModel + 1) % this.eventModels.length;\n this.eventModel = this.eventModels[nextEventModel];\n this.eventModelOverwrite = this.eventModel.id !== null;\n }\n\n getPropertyValue(lookup: string): string {\n let value = this[lookup];\n value = value ? value : this.itemDto[lookup];\n return value ? `${value}` : '';\n }\n\n update(property: ItemEditableProperty, value: number | Date): void {\n const newValue = typeof value === 'number' && !isNaN(value) && value < 0 ? 0 : value; // Fix negative values\n switch (property) {\n case 'additionalLeadTime':\n this.additionalLeadTimeOverwrite = true;\n this.additionalLeadTime = +newValue;\n break;\n case 'orderFrequency':\n this.orderFrequencyOverwrite = true;\n this.orderFrequency = +newValue;\n break;\n case 'minStock':\n this.setMinStock(+newValue);\n break;\n case 'maxStock':\n this.setMaxStock(+newValue);\n break;\n case 'confidenceFactor':\n this.setConfidenceFactor(+newValue);\n break;\n case 'skipForecastToDate':\n this.skipForecastToDateOverwrite = true;\n this.skipForecastToDate = new Date(value);\n break;\n case 'forecastFromDate':\n this.forecastFromDateOverwrite = true;\n this.forecastFromDate = new Date(value);\n break;\n case 'forecastToDate':\n this.forecastToDateOverwrite = true;\n this.forecastToDate = new Date(value);\n break;\n default:\n }\n }\n\n reset(property: ItemEditableProperty): void {\n switch (property) {\n case 'additionalLeadTime':\n this.additionalLeadTimeOverwrite = false;\n this.additionalLeadTime = this.getAdditionalLeadTime(this.itemDto);\n break;\n case 'orderFrequency':\n this.orderFrequencyOverwrite = false;\n this.orderFrequency = this.getOrderFrequency(this.itemDto);\n break;\n case 'minStock':\n this.minStockOverwrite = false;\n this.minStock = this.getMinStock(this.itemDto);\n break;\n case 'maxStock':\n this.maxStockOverwrite = false;\n this.maxStock = this.getMaxStock(this.itemDto);\n break;\n case 'confidenceFactor':\n this.confidenceFactorOverwrite = false;\n this.confidenceFactor = this.getConfidenceFactor(this.itemDto);\n break;\n case 'skipForecastToDate':\n this.skipForecastToDateOverwrite = false;\n this.skipForecastToDate = this.getSkipForecastToDate(this.itemDto);\n break;\n case 'forecastFromDate':\n this.forecastFromDateOverwrite = false;\n this.forecastFromDate = this.getForecastFromDate(this.itemDto);\n break;\n case 'forecastToDate':\n this.forecastToDateOverwrite = false;\n this.forecastToDate = this.getForecastToDate(this.itemDto);\n break;\n default:\n }\n }\n\n toUpdateForecastSettingsDto(): ForecastSettingsDTO {\n return {\n overwriteConfidenceFactor: this.confidenceFactorOverwrite,\n newConfidenceFactor: this.confidenceFactorOverwrite ? this.confidenceFactor : undefined,\n overwriteSkipForcToDate: this.skipForecastToDateOverwrite,\n newSkipForcToDate: this.skipForecastToDateOverwrite ? TimezoneService.dateToString(this.skipForecastToDate) : undefined,\n overwriteForecastFromDate: this.forecastFromDateOverwrite,\n newForecastFromDate: this.forecastFromDateOverwrite ? TimezoneService.dateToString(this.forecastFromDate) : undefined,\n overwriteForecastToDate: this.forecastToDateOverwrite,\n newForecastToDate: this.forecastToDateOverwrite ? TimezoneService.dateToString(this.forecastToDate) : undefined,\n overwriteOrderFrequency: this.orderFrequencyOverwrite,\n newOrderFrequency: this.orderFrequencyOverwrite ? this.orderFrequency : undefined,\n overwriteAdditionalLeadTime: this.additionalLeadTimeOverwrite,\n newAdditionalLeadTime: this.additionalLeadTimeOverwrite ? this.additionalLeadTime : undefined,\n overwriteMinStock: this.minStockOverwrite,\n newMinStock: this.minStockOverwrite ? this.minStock : undefined,\n overwriteMaxStock: this.maxStockOverwrite,\n newMaxStock: this.maxStockOverwrite ? this.maxStock : undefined,\n historyLength: 0,\n forecastLength: 0,\n eventModel: this.eventModel.id === null ? { id: undefined, name: undefined } : this.eventModel\n };\n }\n\n private getAdditionalLeadTime(item: ItemDTO): number {\n if (!item) {\n return undefined;\n }\n const value = item.itemDetail.additionalLeadTimeDays;\n const fallback = item.itemDetail.additionalLeadTimeDaysDefault;\n if (value !== null && !isNaN(value)) {\n return value;\n }\n if (fallback !== null && !isNaN(fallback)) {\n return fallback;\n }\n return undefined;\n }\n\n private getOrderFrequency(item: ItemDTO): number {\n if (!item) {\n return undefined;\n }\n const value = item.itemDetail.orderFrequencyDays;\n const fallback = item.itemDetail.orderFrequencyDaysDefault;\n if (value !== null && !isNaN(value)) {\n return value;\n }\n if (fallback !== null && !isNaN(fallback)) {\n return fallback;\n }\n return undefined;\n }\n\n private getMinStock(item: ItemDTO): number {\n if (!item) {\n return undefined;\n }\n const value = item.itemDetail.minStock;\n const fallback = item.itemDetail.minStockDefault;\n if (value !== null && !isNaN(value)) {\n return value;\n }\n if (fallback !== null && !isNaN(fallback)) {\n return fallback;\n }\n return undefined;\n }\n\n private getMaxStock(item: ItemDTO): number {\n if (!item) {\n return undefined;\n }\n const value = item.itemDetail.maxStock;\n const fallback = item.itemDetail.maxStockDefault;\n if (value !== null && !isNaN(value)) {\n return value;\n }\n if (fallback !== null && !isNaN(fallback)) {\n return fallback;\n }\n return undefined;\n }\n\n private getConfidenceFactor(item: ItemDTO): number {\n if (!item) {\n return undefined;\n }\n const value = item.itemDetail.confidenceFactor;\n const fallback = item.itemDetail.confidenceFactorDefault;\n if (value !== null && !isNaN(value)) {\n return value;\n }\n if (fallback !== null && !isNaN(fallback)) {\n return fallback;\n }\n return undefined;\n }\n\n private getSkipForecastToDate(item: ItemDTO): Date | undefined {\n if (!item) {\n return undefined;\n }\n const value = item.itemDetail.skipForcToDate;\n const fallback = item.itemDetail.skipForcToDateDefault;\n if (value) {\n return new Date(value);\n }\n if (fallback) {\n return new Date(fallback);\n }\n return undefined;\n }\n\n private getForecastFromDate(item: ItemDTO): Date | undefined {\n if (!item) {\n return undefined;\n }\n const value = item.itemDetail.forecastFromDate;\n const fallback = item.itemDetail.forecastFromDateDefault;\n if (value) {\n return new Date(value);\n }\n if (fallback) {\n return new Date(fallback);\n }\n return undefined;\n }\n\n private getForecastToDate(item: ItemDTO): Date | undefined {\n if (!item) {\n return undefined;\n }\n const value = item.itemDetail.forecastToDate;\n const fallback = item.itemDetail.forecastToDateDefault;\n if (value) {\n return new Date(value);\n }\n if (fallback) {\n return new Date(fallback);\n }\n return undefined;\n }\n\n private getEventModel(item: ItemDTO): EventModel {\n let eventModel = new EventModel(item.itemDetail.eventModel);\n this.eventModelOverwrite = eventModel.id !== null;\n if (!this.eventModelOverwrite && item.itemDetail.eventModelOptions.length > 0) {\n eventModel = new EventModel(item.itemDetail.eventModelOptions[0]);\n }\n return eventModel;\n }\n\n private setMinStock(value: number): void {\n this.minStock = value;\n this.minStockOverwrite = true;\n }\n\n private setMaxStock(value: number): void {\n this.maxStock = value;\n this.maxStockOverwrite = true;\n }\n\n private setConfidenceFactor(value: number): void {\n let newValue = value < 0 ? 0 : value;\n newValue = newValue > 0 && newValue < 50 ? 50 : newValue;\n newValue = newValue > 99.9999 ? 99.9999 : newValue;\n this.confidenceFactorOverwrite = true;\n this.confidenceFactor = newValue;\n }\n}\n\nexport interface ForecastSettingsDTO {\n overwriteConfidenceFactor: boolean;\n newConfidenceFactor: number;\n overwriteSkipForcToDate: boolean;\n newSkipForcToDate: string;\n overwriteForecastFromDate: boolean;\n newForecastFromDate: string;\n overwriteForecastToDate: boolean;\n newForecastToDate: string;\n overwriteOrderFrequency: boolean;\n newOrderFrequency: number;\n overwriteAdditionalLeadTime: boolean;\n newAdditionalLeadTime: number;\n overwriteMinStock: boolean;\n newMinStock: number;\n overwriteMaxStock: boolean;\n newMaxStock: number;\n historyLength: number;\n forecastLength: number;\n eventModel: EventModelDTO;\n}\n","export interface ItemLabelDTO {\n caption: string;\n color: string;\n info: string;\n}\n\nexport class ItemLabel {\n caption: string;\n color: string;\n info: string;\n\n constructor(label: ItemLabelDTO) {\n this.caption = label.caption;\n this.color = label.color;\n this.info = label.info;\n }\n}\n","export class Location {\n id: number;\n locationNo: string;\n name: string;\n type: string;\n\n constructor(location?: LocationDTO) {\n if (!location) {\n return;\n }\n this.id = location.id;\n this.locationNo = location.locationNo;\n this.name = location.name;\n this.type = location.locationType;\n }\n}\n\nexport interface LocationDTO {\n id: number;\n locationNo: string;\n name: string;\n locationType: string;\n locationGroupId?: number;\n createdAt: string; // Date\n updatedAt: string; // Date\n}\n","import { camelCase } from 'lodash';\nimport { ItemDetailDTO } from 'src/app/item-card/models/item-card-dto.model';\nimport { Location, LocationDTO } from 'src/app/item-card/models/location.model';\n\nexport interface ItemSimpleDTO {\n id: number;\n itemNo: string;\n name: string;\n locationId: number;\n articleNo: string;\n size: string;\n color: string;\n style: string;\n description: string;\n closed: boolean;\n weight: number;\n volume: number;\n salePrice: number;\n wastageDays: number;\n abcGrouping: string;\n createdAt: string;\n extraSafetyStock: number;\n itemGroupId: number;\n masterItemId: number;\n originalItemNo: string;\n primaryVendorId: number;\n responsible: string;\n updatedAt: string;\n location: LocationDTO;\n itemDetail: ItemDetailDTO;\n}\n\nexport class ItemSimple {\n id: number;\n name: string;\n articleNo: string;\n itemNo: string;\n locationId: number;\n location: Location = new Location();\n imageId: string;\n private itemDTO: ItemSimpleDTO;\n\n constructor(item?: ItemSimpleDTO) {\n if (!item) {\n return;\n }\n this.id = item.id;\n this.name = item.name;\n this.articleNo = item.articleNo;\n this.itemNo = item.itemNo;\n this.locationId = item.locationId;\n this.location = new Location(item.location);\n this.imageId = item.itemDetail.imageId;\n this.itemDTO = item;\n }\n\n // eslint-disable-next-line complexity\n getPropertyValue(lookup: string): string {\n if (!lookup || lookup === 'image_id' || lookup.toLowerCase() === 'imageid') {\n return this.imageId;\n }\n let value = this[lookup];\n value = value ? value : this[camelCase(lookup)];\n value = value ? value : this.itemDTO[lookup];\n value = value ? value : this.itemDTO[camelCase(lookup)];\n value = value ? value : this.itemDTO.itemDetail[lookup];\n value = value ? value : this.itemDTO.itemDetail[camelCase(lookup)];\n return value ? `${value}` : '';\n }\n}\n","export class ItemUndeliveredOrder {\n id: number;\n itemId: number;\n purchaseReference: string;\n quantity: number; // Units\n estimatedDeliveryDate: Date;\n expiryDate: Date;\n erpUnits: number;\n connectedUndeliveredUnits: number;\n\n constructor(order?: ItemUndeliveredOrderDTO) {\n if (!order) {\n return;\n }\n this.id = order.id;\n this.itemId = order.itemId;\n this.purchaseReference = order.referenceNo;\n this.quantity = order.units;\n this.estimatedDeliveryDate = order.estimatedDeliveryDate ? new Date(order.estimatedDeliveryDate) : undefined;\n this.expiryDate = order.expireDate ? new Date(order.expireDate) : undefined;\n this.erpUnits = order.erpUnits;\n this.connectedUndeliveredUnits = order.connectedUndeliveredUnits;\n }\n}\n\nexport interface ItemUndeliveredOrderDTO {\n id: number;\n itemId: number;\n estimatedDeliveryDate: string;\n referenceNo: string;\n units: number;\n expireDate: string; // Date\n erpUnits: number;\n connectedUndeliveredUnits: number;\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { EMPTY, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { API_ROOT } from 'src/app/_core/models/api-route.model';\nimport { TranslationsService } from 'src/app/_core/translations.service';\nimport { ChartDataParams } from 'src/app/item-card/models/chart-data-params.model';\nimport {\n ItemCardDTO,\n ItemOrderRouteDTO,\n SerieDataUpdateDTO,\n SerieDataUpdateResponseDTO\n} from 'src/app/item-card/models/item-card-dto.model';\nimport { ItemDetails } from 'src/app/item-card/models/item-details.model';\nimport { ItemLabel, ItemLabelDTO } from 'src/app/item-card/models/item-label.model';\nimport { ItemOrderRoute } from 'src/app/item-card/models/item-order-route.model';\nimport { ItemSimple, ItemSimpleDTO } from 'src/app/item-card/models/item-simple.model';\nimport { ItemUndeliveredOrder, ItemUndeliveredOrderDTO } from 'src/app/item-card/models/item-undelivered-order.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ItemCardService {\n constructor(private http: HttpClient, private toasterService: ToasterService) {}\n\n getItemDetails(itemId: number): Observable {\n return this.getItemCardDto(itemId).pipe(map((itemCardDTO: ItemCardDTO) => new ItemDetails(itemCardDTO.item)));\n }\n\n getSimpleItem(itemId: number): Observable {\n return this.http\n .get(`${API_ROOT}/items/${itemId}`)\n .pipe(map((itemSimpleDTO: ItemSimpleDTO) => new ItemSimple(itemSimpleDTO)));\n }\n\n getUndeliveredOrders(itemId: number): Observable {\n return this.http.get(`${API_ROOT}/items/${itemId}/stock-details`).pipe(\n map((orderDTOs: ItemUndeliveredOrderDTO[]) => {\n return orderDTOs\n .map((order) => new ItemUndeliveredOrder(order))\n .sort((a, b) => a.estimatedDeliveryDate.getTime() - b.estimatedDeliveryDate.getTime());\n })\n );\n }\n\n getItemOrderRoutes(itemId: number): Observable {\n return this.getItemCardDto(itemId).pipe(\n map((itemDTO: ItemCardDTO) => {\n return itemDTO.item.itemOrderRoutes.map((itemOrderRouteDTO: ItemOrderRouteDTO) => {\n return new ItemOrderRoute(itemOrderRouteDTO);\n });\n })\n );\n }\n\n getItemLabelList(itemId: number): Observable {\n return this.http.get(`${API_ROOT}/items/${itemId}/label-list`).pipe(\n map((labelDTOs: ItemLabelDTO[]) => {\n return labelDTOs.map((label) => new ItemLabel(label));\n })\n );\n }\n\n recalculatePurchasePlan(itemId: number, params: ChartDataParams): Observable {\n const url = `${API_ROOT}/items/${itemId}/demand-recalculate?periodType=${params.periodType}&forecastLength=${params.forecastLength}`;\n return this.http.put(url, {}).pipe(\n map(() => {\n this.toasterService.pop('info', TranslationsService.get('PURCHASE_PLAN_RECALCULATED'));\n })\n );\n }\n\n updateSerieData(\n itemId: number,\n params: ChartDataParams,\n chartElementId: number,\n serieDataUpdate: SerieDataUpdateDTO\n ): Observable {\n const url = `${API_ROOT}/items/${itemId}`;\n const chartUrl = `/chart-data/${params.periodType}/${chartElementId}`;\n return this.http.put(`${url}${chartUrl}`, serieDataUpdate);\n }\n\n updateForecastSettings(item: ItemDetails): Observable<{}> {\n if (isNaN(item.id)) {\n return EMPTY;\n }\n const url = `${API_ROOT}/items/${item.id}/forecast-settings`;\n return this.http.put(url, item.toUpdateForecastSettingsDto());\n }\n\n /**\n * This endpoint is *incomplete* and should not be used directly by component classes\n * This function should always be used if using the endpoint /api/items/${itemID}/chart_data/${periodType}?...\n */\n private getItemCardDto(itemId: number, chartParams?: ChartDataParams, orderId?: number): Observable {\n const url = `${API_ROOT}/items/${itemId}`;\n const params = chartParams ? chartParams : { periodType: 'day', historyLength: 0, forecastLength: 0 };\n let chartUrl = `/item-card-data/${params.periodType}?forecastLength=${params.forecastLength}&historyLength=${params.historyLength}`;\n chartUrl = orderId ? `${chartUrl}&orderId=${orderId}` : chartUrl;\n return this.http.get(`${url}${chartUrl}`).pipe(\n map((itemDTO: ItemCardDTO) => {\n itemDTO.chartOptions = JSON.parse(itemDTO.chartOptions as unknown as string);\n itemDTO.chartElementTypes.map((elementType) => {\n elementType.highchartsSeriesOptions = JSON.parse(elementType.highchartsSeriesOptions as unknown as string);\n elementType.highchartsSeriesOptions.name = TranslationsService.get(elementType.highchartsSeriesOptions.name.toUpperCase());\n });\n itemDTO.chartData.forEach((data) => (data.chart_date = new Date(data.chart_date).valueOf()));\n return itemDTO;\n })\n );\n }\n}\n","type PeriodType = 'day' | 'week' | 'month';\n\nexport interface ChartDataParamsDTO {\n periodType: PeriodType;\n history: number;\n forecast: number;\n}\n\nexport class ChartDataParams {\n periodType: PeriodType = 'day';\n private history = 0;\n private forecast = 0;\n\n constructor(params?: ChartDataParamsDTO) {\n if (!params) {\n return;\n }\n this.periodType = params.periodType;\n this.history = params.history;\n this.forecast = params.forecast;\n }\n\n get historyLength(): number {\n return this.history;\n }\n set historyLength(length: number) {\n if (isNaN(length) || length === null) {\n this.history = 0;\n } else if (length < 0) {\n this.history = -1;\n } else {\n this.history = length;\n }\n }\n\n get forecastLength(): number {\n return this.forecast;\n }\n set forecastLength(length: number) {\n if (isNaN(length) || length === null) {\n this.forecast = 0;\n } else if (length < 0) {\n this.forecast = -1;\n } else {\n this.forecast = length;\n }\n }\n\n toDto(): ChartDataParamsDTO {\n return {\n periodType: this.periodType,\n history: this.history,\n forecast: this.forecast\n };\n }\n}\n","import { ResizableView } from 'src/app/_shared/directives/resizable.directive';\nimport { ChartDataParams, ChartDataParamsDTO } from 'src/app/item-card/models/chart-data-params.model';\n\nexport class ItemCardState {\n showChart = true;\n showGrid = false;\n showDetails = false;\n showDeDetails = false;\n imageSidebar: ResizableView = {\n visible: false,\n size: 200\n };\n sidebar: ResizableView = {\n visible: true,\n size: 360\n };\n activeCard = 'chart';\n showTitleItemNo = false; // shows either the itemNo or item name in the card header\n private activeCardIndex = 0;\n private cards = ['chart', 'grid', 'details'];\n private activeChartIndex = 2;\n private periodTypes = { 0: 'DAYS', 1: 'WEEKS', 2: 'MONTHS' };\n private charts: ChartDataParams[] = [\n new ChartDataParams({ periodType: 'day', history: 21, forecast: 7 }),\n new ChartDataParams({ periodType: 'week', history: 12, forecast: 4 }),\n new ChartDataParams({ periodType: 'month', history: 24, forecast: 6 })\n ];\n private jumpInterval = {\n day: 7,\n week: 4,\n month: 6\n };\n\n constructor(state?: ItemCardStateDTO) {\n if (!state) {\n return;\n }\n this.showChart = state.showChart;\n this.showGrid = state.showGrid;\n this.showDetails = state.showDetails;\n this.showTitleItemNo = state.showTitleItemNo;\n this.imageSidebar = state.imageSidebar;\n this.sidebar = state.sidebar;\n this.charts = state.charts.map((params: ChartDataParamsDTO) => new ChartDataParams(params));\n this.activeChartIndex = state.activeChartIndex;\n this.activeCard = state.activeCard;\n this.activeCardIndex = state.activeCardIndex;\n }\n\n get chart(): ChartDataParams {\n return this.charts[this.activeChartIndex];\n }\n get selectedPeriodType(): string {\n return this.periodTypes[this.activeChartIndex];\n }\n\n toDto(): ItemCardStateDTO {\n return {\n showChart: this.showChart,\n showGrid: this.showGrid,\n showDetails: this.showDetails,\n showTitleItemNo: this.showTitleItemNo,\n imageSidebar: this.imageSidebar,\n sidebar: this.sidebar,\n activeChartIndex: this.activeChartIndex,\n charts: this.charts.map((chart) => chart.toDto()),\n activeCard: this.activeCard,\n activeCardIndex: this.activeCardIndex\n };\n }\n\n nextCard(): void {\n this.activeCardIndex = (this.activeCardIndex + 1) % this.cards.length;\n this.activeCard = this.cards[this.activeCardIndex];\n this.hideAllTabs();\n const activeCardMap = { 0: 'showChart', 1: 'showGrid', 2: 'showDetails' };\n this[activeCardMap[this.activeCardIndex]] = true;\n }\n\n nextChart(): void {\n this.activeChartIndex = (this.activeChartIndex + 1) % this.charts.length;\n }\n\n toggleItemTitle(): void {\n this.showTitleItemNo = !this.showTitleItemNo;\n }\n\n toggle(tab: 'showChart' | 'showGrid' | 'showDetails'): void {\n this.hideAllTabs();\n this[tab] = true;\n this.updateActiveCard(tab);\n }\n\n stepIncrementHistory(): void {\n const interval = this.jumpInterval[this.chart.periodType];\n const remainder = this.chart.historyLength % interval;\n this.chart.historyLength += remainder ? interval - remainder : interval;\n this.reassignChart();\n }\n\n stepIncrementForecast(): void {\n const interval = this.jumpInterval[this.chart.periodType];\n const remainder = this.chart.forecastLength % interval;\n this.chart.forecastLength += remainder ? interval - remainder : interval;\n this.reassignChart();\n }\n\n updateHistoryLength(value: number): void {\n this.chart.historyLength = value;\n this.reassignChart();\n }\n\n updateForecastLength(value: number): void {\n this.chart.forecastLength = value;\n this.reassignChart();\n }\n\n /**\n * Used for change detection in child components that receive the chartParams as input\n */\n private reassignChart(): void {\n this.charts[this.activeChartIndex] = new ChartDataParams(this.charts[this.activeChartIndex].toDto());\n }\n\n private hideAllTabs(): void {\n this.showChart = false;\n this.showGrid = false;\n this.showDetails = false;\n this.showDeDetails = false;\n }\n\n private updateActiveCard(tab: 'showChart' | 'showGrid' | 'showDetails'): void {\n const index = { showChart: 0, showGrid: 1, showDetails: 2 };\n this.activeCardIndex = index[tab];\n this.activeCard = this.cards[this.activeCardIndex];\n }\n}\n\nexport interface ItemCardStateDTO {\n showChart: boolean;\n showGrid: boolean;\n showDetails: boolean;\n showTitleItemNo: boolean;\n imageSidebar: ResizableView;\n sidebar: ResizableView;\n activeChartIndex: number;\n charts: ChartDataParamsDTO[];\n activeCard: string;\n activeCardIndex: number;\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'agr-loading-dots',\n templateUrl: './loading-dots.component.html'\n})\nexport class LoadingDotsComponent {\n @Input() color: '' | 'colors' | 'yellow' | 'gray' = 'gray';\n @Input() size: '' | 'big' | 'small' = '';\n}\n","
\n
\n
\n
\n
\n
\n
\n","import * as Highcharts from 'highcharts';\n\nexport const agrDefaultChartOptions: Highcharts.Options = {\n chart: {\n animation: false,\n type: 'column',\n zoomType: 'x',\n spacingBottom: 2,\n panning: true,\n panKey: 'shift',\n style: {\n fontFamily:\n // eslint-disable-next-line max-len\n '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"'\n }\n },\n credits: {\n enabled: false\n },\n exporting: {\n enabled: false\n },\n tooltip: {\n crosshairs: true,\n shared: true,\n valueDecimals: 0\n },\n plotOptions: {\n column: {\n groupPadding: 0.5,\n pointWidth: 5,\n borderWidth: 0,\n opacity: 0.9\n },\n area: {\n marker: {\n enabled: false\n },\n states: {\n hover: {\n enabled: false\n }\n }\n },\n line: {\n states: {\n hover: {\n enabled: false\n }\n }\n },\n series: {\n turboThreshold: 4000,\n animation: false,\n states: {\n inactive: {\n opacity: 1\n }\n }\n }\n },\n yAxis: {\n title: {\n text: undefined\n },\n tickPixelInterval: 30\n },\n xAxis: {\n type: 'datetime',\n labels: {\n rotation: 45,\n align: 'left',\n overflow: 'justify'\n }\n },\n legend: {\n layout: 'vertical',\n align: 'right',\n verticalAlign: 'top',\n x: -10,\n y: 0,\n borderWidth: 0\n },\n title: {\n text: undefined\n }\n};\n\nexport const emptyChartOptions: Highcharts.Options = {\n ...Highcharts.defaultOptions,\n ...{\n title: {\n text: ''\n },\n lang: {\n noData: ''\n },\n credits: {\n enabled: false\n }\n }\n};\n\nexport const editableColumnSeriesOptions: Highcharts.SeriesColumnOptions = {\n cursor: 'pointer',\n dragDrop: {\n draggableY: true,\n dragMinY: 0,\n dragPrecisionY: 1\n },\n minPointLength: 3,\n opacity: 0.8,\n pointWidth: 10,\n shadow: true,\n stickyTracking: true,\n tooltip: {\n distance: 16\n },\n type: 'column',\n zIndex: 11\n};\n\nexport const resetColumnSeriesOptions: Highcharts.SeriesColumnOptions = {\n cursor: undefined,\n dragDrop: {\n draggableY: false\n },\n minPointLength: 0,\n pointWidth: 5,\n opacity: 1,\n shadow: false,\n stickyTracking: false,\n tooltip: {\n distance: undefined\n },\n type: 'column',\n zIndex: 5\n};\n","import { Injectable } from '@angular/core';\n\nimport * as Highcharts from 'highcharts';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { FormatService } from 'src/app/_core/format.service';\nimport { SettingsService } from 'src/app/_core/settings/settings.service';\nimport { TranslationsService } from 'src/app/_core/translations.service';\nimport { agrDefaultChartOptions } from 'src/app/item-card/chart/models/chart-options.model';\nimport { ItemCardService } from 'src/app/item-card/item-card.service';\nimport { ChartDataParams } from 'src/app/item-card/models/chart-data-params.model';\nimport {\n ChartElementTypeDTO,\n ItemCardDTO,\n SerieDataUpdateDTO,\n SerieDataUpdateResponseDTO\n} from 'src/app/item-card/models/item-card-dto.model';\n\ninterface ItemCardChartData {\n options: Highcharts.Options;\n elementTypes: Map;\n}\n@Injectable({\n providedIn: 'root'\n})\nexport class ItemCardChartService {\n constructor(private itemCardService: ItemCardService, private formatService: FormatService, private settingsService: SettingsService) {}\n\n getItemChartSeries(itemId: number, params: ChartDataParams, orderId?: number): Observable {\n return this.getItemChart(itemId, params, orderId).pipe(map((chart) => chart.options.series));\n }\n\n getItemChart(itemId: number, params: ChartDataParams, orderId?: number): Observable {\n // @ts-ignore, getItemCardDto is private for a reason\n return this.itemCardService.getItemCardDto(itemId, params, orderId).pipe(\n map((itemDTO: ItemCardDTO) => {\n let chartOptions = this.getChartDefaultOptions(params);\n chartOptions = Highcharts.merge(chartOptions, itemDTO.chartOptions);\n chartOptions.series = this.getChartSeriesOptions(itemDTO);\n chartOptions.series = this.removeEmptySeries(chartOptions.series);\n this.fixForecastDataPosition(chartOptions.series, params);\n this.fixSafetyStockForOrderPeriod(chartOptions.series, params);\n this.setMinMaxAxisValues(chartOptions);\n const elementTypes = new Map(itemDTO.chartElementTypes.map((elementType) => [elementType.name, elementType]));\n return { elementTypes, options: chartOptions };\n })\n );\n }\n\n updateSerieData(\n itemId: number,\n params: ChartDataParams,\n chartElementId: number,\n serieDataUpdate: SerieDataUpdateDTO\n ): Observable {\n return this.itemCardService.updateSerieData(itemId, params, chartElementId, serieDataUpdate);\n }\n\n private getChartDefaultOptions(chartParams: ChartDataParams): Highcharts.Options {\n const chartOptions = Highcharts.merge(Highcharts.defaultOptions, agrDefaultChartOptions);\n this.setChartPeriodTickInterval(chartOptions, chartParams);\n this.setForecastBackground(chartOptions, chartParams);\n return chartOptions;\n }\n\n /**\n * Finds the highcharts_series_options from the chart_elements database table in the DTO object\n * @param itemDTO DTO object from the database and API\n */\n private getChartSeriesOptions(itemDTO: ItemCardDTO): Highcharts.SeriesOptionsType[] {\n return itemDTO.chartElementTypes.map((elementType) => {\n const series = elementType.highchartsSeriesOptions;\n series.data = itemDTO.chartData\n .filter((data) => data.chart_element_id === elementType.id)\n .map((data) => {\n return { x: data.chart_date, y: data.value };\n });\n return series;\n });\n }\n\n private removeEmptySeries(series: Highcharts.SeriesOptionsType[]): Highcharts.SeriesOptionsType[] {\n return series.filter((serie) => serie.data.length > 0);\n }\n\n /**\n * Move the forecast data points for the current period (month or week) to the beginning of the period.\n * This logically stacks the adjusted sale and forecasted sale for the current period.\n */\n private fixForecastDataPosition(series: Highcharts.SeriesOptionsType[], params: ChartDataParams): void {\n if (params.periodType === 'day') {\n return;\n }\n series\n .filter((serie) => ['forecast'].includes(serie.id))\n .map((serie) => {\n if (params.periodType === 'week') {\n serie.data\n .filter((point: Highcharts.SeriesColumnDataOptions) => this.isCurrentWeek(point.x))\n .map((point: Highcharts.SeriesColumnDataOptions) => (point.x = this.getStartOfWeekForDate(point.x).getTime()));\n } else if (params.periodType === 'month') {\n serie.data\n .filter((point: Highcharts.SeriesColumnDataOptions) => new Date(point.x).getDate() !== 1)\n .map((point: Highcharts.SeriesColumnDataOptions) => (point.x = new Date(point.x).setDate(1).valueOf()));\n }\n });\n }\n\n private isCurrentWeek(millisecondsDate: number): boolean {\n const date = new Date(millisecondsDate);\n const currentWeekFirstDate = this.getStartOfWeekForDate(new Date().setHours(0, 0, 0, 0));\n const nextWeekFirstDate = this.getStartOfWeekForDate(new Date().setHours(0, 0, 0, 0) + 604800000);\n return currentWeekFirstDate.getTime() <= date.getTime() && date.getTime() < nextWeekFirstDate.getTime();\n }\n\n private getStartOfWeekForDate(millisecondsDate: number): Date {\n const date = new Date(millisecondsDate);\n const dateOffset = (date.getDay() + 7 - this.settingsService.startOfWeek()) % 7;\n return new Date(date.setDate(date.getDate() - dateOffset));\n }\n\n /* eslint-disable id-length */\n /* eslint-disable no-import-assign */\n private setChartPeriodTickInterval(chartOptions: Highcharts.Options, chartParams: ChartDataParams): void {\n // @ts-ignore // https://github.com/highcharts/highcharts/issues/9920#issuecomment-462272538\n Highcharts.dateFormats = {\n W: (timestamp) => {\n return `${TranslationsService.get('WEEK_SHORT')}${this.formatService.format(timestamp, 'date:ww')}`;\n },\n y: (timestamp) => this.formatService.format(timestamp, 'date:yy'),\n b: (timestamp) => this.formatService.format(timestamp, 'date:MMM'),\n d: (timestamp) => this.formatService.format(timestamp, 'date:fullDate')\n };\n const period = chartParams.periodType; // day, week or month\n const interval = { day: 1 * 24 * 3600 * 1000, week: 7 * 24 * 3600 * 1000, month: undefined };\n const xAxis: Highcharts.XAxisOptions =\n // Determines if xAxis is an array or just a single object\n chartOptions.xAxis && (chartOptions.xAxis as Highcharts.XAxisOptions[]).length ? chartOptions.xAxis[0] : chartOptions.xAxis;\n xAxis.startOfWeek = this.settingsService.startOfWeek();\n xAxis.gridLineWidth = 1;\n xAxis.tickPixelInterval = 30;\n xAxis.tickInterval = interval[period];\n xAxis.minTickInterval = 28 * 24 * 3600 * 1000;\n const weekFormat = this.settingsService.hideWeekNumber() ? \"%e. %b'%y\" : \"%W - %b'%y\";\n xAxis.dateTimeLabelFormats = {\n day: { main: '%e. %b' },\n week: { main: weekFormat },\n month: { main: \"%b, '%y\" }\n };\n chartOptions.tooltip.dateTimeLabelFormats.millisecond = this.settingsService.hideWeekNumber() ? '%d' : '%d, %W';\n }\n\n private setForecastBackground(options: Highcharts.Options, params: ChartDataParams): Highcharts.Options {\n if (params.forecastLength <= 0) {\n return {};\n }\n const now = new Date();\n now.setHours(0, 0, 0, 0);\n const endDate = {\n day: now.getTime() + (params.forecastLength + 2) * 24 * 3600 * 1000,\n week: now.getTime() + (params.forecastLength + 1) * 7 * 24 * 3600 * 1000,\n month: Date.UTC(now.getFullYear(), now.getMonth() + params.forecastLength + 1)\n };\n (options.xAxis as Highcharts.XAxisOptions).plotBands = [\n {\n color: '#EEEEEE',\n from: now.getTime(),\n to: endDate[params.periodType]\n }\n ];\n }\n\n private fixSafetyStockForOrderPeriod(series: Highcharts.SeriesOptionsType[], params: ChartDataParams): void {\n if (params.forecastLength <= 0) {\n return;\n }\n const safetyStockSeries = series.find((serie) => serie.id === 'safety_stock_for_order_period');\n if (!safetyStockSeries || !safetyStockSeries.data || !safetyStockSeries.data.length) {\n return;\n }\n const safetyStockValue = (safetyStockSeries.data[0] as Highcharts.SeriesColumnDataOptions).y;\n const now = new Date();\n now.setHours(0, 0, 0, 0);\n const endDate = {\n day: now.getTime() + params.forecastLength * 24 * 3600 * 1000,\n week: now.getTime() + params.forecastLength * 7 * 24 * 3600 * 1000 - now.getDay() * 24 * 3600 * 1000,\n month: Date.UTC(now.getFullYear(), now.getMonth() + params.forecastLength)\n };\n safetyStockSeries.data = [\n { x: now.getTime(), y: safetyStockValue },\n { x: endDate[params.periodType], y: safetyStockValue }\n ];\n }\n\n private setMinMaxAxisValues(chartOptions: Highcharts.Options): void {\n const xAxis: Highcharts.XAxisOptions =\n // Determines if xAxis is an array or just a single object\n chartOptions.xAxis && (chartOptions.xAxis as Highcharts.XAxisOptions[]).length ? chartOptions.xAxis[0] : chartOptions.xAxis;\n xAxis.max = Math.max(...chartOptions.series.map((serie) => Math.max(...serie.data.map((data) => data.x))));\n xAxis.min = Math.min(...chartOptions.series.map((serie) => Math.min(...serie.data.map((data) => data.x))));\n }\n}\n","import { camelCase } from 'lodash';\n\nimport { TimezoneService } from 'src/app/_core/timezone.service';\nimport { ChartDataDTO, ChartElementTypeDTO, SerieDataUpdateDTO } from 'src/app/item-card/models/item-card-dto.model';\n\n/**\n * The properties of an Item that share the same date. A vertical (chart y-point) view of Item Data/Details.\n */\nexport class ItemDataPoint {\n date: Date;\n sale: number;\n saleComment: string;\n originalSale: number;\n stockHistory: number;\n forecast: number;\n reserved: number;\n knownDemand: number;\n estimatedStock: number;\n safetyStockForOrderPeriod: number;\n undelivered: number;\n orderQty: number;\n purchasePlanOrderQty: number;\n bomDemand: number;\n minStockLevel: number;\n plannerBaseline: number;\n plannerPromo: number;\n stockout: number;\n purchasePlanCalculated: number;\n demandFromStores: number;\n plannedOrderQty: number;\n\n isAggregatedOverPeriod = false;\n isToday = false;\n\n static highchartsPointToUpdateDto(point: Highcharts.Point): SerieDataUpdateDTO {\n return {\n newValue: point.y,\n utcDataInt: TimezoneService.chartDataMillisecondsToServerTime(new Date(point.x).getTime()) / 1000\n };\n }\n\n /**\n * ItemDataPoint is used by the ItemCardGrid and partially with the chart when updating.\n * @param chartDataDTO as constructed within the service from API\n */\n constructor(chartDataDTO?: ChartDataDTO, chartElementTypes?: ChartElementTypeDTO[]) {\n if (!chartDataDTO) {\n return;\n }\n this.date = chartDataDTO.chart_date ? new Date(chartDataDTO.chart_date) : undefined;\n this.update(chartDataDTO, chartElementTypes);\n }\n\n toSerieDataUpdateDto(): SerieDataUpdateDTO {\n return {\n changeComment: this.saleComment === undefined ? '' : this.saleComment,\n chartItemSelect: undefined, // Not used by API\n forecastLength: 0, // Not used by API\n historyLength: 0, // Not used by API\n newValue: this.getAdjustedSale(),\n utcDataInt: TimezoneService.chartDataMillisecondsToServerTime(this.date.getTime()) / 1000\n };\n }\n\n update(chartDataDTO: ChartDataDTO, chartElementTypes?: ChartElementTypeDTO[]): void {\n // Map to correct class property based on chart_element_id, return gracefully if no matching ID\n const elementType = chartElementTypes.find((chartElementType) => chartElementType.id === chartDataDTO.chart_element_id);\n if (!elementType) {\n console.warn(`AGR: chart_data ${chartDataDTO} does not belong to any serie (chart_element_type).`);\n return;\n }\n const property = elementType && elementType.name ? camelCase(elementType.name) : 'undefined';\n this[property] = chartDataDTO.value;\n if (chartDataDTO.chart_element_id === 1) {\n this.saleComment = chartDataDTO.description;\n }\n this.isAggregatedOverPeriod = this.isAggregatedOverPeriod || elementType.aggregatedOverPeriod;\n this.setIsToday();\n }\n\n private getAdjustedSale(): number {\n const undefinedSale = isNaN(this.sale);\n const adjustedSale = this.sale !== this.originalSale;\n if (undefinedSale && this.saleComment) {\n return this.originalSale;\n }\n if (this.saleComment) {\n return this.sale;\n }\n if (undefinedSale || !adjustedSale) {\n return undefined;\n }\n return this.sale;\n }\n\n private setIsToday(): void {\n const today = new Date();\n this.isToday =\n this.date.getDate() === today.getDate() &&\n this.date.getMonth() === today.getMonth() &&\n this.date.getFullYear() === today.getFullYear();\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'agr-no-data-to-display',\n template: `\n
\n
\n
\n \"App\n
{{ 'NO_DATA_TO_DISPLAY' | agrTranslate }}
\n
\n
\n
\n `,\n styleUrls: ['./no-data-to-display.component.scss']\n})\nexport class NoDataToDisplayComponent {}\n","
\n \n
\n \n \n \n \n \n \n \n \n \n
\n\n \n \n
\n
\n\n\n","/* eslint-disable max-classes-per-file */\nimport { ApplicationRef, Component, ElementRef, Input, OnChanges, OnDestroy, OnInit, SimpleChanges, ViewChild } from '@angular/core';\nimport * as Highcharts from 'highcharts';\nimport * as draggablePoints from 'highcharts/modules/draggable-points';\n// @ts-ignore\ndraggablePoints(Highcharts);\nimport { isNil } from 'lodash';\nimport { Observable, Subscription } from 'rxjs';\n\nimport { GlobalEventsService } from 'src/app/_core/global-events.service';\nimport { StoreService } from 'src/app/_core/store.service';\nimport { ItemCardChartService } from 'src/app/item-card/chart/item-card-chart.service';\nimport {\n editableColumnSeriesOptions,\n emptyChartOptions,\n resetColumnSeriesOptions\n} from 'src/app/item-card/chart/models/chart-options.model';\nimport { ItemDataPoint } from 'src/app/item-card/grid/models/item-data-point.model';\nimport { ItemCardService } from 'src/app/item-card/item-card.service';\nimport { ChartDataParams } from 'src/app/item-card/models/chart-data-params.model';\nimport { ChartElementTypeDTO } from 'src/app/item-card/models/item-card-dto.model';\n\ninterface ChartStateDTO {\n serieVisibility: [string, boolean][]; // Key value array\n legendEnabled: boolean;\n showNegative: boolean;\n}\nclass ChartState {\n serieVisibility: Map;\n legendEnabled: boolean;\n showNegative: boolean;\n constructor(chartState: ChartStateDTO) {\n Object.assign(this, chartState);\n this.serieVisibility = new Map(chartState.serieVisibility);\n }\n toDto(): ChartStateDTO {\n return { ...this, ...{ serieVisibility: Array.from(this.serieVisibility) } };\n }\n}\n\ninterface DoubleClicker {\n clickedOnce: boolean;\n timer: NodeJS.Timer;\n timeBetweenClicks: number;\n}\n\n@Component({\n selector: 'agr-item-card-chart',\n templateUrl: './item-card-chart.component.html',\n styleUrls: ['./item-card-chart.component.scss']\n})\nexport class ItemCardChartComponent implements OnInit, OnChanges, OnDestroy {\n @ViewChild('chartContainer', { static: true }) chartContainerEl: ElementRef;\n @Input() itemId?: number;\n @Input() orderId?: number;\n @Input() chartParams: ChartDataParams;\n @Input() refreshItemEvent: Observable;\n @Input() refreshDetailsColumnEvent: Observable;\n refreshItemSubscription: Subscription;\n refreshDetailsColumnSubscription: Subscription;\n\n chart: Highcharts.Chart;\n elementTypes: Map = new Map();\n editMode = false;\n stateKey = 'item-card.chart';\n state = new ChartState({\n serieVisibility: [],\n legendEnabled: true,\n showNegative: false\n });\n doubleClicker: DoubleClicker; // Used to determine single or double click on chart series\n isEmpty = false;\n get isLoading(): boolean {\n return this.isLoadingChart && !!this.itemId;\n }\n private isLoadingChart = true;\n\n constructor(\n private itemCardChartService: ItemCardChartService,\n private itemCardService: ItemCardService,\n private storeService: StoreService,\n private applicationRef: ApplicationRef,\n private globalEventService: GlobalEventsService\n ) {}\n\n ngOnInit(): void {\n this.loadState();\n this.refreshItemSubscription = this.refreshItemEvent.subscribe(() => this.updateChart());\n this.refreshDetailsColumnSubscription = this.refreshDetailsColumnEvent.subscribe(() => {\n this.updateChart();\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.itemId || changes.orderId || changes.chartParams) {\n this.updateChart();\n }\n }\n\n ngOnDestroy(): void {\n this.refreshItemSubscription.unsubscribe();\n }\n\n toggleEditMode(): void {\n this.editMode = !this.editMode;\n this.editMode ? this.startEditingChart() : this.stopEditingChart();\n }\n\n toggleLegend(): void {\n this.state.legendEnabled = !this.state.legendEnabled;\n this.chart.options.legend.enabled = this.state.legendEnabled;\n this.chart.legend.update(this.chart.options.legend);\n this.saveState();\n }\n\n toggleNegative(): void {\n this.state.showNegative = !this.state.showNegative;\n this.applyNegativeValuesVisibility();\n this.saveState();\n }\n\n private loadState(): void {\n const stateDto = this.storeService.load(this.stateKey, this.state.toDto()) as ChartStateDTO;\n this.state = new ChartState(stateDto);\n }\n\n private saveState(): void {\n this.storeService.set(this.stateKey, this.state.toDto());\n }\n\n private updateChart(): void {\n if (!isNil(this.itemId)) {\n this.isEmpty = false;\n this.getItemChart();\n } else {\n this.createChart(emptyChartOptions);\n this.isEmpty = true;\n }\n }\n\n private getItemChart(): void {\n this.isLoadingChart = true;\n this.itemCardChartService.getItemChart(this.itemId, this.chartParams, this.orderId).subscribe((chart) => {\n this.isLoadingChart = false;\n this.elementTypes = chart.elementTypes;\n this.createChart(chart.options);\n this.applicationRef.tick(); // Refresh DOM when page is in background\n });\n }\n\n private onChartInstance(chart: Highcharts.Chart): void {\n this.chart = chart;\n this.applyChartSeriesVisibility();\n this.applyNegativeValuesVisibility();\n if (this.editMode) {\n this.startEditingChart();\n }\n this.chart.reflow();\n }\n\n private createChart(chartOptions: Highcharts.Options): void {\n let options = chartOptions;\n options.legend.enabled = this.state.legendEnabled;\n options = Highcharts.merge(chartOptions, this.addChartEventCallbacks());\n this.chart = new Highcharts.Chart(this.chartContainerEl.nativeElement, options, this.onChartInstance.bind(this));\n }\n\n private applyChartSeriesVisibility(): void {\n if (!this.chart.options.series) {\n return;\n }\n this.chart.options.series.map((serie: Highcharts.SeriesColumnOptions) => {\n if (!this.state.serieVisibility.has(serie.name)) {\n this.state.serieVisibility.set(serie.name, !isNil(serie.visible) ? serie.visible : true);\n }\n serie.visible = this.state.serieVisibility.get(serie.name);\n });\n this.chart.update(this.chart.options);\n }\n\n private applyNegativeValuesVisibility(): void {\n (this.chart.options.yAxis as Highcharts.YAxisOptions).min = this.state.showNegative ? undefined : 0;\n this.chart.yAxis.map((yAxis) => yAxis.update(this.chart.options.yAxis as Highcharts.YAxisOptions));\n }\n\n private addChartEventCallbacks(): Highcharts.Options {\n return { plotOptions: { series: { events: { hide: this.onLegendItemToggle.bind(this), show: this.onLegendItemToggle.bind(this) } } } };\n }\n\n private onLegendItemToggle(): void {\n this.chart.legend.allItems.map((serie: Highcharts.Series) => {\n this.state.serieVisibility.set(serie.name, serie.visible);\n });\n this.saveState();\n }\n\n private startEditingChart(): void {\n if (!this.getEditableSeries()) {\n return;\n }\n this.setChartEditMode();\n this.getEditableSeries().forEach((serie) => {\n (this.chart.get(serie) as Highcharts.Series).update(editableColumnSeriesOptions);\n (this.chart.get(serie) as Highcharts.Series).update(this.addEditableSeriesEventCallbacks());\n });\n }\n\n private stopEditingChart(): void {\n if (!this.getEditableSeries()) {\n return;\n }\n this.resetChartEditMode();\n this.getEditableSeries().forEach((serie) => (this.chart.get(serie) as Highcharts.Series).update(resetColumnSeriesOptions));\n }\n\n private setChartEditMode(): void {\n this.chart.series.map((serie) => (serie.options.enableMouseTracking = false));\n const mouseTrackingSeries = Array.from(new Set(['sale', 'original_sale', 'forecast', ...this.getEditableSeries()]));\n mouseTrackingSeries.map((serieId) => {\n if (this.chart.get(serieId)) {\n (this.chart.get(serieId) as Highcharts.Series).options.enableMouseTracking = true;\n }\n });\n this.chart.zoomOut(); // Zoom out and then disable zoom\n this.chart.options.chart.zoomType = undefined;\n }\n\n private resetChartEditMode(): void {\n this.chart.series.map((serie) => (serie.options.enableMouseTracking = true));\n this.chart.options.chart.zoomType = 'x';\n }\n\n private addEditableSeriesEventCallbacks(): Highcharts.SeriesColumnOptions {\n return { type: 'column', point: { events: { click: this.determineClick.bind(this), drop: this.onPointDrop.bind(this) } } };\n }\n\n private determineClick(event: Highcharts.SeriesPointClickEventObject): void {\n if (!this.doubleClicker) {\n this.resetDoubleClick();\n }\n if (this.doubleClicker.clickedOnce && this.doubleClicker.timer) {\n this.resetDoubleClick();\n this.onPointDoubleClick(event);\n } else {\n this.doubleClicker.clickedOnce = true;\n this.doubleClicker.timer = setTimeout(() => {\n // if (this.doubleClicker.clickedOnce) { // Clicked once }\n this.resetDoubleClick();\n }, this.doubleClicker.timeBetweenClicks);\n }\n }\n\n private resetDoubleClick(): void {\n this.doubleClicker = { clickedOnce: false, timer: undefined, timeBetweenClicks: 250 };\n }\n\n private onPointDoubleClick(event: Highcharts.SeriesPointClickEventObject): void {\n this.resetSale(event.point);\n }\n private onPointDrop(event: Highcharts.SeriesPointDropEventObject): void {\n this.updateSerieData(event.target);\n }\n\n private resetSale(point: Highcharts.Point): void {\n this.chart.series.filter((serie) => serie.options.id === 'original_sale').map((serie) => serie.setVisible(true));\n const originalSale = this.getOriginalSaleAtPoint(point);\n point.update({ y: originalSale ? originalSale.y : 0 });\n const saleUpdateDto = ItemDataPoint.highchartsPointToUpdateDto(point);\n this.itemCardService.updateSerieData(this.itemId, this.chartParams, 1, saleUpdateDto).subscribe(() => {\n this.globalEventService.refreshOtherItemCards(this.itemId);\n this.refreshChartSeries();\n });\n }\n\n private updateSerieData(point: Highcharts.Point): void {\n const serieId = point.series.options.id;\n const chartElementId = this.elementTypes.get(serieId).id;\n const dataUpdateDTO = ItemDataPoint.highchartsPointToUpdateDto(point);\n this.itemCardService.updateSerieData(this.itemId, this.chartParams, chartElementId, dataUpdateDTO).subscribe(() => {\n this.globalEventService.refreshOtherItemCards(this.itemId);\n this.refreshChartSeries();\n });\n }\n\n private getOriginalSaleAtPoint(point: Highcharts.Point): Highcharts.Point {\n const originalSaleSeries = this.chart.get('original_sale') as Highcharts.Series;\n return originalSaleSeries ? originalSaleSeries.data.find((originalSale) => originalSale.x === point.x) : undefined;\n }\n\n private refreshChartSeries(): void {\n this.itemCardChartService.getItemChartSeries(this.itemId, this.chartParams, this.orderId).subscribe((series) => {\n series.map((serie) => {\n const currentSerie = this.chart.get(serie.id);\n if (currentSerie) {\n (currentSerie as Highcharts.Series).setData(serie.data);\n }\n });\n });\n }\n\n private getEditableSeries(): string[] {\n return Array.from(this.elementTypes.values())\n .filter((elementType) => elementType.editable)\n .map((elementType) => elementType.name);\n }\n}\n","import { CellClassParams, ColDef, ColumnFunctionCallbackParams, GridOptions } from '@ag-grid-community/core';\nimport { Injectable } from '@angular/core';\nimport { camelCase, isNil } from 'lodash';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { AuthService } from 'src/app/_core/authorization/auth.service';\nimport { SettingsService } from 'src/app/_core/settings/settings.service';\nimport { TranslationsService } from 'src/app/_core/translations.service';\nimport { AgGridOptionsService } from 'src/app/_shared/ag-grid/ag-grid-options.service';\nimport { ItemDataPoint } from 'src/app/item-card/grid/models/item-data-point.model';\nimport { ItemCardService } from 'src/app/item-card/item-card.service';\nimport { ChartDataParams } from 'src/app/item-card/models/chart-data-params.model';\nimport { ChartDataDTO, ChartElementTypeDTO, ItemCardDTO, SerieDataUpdateResponseDTO } from 'src/app/item-card/models/item-card-dto.model';\n\nexport interface ItemCardGridData {\n itemDataPoints: ItemDataPoint[];\n colDefs: ColDef[];\n chartElementTypes: ChartElementTypeDTO[];\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ItemCardGridService {\n colDefs: ColDef[] = [\n { field: 'date', headerName: 'DATE', type: 'date' },\n { field: 'sale', headerName: 'SALE', type: 'number', editable: this.isEditable.bind(this) },\n { field: 'saleComment', headerName: 'SALE_COMMENT', type: 'string', editable: this.isEditable.bind(this) },\n { field: 'originalSale', headerName: 'ORIGINAL_SALE', type: 'number' },\n { field: 'stockHistory', headerName: 'STOCK_HISTORY', hide: true, type: 'number' },\n { field: 'forecast', headerName: 'FORECAST', type: 'number' },\n { field: 'reserved', headerName: 'RESERVED', hide: true, type: 'number' },\n { field: 'knownDemand', headerName: 'KNOWN_DEMAND', hide: true, type: 'number' },\n { field: 'estimatedStock', headerName: 'ESTIMATED_STOCK', hide: true, type: 'number' },\n { field: 'safetyStockForOrderPeriod', headerName: 'SAFETY_STOCK_FOR_ORDER_PERIOD', hide: true, type: 'number' },\n { field: 'undelivered', headerName: 'UNDELIVERED', hide: true, type: 'number' },\n { field: 'orderQty', headerName: 'ORDER_QTY', hide: true, type: 'number' },\n { field: 'purchasePlanOrderQty', headerName: 'PURCHASE_PLAN_ORDER_QTY', hide: true, type: 'number' },\n { field: 'bomDemand', headerName: 'BOM_DEMAND', hide: true, type: 'number' },\n { field: 'minStockLevel', headerName: 'MINIMUM_STOCK_LEVEL', type: 'number' },\n { field: 'plannerBaseline', headerName: 'BASELINE_PLAN', hide: true, type: 'number' },\n { field: 'plannerPromo', headerName: 'PLANNER_PROMO', hide: true, type: 'number' },\n { field: 'stockout', headerName: 'STOCKOUT_COMMITTED', hide: true, type: 'number' },\n { field: 'purchasePlanCalculated', headerName: 'PURCHASE_PLAN_CALCULATED', hide: true, type: 'number' },\n { field: 'demandFromStores', headerName: 'DEMAND_FROM_STORES', hide: true, type: 'number' },\n { field: 'plannedOrderQty', headerName: 'PLANNED_ORDER_QTY', hide: true, type: 'number' }\n ];\n\n constructor(\n private authService: AuthService,\n private agGridOptionsService: AgGridOptionsService,\n private itemCardService: ItemCardService,\n private settingsService: SettingsService\n ) {}\n\n getGridDataByPeriod(itemId: number, chartParams: ChartDataParams, orderId?: number): Observable {\n const dayOfWeek = this.settingsService.startOfWeek();\n return this.getGridData(itemId, chartParams, orderId).pipe(\n map((itemCardGridData: ItemCardGridData) => {\n this.addStockValues(itemCardGridData.itemDataPoints);\n this.aggregateSummedSeriesForPeriod(itemCardGridData.itemDataPoints, chartParams, itemCardGridData.chartElementTypes);\n if (chartParams.periodType === 'week') {\n itemCardGridData.itemDataPoints = weekFilter(itemCardGridData.itemDataPoints, dayOfWeek);\n }\n if (chartParams.periodType === 'month') {\n itemCardGridData.itemDataPoints = monthFilter(itemCardGridData.itemDataPoints);\n }\n return itemCardGridData;\n })\n );\n\n function weekFilter(itemDataPoints: ItemDataPoint[], weekday: number = 1): ItemDataPoint[] {\n return itemDataPoints.filter((itemDataPoint) => itemDataPoint.date.getDay() === weekday || itemDataPoint.isAggregatedOverPeriod);\n }\n\n function monthFilter(itemDataPoints: ItemDataPoint[]): ItemDataPoint[] {\n return itemDataPoints.filter((itemDataPoint) => itemDataPoint.date.getDate() === 1 || itemDataPoint.isAggregatedOverPeriod);\n }\n }\n\n updateItemDataPoint(itemId: number, params: ChartDataParams, itemData: ItemDataPoint): Observable {\n return this.itemCardService.updateSerieData(itemId, params, 1, itemData.toSerieDataUpdateDto());\n }\n\n getGridOptions(): GridOptions {\n const gridOptions = this.agGridOptionsService.getDataOptions();\n gridOptions.defaultColDef.enableRowGroup = false;\n gridOptions.rowGroupPanelShow = 'never';\n gridOptions.defaultColDef.cellClassRules.edited = (params) => {\n if (!params.node || !params.node.data || params.node.group) {\n return false;\n }\n return this.isEdited(params);\n };\n gridOptions.defaultColDef.cellClassRules.today = (params) => {\n if (!params.node || !params.node.data || params.node.group) {\n return false;\n }\n return (params.node.data as ItemDataPoint).isToday;\n };\n return gridOptions;\n }\n\n private getGridData(itemId: number, params: ChartDataParams, orderId?: number): Observable {\n // @ts-ignore, getItemCardDto is private for a reason\n return this.itemCardService.getItemCardDto(itemId, params, orderId).pipe(\n map((itemDTO: ItemCardDTO) => {\n const colDefs = this.getColumnDefs(itemDTO.chartElementTypes);\n const itemsMap = new Map();\n itemDTO.chartData.map((chartData: ChartDataDTO) => {\n if (itemsMap.has(chartData.chart_date)) {\n itemsMap.get(chartData.chart_date).update(chartData, itemDTO.chartElementTypes);\n } else {\n itemsMap.set(chartData.chart_date, new ItemDataPoint(chartData, itemDTO.chartElementTypes));\n }\n });\n return {\n colDefs,\n itemDataPoints: Array.from(itemsMap.values()),\n chartElementTypes: itemDTO.chartElementTypes\n };\n })\n );\n }\n\n private getColumnDefs(chartElementTypes: ChartElementTypeDTO[]): ColDef[] {\n let colDef;\n chartElementTypes.map((elementType) => {\n colDef = this.colDefs.find((colDef) => colDef.field === camelCase(elementType.name));\n if (colDef) {\n colDef.headerName = elementType.chartLabel;\n return;\n }\n this.colDefs.push({\n field: camelCase(elementType.name),\n headerName: elementType.chartLabel,\n headerTooltip: elementType.description || elementType.chartLabel,\n type: 'number'\n });\n });\n this.colDefs.map((column: ColDef) => {\n if (column.headerName) {\n column.headerName = TranslationsService.get(column.headerName);\n column.headerTooltip = column.headerName;\n }\n });\n return this.colDefs;\n }\n\n private isEdited(params: CellClassParams): boolean {\n const data = params.node.data as ItemDataPoint;\n switch (params.colDef.field) {\n case 'sale':\n const hasOriginalSale = data.sale === 0 && data.originalSale === undefined;\n const adjustedSale = data.sale !== data.originalSale;\n return !hasOriginalSale && adjustedSale;\n case 'saleComment':\n return !!data.saleComment;\n default:\n return false;\n }\n }\n\n private isEditable(params: ColumnFunctionCallbackParams): boolean {\n return params.data.date.valueOf() < Date.now() && this.authService.hasFeature('itemCard.mod');\n }\n\n /**\n * Adds stock values in the past for all items so they are visible in the grid even though the date doesn't contain any sales.\n */\n private addStockValues(items: ItemDataPoint[]): void {\n let lastStock: number;\n items.forEach((item) => {\n if (item.date < new Date()) {\n item.stockHistory = lastStock = isNaN(item.stockHistory) ? lastStock : item.stockHistory;\n }\n });\n }\n\n /**\n * Aggregate series on weekly and monthly level in the grid for the period where the aggregation function is 'sum' and the series\n * isn't already aggregated in the database function (i.e. aggregate_over_period === false).\n * Values are not aggregated in the database function because we want to see the values on the day level in the chart,\n * in the grid however, we'd like to see these values aggregated, thus implementing the sum functionality here.\n */\n // eslint-disable-next-line max-lines-per-function\n private aggregateSummedSeriesForPeriod(items: ItemDataPoint[], chartParams: ChartDataParams, elementTypes: ChartElementTypeDTO[]): void {\n if (chartParams.periodType === 'day') {\n return;\n }\n const summedSeries = elementTypes\n .filter((type) => type.aggregationCalcFunc === 'sum' && !type.aggregatedOverPeriod && type.name !== 'stockout')\n .map((type) => camelCase(type.name));\n let periodSum = new Map(summedSeries.map((serie) => [serie, undefined]));\n let periodItem: ItemDataPoint = items[0];\n items.forEach((item) => {\n if (isNextPeriod(item, periodItem, chartParams)) {\n periodSum.forEach((value, key) => {\n if (!isNil(value)) {\n periodItem[key] = value;\n }\n });\n periodSum = new Map(summedSeries.map((serie) => [serie, undefined]));\n periodItem = item;\n }\n summedSeries.forEach((key) => {\n if (!isNil(item[key])) {\n const sum = isNil(periodSum.get(key)) ? item[key] : periodSum.get(key) + +item[key];\n periodSum.set(key, sum);\n }\n });\n });\n\n function isNextPeriod(currItem: ItemDataPoint, periodItem: ItemDataPoint, chartParams: ChartDataParams): boolean {\n if (currItem.date.valueOf() <= periodItem.date.valueOf()) {\n return false;\n }\n if (chartParams.periodType === 'week') {\n const sixDaysPlus = 1000 * 60 * 60 * 24 * 6.5;\n return currItem.date.getDay() === periodItem.date.getDay() || currItem.date.valueOf() > periodItem.date.valueOf() + sixDaysPlus;\n }\n const isFirstOfMonth = currItem.date.getDate() === 1;\n const isMonthAhead =\n currItem.date.getMonth() > periodItem.date.getMonth() || currItem.date.getFullYear() > periodItem.date.getFullYear();\n return isFirstOfMonth || isMonthAhead;\n }\n }\n}\n","import { AgGridAngular } from '@ag-grid-community/angular';\nimport { AllModules, CellValueChangedEvent, GridOptions } from '@ag-grid-enterprise/all-modules';\nimport { ApplicationRef, Component, Input, OnChanges, OnDestroy, OnInit, SimpleChanges, ViewChild } from '@angular/core';\nimport { isNil } from 'lodash';\nimport { Observable, Subscription } from 'rxjs';\n\nimport { GlobalEventsService } from 'src/app/_core/global-events.service';\nimport { AgGridStateService } from 'src/app/_shared/ag-grid/ag-grid-state.service';\nimport { AgGridService } from 'src/app/_shared/ag-grid/ag-grid.service';\nimport { ItemCardGridService } from 'src/app/item-card/grid/item-card-grid.service';\nimport { ItemDataPoint } from 'src/app/item-card/grid/models/item-data-point.model';\nimport { ChartDataParams } from 'src/app/item-card/models/chart-data-params.model';\n\n@Component({\n selector: 'agr-item-card-grid',\n templateUrl: './item-card-grid.component.html'\n})\nexport class ItemCardGridComponent implements OnInit, OnChanges, OnDestroy {\n @ViewChild('agGrid', { static: true }) agGrid: AgGridAngular;\n @Input() itemId: number;\n @Input() orderId: number;\n @Input() chartParams: ChartDataParams;\n @Input() refreshItemEvent: Observable;\n @Input() refreshDetailsColumnEvent: Observable;\n refreshItemSubscription: Subscription;\n refreshDetailsColumnSubscription: Subscription;\n\n gridModules = AllModules;\n gridOptions: GridOptions;\n rowData: ItemDataPoint[] = [];\n persKey = 'item-data.grid';\n\n constructor(\n private agGridService: AgGridService,\n private agGridStateService: AgGridStateService,\n private applicationRef: ApplicationRef,\n private globalEventService: GlobalEventsService,\n private itemCardGridService: ItemCardGridService\n ) {}\n\n ngOnInit(): void {\n this.initializeGrid();\n this.refreshItemSubscription = this.refreshItemEvent.subscribe(() => this.updateGrid());\n this.refreshDetailsColumnSubscription = this.refreshDetailsColumnEvent.subscribe(() => {\n this.updateGrid();\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!isNil(changes.itemId) && changes.itemId.currentValue !== changes.itemId.previousValue) {\n if (!isNil(changes.itemId.currentValue)) {\n this.showGridLoadingOverlay();\n } else {\n this.emptyGrid();\n }\n }\n if (changes.itemId || changes.orderId || changes.chartParams) {\n this.updateGrid();\n }\n }\n\n ngOnDestroy(): void {\n this.refreshItemSubscription.unsubscribe();\n }\n\n onGridReady(): void {\n this.agGridService.setFloatingFilter(false, this.agGrid);\n const agGridElementId = 'item-card-grid';\n this.agGridService.addEnterBtnEvents(this.agGrid, agGridElementId);\n }\n\n loadGridState(): void {\n this.agGridStateService.loadGridState(this.persKey, this.agGrid, false);\n this.agGridStateService.monitorChanges(this.persKey, this.agGrid);\n }\n\n onCellEdited(cellEvent: CellValueChangedEvent): void {\n this.itemCardGridService.updateItemDataPoint(this.itemId, this.chartParams, cellEvent.data).subscribe(() => {\n const rowNode = this.agGrid.api.getRowNode(cellEvent.node.id);\n this.itemCardGridService.getGridDataByPeriod(this.itemId, this.chartParams, this.orderId).subscribe((itemCardGridData) => {\n rowNode.setData(itemCardGridData.itemDataPoints[rowNode.rowIndex]);\n this.updateForecast(itemCardGridData.itemDataPoints);\n this.agGrid.api.refreshCells();\n this.globalEventService.refreshOtherItemCards(this.itemId);\n });\n });\n }\n\n private updateGrid(): void {\n if (!isNaN(this.itemId)) {\n this.getGridData();\n }\n }\n\n private initializeGrid(): void {\n this.gridOptions = this.itemCardGridService.getGridOptions();\n this.agGridService.addCustomColumnMenu(this.persKey, this.agGrid);\n }\n\n private getGridData(): void {\n this.itemCardGridService.getGridDataByPeriod(this.itemId, this.chartParams, this.orderId).subscribe((itemCardGridData) => {\n this.agGrid.api.setColumnDefs(itemCardGridData.colDefs);\n this.loadGridState();\n this.setColumnVisibility(itemCardGridData.itemDataPoints);\n this.rowData = itemCardGridData.itemDataPoints;\n if (this.agGrid.api) {\n this.agGrid.api.hideOverlay();\n }\n this.applicationRef.tick(); // Refresh DOM when page is in background\n });\n }\n\n private emptyGrid(): void {\n this.agGrid.api.setRowData([]);\n this.applicationRef.tick();\n this.globalEventService.refreshOtherItemCards(this.itemId);\n }\n\n private updateForecast(itemDataPoints: ItemDataPoint[]): void {\n this.agGrid.api.forEachNode((rowNode, index) => {\n if ((rowNode.data as ItemDataPoint).forecast !== itemDataPoints[index].forecast) {\n rowNode.setData(itemDataPoints[index]);\n }\n });\n }\n\n private showGridLoadingOverlay(): void {\n if (this.agGrid && this.agGrid.api) {\n this.agGrid.api.showLoadingOverlay();\n }\n }\n\n /**\n * Hides/Shows columns so that only columns are visible that contain data, like in the chart.\n */\n private setColumnVisibility(itemDataPoints: ItemDataPoint[]): void {\n const columnsWithValues = itemDataPoints.reduce((acc, curr) => {\n Object.keys(curr).map((key) => acc.add(key));\n return acc;\n }, new Set());\n this.agGrid.columnApi.getAllColumns().map((column) => {\n const visible = columnsWithValues.has(column.getId());\n setTimeout(() => {\n this.agGrid.columnApi.setColumnVisible(column, visible);\n });\n });\n }\n}\n","\n\n\n","import { DetailsColumn } from 'src/app/item-card/details/details-columns/details-column-model';\n\nexport class ItemCardDetailsPers {\n sidebarHiddenColumns: string[];\n sidebarHiddenGroups: string[];\n hideExpStock: boolean;\n\n constructor(sidebarHiddenColumns?: string[], sidebarHiddenGroups?: string[], hideExpStock?: boolean) {\n this.sidebarHiddenColumns = sidebarHiddenColumns;\n this.sidebarHiddenGroups = sidebarHiddenGroups;\n this.hideExpStock = hideExpStock;\n }\n\n // returns true if column or group is hidden in sidebar.\n isHidden(name: string): boolean {\n return this.sidebarHiddenColumns.includes(name) || this.sidebarHiddenGroups.includes(name);\n }\n toggleColumn(name: string, groupName?: string): void {\n if (this.isHidden(name)) {\n this.showColumn(name);\n this.showGroup(groupName);\n } else {\n this.hideColumn(name);\n }\n }\n\n toggleGroup(groupName: string, columns?: DetailsColumn[]): void {\n const groupColumns = columns ? columns.map((column) => column.name) : [];\n if (this.isHidden(groupName)) {\n this.showGroup(groupName, groupColumns);\n } else {\n this.hideGroup(groupName, groupColumns);\n }\n }\n\n toggleExpStock(): void {\n this.hideExpStock = !this.hideExpStock;\n }\n private hideColumn(name: string): void {\n this.sidebarHiddenColumns.push(name);\n this.sidebarHiddenColumns = [...new Set(this.sidebarHiddenColumns)];\n }\n\n private hideColumns(columns: string[]): void {\n this.sidebarHiddenColumns = [...new Set(this.sidebarHiddenColumns.concat(columns))];\n }\n\n private showColumn(name: string): void {\n this.sidebarHiddenColumns = this.sidebarHiddenColumns.filter((column) => column !== name);\n }\n\n private showColumns(columns: string[]): void {\n this.sidebarHiddenColumns = this.sidebarHiddenColumns.filter((column) => !columns.includes(column));\n }\n\n private showGroup(name: string, columns?: string[]): void {\n this.sidebarHiddenGroups = this.sidebarHiddenGroups.filter((group) => group !== name);\n if (columns) {\n this.showColumns(columns);\n }\n }\n private hideGroup(name: string, columns?: string[]): void {\n this.sidebarHiddenGroups.push(name);\n if (columns) {\n this.hideColumns(columns);\n }\n }\n}\n","
\n {{ column.caption | agrTranslate }}\n \n
{{ column.caption | agrTranslate }}
\n {{ column.description | agrTranslate }}\n
\n \n
\n\n
\n \n \n {{ column.overwriteValue ?? column.value | agrFormat: column.type + ':2' }}\n \n \n {{ column.overwriteValue ?? column.value | agrFormat: column.type }}\n \n \n
\n","import { Component, Input } from '@angular/core';\nimport { DetailsColumn } from 'src/app/item-card/details/details-columns/details-column-model';\n\n@Component({\n selector: '[agr-details-non-editable-columns]', // eslint-disable-line @angular-eslint/component-selector\n templateUrl: './non-editable-columns.component.html',\n styleUrls: ['../details-columns.component.scss']\n})\nexport class NonEditableColumnsComponent {\n @Input() column: DetailsColumn;\n @Input() itemId: number;\n\n getValue(): number {\n return this.column.overwriteValue ?? this.column.value;\n }\n}\n","\n
\n \n \n {{ 'ITEM_DETAILS' | agrTranslate }}\n \n \n \n \n \n \n \n {{ 'DONE' | agrTranslate }}\n \n\n \n \n
\n\n
\n \n \n\n
\n
\n
\n \n
\n
\n {{ 'ITEM_INFO' | agrTranslate }}\n \n
\n
\n
    \n \n
\n \n \n \n
\n
\n\n \n
\n
\n {{ 'STOCK_INFO' | agrTranslate }}\n \n \n \n
\n
\n
    \n \n
\n \n \n \n {{ 'EXPIRING_STOCK' | agrTranslate }}\n \n {{ 'SHOW_EXPIRING_STOCK' | agrTranslate }}\n \n \n \n {{ 'HIDE_EXPIRING_STOCK' | agrTranslate }}\n \n \n \n \n \n \n
  • \n {{ 'EXPIRING_STOCK_UNITS' | agrTranslate }}: {{ findColumn(stock, '_exp_stock_units').value }}\n
  • \n
  • \n {{ 'EXPIRY_DATE' | agrTranslate }}: {{ findColumn(stock, '_expire_date').value | agrFormat: 'date' }}\n
  • \n \n \n \n
    \n
    \n\n \n
    \n
    \n
    \n
    \n 1\" class=\"badge rounded-pill u-cursor-pointer bg-primary\">\n {{ orderRoutesColumns.length }}\n \n 1 }\">\n {{ 'ORDER_ROUTE_INFO' | agrTranslate }}:\n \n 1\"\n id=\"order-route-info-btn\"\n class=\"agr-small-dropdown-btn text-truncate\"\n type=\"button\">\n {{ findColumn(route, '_route_info').value }}\n 1\" class=\"fa fa-angle-right\">\n \n {{ findColumn(route, '_route_info')?.value }}\n
    \n
    \n \n
    \n
    \n
      \n \n
    \n \n \n \n
    \n
    \n\n \n
    \n
    \n {{ 'FORECAST_SETTINGS' | agrTranslate }}\n \n
    \n
    \n
      \n \n
    \n\n
    \n\n \n\n \n\n \n \n \n \n \n \n\n \n
    \n
    \n {{ 'ORDER_LOGIC_SETTINGS' | agrTranslate }}\n \n
    \n
    \n
      \n \n
    \n\n
    \n\n \n\n \n\n \n \n \n \n \n \n\n \n
    0\" [hidden]=\"isHidden('_other') && !sidebarEditMode\">\n
    \n {{ 'OTHER_COLUMNS' | agrTranslate }}\n \n
    \n
    \n
      \n \n
    \n\n
    \n\n \n\n \n\n \n \n \n \n \n \n \n
    \n
    \n
    \n \n {{ undeliveredOrdersColumns.length }}\n \n {{ 'UNDELIVERED_ORDERS' | agrTranslate }}\n
    \n
    \n
    \n
    \n {{ 'NO_UNDELIVERED_ORDERS' | agrTranslate }}\n
    \n \n {{ 'FROM' | agrTranslate }} {{ today | agrFormat: 'date' }}:\n {{ 'UNDELIVERED_ESTIMATED_DELIVERY_INFO_FUTURE' | agrTranslate }}\n
    \n \n {{ 'FROM' | agrTranslate }}\n {{ today | agrFormat: 'date' }}\n {{ 'TO' | agrTranslate }}\n {{ orderLogicUndeliveredDate | agrFormat: 'date' }}:\n \n
    \n {{ 'TO' | agrTranslate }}\n {{ orderLogicUndeliveredDate | agrFormat: 'date' }}:\n {{ 'UNDELIVERED_ESTIMATED_DELIVERY_INFO_EXPIRED' | agrTranslate }}\n (-{{ orderLogicUndeliveredDays }} {{ 'DAYS' | agrTranslate }})\n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n {{ 'ESTIMATED_DELIVERY' | agrTranslate }}\n \n {{ 'QUANTITY' | agrTranslate }}\n {{ 'REFERENCE_NO' | agrTranslate }}{{ 'EXPIRY_DATE' | agrTranslate }}
    \n \n \n {{ findColumn(order, '_undelivered_est_delivery').value | agrFormat: 'date' }}\n \n \n \n {{ findColumn(order, '_undelivered_qty').value }}\n \n \n \n {{ findColumn(order, '_undelivered_reference_no').value }}\n \n \n \n {{ findColumn(order, '_undelivered_expire_date').value | agrFormat: 'date' }}\n \n
    \n
    \n
    \n \n \n \n\n\n\n","/* eslint-disable complexity */\n/* eslint-disable max-lines */\nimport { ApplicationRef, Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { NgbDateAdapter, NgbDateNativeAdapter, NgbDatepickerI18n } from '@ng-bootstrap/ng-bootstrap';\nimport { Observable, Subscription } from 'rxjs';\nimport { isNil } from 'lodash';\nimport { FormControl, FormGroup } from '@angular/forms';\n\nimport { AuthService } from 'src/app/_core/authorization/auth.service';\nimport { SettingsService } from 'src/app/_core/settings/settings.service';\nimport { StoreService } from 'src/app/_core/store.service';\nimport { DatepickerI18n } from 'src/app/_shared/datepicker-i18n/datepicker-i18n';\nimport { DetailsColumn } from 'src/app/item-card/details/details-columns/details-column-model';\nimport { ItemCardDetailsService } from 'src/app/item-card/details/item-card-details.service';\n\nimport { ContextLine } from 'src/app/_core/de-query/model/context-line.model';\nimport { ItemCardDetailsPers } from 'src/app/item-card/details/item-card-details-sidebar-pers';\n\n@Component({\n selector: 'agr-item-card-details',\n templateUrl: './item-card-details.component.html',\n styleUrls: ['./item-card-details.component.scss'],\n providers: [\n { provide: NgbDateAdapter, useClass: NgbDateNativeAdapter },\n { provide: NgbDatepickerI18n, useClass: DatepickerI18n }\n ]\n})\nexport class ItemCardDetailsComponent implements OnInit, OnChanges, OnDestroy {\n @Output() readonly closeSidebar = new EventEmitter();\n @Output() readonly columnChangedEvent = new EventEmitter();\n @Input() itemId?: number;\n @Input() isSidebar = false;\n @Input() refreshItemEvent: Observable;\n @Input() refreshDetailsColumnEvent: Observable;\n refreshItemSubscription: Subscription;\n refreshDetailsColumnSubscription: Subscription;\n columnContext: ContextLine[] = [];\n itemInfoColumns: DetailsColumn[] = [];\n orderLogicSettingsColumns: DetailsColumn[] = [];\n stockInfoColumns: DetailsColumn[] = [];\n forecastSettingsColumns: DetailsColumn[] = [];\n orderRoutesColumns: DetailsColumn[][] = [];\n undeliveredOrdersColumns: DetailsColumn[][] = [];\n expiringStockColumns: DetailsColumn[][] = [];\n itemCardDetailColumns: DetailsColumn[] = [];\n otherColumns: DetailsColumn[] = [];\n orderRouteIndex = 0;\n\n today = new Date();\n orderLogicUndeliveredDays: number;\n orderLogicUndeliveredDate = new Date();\n\n form = new FormGroup({});\n globalEventService: any;\n showExpiringStock = true;\n\n // For sidebar\n persKey = 'item-card.details';\n pers: ItemCardDetailsPers;\n sidebarEditMode = false;\n isLoadingDetails = false;\n isEmpty = true;\n\n constructor(\n private applicationRef: ApplicationRef,\n private settingsService: SettingsService,\n private itemCardDetailsService: ItemCardDetailsService,\n private storeService: StoreService,\n private authService: AuthService\n ) {}\n\n ngOnInit(): void {\n this.loadPers();\n this.refreshItemSubscription = this.refreshItemEvent.subscribe(() => this.getItemDetails());\n this.refreshDetailsColumnSubscription = this.refreshDetailsColumnEvent.subscribe((column) => {\n this.columnHasChanged(column);\n });\n this.itemCardDetailsService.getColumns().subscribe((columns) => {\n if (isNaN(this.itemId)) {\n return;\n }\n this.columnContext = columns;\n this.columnContext.forEach((column) => this.form.addControl(column.name, new FormControl()));\n this.getItemDetails();\n });\n this.initUndeliveredOrderLogic();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (isNil(changes.itemId)) {\n return;\n }\n if (changes.itemId.previousValue !== changes.itemId.currentValue) {\n if (!isNil(changes.itemId.currentValue)) {\n this.isEmpty = false;\n this.isLoadingDetails = true;\n this.itemCardDetailsService.getColumns().subscribe((columns) => {\n this.columnContext = columns;\n this.columnContext.forEach((column) => this.form.addControl(column.name, new FormControl()));\n this.getItemDetails();\n });\n } else {\n this.isEmpty = true;\n }\n this.refreshComponent();\n }\n }\n\n columnHasChanged(columnName: string): void {\n let contextLine = this.columnContext.find((contextColumn) => contextColumn.name.includes(columnName));\n let contextLines = this.columnContext.filter((contextColumn) => contextColumn.groupName === contextLine.groupName);\n this.itemCardDetailsService.getDetails(contextLines, this.itemId).subscribe((columns: DetailsColumn[]) => {\n this.updateColumns(columns);\n });\n }\n\n columnChanged(column: DetailsColumn): void {\n this.columnChangedEvent.emit(column.name);\n }\n\n ngOnDestroy(): void {\n this.refreshItemSubscription.unsubscribe();\n }\n\n findColumn(columns: DetailsColumn[], columnName: string): DetailsColumn {\n return columns.find((column) => column.name === columnName);\n }\n\n isEditable(column: DetailsColumn): boolean {\n if (column.config !== undefined) {\n return this.authService.hasFeature('itemCard.mod') && column.isEditable();\n }\n return false;\n }\n\n // Public functions for Undelivered logic\n // return true of order is passed estimated delivery date\n isUndeliveredDatePassed(undeliveredOrderColumns: DetailsColumn[]): boolean {\n const column = this.findColumn(undeliveredOrderColumns, '_undelivered_est_delivery');\n const estDelivComp = new Date(column.value);\n if (estDelivComp < this.today) {\n return true;\n }\n return false;\n }\n\n // returns true if order is considered outdated and will be ignored by order logic\n isOutdated(undeliveredOrderColumns: DetailsColumn[]): boolean {\n const column = this.findColumn(undeliveredOrderColumns, '_undelivered_est_delivery');\n const estDelivComp = new Date(column.value);\n if (estDelivComp < this.orderLogicUndeliveredDate) {\n return true;\n }\n return false;\n }\n\n // public functions for sidebar\n toggleSidebarEditMode(): void {\n this.sidebarEditMode = !this.sidebarEditMode;\n this.refreshComponent();\n }\n\n close(): void {\n this.closeSidebar.emit('closeSidebar');\n }\n\n // other public functions\n toggleNextOrderRoute(): void {\n if (this.orderRouteIndex === this.orderRoutesColumns.length - 1) {\n this.orderRouteIndex = 0;\n } else {\n this.orderRouteIndex += 1;\n }\n this.refreshComponent();\n }\n\n refreshComponent(): void {\n setTimeout(() => {\n this.applicationRef.tick();\n }); // Shake and wake the component, fixes issues with ngbPopover\n setTimeout(() => {\n window.dispatchEvent(new Event('resize'));\n });\n }\n\n // function for persistent sate\n isHidden(name: string): boolean {\n if (this.isSidebar) {\n return this.pers.isHidden(name);\n }\n return false;\n }\n\n toggleColumn(column: DetailsColumn): void {\n const groupName = column.groupName;\n this.pers.toggleColumn(column.name, groupName);\n let allGroupColumns = this.getGroupColumns(groupName);\n if (\n !this.pers.sidebarHiddenGroups.includes(groupName) &&\n allGroupColumns.every((column) => this.pers.sidebarHiddenColumns.includes(column.name))\n ) {\n this.pers.toggleGroup(groupName);\n }\n }\n\n toggleGroup(groupName: string): void {\n this.pers.toggleGroup(groupName, this.getGroupColumns(groupName));\n }\n\n toggleExpStock(): void {\n this.pers.hideExpStock = !this.pers.hideExpStock;\n this.savePers();\n }\n\n savePers(): void {\n this.storeService.set(this.persKey, this.pers);\n }\n\n getGroupColumns(groupName: string): DetailsColumn[] {\n return this.itemCardDetailColumns.filter((column) => column.groupName === groupName);\n }\n\n // private\n // Gets columns details using de_query and adds to arrays based on data_element_groups.\n private getItemDetails(): void {\n if (!this.columnContext) {\n return;\n }\n this.itemCardDetailsService.getDetails(this.columnContext, this.itemId).subscribe((columns: DetailsColumn[]) => {\n this.isLoadingDetails = false;\n this.itemCardDetailColumns = columns;\n this.setFormValues();\n });\n this.itemCardDetailsService.getOrderRoutes(this.columnContext, this.itemId).subscribe((orderRouteDetails) => {\n this.orderRoutesColumns = orderRouteDetails;\n });\n this.itemCardDetailsService.getExpiringStock(this.columnContext, this.itemId).subscribe((expStockDetails) => {\n this.expiringStockColumns = expStockDetails;\n });\n this.itemCardDetailsService.getUndeliveredOrders(this.columnContext, this.itemId).subscribe((undeliveredOrdersDetails) => {\n this.undeliveredOrdersColumns = undeliveredOrdersDetails;\n });\n }\n\n private updateColumns(columns: DetailsColumn[]): void {\n columns.map((newColumn) => {\n let oldColumn = this.itemCardDetailColumns.find((oldColumn) => oldColumn.name === newColumn.name);\n if (!this.isEditable(newColumn) || newColumn.overwriteValue !== oldColumn.overwriteValue) {\n this.itemCardDetailColumns.splice(this.itemCardDetailColumns.indexOf(oldColumn), 1, newColumn);\n }\n });\n }\n\n // get order logic data from settings, used for isUndelivered, isOutdated functions.\n private initUndeliveredOrderLogic(): void {\n this.today = new Date(new Date().setHours(0, 0, 0, 0));\n this.orderLogicUndeliveredDays = this.settingsService.orderLogicUndeliveredDays();\n this.orderLogicUndeliveredDate = new Date(\n this.today.getFullYear(),\n this.today.getMonth(),\n this.today.getDate() - this.orderLogicUndeliveredDays\n );\n }\n\n private setFormValues(): void {\n this.itemCardDetailColumns.forEach((column) => {\n this.form.get(column.name).setValue(column.overwriteValue !== null ? column.overwriteValue : column.value);\n this.form.get(column.name).markAsTouched();\n });\n }\n\n private loadPers(): void {\n this.pers = this.storeService.get(this.persKey) as ItemCardDetailsPers;\n if (!this.pers) {\n this.pers = new ItemCardDetailsPers([], [], false);\n }\n this.pers = new ItemCardDetailsPers(this.pers.sidebarHiddenColumns, this.pers.sidebarHiddenGroups, this.pers.hideExpStock);\n }\n}\n","
    \n
    \n \n
    \n \n
    \n
    \n {{ item.location.name || '---' }}\n
    \n
    \n \n
    \n \n {{ state.showTitleItemNo ? item.itemNo || '---' : item.name || '---' }}\n
    \n\n \n \n \n
    \n\n \n \n
      \n \n {{ 'CHART' | agrTranslate }}\n \n \n {{ 'GRID' | agrTranslate }}\n \n \n {{ 'DETAILS' | agrTranslate }}\n \n
    \n
      \n \n {{ state.activeCard | uppercase | agrTranslate }}\n \n
    \n\n \n
    \n
    \n \n
    \n
    {{ label.info.headerCaption | agrTranslate }}
    \n \n
    \n
    \n \n {{ label.caption | agrTranslate }}\n \n
    \n
    \n
    \n \n \n \n \n \n \n\n \n\n \n
    \n \n
    \n \n \n \n \n
    \n
    \n\n \n\n \n \n \n \n \n \n \n\n \n\n \n \n \n \n \n \n\n \n\n \n \n \n \n \n
    \n
    \n\n \n
    \n \n \n
    \n \n
    \n \n \n
    \n
    \n\n
    \n \n \n \n \n \n \n
    \n\n \n \n
    \n \n \n
    \n \n \n\n","import {\n AfterViewInit,\n ApplicationRef,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n OnDestroy,\n OnInit,\n Output,\n ViewChild\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { isNil } from 'lodash';\nimport { Subscription } from 'rxjs';\n\nimport { GlobalEventsService } from 'src/app/_core/global-events.service';\nimport { SettingsService } from 'src/app/_core/settings/settings.service';\nimport { StoreService } from 'src/app/_core/store.service';\nimport { ItemCardService } from 'src/app/item-card/item-card.service';\nimport { ItemCardState, ItemCardStateDTO } from 'src/app/item-card/models/item-card-state.model';\nimport { ItemCardUpdateMessage } from 'src/app/item-card/models/item-card-update-message.model';\nimport { ItemLabel } from 'src/app/item-card/models/item-label.model';\nimport { ItemSimple } from 'src/app/item-card/models/item-simple.model';\n\n@Component({\n selector: 'agr-item-card',\n templateUrl: './item-card.component.html',\n styleUrls: ['./item-card.component.scss']\n})\nexport class ItemCardComponent implements OnInit, AfterViewInit, OnDestroy {\n @ViewChild('imageContainer') readonly imageContainer: ElementRef;\n @Output() readonly closeItemCard = new EventEmitter();\n\n isPage = false;\n isLocked = false;\n isRecalculating = false;\n isEmpty = true;\n\n itemId: number;\n orderId: number;\n item = new ItemSimple();\n itemLabels: ItemLabel[];\n\n stateKey = 'item-card.state';\n state: ItemCardState = new ItemCardState();\n\n windowWidth = 0;\n\n hasImage = false;\n imageUrl = '';\n imageMaxHeight: number;\n\n hasNewWindowSupport = 'BroadcastChannel' in self;\n\n refreshItemEvent = new EventEmitter();\n refreshDetailsColumnEvent = new EventEmitter();\n subscriptions: Subscription[] = [];\n\n constructor(\n private activatedRoute: ActivatedRoute,\n private applicationRef: ApplicationRef,\n private globalEventsService: GlobalEventsService,\n private itemCardService: ItemCardService,\n private settingsService: SettingsService,\n private storeService: StoreService\n ) {}\n\n ngOnInit(): void {\n this.setupPopout();\n this.loadState();\n this.checkHasImage();\n // Subscriptions\n this.subscriptions.push(\n this.globalEventsService.updateItemCardEvent$.subscribe((data: ItemCardUpdateMessage) => {\n this.updateItemCard(data);\n })\n );\n this.subscriptions.push(\n this.globalEventsService.refreshItemCardEvent$.subscribe((data: ItemCardUpdateMessage) => {\n this.refreshItem(data.itemId);\n })\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.map((subscription) => subscription.unsubscribe());\n }\n\n ngAfterViewInit(): void {\n this.reflowChart();\n } // reflowChart for image max height and windowWidth\n\n toggleTitle(): void {\n this.state.toggleItemTitle();\n this.saveState();\n }\n\n toggleLockItem(): void {\n this.isLocked = !this.isLocked;\n }\n\n refreshItem(itemId?: number): void {\n const undefinedItem = itemId === undefined;\n const sameItem = itemId === this.itemId;\n if (!undefinedItem && !sameItem) {\n return;\n } // Ignore refresh of different item\n this.getItem();\n if (!this.isEmpty) {\n this.refreshItemEvent.emit(); // Notifies child components to reload data\n }\n }\n\n refreshDetails(column?: string): void {\n this.globalEventsService.refreshDetailsColumn(column);\n }\n\n toggleSidebar(): void {\n this.state.sidebar.visible = !this.state.sidebar.visible;\n this.saveState();\n this.reflowChart();\n }\n\n toggleImageSidebar(): void {\n this.state.imageSidebar.visible = !this.state.imageSidebar.visible;\n this.saveState();\n this.reflowChart();\n }\n\n toggleCard(tab: 'showChart' | 'showGrid' | 'showDetails'): void {\n this.state.toggle(tab);\n this.saveState();\n this.reflowChart();\n }\n\n toggleNextCard(): void {\n this.state.nextCard();\n this.saveState();\n this.reflowChart();\n }\n\n toggleChartPeriod(): void {\n this.state.nextChart();\n this.saveState();\n }\n\n stepIncrementHistory(): void {\n this.state.stepIncrementHistory();\n this.saveState();\n }\n\n stepIncrementForecast(): void {\n this.state.stepIncrementForecast();\n this.saveState();\n }\n\n updateForecastLength(value: number): void {\n this.state.updateForecastLength(value);\n this.saveState();\n }\n\n updateHistoryLength(value: number): void {\n this.state.updateHistoryLength(value);\n this.saveState();\n }\n\n recalculatePurchasePlan(): void {\n if (!this.itemId) {\n return;\n }\n this.isRecalculating = true;\n this.itemCardService.recalculatePurchasePlan(this.itemId, this.state.chart).subscribe(\n () => {\n this.isRecalculating = false;\n this.globalEventsService.refreshItemCard(this.itemId);\n },\n () => {\n this.isRecalculating = false;\n }\n );\n }\n\n openItemWindow(): void {\n this.closeItemCard.emit();\n let newWindow = `top=${window.screenTop + window.innerHeight / 2},left=${window.screenLeft}`;\n newWindow = `${newWindow},width=${window.innerWidth},height=${window.innerHeight / 2}`;\n window.open(`${document.location.origin}/selected-item`, '_blank', newWindow);\n setTimeout(() => {\n this.globalEventsService.updateItemCard(this.itemId, this.orderId);\n }, 3000); // Delay before broadcasting focused itemId\n }\n\n close(): void {\n this.isPage ? window.close() : this.closeItemCard.emit();\n }\n\n saveState(): void {\n this.storeService.set(this.stateKey, this.state.toDto());\n }\n\n private getItem(): void {\n this.item = new ItemSimple();\n if (isNil(this.itemId)) {\n this.isEmpty = true;\n return;\n }\n this.isEmpty = false;\n this.imageUrl = '';\n this.applicationRef.tick(); // Refresh DOM when page is in background, this starts loading overlay in separate window\n this.itemCardService.getSimpleItem(this.itemId).subscribe((data) => {\n this.item = data;\n this.setImageUrl();\n this.applicationRef.tick(); // Refresh DOM when page is in background\n });\n this.itemCardService.getItemLabelList(this.itemId).subscribe((data) => {\n this.itemLabels = data;\n });\n }\n\n private loadState(): void {\n const loadedState = this.storeService.load(this.stateKey, this.state.toDto()) as ItemCardStateDTO;\n this.state = new ItemCardState(loadedState);\n }\n\n private setupPopout(): void {\n this.isPage = this.activatedRoute.snapshot.routeConfig.path === 'selected-item';\n if (this.isPage) {\n this.globalEventsService.hideNavBar();\n }\n }\n\n private updateItemCard(updateMessage: ItemCardUpdateMessage): void {\n if (updateMessage.refresh) {\n return this.refreshItem(updateMessage.itemId);\n }\n if (updateMessage.column) {\n this.refreshDetailsColumnEvent.emit(updateMessage.column);\n return;\n }\n if (this.itemId === updateMessage.itemId && this.orderId === updateMessage.orderId) {\n return;\n }\n if (this.isLocked) {\n return;\n }\n if (updateMessage.isBroadcast && !this.isPage) {\n return;\n } // Do not update if outside update request and Item Card is docked/footer\n this.itemId = updateMessage.itemId;\n this.orderId = updateMessage.orderId;\n this.getItem();\n }\n\n private checkHasImage(): void {\n this.hasImage = !!this.settingsService.imageLookupProperty();\n }\n\n private setImageUrl(): void {\n const lookupProperty = this.settingsService.imageLookupProperty();\n this.hasImage = !!lookupProperty;\n const imageId = this.item.getPropertyValue(lookupProperty);\n if (!lookupProperty) {\n return;\n }\n const prefix = this.settingsService.imagePrefix() || '';\n const postfix = this.settingsService.imagePostfix() || '';\n this.imageUrl = `${prefix}${imageId}${postfix}`;\n this.imageUrl = !this.imageUrl ? 'assets/images/product-image-placeholder.png' : this.imageUrl;\n }\n\n private reflowChart(): void {\n setTimeout(() => {\n window.dispatchEvent(new Event('resize'));\n }, 1); // Reflow/Scale Highcharts + Dispatches onResize as well\n }\n\n // eslint-disable-next-line @typescript-eslint/member-ordering\n @HostListener('window:resize', ['$event']) onResize(): void {\n this.windowWidth = window.innerWidth;\n if (!this.imageContainer) {\n return;\n }\n this.imageMaxHeight = this.imageContainer.nativeElement.offsetHeight - 20;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { HighchartsChartModule } from 'highcharts-angular';\n\nimport { AgGridModule } from '@ag-grid-community/angular';\nimport { SharedModule } from 'src/app/_shared/shared.module';\nimport { ItemCardChartComponent } from 'src/app/item-card/chart/item-card-chart.component';\nimport { EditableDateColumnsComponent } from 'src/app/item-card/details/details-columns/editable-date-columns/editable-date-columns.component';\nimport { EditableLookupColumnsComponent } from 'src/app/item-card/details/details-columns/editable-lookup-columns/editable-lookup-columns.component';\nimport { EditableNumberColumnsComponent } from 'src/app/item-card/details/details-columns/editable-number-columns/editable-number-columns.component';\nimport { EditableStringColumnsComponent } from 'src/app/item-card/details/details-columns/editable-string-columns/editable-string-columns.component';\nimport { NonEditableColumnsComponent } from 'src/app/item-card/details/details-columns/non-editable-columns/non-editable-columns.component';\nimport { ItemCardDetailsComponent } from 'src/app/item-card/details/item-card-details.component';\nimport { ItemCardGridComponent } from 'src/app/item-card/grid/item-card-grid.component';\nimport { ItemCardComponent } from 'src/app/item-card/item-card.component';\n\n@NgModule({\n declarations: [\n ItemCardComponent,\n ItemCardDetailsComponent,\n ItemCardChartComponent,\n ItemCardGridComponent,\n EditableDateColumnsComponent,\n EditableNumberColumnsComponent,\n EditableLookupColumnsComponent,\n EditableStringColumnsComponent,\n NonEditableColumnsComponent\n ],\n imports: [AgGridModule.withComponents([]), CommonModule, FormsModule, HighchartsChartModule, ReactiveFormsModule, SharedModule],\n exports: [\n ItemCardComponent,\n EditableDateColumnsComponent,\n EditableNumberColumnsComponent,\n EditableLookupColumnsComponent,\n EditableStringColumnsComponent,\n NonEditableColumnsComponent\n ]\n})\nexport class ItemCardModule {}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, Subject, forkJoin } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { SignalRService } from 'src/app/_core/signal-r.service';\n\nimport { cypressExpose } from 'src/app/_core/cypress-expose';\nimport { API_ROOT } from 'src/app/_core/models/api-route.model';\nimport { ExecutionNotification, ExecutionNotificationDTO } from 'src/app/nav/execution-list/execution-notification.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ExecutionListService {\n constructor(private httpClient: HttpClient, private signalRService: SignalRService) {\n cypressExpose(this);\n }\n\n listenForActions(): Observable {\n const message = new Subject();\n this.signalRService.connection.on('Notify', (dtos: ExecutionNotificationDTO[]) => {\n message.next(dtos.map((dto) => new ExecutionNotification(dto)));\n });\n return message.asObservable();\n }\n\n getActions(): Observable {\n return this.httpClient\n .get(`${API_ROOT}/notifications`)\n .pipe(map((dtos) => dtos.map((actionExecutionDTO) => new ExecutionNotification(actionExecutionDTO))));\n }\n\n clearAction(id: number): Observable {\n return this.httpClient.delete(`${API_ROOT}/notifications/${id}`);\n }\n\n clearMultipleActions(actions: ExecutionNotification[]): Observable {\n return forkJoin(actions.map((action) => this.clearAction(action.id)));\n }\n\n clearAllActions(): Observable {\n return this.httpClient.delete(`${API_ROOT}/notifications`); // Marks all actions as read (cleared in client) irrespective of user\n }\n}\n","import { TimezoneService } from 'src/app/_core/timezone.service';\n\n/**\n * This object is dynamic in API.\n * Comes from select_action_by_user_id SP.\n */\nexport interface ExecutionNotificationDTO {\n id: number;\n type: string;\n caption: string;\n createdAt: string; // Date 'YYYY-MM-DDThh:mm:ss.SS'\n durationMinutes: number;\n errorMessage: string;\n progressPercent: number;\n success: boolean;\n url: string;\n userId: number;\n loginName: string; // login username\n userName: string;\n queueId: number;\n referenceId: number;\n}\n\nexport class ExecutionNotification {\n id: number;\n type: string;\n errorMessage: string;\n duration: number;\n caption: string;\n progressPercent: number;\n success: boolean;\n createdAt: Date;\n url: string;\n loginName: string;\n userName: string;\n userId: number;\n queueId: number;\n referenceId: number;\n\n constructor(dto: ExecutionNotificationDTO) {\n this.id = dto.id;\n this.type = dto.type;\n this.caption = dto.caption;\n this.createdAt = TimezoneService.serverTimeToClientTime(dto.createdAt);\n this.errorMessage = dto.errorMessage;\n this.progressPercent = dto.progressPercent;\n this.success = dto.success;\n this.duration = Math.round(dto.durationMinutes * 60 * 1000);\n this.url = this.getUrl(this.type);\n this.loginName = dto.loginName;\n this.userName = dto.userName;\n this.userId = dto.userId;\n this.queueId = dto.queueId;\n this.referenceId = dto.referenceId;\n }\n\n /**\n * The URL provided in select_action_by_user_id SP are designed for AGR 5 and are usually wrong for AGR 6.\n * The front-end should probably be controlling the urls anyway.\n */\n private getUrl(type: string): string {\n if (this.errorMessage) {\n return '/executions';\n }\n if (\n [\n 'CREATE_PLANNED_ORDER',\n 'CREATE_PLANNED_ITEM_ORDER',\n 'CREATE_ORDER',\n 'CREATE_ITEMS_ORDER',\n 'RECALC_ORDER',\n 'CONSTRAIN_ORDER',\n 'SPLIT_ORDER'\n ].indexOf(type) > -1\n ) {\n return '/orders';\n }\n return '/executions';\n }\n}\n\nexport interface ActionExecutionResponseDTO {\n ActionExecutionGuid: string;\n ActionExecutionId: number;\n ActionType: string;\n HasError: boolean;\n ItemsLocked: boolean;\n LockedStatus?: string; // On failed\n}\n","/* eslint-disable max-len */\n/* eslint-disable max-classes-per-file */\nimport { cloneDeep } from 'lodash';\n\nimport { Setting } from 'src/app/_core/settings/settings.model';\n\nexport interface AgrNavDTO {\n caption?: string; // Name of button to display. Tries to translate\n path?: string; // Url. Starts without '/'\n feature?: string | string[]; // List of features required to see current element\n divider?: boolean; // Turns the object into dropdown divider\n icon?: string; // Name of font-awesome icon, e.g. \"cog\"\n submenu?: AgrNavDTO[]; // Turns the element into dropdown\n}\n\ninterface ModularNavDTO {\n name?: string; // Name of the module\n index?: number; // The index of the module in app dropdown\n color?: string; // color of navbar - see _variables.scss and _navigation.scss or technical manual\n homepage?: string; // Path to homepage when agr logo is clicked, agr logo btn is disabled if not defined\n navigation?: AgrNavDTO[]; // App navigation\n}\n\nexport class MainNavigation {\n modules: ModularNav[] = [];\n setting: Setting = {};\n get hasModularNavigation(): boolean {\n return this.modules.length > 1;\n }\n get defaultModule(): ModularNav {\n return this.modules.length > 0 ? this.modules[0] : new ModularNav();\n }\n\n constructor(setting?: Setting) {\n const navDto: ModularNavDTO[] = setting ? setting.value : undefined;\n this.setting = setting;\n this.modules = this.isValidNav(navDto) // If is empty, assign default else read from DTO\n ? navDto.map((nav) => new ModularNav(nav))\n : defaultAppNav.map((nav) => new ModularNav(nav));\n this.validateModules();\n this.modules.sort((a, b) => (a.index >= b.index ? 1 : -1));\n }\n\n toDto(): ModularNavDTO[] {\n return this.modules.map((module) => module.toDto());\n }\n\n toSetting(): Setting {\n this.setting.value = this.toDto();\n return this.setting;\n }\n\n addNav(nav: AgrNav, moduleName?: string): void {\n const module = this.modules.find((mm) => mm.name === moduleName) || this.defaultModule;\n module.addNav(nav);\n }\n\n private isValidNav(modules: ModularNavDTO[]): boolean {\n const isValid = !(!modules || modules.length === 0 || !(modules instanceof Array));\n if (!isValid) {\n console.warn('AGR: Invalid or empty APP navigation detected. Fix in Settings > System > App navigation');\n }\n return isValid;\n }\n\n private validateModules(): void {\n if (this.modules.length > 0 && this.modules.every((mod) => mod.isValid())) {\n return;\n }\n console.warn('AGR: Invalid modular APP navigation detected. Fix in Settings > System > App navigation');\n this.modules = this.modules.filter((mod) => mod.isValid());\n if (this.modules.length === 0) {\n this.modules = defaultAppNav.map((nav) => new ModularNav(nav));\n }\n }\n}\n\nexport class SettingsNavigation {\n navigation: AgrNav[] = [];\n setting: Setting = new Setting();\n\n constructor(setting?: Setting) {\n const navDto: AgrNavDTO[] = setting ? setting.value : undefined;\n this.setting = setting;\n this.navigation = this.isValidNav(navDto) // If is empty, assign default else read from DTO\n ? (this.navigation = navDto.map((nav) => new AgrNav(nav)))\n : (this.navigation = defaultSettingsNav.map((nav) => new AgrNav(nav)));\n this.navigation = this.navigation.filter((nav) => nav.isValid());\n }\n\n toDto(): AgrNavDTO[] {\n return this.navigation.map((nav) => nav.toDto());\n }\n\n toSetting(): Setting {\n this.setting.value = this.toDto();\n return this.setting;\n }\n\n private isValidNav(navDto: AgrNavDTO[]): boolean {\n const isValid = !(!navDto || navDto.length === 0 || !(navDto instanceof Array));\n if (!isValid) {\n console.warn('AGR: Invalid or empty SETTINGS navigation detected. Fix in Settings > System > Settings navigation');\n }\n return isValid;\n }\n}\n\nexport class ModularNav {\n name = '';\n index: number | undefined;\n color = '';\n homepage = '';\n navigationAll: AgrNav[] = []; // All menu items\n navigation: AgrNav[] = []; // Available navigation menus based on users feature access\n navigationDropdown: AgrNav[] = []; // Same as navigation, but no sub-menus. Used when filtering in dropdown. Set in nav.component.ts.\n\n constructor(navDto?: ModularNavDTO) {\n if (!navDto) {\n return;\n }\n this.name = navDto.name ? navDto.name : this.name;\n this.index = !isNaN(navDto.index) ? navDto.index : undefined;\n this.color = navDto.color ? navDto.color : this.color;\n this.homepage = navDto.homepage ? navDto.homepage : this.homepage;\n this.navigationAll =\n navDto.navigation && navDto.navigation.length > 0 ? navDto.navigation.map((nav) => new AgrNav(nav)) : this.navigation;\n this.navigationAll = this.navigationAll.filter((nav) => nav.isValid());\n this.navigation = cloneDeep(this.navigationAll); // Reset later by the nav.component.ts and auth.service\n this.navigationDropdown = cloneDeep(this.navigation);\n }\n\n toDto(): ModularNavDTO {\n return {\n name: this.name,\n index: this.index,\n color: this.color ? this.color : undefined,\n homepage: this.homepage ? this.homepage : undefined,\n navigation: this.navigationAll.map((nav) => nav.toDto())\n };\n }\n\n isValid(): boolean {\n return this.navigationAll.length > 0;\n }\n\n flattenDropdownNavigation(): void {\n this.navigationDropdown = this.navigation.flatMap((nav) => {\n return nav.submenu.length > 0 ? [nav, ...nav.submenu] : [nav];\n });\n this.navigationDropdown = this.navigationDropdown.filter((nav) => !!nav.path);\n }\n\n resetDropdownNavigation(): void {\n this.navigationDropdown = cloneDeep(this.navigation);\n }\n\n addNav(nav: AgrNav): void {\n this.addMoreDropdown();\n const moreDropdown = this.addMoreDropdown();\n moreDropdown.submenuAll.push(nav);\n moreDropdown.submenu.push(nav);\n moreDropdown.feature.concat(nav.feature);\n }\n\n addMoreDropdown(): AgrNav {\n const moreDropdown = this.navigationAll.find((navItem) => navItem.caption === 'MORE');\n if (!moreDropdown) {\n const moreDropdownNav = new AgrNav({ caption: 'MORE' });\n this.navigation.push(moreDropdownNav);\n this.navigationAll.push(moreDropdownNav);\n }\n return this.navigationAll.find((navItem) => navItem.caption === 'MORE');\n }\n}\n\nexport class AgrNav {\n caption = '';\n path = '';\n feature: string[];\n divider: boolean;\n icon = '';\n submenuAll: AgrNav[] = []; // All submenu items\n submenu: AgrNav[] = []; // Available submenu items based on users feature access\n\n // eslint-disable-next-line complexity\n constructor(navDto: AgrNavDTO) {\n if (!navDto) {\n return;\n }\n this.caption = navDto.caption ? navDto.caption : this.caption;\n this.path = navDto.path ? navDto.path : this.path;\n this.feature =\n typeof navDto.feature === 'string' ? [navDto.feature] : navDto.feature && navDto.feature.length > 0 ? navDto.feature : [];\n this.feature = this.feature.filter((feature) => !!feature); // Remove empty strings in array, e.g [\"\"]\n this.divider = !!navDto.divider;\n this.icon = navDto.icon ? navDto.icon : this.icon;\n this.submenuAll = navDto.submenu && navDto.submenu.length > 0 ? navDto.submenu.map((nav) => new AgrNav(nav)) : this.submenu;\n this.submenu = cloneDeep(this.submenuAll); // Reset later by the nav.component.ts and auth.service\n }\n\n toDto(): AgrNavDTO {\n return {\n caption: this.caption,\n path: this.path,\n feature: this.feature ? this.feature : undefined,\n divider: this.divider ? this.divider : undefined,\n icon: this.icon ? this.icon : undefined,\n submenu: this.submenuAll.map((nav) => nav.toDto())\n };\n }\n\n isValid(): boolean {\n const hasCaptionOrIcon = !!this.caption || !!this.icon;\n const isValid = (!!this.path && hasCaptionOrIcon) || this.divider || (this.submenu.length > 0 && hasCaptionOrIcon);\n if (!isValid) {\n console.warn(\n `AGR: Invalid nav item detected. Possibly missing caption/icon or path. Fix in Settings > System > App/Settings Navigation.`,\n this\n );\n }\n return isValid;\n }\n}\n\nconst defaultAppNav: ModularNavDTO[] = [\n {\n name: 'INVENTORY',\n index: 0,\n color: 'blue',\n homepage: 'dashboard',\n navigation: [\n {\n caption: 'ITEMS',\n path: 'items',\n feature: ['items']\n },\n {\n caption: 'NAV_REPORTS',\n path: 'reports',\n feature: ['reports']\n },\n {\n caption: 'NAV_PLANS',\n path: 'workspaces/list/plans',\n feature: ['plans']\n },\n {\n caption: 'NAV_ORDERS',\n path: 'orders',\n feature: ['orders']\n },\n {\n caption: 'NAV_ALLOCATION',\n path: 'workspaces/allocation/allocation',\n feature: ['allocation']\n }\n ]\n },\n {\n name: 'PLANNING',\n index: 1,\n color: 'green',\n navigation: [\n {\n caption: 'NAV_MERCHANDISE_FINANCIAL_PLANNING',\n path: 'workspaces/mfp/mfp',\n feature: ['mfp']\n },\n {\n caption: 'NAV_LOCATION_FINANCIAL_PLANNING',\n path: 'workspaces/financial_planner/financial_planner',\n feature: ['financial_planner']\n },\n {\n caption: 'NAV_LOCATION_CLUSTERING',\n path: 'workspaces/location_clustering/lc',\n feature: ['location_clustering']\n }\n ]\n },\n {\n name: 'ASSORTMENT',\n index: 2,\n color: 'orange',\n navigation: [\n {\n caption: 'NAV_RANGE_PLANNING',\n path: 'workspaces/rm/rm',\n feature: ['rm']\n },\n {\n caption: 'NAV_OPTION_PLANNING',\n path: 'workspaces/om/om',\n feature: ['om']\n },\n {\n caption: 'NAV_STORE_ASSORTMENT',\n path: 'workspaces/assortment_operational/assortment',\n feature: ['assortment_operational']\n }\n ]\n }\n];\n\nconst defaultSettingsNav: AgrNavDTO[] = [\n {\n caption: 'NAV_SETTINGS',\n path: 'settings/view/orders',\n feature: ['settings']\n },\n {\n caption: 'NAV_USER_MANAGEMENT',\n path: 'settings/user-management/users',\n feature: ['userManagement']\n },\n {\n caption: 'NAV_WORKSPACES',\n path: 'workspaces/list/all',\n feature: ['workspaces']\n }\n];\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { FormControl, FormGroup, ValidationErrors } from '@angular/forms';\n\nimport { get } from 'lodash';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { AccessGroupDTO } from 'src/app/_core/models/access-group.model';\nimport { API_ROOT } from 'src/app/_core/models/api-route.model';\nimport { UserDTO, UserUpdateResponse } from 'src/app/_core/models/user.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UsersModalService {\n constructor(private httpClient: HttpClient) {}\n\n getAccessGroups(): Observable {\n return this.httpClient.get(`${API_ROOT}/access-groups`);\n }\n\n create(formValue: any): Observable {\n const user: UserDTO = {\n name: formValue.name,\n username: formValue.username,\n email: formValue.email,\n roles: formValue.roles,\n accessGroups: formValue.accessGroups,\n password: formValue.newPassword.password,\n passwordConfirmation: formValue.newPassword.confirmPassword,\n language: ''\n };\n return this.httpClient.post(`${API_ROOT}/users/`, user);\n }\n\n update(user: UserDTO, formValue: any): Observable {\n user.name = formValue.name;\n // formValue.username is not set when field is disabled (when editing user)\n user.username = formValue.username ? formValue.username : user.username;\n user.email = formValue.email;\n user.roles = formValue.roles;\n user.accessGroups = formValue.accessGroups;\n if (get(formValue, 'newPassword.password.length') > 0) {\n user.password = formValue.newPassword.password;\n user.passwordConfirmation = formValue.newPassword.confirmPassword;\n }\n return this.httpClient.put(`${API_ROOT}/users/${user.id}`, user);\n }\n\n // - Form Validation\n\n passwordMismatch(newPassword: FormGroup): { mismatch: boolean } {\n return newPassword.get('password').value === newPassword.get('confirmPassword').value ? undefined : { mismatch: true };\n }\n\n /**\n * Async Validation\n * Checks if username or email exists in DB\n * Doc: https://alligator.io/angular/async-validators/\n */\n asyncValidation(control: FormControl, currentUser: {} = {}, userType: string): Observable {\n const apiPath = userType === 'email' ? `${API_ROOT}/users/user-exists?email=` : `${API_ROOT}/users/user-exists?username=`;\n return this.httpClient.get(`${apiPath}${control.value}`).pipe(\n map((exists) => {\n if (control.value.length === 0 || control.value === currentUser[userType]) {\n return undefined;\n }\n return exists ? { exists: true } : undefined;\n })\n );\n }\n}\n","export interface ConfigCheckboxesDTO {\n enabled?: boolean;\n // The below comment is needed to generate schema allowing null (See https://github.com/YousefED/typescript-json-schema/issues/70)\n /** @nullable */\n trueValue?: null | number | string; // The type allows null in json to set value to null in database\n /** @nullable */\n falseValue?: null | number | string; // The type allows null in json to set value to null in database\n disableIfNull?: boolean;\n}\n\nexport class ConfigCheckboxes {\n enabled: boolean;\n /** @nullable */\n trueValue?: null | number | string; // The type allows null in json to set value to null in database\n /** @nullable */\n falseValue?: null | number | string; // The type allows null in json to set value to null in database\n disableIfNull?: boolean;\n\n constructor(dto?: ConfigCheckboxesDTO) {\n if (!dto) {\n return;\n }\n this.enabled = dto.enabled;\n this.trueValue = dto.trueValue;\n this.falseValue = dto.falseValue;\n this.disableIfNull = dto.disableIfNull;\n }\n}\n","import { WorkspaceGridRow } from 'src/app/workspaces/details/grid/workspace-grid.component';\n\nexport type ConfigCondType = '=' | '==' | '===' | 'equal' | '<>' | '!=' | '!==' | 'notequal' | '>' | '>=' | '<' | '<=' | 'in';\n\nexport interface ConfigCondDTO {\n type?: ConfigCondType;\n column?: string;\n value?: number | number[] | string | string[];\n}\n\nexport class ConfigCond {\n type?: ConfigCondType;\n column?: string;\n value?: number | number[] | string | string[];\n\n constructor(dto?: ConfigCondDTO) {\n if (!dto) {\n return;\n }\n this.type = dto.type;\n this.column = dto.column;\n this.value = dto.value;\n }\n\n // eslint-disable-next-line max-lines-per-function, complexity\n hasTruthyCondition(row: WorkspaceGridRow): boolean {\n if (!row) {\n return false;\n }\n const cellValue = this.getCellValue(row, this.column);\n if (!this.type || !this.column || this.value === undefined) {\n return true;\n }\n\n const value = this.getValue(row);\n if (['=', '==', '===', 'equal'].includes(this.type)) {\n return cellValue === value;\n }\n if (['<>', '!=', '!==', 'notequal'].includes(this.type)) {\n return cellValue !== value;\n }\n if (this.type === '>') {\n return cellValue > value;\n }\n if (this.type === '>=') {\n return cellValue >= value;\n }\n if (this.type === '<') {\n return cellValue < value;\n }\n if (this.type === '<=') {\n return cellValue <= value;\n }\n if (this.type === 'in') {\n return this.includes(cellValue);\n }\n }\n\n private includes(cellValue: number | string): boolean {\n if (typeof cellValue === 'number') {\n const valueNumberArray = this.value as number[];\n return valueNumberArray.includes(cellValue);\n }\n if (typeof cellValue === 'string') {\n const valueStringArray = this.value as string[];\n return valueStringArray.includes(cellValue);\n }\n }\n\n private getCellValue(row: WorkspaceGridRow, column: string): string | number {\n if (row[column] === null || row[column] === undefined) {\n return undefined;\n }\n if (typeof row[column] === 'object' && row[column].type === 'lookup') {\n return row[column].data[column];\n }\n return row[column];\n }\n /**\n * Finds column value if ${some_column} syntax is used.\n */\n private getValue(row: WorkspaceGridRow): number | number[] | string | string[] {\n if (typeof this.value === 'string' && this.value.match(/^\\$\\{.*\\}$/)) {\n return row[this.value.substring(2, this.value.length - 1)];\n }\n return this.value;\n }\n}\n","import { DeQueryFilter } from 'src/app/_core/de-query/model/de-query.model';\nimport { WorkspaceFilter, WorkspaceFilterType } from 'src/app/workspaces/details/filters/models/workspace-filter.model';\n\nexport class WorkspaceAdvancedFilter extends WorkspaceFilter {\n caption = 'ADVANCED_FILTER';\n name = 'ADVANCED_FILTER';\n idColumnName = 'ADVANCED_FILTER';\n groupCaption = 'Advanced';\n columns: string[] = [];\n value: string;\n filterType: WorkspaceFilterType = 'WorkspaceAdvancedFilter';\n\n constructor() {\n super();\n }\n\n toDeQueryFilter(): DeQueryFilter {\n return {\n column: {\n name: this.idColumnName,\n list: this.columns\n },\n values: [this.value],\n operator: 'ADVANCED',\n ui: {\n column: {\n name: this.name\n },\n selectedSubtypeId: undefined,\n fixed: this.locked,\n class: this.filterType\n }\n };\n }\n\n isFilterEmpty(): boolean {\n return !this.value || this.value.trim() === '';\n }\n\n updateFromDeQueryFilter(query: DeQueryFilter): void {\n this.locked = !!query.ui.fixed;\n this.columns = query.column.list ? query.column.list : [];\n this.value = query.values && query.values[0] ? `${query.values[0]}` : '';\n }\n}\n","import { ContextLine } from 'src/app/_core/de-query/model/context-line.model';\nimport { DeQueryFilter } from 'src/app/_core/de-query/model/de-query.model';\nimport { WorkspaceFilter, WorkspaceFilterType } from 'src/app/workspaces/details/filters/models/workspace-filter.model';\n\nexport class WorkspaceBooleanFilter extends WorkspaceFilter {\n value?: boolean;\n filterType: WorkspaceFilterType = 'WorkspaceBooleanFilter';\n\n constructor(contextLine?: ContextLine) {\n super(contextLine);\n }\n\n toDeQueryFilter(): DeQueryFilter {\n return {\n column: {\n name: this.idColumnName\n },\n values: this.value === undefined ? [] : [this.value ? 1 : 0],\n operator: '=',\n ui: {\n column: {\n name: this.name\n },\n selectedSubtypeId: 'none',\n fixed: this.locked,\n class: this.filterType\n }\n };\n }\n\n updateFromDeQueryFilter(queryFilter: DeQueryFilter): void {\n if (!queryFilter.values) {\n this.value = undefined;\n return;\n }\n this.value = queryFilter.values.length === 1 && queryFilter.values[0] === '1';\n }\n}\n","/* eslint-disable max-len */\nimport { formatDate } from '@angular/common';\nimport { NgbDateStruct } from '@ng-bootstrap/ng-bootstrap';\nimport { isNil } from 'lodash';\n\nimport { ContextLine } from 'src/app/_core/de-query/model/context-line.model';\nimport { DeQueryFilter, DeQueryFilterOperator } from 'src/app/_core/de-query/model/de-query.model';\nimport { TimezoneService } from 'src/app/_core/timezone.service';\nimport { TranslationsService } from 'src/app/_core/translations.service';\nimport { WorkspaceFilter, WorkspaceFilterType } from 'src/app/workspaces/details/filters/models/workspace-filter.model';\n\ntype PeriodType = 'DAY' | 'WEEK' | 'MONTH' | 'YEAR';\nconst periodTypes: PeriodType[] = ['DAY', 'WEEK', 'MONTH', 'YEAR'];\ntype FilterType = 'DATE_RANGE' | 'GREATER_THAN' | 'LESS_THAN';\nconst filterTypes: FilterType[] = ['DATE_RANGE', 'GREATER_THAN', 'LESS_THAN'];\nconst emptyPeriodDict: { [key in PeriodType]: undefined } = { DAY: undefined, WEEK: undefined, MONTH: undefined, YEAR: undefined };\n\nexport interface WorkspaceDateFilterValue {\n caption: string;\n date: Date;\n}\n\nexport class WorkspaceDateFilter extends WorkspaceFilter {\n isRelative = true;\n period: PeriodType = 'DAY';\n type: FilterType = 'DATE_RANGE';\n filterType: WorkspaceFilterType = 'WorkspaceDateFilter';\n dateTo: { [key in PeriodType]: Date } = { ...emptyPeriodDict };\n dateFrom: { [key in PeriodType]: Date } = { ...emptyPeriodDict };\n dateFromRelative: { [key in PeriodType]: number } = { ...emptyPeriodDict };\n dateToRelative: { [key in PeriodType]: number } = { ...emptyPeriodDict };\n\n maxNgbDateFrom?: NgbDateStruct | undefined;\n minNgbDateTo?: NgbDateStruct | undefined;\n\n // Used when toggling between filter type to restore values\n lastKnownDateFrom?: { [key in PeriodType]: Date } = { ...emptyPeriodDict };\n lastKnownDateTo?: { [key in PeriodType]: Date } = { ...emptyPeriodDict };\n lastKnownDateFromRelative: { [key in PeriodType]: number } = { ...emptyPeriodDict };\n lastKnownDateToRelative: { [key in PeriodType]: number } = { ...emptyPeriodDict };\n\n // WEEK/MONTH/YEAR - ngSelect values, Date value and label for date\n ngSelectDateFrom: WorkspaceDateFilterValue; // The selected value from @dateFromPeriodValues\n ngSelectDateTo: WorkspaceDateFilterValue; // The selected value from @dateToPeriodValues\n dateFromPeriodValues: WorkspaceDateFilterValue[] = []; // This is changed when dateTo changes and vice versa to limit and avoid overlap\n dateToPeriodValues: WorkspaceDateFilterValue[] = [];\n periodValues: { [key in PeriodType]: WorkspaceDateFilterValue[] } = { DAY: [], WEEK: [], MONTH: [], YEAR: [] };\n\n constructor(contextLine?: ContextLine) {\n super(contextLine);\n if (!contextLine) {\n return;\n }\n this.setupPeriodValues();\n }\n\n togglePeriod(): void {\n const nextPeriodIndex = (periodTypes.findIndex((period) => period === this.period) + 1) % periodTypes.length;\n this.period = periodTypes[nextPeriodIndex];\n }\n\n toggleType(): void {\n const nextTypeIndex = (filterTypes.findIndex((type) => type === this.type) + 1) % filterTypes.length;\n this.type = filterTypes[nextTypeIndex];\n // If statements below rely on the cycle order when toggling between types\n if (this.type === 'GREATER_THAN') {\n periodTypes.forEach((period) => {\n this.lastKnownDateTo[period] = this.dateTo[period];\n this.dateTo[period] = undefined;\n this.lastKnownDateToRelative[period] = this.dateToRelative[period];\n this.dateToRelative[period] = undefined;\n });\n }\n if (this.type === 'LESS_THAN') {\n periodTypes.forEach((period) => {\n this.dateTo[period] = this.lastKnownDateTo[period];\n this.dateToRelative[period] = this.lastKnownDateToRelative[period];\n this.lastKnownDateFrom[period] = this.dateFrom[period];\n this.dateFrom[period] = undefined;\n this.lastKnownDateFromRelative[period] = this.dateFromRelative[period];\n this.dateFromRelative[period] = undefined;\n });\n }\n if (this.type === 'DATE_RANGE') {\n periodTypes.forEach((period) => {\n this.dateFrom[period] = this.lastKnownDateFrom[period];\n this.dateFromRelative[period] = this.lastKnownDateFromRelative[period];\n });\n }\n }\n\n /**\n * Validates values and fixes them if necessary.\n */\n validateRelative(): void {\n if (!isNil(this.dateFromRelative[this.period])) {\n const isValid = !this.dateToRelative[this.period] || this.dateFromRelative[this.period] <= this.dateToRelative[this.period];\n this.dateFromRelative[this.period] = isValid ? this.dateFromRelative[this.period] : this.dateToRelative[this.period];\n }\n if (!isNil(this.dateToRelative[this.period])) {\n const isValid = !this.dateFromRelative[this.period] || this.dateToRelative[this.period] >= this.dateFromRelative[this.period];\n this.dateToRelative[this.period] = isValid ? this.dateToRelative[this.period] : this.dateFromRelative[this.period];\n }\n }\n\n /**\n * Does any updates that has to happen on changes\n */\n update(): void {\n this.updateMinMaxDate();\n if (this.isRelative) {\n this.syncFixed();\n this.syncRelative();\n } else {\n this.syncRelative();\n this.syncFixed();\n }\n }\n\n /**\n * Use to set and update min max values after model change or data received from database/local storage\n */\n updateMinMaxDate(): void {\n // NgbDate for 'DAY' datepicker\n this.updateMinMaxNgbDate();\n // Available Ng-Select options in DateFrom and DateTo\n this.updateDateFromPeriodValues();\n this.updateDateToPeriodValues();\n }\n\n updateDateFrom(date: Date): void {\n if (date === undefined) {\n return;\n }\n this.dateFrom[this.period] = !this.dateTo[this.period] || date <= this.dateTo[this.period] ? date : this.dateFrom[this.period];\n this.ngSelectDateFrom = this.dateFrom[this.period]\n ? this.periodValues[this.period].find((period) => period.date.getTime() === this.dateFrom[this.period].getTime())\n : undefined;\n }\n\n updateDateTo(date: Date): void {\n if (date === undefined) {\n return;\n }\n this.dateTo[this.period] = !this.dateFrom[this.period] || date > this.dateFrom[this.period] ? date : this.dateTo[this.period];\n this.ngSelectDateTo = this.dateTo[this.period]\n ? this.periodValues[this.period].find((period) => period.date.getTime() === this.dateTo[this.period].getTime())\n : undefined;\n }\n\n // eslint-disable-next-line max-lines-per-function\n toDeQueryFilter(): DeQueryFilter {\n const relativePeriods: { [key in PeriodType]: DeQueryFilterOperator } = {\n DAY: 'RELDAYS',\n WEEK: 'RELWEEKS',\n MONTH: 'RELMONTHS',\n YEAR: 'RELYEARS'\n };\n return {\n column: {\n name: this.idColumnName\n },\n values: this.isRelative\n ? getRelativeValues(this.dateFromRelative, this.dateToRelative, this.period, this.type)\n : [toDateString(this.dateFrom[this.period]), toDateString(this.dateTo[this.period])].filter((value) => !!value),\n operator: this.isRelative\n ? relativePeriods[this.period]\n : this.type === 'DATE_RANGE'\n ? 'BETWEEN'\n : this.type === 'GREATER_THAN'\n ? '>='\n : '<=',\n ui: {\n column: {\n name: this.name\n },\n selectedSubtypeId: this.name,\n fixed: this.locked,\n datePeriod: this.period,\n dateType: this.type,\n class: this.filterType\n }\n };\n\n function getRelativeValues(\n dateFromRelative: { [key in PeriodType]: number },\n dateToRelative: { [key in PeriodType]: number },\n period: PeriodType,\n filterType: FilterType\n ): number[] {\n const infiniteRelativeValues: { [key in PeriodType]: number } = { DAY: 40000, WEEK: 6000, MONTH: 1200, YEAR: 100 };\n const values = [dateFromRelative[period], dateToRelative[period]];\n if (filterType === 'GREATER_THAN') {\n values[1] = infiniteRelativeValues[period];\n }\n if (filterType === 'LESS_THAN') {\n values[0] = -infiniteRelativeValues[period];\n }\n return values;\n }\n\n function toDateString(date: Date | undefined): string | undefined {\n return date instanceof Date ? TimezoneService.dateToString(date).replace(/-/g, '') : undefined;\n }\n }\n\n // eslint-disable-next-line complexity\n updateFromDeQueryFilter(filter: DeQueryFilter): void {\n this.isRelative = filter.operator === 'RELPERIODS';\n this.locked = !!filter.ui.fixed;\n this.period = periodTypes.includes(filter.ui.datePeriod as PeriodType) ? (filter.ui.datePeriod as PeriodType) : this.period;\n this.type = filterTypes.includes(filter.ui.dateType as FilterType) ? (filter.ui.dateType as FilterType) : this.type;\n if (this.isRelative) {\n this.dateFromRelative[this.period] = +filter.values[0];\n this.dateToRelative[this.period] = +filter.values[1];\n } else {\n if (filter.values[0]) {\n const dateString = filter.values[0].toString(); // DeQueryFilter value received as string 'YYYYMMDD'\n const date = new Date(+dateString.substr(0, 4), +dateString.substr(4, 2) - 1, +dateString.substr(6, 2));\n filter.operator !== '<=' && filter.operator !== '<' ? this.updateDateFrom(date) : this.updateDateTo(date);\n }\n if (filter.values[1] && filter.operator === 'BETWEEN') {\n const dateTo = filter.values[1].toString();\n this.updateDateTo(new Date(+dateTo.substr(0, 4), +dateTo.substr(4, 2) - 1, +dateTo.substr(6, 2)));\n }\n }\n this.update();\n }\n\n /**\n * Update relative based on fixed values after fixed changed\n */\n private syncRelative(): void {\n if (this.period === 'DAY') {\n this.dateFromRelative[this.period] = this.dateFrom[this.period]\n ? Math.ceil((this.dateFrom[this.period].getTime() - new Date().getTime()) / (1000 * 3600 * 24))\n : undefined;\n this.dateToRelative[this.period] = this.dateTo[this.period]\n ? Math.ceil((this.dateTo[this.period].getTime() - new Date().getTime()) / (1000 * 3600 * 24))\n : undefined;\n return;\n }\n if (this.periodValues[this.period] === undefined || this.periodValues[this.period].length === 0) {\n return;\n }\n const zeroIndex = Math.floor(this.periodValues[this.period].length / 2);\n this.dateFromRelative[this.period] = this.dateFrom[this.period]\n ? this.periodValues[this.period].findIndex((period) => period.date.getTime() === this.dateFrom[this.period].getTime()) - zeroIndex\n : this.dateFromRelative[this.period];\n this.dateToRelative[this.period] = this.dateTo[this.period]\n ? this.periodValues[this.period].findIndex((period) => period.date.getTime() === this.dateTo[this.period].getTime()) - zeroIndex\n : this.dateToRelative[this.period];\n }\n\n /**\n * Update fixed based on relative values after relative changed\n */\n private syncFixed(): void {\n if (this.period === 'DAY') {\n this.dateFrom[this.period] =\n this.dateFromRelative[this.period] !== undefined\n ? new Date(new Date(new Date().setHours(0, 0, 0, 0)).setDate(new Date().getDate() + this.dateFromRelative[this.period]))\n : undefined;\n this.dateTo[this.period] =\n this.dateToRelative[this.period] !== undefined\n ? new Date(new Date(new Date().setHours(0, 0, 0, 0)).setDate(new Date().getDate() + this.dateToRelative[this.period]))\n : undefined;\n return;\n }\n const zeroIndex = Math.floor(this.periodValues[this.period].length / 2);\n const dateFromPeriodValue = this.periodValues[this.period][zeroIndex + this.dateFromRelative[this.period]];\n this.dateFrom[this.period] = dateFromPeriodValue ? dateFromPeriodValue.date : this.dateFrom[this.period];\n this.ngSelectDateFrom = dateFromPeriodValue;\n const dateToPeriodValue = this.periodValues[this.period][zeroIndex + this.dateToRelative[this.period]];\n this.dateTo[this.period] = dateToPeriodValue ? dateToPeriodValue.date : this.dateTo[this.period];\n this.ngSelectDateTo = dateToPeriodValue;\n }\n\n private updateMinMaxNgbDate(): void {\n this.maxNgbDateFrom = this.dateTo[this.period]\n ? {\n year: this.dateTo[this.period].getFullYear(),\n month: this.dateTo[this.period].getMonth() + 1,\n day: this.dateTo[this.period].getDate()\n }\n : undefined;\n this.minNgbDateTo = this.dateFrom[this.period]\n ? {\n year: this.dateFrom[this.period].getFullYear(),\n month: this.dateFrom[this.period].getMonth() + 1,\n day: this.dateFrom[this.period].getDate()\n }\n : undefined;\n }\n\n private updateDateFromPeriodValues(): void {\n this.dateFromPeriodValues = this.dateTo[this.period]\n ? this.periodValues[this.period].filter((date) => date.date < this.dateTo[this.period])\n : this.periodValues[this.period];\n }\n\n private updateDateToPeriodValues(): void {\n this.dateToPeriodValues = this.dateFrom[this.period]\n ? this.periodValues[this.period].filter((date) => date.date > this.dateFrom[this.period])\n : this.periodValues[this.period];\n }\n\n private setupPeriodValues(): void {\n // Start and end date is a 20 year range. -10 +10\n const startDate = new Date(new Date(new Date().setHours(0, 0, 0, 0)).setFullYear(new Date().getFullYear() - 10));\n const endDate = new Date(new Date(new Date().setHours(0, 0, 0, 0)).setFullYear(new Date().getFullYear() + 10));\n\n let startMonday = new Date(startDate.setDate(startDate.getDate() - startDate.getDate() + 1));\n const weekShort = TranslationsService.get('WEEK_SHORT').toUpperCase();\n for (; startMonday < endDate; startMonday = new Date(new Date(startMonday).setDate(startMonday.getDate() + 7))) {\n this.periodValues.WEEK.push({\n caption: `${weekShort}${formatDate(new Date(startMonday), 'ww - d MMM y', 'en')}`,\n date: new Date(startMonday)\n });\n }\n\n let startMonth = new Date(startDate.setDate(1));\n for (; startMonth < endDate; startMonth = new Date(new Date(startMonth).setMonth(startMonth.getMonth() + 1))) {\n this.periodValues.MONTH.push({ caption: `${formatDate(new Date(startMonth), 'MMM y', 'en')}`, date: new Date(startMonth) });\n }\n\n let startYear = new Date(new Date(startDate.setMonth(0)).setDate(1));\n for (; startYear < endDate; startYear = new Date(new Date(startYear).setFullYear(startYear.getFullYear() + 1))) {\n this.periodValues.YEAR.push({ caption: `${formatDate(new Date(startYear), 'yyyy', 'en')}`, date: new Date(startYear) });\n }\n }\n}\n","import { ContextLine } from 'src/app/_core/de-query/model/context-line.model';\nimport { DeQueryFilter } from 'src/app/_core/de-query/model/de-query.model';\n\nexport type WorkspaceFilterType =\n | 'WorkspacePeriodFilter'\n | 'WorkspaceLookupFilter'\n | 'WorkspaceDateFilter'\n | 'WorkspaceNumberFilter'\n | 'WorkspaceAdvancedFilter'\n | 'WorkspaceBooleanFilter'\n | 'WorkspaceTextFilter';\n\nexport abstract class WorkspaceFilter {\n name: string;\n caption: string;\n groupName: string;\n groupCaption: string;\n idColumnName: string;\n locked = false;\n contextType: string;\n filterType: WorkspaceFilterType;\n\n /**\n * When additional filters where added for 6.2 and there were more than one filter for each column, the class name/type\n * was added to query.ui.class, older DeQueryFilters won't have this and should only match a period or lookup filter.\n */\n static isMatch(query: DeQueryFilter, filter: WorkspaceFilter): boolean {\n if (filter.idColumnName !== query.column.name) {\n return false;\n } // early exit if not matched\n if (filter.filterType.includes(query.ui.class) && filter.filterType !== 'WorkspacePeriodFilter') {\n return query.ui.column.name === filter.name;\n }\n return filter.filterType === 'WorkspacePeriodFilter' || filter.filterType === 'WorkspaceLookupFilter';\n }\n\n constructor(contextLine?: ContextLine) {\n if (!contextLine) {\n return;\n }\n\n this.name = contextLine.name;\n this.caption = contextLine.caption;\n this.groupName = contextLine.groupName;\n this.groupCaption = contextLine.groupCaption;\n this.idColumnName = contextLine.idColumnName;\n this.contextType = contextLine.type;\n }\n\n abstract toDeQueryFilter(): DeQueryFilter;\n abstract updateFromDeQueryFilter(query: DeQueryFilter): void;\n\n isFilterEmpty(): boolean {\n const deQueryFilter = this.toDeQueryFilter();\n return !deQueryFilter.values || deQueryFilter.values.length === 0;\n }\n\n toggleLock(): void {\n this.locked = !this.locked;\n }\n}\n","/* eslint-disable max-classes-per-file */\nimport { ContextLine } from 'src/app/_core/de-query/model/context-line.model';\nimport { DeQuery, DeQueryFilter } from 'src/app/_core/de-query/model/de-query.model';\nimport { WorkspaceFilter, WorkspaceFilterType } from 'src/app/workspaces/details/filters/models/workspace-filter.model';\n\nexport class WorkspaceLookupFilterValue {\n name: string;\n id: string | number;\n\n constructor(query: {}, filter: WorkspaceLookupFilter) {\n this.id = query[filter.idColumnName];\n this.name = `${query[filter.name]}`;\n this.name = this.name === '' || this.name === null || this.name === 'null' ? '[no value]' : this.name;\n }\n}\n\nexport class WorkspaceLookupFilter extends WorkspaceFilter {\n selectedType: 'CHECKBOX' | 'LOOKUP' = 'LOOKUP';\n lookupValues: WorkspaceLookupFilterValue[] = [];\n selectedValues: WorkspaceLookupFilterValue[] = [];\n deQuerySelected: (string | number)[] = [];\n excludeSelected = false;\n lookupColumn: string;\n filterType: WorkspaceFilterType = 'WorkspaceLookupFilter';\n\n constructor(contextLine?: ContextLine) {\n super(contextLine);\n if (!contextLine) {\n return;\n }\n this.selectedType = !!contextLine.lowCardinality ? 'CHECKBOX' : 'LOOKUP';\n this.lookupColumn = contextLine.lookupColumn;\n }\n\n toggleNextType(): void {\n this.selectedType = this.selectedType !== 'LOOKUP' ? 'LOOKUP' : 'CHECKBOX';\n }\n\n getLookupValueQuery(): DeQuery {\n return {\n queryType: 'distinct',\n columns: [{ name: this.name }]\n };\n }\n\n toDeQueryFilter(): DeQueryFilter {\n return {\n column: {\n name: this.idColumnName\n },\n values: this.selectedValues.map((value) => value.id),\n operator: this.excludeSelected ? 'NOTIN' : 'IN',\n ui: {\n column: {\n name: this.name\n },\n selectedSubtypeId: this.selectedType === 'CHECKBOX' ? 'checklist' : 'lookup',\n fixed: this.locked,\n class: this.filterType\n }\n };\n }\n\n updateFromDeQueryFilter(query: DeQueryFilter): void {\n this.selectedType = query.ui.selectedSubtypeId === 'checklist' ? 'CHECKBOX' : 'LOOKUP';\n this.excludeSelected = query.operator === 'NOTIN';\n this.deQuerySelected = Array.isArray(query.values) ? query.values : [];\n this.selectedValues = this.deQuerySelected.map((value) => {\n return { name: `${value}`, id: isNaN(+value) ? value : +value };\n });\n this.locked = !!query.ui.fixed;\n }\n\n setLookupValues(lookupValues: WorkspaceLookupFilterValue[]): void {\n this.lookupValues = lookupValues;\n this.selectedValues = [];\n this.deQuerySelected.map((queryFilter) => {\n const lookupValue = this.lookupValues.find((value) => `${value.id}` === `${queryFilter}`);\n if (lookupValue) {\n this.selectedValues.push(lookupValue);\n }\n });\n }\n}\n","import { isNil } from 'lodash';\n\nimport { ContextLine } from 'src/app/_core/de-query/model/context-line.model';\nimport { DeQueryFilter, DeQueryFilterOperator } from 'src/app/_core/de-query/model/de-query.model';\nimport { WorkspaceFilter, WorkspaceFilterType } from 'src/app/workspaces/details/filters/models/workspace-filter.model';\n\nexport type WorkspaceNumberFilterType =\n | 'EQUALS'\n | 'NOT_EQUALS'\n | 'GREATER_THAN'\n | 'GREATER_THAN_OR_EQUALS'\n | 'LESS_THAN'\n | 'LESS_THAN_OR_EQUALS'\n | 'NUMBER_RANGE';\ntype NumberFilterDeQueryOperators = Extract' | '>=' | '<' | '<='>;\n\nexport class WorkspaceNumberFilter extends WorkspaceFilter {\n rangeFrom: number;\n rangeTo: number;\n value: number;\n type: WorkspaceNumberFilterType = 'NUMBER_RANGE';\n readonly filterTypes: WorkspaceNumberFilterType[] = [\n 'EQUALS',\n 'NOT_EQUALS',\n 'GREATER_THAN',\n 'GREATER_THAN_OR_EQUALS',\n 'LESS_THAN',\n 'LESS_THAN_OR_EQUALS',\n 'NUMBER_RANGE'\n ];\n filterType: WorkspaceFilterType = 'WorkspaceNumberFilter';\n\n constructor(contextLine?: ContextLine) {\n super(contextLine);\n if (!contextLine) {\n return;\n }\n }\n\n selectType(type: WorkspaceNumberFilterType): void {\n this.type = type;\n }\n\n toDeQueryFilter(): DeQueryFilter {\n return {\n column: {\n name: this.idColumnName\n },\n values: this.type === 'NUMBER_RANGE' ? this.getRange() : [this.value].filter((value) => !isNil(value)),\n operator: this.getOperatorFromType(),\n ui: {\n column: {\n name: this.name\n },\n selectedSubtypeId: this.type,\n fixed: this.locked,\n class: this.filterType\n }\n };\n }\n\n updateFromDeQueryFilter(query: DeQueryFilter): void {\n const operatorToType: { [Key in NumberFilterDeQueryOperators]: WorkspaceNumberFilterType } = {\n BETWEEN: 'NUMBER_RANGE',\n '>': 'GREATER_THAN',\n '>=': 'GREATER_THAN_OR_EQUALS',\n '<': 'LESS_THAN',\n '<=': 'LESS_THAN_OR_EQUALS',\n '=': 'EQUALS',\n NOTIN: 'NOT_EQUALS'\n };\n this.type = operatorToType[query.operator];\n this.locked = !!query.ui.fixed;\n if (this.type === 'NUMBER_RANGE') {\n this.rangeFrom = query.values && query.values[0] !== null ? +query.values[0] : this.rangeFrom;\n this.rangeTo = query.values && query.values[1] !== null ? +query.values[1] : this.rangeTo;\n } else {\n this.value = query.values && query.values[0] !== null ? +query.values[0] : this.value;\n }\n }\n\n private getOperatorFromType(): DeQueryFilterOperator {\n const typeToOperator: { [Key in WorkspaceNumberFilterType]: DeQueryFilterOperator } = {\n NUMBER_RANGE: 'BETWEEN',\n GREATER_THAN: '>',\n GREATER_THAN_OR_EQUALS: '>=',\n LESS_THAN: '<',\n LESS_THAN_OR_EQUALS: '<=',\n EQUALS: '=',\n NOT_EQUALS: 'NOTIN'\n };\n let operator = typeToOperator[this.type];\n if (operator === 'BETWEEN') {\n if (!isNil(this.rangeFrom) && isNil(this.rangeTo)) {\n operator = '>=';\n }\n if (isNil(this.rangeFrom) && !isNil(this.rangeTo)) {\n operator = '<=';\n }\n }\n return operator;\n }\n\n private getRange(): number[] {\n const range = [this.rangeFrom, this.rangeTo];\n range[0] = isNil(range[0]) ? range[1] : range[0];\n range[1] = isNil(range[1]) ? range[0] : range[1];\n return range.filter((value) => !isNil(value));\n }\n}\n","/* eslint-disable max-len */\n// eslint-disable-next-line max-classes-per-file\nimport { NgbDateStruct } from '@ng-bootstrap/ng-bootstrap';\n\nimport { ContextLine } from 'src/app/_core/de-query/model/context-line.model';\nimport { DeQuery, DeQueryFilter } from 'src/app/_core/de-query/model/de-query.model';\nimport { TimezoneService } from 'src/app/_core/timezone.service';\nimport { WorkspaceFilter, WorkspaceFilterType } from 'src/app/workspaces/details/filters/models/workspace-filter.model';\n\nexport class WorkspacePeriodFilterValue {\n date: Date;\n caption: string;\n\n constructor(query: {}, periodFilter: WorkspacePeriodFilter) {\n this.caption = query[periodFilter.name];\n const dateId = query[periodFilter.idColumnName];\n const dateString = `${dateId}`; // e.g '20170613'\n this.date = new Date(+dateString.substr(0, 4), +dateString.substr(4, 2) - 1, +dateString.substr(6, 2));\n }\n}\n\nconst periodTypes = ['DAY', 'WEEK', 'MONTH'];\ntype PeriodType = 'DAY' | 'WEEK' | 'MONTH' | 'UNKNOWN';\n\nexport class WorkspacePeriodFilter extends WorkspaceFilter {\n minDate: Date;\n maxDate: Date;\n dateFrom: Date = new Date();\n dateTo: Date = new Date();\n dateFromRelative: number;\n dateToRelative: number;\n isRelative = true;\n type: PeriodType = 'UNKNOWN';\n filterType: WorkspaceFilterType = 'WorkspacePeriodFilter';\n\n // Relative range\n minDateFromRelative: number; //\n get maxDateFromRelative(): number {\n return this.dateToRelative;\n }\n get minDateToRelative(): number {\n return this.dateFromRelative;\n }\n maxDateToRelative: number;\n\n // DAY - NgbDateStruct for DatePicker\n minNgbDateFrom: NgbDateStruct = { year: undefined, month: undefined, day: undefined };\n maxNgbDateFrom: NgbDateStruct = { year: undefined, month: undefined, day: undefined };\n minNgbDateTo: NgbDateStruct = { year: undefined, month: undefined, day: undefined };\n maxNgbDateTo: NgbDateStruct = { year: undefined, month: undefined, day: undefined };\n\n // WEEK/MONTH - ngSelect values, Date value and label for date\n ngSelectDateFrom: WorkspacePeriodFilterValue; // The selected value from @dateFromPeriodValues\n ngSelectDateTo: WorkspacePeriodFilterValue; // The selected value from @dateToPeriodValues\n periodValues: WorkspacePeriodFilterValue[] = []; // Selectable period values, Date Values { date: Date, caption: string }\n dateFromPeriodValues: WorkspacePeriodFilterValue[] = []; // This is changed when dateTo changes and vice versa to limit and avoid overlap\n dateToPeriodValues: WorkspacePeriodFilterValue[] = [];\n\n constructor(contextLine?: ContextLine) {\n super(contextLine);\n this.setType();\n this.setDefaultValues();\n }\n\n setDateValues(dates: WorkspacePeriodFilterValue[]): void {\n this.minDate = dates.length > 0 ? dates.reduce((prev, curr) => (prev.date < curr.date ? prev : curr)).date : this.minDate;\n this.maxDate = dates.length > 0 ? dates.reduce((prev, curr) => (prev.date > curr.date ? prev : curr)).date : this.maxDate;\n this.periodValues = dates;\n this.ngSelectDateFrom = this.dateFrom\n ? this.periodValues.find((period) => period.date.getTime() === this.dateFrom.getTime())\n : undefined;\n this.ngSelectDateTo = this.dateTo ? this.periodValues.find((period) => period.date.getTime() === this.dateTo.getTime()) : undefined;\n this.update();\n }\n\n /**\n * Validates values and fixes them if necessary.\n */\n validateAndUpdate(): void {\n const isValid =\n isNumber(this.dateFromRelative) &&\n isNumber(this.dateToRelative) &&\n isWithin(this.dateFromRelative, this.minDateFromRelative, this.maxDateFromRelative) &&\n isWithin(this.dateToRelative, this.minDateToRelative, this.maxDateToRelative);\n if (!isValid) {\n this.fixInvalid();\n }\n\n function isWithin(value: number, min: number, max: number): boolean {\n return value >= min && value <= max;\n }\n function isNumber(value: undefined | number): boolean {\n return typeof value === 'number';\n }\n }\n\n /**\n * Does any updates that has to happen on changes\n */\n update(): void {\n this.updateMinMaxDate();\n if (this.isRelative) {\n this.syncFixed();\n this.syncRelative();\n } else {\n this.syncRelative();\n this.syncFixed();\n }\n }\n\n /**\n * Validates selected Date and updates min max values so @dateTo and @dateFrom selection doesn't overlap\n * @param date selected Date which should be applied to @dateFrom after validation\n */\n // eslint-disable-next-line complexity\n updateDateFrom(date: Date): void {\n if (date === undefined) {\n return;\n }\n this.dateFrom =\n !this.minDate || (date && date >= this.minDate && date <= this.maxDate && (!this.dateTo || date <= this.dateTo))\n ? date\n : this.dateFrom;\n this.ngSelectDateFrom = this.dateFrom\n ? this.periodValues.find((period) => period.date.getTime() === this.dateFrom.getTime())\n : undefined;\n }\n\n /**\n * Validates selected Date and updates min max values so @dateTo and @dateFrom selection doesn't overlap\n * @param date selected Date which should be applied to @dateTo after validation\n */\n // eslint-disable-next-line complexity\n updateDateTo(date: Date): void {\n if (date === undefined) {\n return;\n }\n this.dateTo =\n !this.maxDate || (date && date >= this.minDate && date <= this.maxDate && (!this.dateFrom || date >= this.dateFrom))\n ? date\n : this.dateTo;\n this.ngSelectDateTo = this.dateTo ? this.periodValues.find((period) => period.date.getTime() === this.dateTo.getTime()) : undefined;\n }\n\n /**\n * Use to set and update min max values after model change or data received from database/local storage\n */\n updateMinMaxDate(): void {\n // NgbDate for 'DAY' datepicker\n this.updateMinNgbDateFrom();\n this.updateMaxNgbDateFrom();\n this.updateMinNgbDateTo();\n this.updateMaxNgbDateTo();\n // Relative boundaries\n this.updateMinDateFromRelative();\n this.updateMaxDateToRelative();\n // Available Ng-Select options in DateFrom and DateTo\n this.updateDateFromPeriodValues();\n this.updateDateToPeriodValues();\n }\n\n updateFromDeQueryFilter(filter: DeQueryFilter): void {\n this.isRelative = filter.operator === 'RELPERIODS';\n this.locked = !!filter.ui.fixed;\n if (this.isRelative) {\n this.dateFromRelative = +filter.values[0];\n this.dateToRelative = +filter.values[1];\n } else {\n const dateFrom = filter.values[0].toString(); // DeQueryFilter value received as string 'YYYYMMDD'\n this.updateDateFrom(new Date(+dateFrom.substr(0, 4), +dateFrom.substr(4, 2) - 1, +dateFrom.substr(6, 2)));\n const dateTo = filter.values[1].toString();\n this.updateDateTo(new Date(+dateTo.substr(0, 4), +dateTo.substr(4, 2) - 1, +dateTo.substr(6, 2)));\n }\n this.update();\n }\n\n toDeQueryFilter(): DeQueryFilter {\n return {\n column: {\n name: this.idColumnName\n },\n values: this.isRelative\n ? [this.dateFromRelative, this.dateToRelative]\n : [TimezoneService.dateToString(this.dateFrom).replace(/-/g, ''), TimezoneService.dateToString(this.dateTo).replace(/-/g, '')],\n operator: this.isRelative ? 'RELPERIODS' : 'BETWEEN',\n ui: {\n selectedSubtypeId: this.name,\n column: {\n name: this.groupName\n },\n fixed: this.locked,\n class: this.filterType\n }\n };\n }\n\n getDateValueQuery(): DeQuery {\n // 100 Years is the ultimate lower/upper limit, the limit is also determined by the database date table values.\n const minDate = new Date(new Date().setFullYear(new Date().getFullYear() - 100));\n const minDateString = TimezoneService.dateToString(minDate).replace(/-/g, '');\n const maxDate = new Date(new Date().setFullYear(new Date().getFullYear() + 100));\n const maxDateString = TimezoneService.dateToString(maxDate).replace(/-/g, '');\n return {\n queryType: 'distinct',\n columns: [{ name: this.idColumnName }, { name: this.name }],\n filters: [\n {\n column: { name: this.idColumnName },\n operator: '>',\n values: [minDateString]\n },\n {\n column: { name: this.idColumnName },\n operator: '<',\n values: [maxDateString]\n }\n ]\n };\n }\n\n /**\n * Called from isValid() when either relative value is invalid\n */\n private fixInvalid(): void {\n this.dateFromRelative =\n this.dateFromRelative > this.maxDateFromRelative\n ? this.maxDateFromRelative\n : this.dateFromRelative < this.minDateFromRelative\n ? this.minDateFromRelative\n : this.dateFromRelative;\n this.dateToRelative =\n this.dateToRelative > this.maxDateToRelative\n ? this.maxDateToRelative\n : this.dateToRelative < this.minDateToRelative\n ? this.minDateToRelative\n : this.dateToRelative;\n this.syncFixed();\n }\n\n private setType(): void {\n this.type = this.caption ? (this.caption.toUpperCase() as PeriodType) : undefined;\n if (!periodTypes.includes(this.type)) {\n this.type = 'UNKNOWN';\n }\n }\n\n private setDefaultValues(): void {\n switch (this.type) {\n case 'DAY':\n this.dateFromRelative = 1;\n this.dateToRelative = 30;\n break;\n case 'WEEK':\n this.dateFromRelative = 1;\n this.dateToRelative = 8;\n break;\n case 'MONTH':\n this.dateFromRelative = 1;\n this.dateToRelative = 12;\n break;\n default:\n }\n }\n\n // Functions to update min/max values on changes, called within update()\n\n private updateMinNgbDateFrom(): void {\n if (this.minDate === undefined) {\n return;\n }\n this.minNgbDateFrom = { year: this.minDate.getFullYear(), month: this.minDate.getMonth() + 1, day: this.minDate.getDate() };\n }\n\n private updateMaxNgbDateFrom(): void {\n const max = this.dateTo ? new Date(this.dateTo) : this.maxDate ? new Date(this.maxDate) : undefined;\n if (max === undefined) {\n return;\n }\n const before = new Date(new Date(max).setDate(max.getDate() - 1));\n this.maxNgbDateFrom = { year: before.getFullYear(), month: before.getMonth() + 1, day: before.getDate() };\n }\n\n private updateMinNgbDateTo(): void {\n const min = this.dateFrom ? new Date(this.dateFrom) : this.minDate ? new Date(this.minDate) : undefined;\n if (min === undefined) {\n return;\n }\n const after = new Date(new Date(min).setDate(min.getDate() + 1));\n this.minNgbDateTo = { year: after.getFullYear(), month: after.getMonth() + 1, day: after.getDate() };\n }\n\n private updateMaxNgbDateTo(): void {\n if (this.maxDate === undefined) {\n return;\n }\n this.maxNgbDateTo = { year: this.maxDate.getFullYear(), month: this.maxDate.getMonth() + 1, day: this.maxDate.getDate() };\n }\n\n private updateMinDateFromRelative(): void {\n if (this.periodValues === undefined || this.periodValues.length === 0) {\n return;\n }\n this.minDateFromRelative = -this.periodValues.filter((date) => date.date < new Date()).length + 1;\n }\n\n private updateMaxDateToRelative(): void {\n if (this.periodValues === undefined || this.periodValues.length === 0) {\n return;\n }\n this.maxDateToRelative = this.periodValues.filter((date) => date.date > new Date()).length;\n }\n\n private updateDateFromPeriodValues(): void {\n this.dateFromPeriodValues = this.dateTo ? this.periodValues.filter((date) => date.date <= this.dateTo) : this.periodValues;\n }\n\n private updateDateToPeriodValues(): void {\n this.dateToPeriodValues = this.dateFrom ? this.periodValues.filter((date) => date.date >= this.dateFrom) : this.periodValues;\n }\n\n /**\n * Update relative based on fixed values\n */\n private syncRelative(): void {\n if (this.periodValues === undefined || this.periodValues.length === 0) {\n return;\n }\n let zeroIndex = 0; // Current Period index\n for (; zeroIndex < this.periodValues.length - 1; zeroIndex += 1) {\n if (this.periodValues[zeroIndex].date <= new Date() && new Date() <= this.periodValues[zeroIndex + 1].date) {\n break;\n }\n }\n // Fix time when set with text input\n this.dateFrom.setHours(0, 0, 0, 0);\n this.dateTo.setHours(0, 0, 0, 0);\n this.dateFromRelative = this.dateFrom\n ? this.periodValues.findIndex((period) => period.date.getTime() === this.dateFrom.getTime()) - zeroIndex\n : this.dateFromRelative;\n this.dateToRelative = this.dateTo\n ? this.periodValues.findIndex((period) => period.date.getTime() === this.dateTo.getTime()) - zeroIndex\n : this.dateToRelative;\n }\n\n /**\n * Update fixed based on relative values\n */\n // eslint-disable-next-line complexity\n private syncFixed(): void {\n if (this.periodValues === undefined || this.periodValues.length === 0) {\n return;\n }\n let zeroIndex = 0; // Current Period index\n for (; zeroIndex < this.periodValues.length - 1; zeroIndex += 1) {\n if (this.periodValues[zeroIndex].date <= new Date() && new Date() <= this.periodValues[zeroIndex + 1].date) {\n break;\n }\n }\n const dateFromPeriodValue = this.periodValues[zeroIndex + this.dateFromRelative]\n ? this.periodValues[zeroIndex + this.dateFromRelative]\n : this.periodValues[0];\n this.dateFrom = dateFromPeriodValue ? dateFromPeriodValue.date : this.dateFrom;\n this.ngSelectDateFrom = dateFromPeriodValue;\n const dateToPeriodValue = this.periodValues[zeroIndex + this.dateToRelative]\n ? this.periodValues[zeroIndex + this.dateToRelative]\n : this.periodValues[this.periodValues.length - 1];\n this.dateTo = dateToPeriodValue ? dateToPeriodValue.date : this.dateTo;\n this.ngSelectDateTo = dateToPeriodValue;\n }\n}\n","/* eslint-disable max-classes-per-file */\nimport { ContextLine } from 'src/app/_core/de-query/model/context-line.model';\nimport { DeQuery } from 'src/app/_core/de-query/model/de-query.model';\n\nexport interface WorkspaceViewActionDTO {\n name: string;\n}\n\n/**\n * Workspace Action\n */\nexport class WorkspaceAction {\n name: string;\n caption: string;\n captionPostfix = '';\n description: string;\n showInfo = false;\n\n // Config from action_json / ActionConfigDTO\n gridSelection: 'all';\n includeAffected: boolean;\n longRunningAction: boolean;\n refreshGridAfterAction: boolean;\n serieOverrideFromArg: string; // Matches name in modal operation selected options field (operations.fields.name)\n operations: WorkspaceActionOperation[] = [];\n get hasModal(): boolean {\n return this.operations.some((operation) => operation.type === 'modal');\n }\n get modalOperation(): WorkspaceActionOperation {\n return this.operations.find((operation) => operation.type === 'modal');\n }\n get inputFields(): WorkspaceActionModalField[] {\n return this.hasModal ? this.modalOperation.fields : [];\n }\n\n constructor(contextLine: ContextLine) {\n this.name = contextLine.name;\n this.caption = contextLine.caption;\n this.description = contextLine.description;\n\n const actionConfig = new WorkspaceActionConfig(contextLine.actionJson);\n const clientData = actionConfig.clientData;\n const actionArgs = actionConfig.clientData.actionArgs;\n\n this.gridSelection = clientData.gridSelection;\n this.includeAffected = actionArgs.includeAffected;\n this.refreshGridAfterAction = actionArgs.refreshGridAfterAction;\n this.serieOverrideFromArg = actionArgs.serieOverride ? actionArgs.serieOverride.readFromArg : undefined;\n this.longRunningAction = actionArgs.longRunningAction;\n this.operations = contextLine.actionJson.operations.map((operation) => new WorkspaceActionOperation(operation));\n this.setCaptionPostfix();\n }\n\n toDto(): WorkspaceViewActionDTO {\n return { name: this.name };\n }\n\n toQueryArgs(): ActionArgsDTO {\n const args = {\n includeAffected: this.includeAffected,\n serieOverride: { readFromArg: this.serieOverrideFromArg },\n refreshGridAfterAction: this.refreshGridAfterAction,\n longRunningAction: this.longRunningAction\n };\n this.inputFields.map((field) => {\n args[field.name] = field.value;\n });\n return args;\n }\n\n // Sets postfix of '...' to the end of actions with modal\n private setCaptionPostfix(): void {\n if (this.hasModal && this.caption.indexOf('...') === -1) {\n this.captionPostfix = '...';\n }\n }\n}\n\ntype WorkspaceActionOperationType = 'modal' | 'lockAffectedCells' | 'sp' | 'refreshAffectedCells' | 'unlockAffectedCells' | 'refreshView';\ntype WorkspaceActionModalFieldType = 'select' | 'text' | 'int' | 'string' | 'date';\ntype WorkspaceActionSelectOption = 'viewDataSeries' | 'planDataSeries';\n\nexport class WorkspaceActionOperation {\n name?: string;\n type: WorkspaceActionOperationType;\n fields: WorkspaceActionModalField[] = [];\n\n constructor(operation?: WorkspaceActionOperationDTO) {\n if (!operation) {\n return;\n }\n this.name = operation.name;\n this.type = operation.type;\n if (this.type === 'modal' && operation.fields) {\n this.fields = operation.fields.map((field) => new WorkspaceActionModalField(field));\n }\n }\n}\n\nexport class WorkspaceActionModalField {\n name: string;\n caption: string;\n description: string;\n type: WorkspaceActionModalFieldType;\n required: boolean;\n defaultValue: string;\n value: string | number; // Set from form input\n options: WorkspaceActionOptionValue[] = [];\n optionsFrom?: WorkspaceActionSelectOption | undefined; // If !undefined options are set based on this value\n optionsQuery?: WorkspaceActionModalFieldOptionsQuery; // If options will be provided by query\n multiple = false;\n optionsLoaded = false;\n\n constructor(field: WorkspaceActionModalFieldDTO) {\n this.name = field.name;\n this.caption = field.caption;\n this.description = field.description;\n this.required = field.required;\n this.type = field.type;\n this.defaultValue = field.defaultValue;\n this.optionsQuery = field.optionsQuery;\n this.multiple = !!field.multiple;\n if (field.optionValues instanceof Array) {\n this.options = field.optionValues;\n } else {\n this.optionsFrom = field.optionValues;\n }\n }\n\n /**\n * Sets option values from view when modal is opened\n */\n setOptionValues(optionValues: WorkspaceActionOptionValue[]): void {\n this.options = optionValues;\n }\n\n setOptionValuesFromQueryResult(optionValues: object[]): void {\n this.options = optionValues.map((option) => ({\n name: option[this.optionsQuery.nameColumn],\n caption: option[this.optionsQuery.captionColumn]\n }));\n this.optionsLoaded = true;\n }\n}\n\n// ActionConfigDTO, contextLine property action_json\nexport interface WorkspaceActionConfigDTO {\n clientData: ClientDataDTO;\n operations: WorkspaceActionOperationDTO[];\n}\n\nexport class WorkspaceActionConfig {\n clientData = new ClientData();\n operations: WorkspaceActionOperation[] = [];\n constructor(config?: WorkspaceActionConfigDTO) {\n if (!config) {\n return;\n }\n this.clientData = new ClientData(config.clientData);\n this.operations = config.operations ? config.operations.map((operation) => new WorkspaceActionOperation(operation)) : [];\n }\n}\n\ninterface WorkspaceActionOperationDTO {\n type?: WorkspaceActionOperationType;\n fields?: WorkspaceActionModalFieldDTO[];\n name?: string;\n}\n\nexport interface WorkspaceActionModalFieldOptionsQuery {\n nameColumn: string;\n captionColumn: string;\n query: DeQuery;\n}\n\ninterface WorkspaceActionModalFieldDTO {\n name?: string;\n caption?: string;\n type?: WorkspaceActionModalFieldType;\n optionValues?: WorkspaceActionOptionValue[] | WorkspaceActionSelectOption;\n description?: string;\n required?: boolean;\n defaultValue?: string;\n optionsQuery?: WorkspaceActionModalFieldOptionsQuery;\n multiple?: boolean;\n}\n\ninterface WorkspaceActionOptionValue {\n name?: string;\n caption?: string;\n}\n\ninterface ClientDataDTO {\n gridSelection?: 'all';\n actionArgs?: ActionArgsDTO;\n}\n\nclass ClientData {\n gridSelection?: 'all' | undefined;\n actionArgs = new ActionArgs();\n constructor(data?: ClientDataDTO) {\n if (!data) {\n return;\n }\n this.gridSelection = data.gridSelection;\n this.actionArgs = new ActionArgs(data.actionArgs);\n }\n}\n\ninterface ActionArgsDTO {\n includeAffected?: boolean;\n serieOverride?: SerieOverrideDTO;\n refreshGridAfterAction?: boolean;\n longRunningAction?: boolean;\n}\n\nclass ActionArgs {\n includeAffected = false;\n serieOverride = new SerieOverride();\n refreshGridAfterAction = false;\n longRunningAction = false;\n constructor(args?: ActionArgsDTO) {\n if (!args) {\n return;\n }\n this.includeAffected = args.includeAffected;\n this.serieOverride = new SerieOverride(args.serieOverride);\n this.refreshGridAfterAction = args.refreshGridAfterAction;\n this.longRunningAction = args.longRunningAction;\n }\n}\n\ninterface SerieOverrideDTO {\n readFromArg?: string;\n}\n\nclass SerieOverride {\n readFromArg = '';\n constructor(override?: SerieOverrideDTO) {\n if (!override) {\n return;\n }\n this.readFromArg = override.readFromArg;\n }\n}\n\nexport interface ActionResponseDTO {\n result: string;\n caption: string;\n actionId: number;\n}\n","type AggregationType = 'sum' | 'avg';\ntype DistMethodType = 'proportional' | 'simple';\n\nexport interface ConfigColumnAggregationDTO {\n enabled: boolean;\n type: AggregationType;\n editable?: boolean;\n distMethod?: DistMethodType;\n action?: string;\n actionArgs?: object;\n}\n\nexport class ConfigColumnAggregation {\n enabled: boolean;\n type: AggregationType;\n editable?: boolean;\n distMethod?: DistMethodType;\n action?: string;\n actionArgs?: object;\n\n constructor(dto?: ConfigColumnAggregationDTO) {\n if (!dto) {\n return;\n }\n this.enabled = dto.enabled;\n this.type = dto.type;\n this.editable = dto.editable;\n this.distMethod = dto.distMethod;\n this.action = dto.action;\n if (dto.actionArgs) {\n this.actionArgs = {};\n Object.assign(this.actionArgs, dto.actionArgs);\n }\n }\n}\n","import { DeQueryColumn, DeQueryFilterOperator, DeQueryPivot, DeQuerySerie } from 'src/app/_core/de-query/model/de-query.model';\n\ninterface LookupOption {\n id: number | string;\n value: number | string;\n}\n\nexport interface ConfigColumnEditLookupDTO {\n query?: LookupDeQuery;\n idColumn?: string;\n valueColumn?: string;\n fixedOptions?: LookupOption[];\n fixedOptionsAtStart?: boolean;\n translateOptions?: boolean;\n cache?: boolean;\n}\n\nexport interface LookupDeQueryFilterValue {\n name: string;\n type: 'fromRow';\n}\n\nexport interface LookupDeQueryFilter {\n column: DeQueryColumn;\n operator: DeQueryFilterOperator;\n values: string[] | number[] | LookupDeQueryFilterValue;\n}\n\nexport interface LookupDeQuery {\n queryType?: 'distinct' | 'none'; // 'distinct' = no duplicate results, 'none' = no query at all\n columns?: DeQueryColumn[];\n filters?: LookupDeQueryFilter[];\n series?: DeQuerySerie[];\n pivot?: DeQueryPivot;\n}\n\nexport class ConfigColumnEditLookup {\n query?: LookupDeQuery;\n idColumn?: string;\n valueColumn?: string;\n fixedOptions?: LookupOption[];\n fixedOptionsAtStart?: boolean;\n translateOptions?: boolean;\n cache: boolean;\n\n constructor(dto?: ConfigColumnEditLookupDTO) {\n if (!dto) {\n return;\n }\n this.query = dto.query;\n this.idColumn = dto.idColumn;\n this.valueColumn = dto.valueColumn;\n this.fixedOptions = dto.fixedOptions;\n this.fixedOptionsAtStart = dto.fixedOptionsAtStart;\n this.translateOptions = dto.translateOptions;\n this.cache = dto.cache;\n }\n}\n","import { cloneDeep } from 'lodash';\n\nimport { DeQuery } from 'src/app/_core/de-query/model/de-query.model';\nimport {\n ConfigColumnEditLookup,\n ConfigColumnEditLookupDTO,\n LookupDeQueryFilterValue\n} from 'src/app/workspaces/details/config/config-column-edit-lookup.model';\nimport { ConfigCheckboxes, ConfigCheckboxesDTO } from 'src/app/workspaces/details/config/shared/config-checkboxes.model';\nimport { ConfigCond, ConfigCondDTO } from 'src/app/workspaces/details/config/shared/config-cond.model';\n\nexport interface ConfigColumnEditDTO {\n enabled: boolean;\n caption?: string; // moved to ConfigColumnFormat\n type?: string;\n targetIdColumn?: string;\n targetColumn?: string;\n action?: string;\n actionArgs?: object;\n cond?: ConfigCondDTO;\n lookup?: boolean;\n lookupConfig?: ConfigColumnEditLookupDTO;\n checkboxes?: ConfigCheckboxesDTO;\n}\n\nexport class ConfigColumnEdit {\n enabled: boolean;\n type?: string;\n targetIdColumn?: string;\n targetColumn?: string;\n action?: string;\n actionArgs?: object = {};\n cond = new ConfigCond();\n lookup?: boolean;\n lookupConfig = new ConfigColumnEditLookup();\n checkboxes = new ConfigCheckboxes();\n\n constructor(dto?: ConfigColumnEditDTO) {\n if (!dto) {\n return;\n }\n this.enabled = dto.enabled;\n this.type = dto.type;\n this.targetIdColumn = dto.targetIdColumn;\n this.targetColumn = dto.targetColumn;\n this.action = dto.action;\n if (dto.actionArgs) {\n this.actionArgs = {};\n Object.assign(this.actionArgs, dto.actionArgs);\n }\n if (dto.cond) {\n this.cond = new ConfigCond(dto.cond);\n }\n this.lookup = dto.lookup;\n if (dto.lookupConfig) {\n this.lookupConfig = new ConfigColumnEditLookup(dto.lookupConfig);\n }\n if (dto.checkboxes) {\n this.checkboxes = new ConfigCheckboxes(dto.checkboxes);\n }\n }\n\n getLookupQuery(columnName: string, gridRowData?: {}): DeQuery | undefined {\n if (!this.lookup) {\n return undefined;\n }\n const lookupQuery = this.lookupConfig.query ? (cloneDeep(this.lookupConfig.query) as DeQuery) : { columns: [{ name: columnName }] };\n if (lookupQuery.filters) {\n lookupQuery.filters = lookupQuery.filters.map((filter) => {\n if (filter.values && (filter.values as unknown as LookupDeQueryFilterValue).type === 'fromRow') {\n filter.values = this.findFilterLookupValue((filter.values as unknown as LookupDeQueryFilterValue).name, gridRowData);\n }\n return filter;\n });\n }\n return lookupQuery;\n }\n\n private findFilterLookupValue(rowName: string, gridRowData: {}): number[] | string[] {\n let lookupValue = gridRowData[rowName];\n if (lookupValue !== null && lookupValue !== undefined) {\n return [lookupValue];\n }\n Object.values(gridRowData).forEach((value) => {\n if (value && value['data'] && value['data'][rowName]) {\n lookupValue = value['data'][rowName];\n return;\n }\n });\n return [lookupValue];\n }\n}\n","import { ColDef } from '@ag-grid-enterprise/all-modules';\n\nexport interface ConfigColumnFormatDTO {\n caption?: string;\n format?: string;\n align?: 'left' | 'center' | 'right';\n agGridColumnProperties?: ColDef;\n}\n\nexport class ConfigColumnFormat {\n caption?: string;\n format?: string;\n align?: 'left' | 'center' | 'right';\n agGridColumnProperties?: ColDef;\n\n constructor(dto?: ConfigColumnFormatDTO) {\n if (!dto) {\n return;\n }\n this.caption = dto.caption;\n this.format = dto.format;\n this.align = dto.align;\n this.agGridColumnProperties = dto.agGridColumnProperties;\n }\n}\n","export interface ConfigColumnLinkDTO {\n targetView?: number | string;\n path?: string;\n columns?: string[];\n map?: ConfigColumnLinkMapDTO[];\n drilldownsToClose?: string[];\n}\n\nexport interface ConfigColumnLinkMapDTO {\n from: string;\n to: string;\n}\n\nexport class ConfigColumnLink {\n targetView?: number | string;\n path?: string;\n columns?: string[];\n map?: ConfigColumnLinkMapDTO[];\n drilldownsToClose?: string[];\n\n constructor(dto?: ConfigColumnLinkDTO) {\n if (!dto) {\n return;\n }\n this.targetView = dto.targetView;\n this.path = dto.path;\n this.columns = dto.columns;\n this.map = dto.map;\n this.drilldownsToClose = dto.drilldownsToClose;\n }\n}\n","export interface ConfigColumnRowDTO {\n autoRefresh?: boolean;\n refreshWholeGrid?: boolean;\n}\n\nexport class ConfigColumnRow {\n autoRefresh?: boolean;\n refreshWholeGrid?: boolean;\n\n constructor(dto?: ConfigColumnRowDTO) {\n if (!dto) {\n return;\n }\n this.autoRefresh = dto.autoRefresh;\n this.refreshWholeGrid = dto.refreshWholeGrid;\n }\n}\n","/* eslint-disable max-lines-per-function */\n/* eslint-disable max-classes-per-file */\nimport { ColDef } from '@ag-grid-community/core';\nimport { get } from 'lodash';\n\nimport { AgrUtils } from 'src/app/_shared/utils/agr-utils';\nimport { ConfigColumnAggregation, ConfigColumnAggregationDTO } from 'src/app/workspaces/details/config/config-column-aggregation.model';\nimport { ConfigColumnEdit, ConfigColumnEditDTO } from 'src/app/workspaces/details/config/config-column-edit.model';\nimport { ConfigColumnFormat, ConfigColumnFormatDTO } from 'src/app/workspaces/details/config/config-column-format.model';\nimport { ConfigColumnLink, ConfigColumnLinkDTO } from 'src/app/workspaces/details/config/config-column-link.model';\nimport { ConfigColumnRow, ConfigColumnRowDTO } from 'src/app/workspaces/details/config/config-column-row.model';\n\nconst appConfig: ConfigColumnBaseDTO = {\n excluded: false,\n visible: true,\n pinned: false,\n format: {\n caption: undefined,\n format: undefined,\n align: undefined,\n agGridColumnProperties: {}\n },\n link: {\n targetView: undefined,\n path: undefined,\n columns: [],\n map: [],\n drilldownsToClose: []\n },\n edit: {\n enabled: false,\n cond: {},\n lookupConfig: {\n fixedOptions: [],\n cache: true\n },\n checkboxes: {\n enabled: false,\n trueValue: 1,\n falseValue: 0,\n disableIfNull: false\n }\n },\n aggregation: {\n enabled: false,\n type: 'sum',\n distMethod: 'proportional',\n action: 'update_value'\n },\n row: {},\n itemDetails: {\n edit: {\n enabled: false,\n lookup: false,\n dateConditions: {},\n lookupConfig: {\n fixedOptions: []\n },\n targetColumnId: undefined,\n agrFormat: undefined\n }\n }\n};\n\n//////////////////////////////////////////\n/**\n * Config Column.\n *\n * The class wraps view, default and app configs to make getting and setting configs easier.\n * Configs are defined in three places: Columns of workspace view, context line and finally in the app (the default).\n * Config from view will override context line config, which will override app defaults.\n */\nexport class ConfigColumn {\n excluded?: boolean; // Exclude/include selected column (link icon)\n visible?: boolean; // Not shown in grid (eye icon)\n pinned?: boolean; // Required (lock icon)\n format = new ConfigColumnFormat();\n link = new ConfigColumnLink();\n edit = new ConfigColumnEdit();\n aggregation = new ConfigColumnAggregation();\n row = new ConfigColumnRow();\n jsFormula?: string;\n itemDetails: object;\n hasViewConfig = false; // Used to activate button\n jsonColumns?: object | object[];\n\n private viewConfig;\n private defaultConfig;\n private appConfig = new ConfigColumnBase(appConfig);\n\n constructor(viewConfigDto?: ConfigColumnBaseDTO, defaultConfigDto?: ConfigColumnBaseDTO) {\n this.viewConfig = new ConfigColumnBase(viewConfigDto);\n this.defaultConfig = new ConfigColumnBase(defaultConfigDto);\n this.assign();\n }\n\n getViewConfig(): ConfigColumnBase {\n return this.viewConfig;\n }\n\n getDefaultConfig(): ConfigColumnBase {\n return this.defaultConfig;\n }\n\n /**\n * Returns config object with none of the empty objects and arrays.\n */\n getViewConfigClean(): ConfigColumnBase {\n const sanitized = AgrUtils.sanitize(this.viewConfig);\n return AgrUtils.deleteEmpty(sanitized) as ConfigColumnBase;\n }\n\n /**\n * Returns config object with none of the empty objects and arrays.\n */\n getDefaultConfigClean(): ConfigColumnBase {\n const sanitized = AgrUtils.sanitize(this.defaultConfig);\n return AgrUtils.deleteEmpty(sanitized) as ConfigColumnBase;\n }\n\n //////////////////////////////////////////\n\n setViewConfig(configDto: ConfigColumnBaseDTO): void {\n this.viewConfig = new ConfigColumnBase(configDto);\n this.assign();\n }\n\n setDefaultConfig(configDto: ConfigColumnBaseDTO): void {\n this.defaultConfig = new ConfigColumnBase(configDto);\n this.assign();\n }\n\n togglePinned(): void {\n this.viewConfig.pinned = !this.pinned;\n this.viewConfig.excluded = this.viewConfig.pinned ? false : this.excluded;\n this.viewConfig.visible = this.viewConfig.pinned ? true : this.visible;\n this.cleanOnDefault();\n this.assign();\n }\n\n toggleVisible(): void {\n this.viewConfig.visible = !this.visible;\n this.viewConfig.excluded = !this.viewConfig.visible ? false : this.excluded;\n this.viewConfig.pinned = !this.viewConfig.visible ? false : this.pinned;\n this.cleanOnDefault();\n this.assign();\n }\n\n toggleExcluded(): void {\n this.viewConfig.excluded = !this.excluded;\n this.viewConfig.pinned = this.viewConfig.excluded ? false : this.pinned;\n this.viewConfig.visible = this.viewConfig.excluded ? true : this.visible;\n this.cleanOnDefault();\n this.assign();\n }\n /**\n * Removes selected properties from view config if they match app default.\n * This is done so that this.hasViewConfig will not always be true after user toggles config buttons.\n */\n private cleanOnDefault(): void {\n let doCleanUp = true;\n if (this.viewConfig.pinned !== this.appConfig.pinned) {\n doCleanUp = false;\n }\n if (this.viewConfig.excluded !== this.appConfig.excluded) {\n doCleanUp = false;\n }\n if (this.viewConfig.visible !== this.appConfig.visible) {\n doCleanUp = false;\n }\n if (doCleanUp) {\n delete this.viewConfig.pinned;\n delete this.viewConfig.excluded;\n delete this.viewConfig.visible;\n }\n }\n\n private assign(): void {\n this.excluded = this.get('excluded');\n this.visible = this.get('visible');\n this.pinned = this.get('pinned');\n // Format\n this.format.caption = this.get('format.caption');\n this.format.format = this.get('format.format');\n this.format.align = this.get('format.align');\n this.format.agGridColumnProperties = this.getAgGridColumnProperties();\n // Link\n this.link.targetView = this.get('link.targetView');\n this.link.path = this.get('link.path');\n this.link.columns = this.get('link.columns');\n this.link.map = this.get('link.map');\n this.link.drilldownsToClose = this.get('link.drilldownsToClose');\n // Edit\n this.edit.enabled = this.get('edit.enabled');\n this.edit.type = this.get('edit.type');\n this.edit.targetIdColumn = this.get('edit.targetIdColumn');\n this.edit.targetColumn = this.get('edit.targetColumn');\n this.edit.action = this.get('edit.action');\n this.edit.actionArgs = {};\n\n Object.assign(this.edit.actionArgs, this.get('edit.actionArgs'));\n\n this.edit.cond.column = this.get('edit.cond.column');\n this.edit.cond.type = this.get('edit.cond.type');\n this.edit.cond.value = this.get('edit.cond.value');\n this.edit.lookup = this.get('edit.lookup');\n\n this.edit.lookupConfig.fixedOptions = this.get('edit.lookupConfig.fixedOptions');\n this.edit.lookupConfig.fixedOptionsAtStart = this.get('edit.lookupConfig.fixedOptionsAtStart');\n this.edit.lookupConfig.query = this.get('edit.lookupConfig.query');\n this.edit.lookupConfig.idColumn = this.get('edit.lookupConfig.idColumn');\n this.edit.lookupConfig.valueColumn = this.get('edit.lookupConfig.valueColumn');\n this.edit.lookupConfig.translateOptions = this.get('edit.lookupConfig.translateOptions');\n this.edit.lookupConfig.cache = this.get('edit.lookupConfig.cache');\n\n this.edit.checkboxes.enabled = this.get('edit.checkboxes.enabled');\n this.edit.checkboxes.trueValue = this.get('edit.checkboxes.trueValue');\n this.edit.checkboxes.falseValue = this.get('edit.checkboxes.falseValue');\n this.edit.checkboxes.disableIfNull = this.get('edit.checkboxes.disableIfNull');\n // Aggregation\n this.aggregation.enabled = this.get('aggregation.enabled');\n this.aggregation.type = this.get('aggregation.type');\n this.aggregation.editable = this.get('aggregation.editable');\n this.aggregation.distMethod = this.get('aggregation.distMethod');\n this.aggregation.action = this.get('aggregation.action');\n this.aggregation.actionArgs = {};\n Object.assign(this.aggregation.actionArgs, this.get('aggregation.actionArgs'));\n this.row.autoRefresh = this.get('row.autoRefresh');\n this.row.refreshWholeGrid = this.get('row.refreshWholeGrid');\n // Other\n this.jsFormula = this.get('jsFormula');\n this.hasViewConfig = JSON.stringify(this.getViewConfigClean()) !== '{}';\n this.itemDetails = this.get('itemDetails');\n this.jsonColumns = this.get('jsonColumns');\n }\n\n // Private\n /**\n * Get config property following the hierarchy:\n * 1. View config\n * 2. Default config (from data_element_ref_columns)\n * 3. App config\n */\n private get(key: string): any {\n if (get(this.viewConfig, key) !== undefined) {\n return get(this.viewConfig, key);\n }\n if (get(this.defaultConfig, key) !== undefined) {\n return get(this.defaultConfig, key);\n }\n return get(this.appConfig, key);\n }\n\n private getAgGridColumnProperties(): ColDef {\n if (Object.keys(this.viewConfig.format.agGridColumnProperties || {}).length > 0) {\n return this.viewConfig.format.agGridColumnProperties;\n }\n if (Object.keys(this.defaultConfig.format.agGridColumnProperties || {}).length > 0) {\n return this.defaultConfig.format.agGridColumnProperties;\n }\n return {};\n }\n}\n//////////////////////////////////////////\nexport interface ConfigColumnBaseDTO {\n excluded?: boolean;\n visible?: boolean;\n pinned?: boolean;\n link?: ConfigColumnLinkDTO;\n format?: ConfigColumnFormatDTO;\n edit?: ConfigColumnEditDTO;\n aggregation?: ConfigColumnAggregationDTO;\n row?: ConfigColumnRowDTO;\n jsFormula?: string;\n itemDetails?: object;\n jsonColumns?: object | object[];\n}\n/**\n * Column Config.\n */\nclass ConfigColumnBase {\n excluded?: boolean;\n visible?: boolean;\n pinned?: boolean;\n format = new ConfigColumnFormat();\n link = new ConfigColumnLink();\n edit = new ConfigColumnEdit();\n aggregation = new ConfigColumnAggregation();\n row = new ConfigColumnRow();\n jsFormula?: string;\n itemDetails?: object;\n jsonColumns?: object | object[];\n\n constructor(configDto?: ConfigColumnBaseDTO) {\n if (!configDto) {\n return;\n }\n this.excluded = configDto.excluded;\n this.visible = configDto.visible;\n this.pinned = configDto.pinned;\n this.format = new ConfigColumnFormat(configDto.format);\n this.link = new ConfigColumnLink(configDto.link);\n if (configDto.format) {\n this.format = new ConfigColumnFormat(configDto.format);\n }\n if (configDto.edit) {\n this.edit = new ConfigColumnEdit(configDto.edit);\n }\n if (configDto.aggregation) {\n this.aggregation = new ConfigColumnAggregation(configDto.aggregation);\n }\n if (configDto.row) {\n this.row = new ConfigColumnRow(configDto.row);\n }\n this.jsFormula = configDto.jsFormula;\n this.itemDetails = configDto.itemDetails;\n this.jsonColumns = configDto.jsonColumns;\n }\n}\n","import { ContextLine } from 'src/app/_core/de-query/model/context-line.model';\nimport { DeQueryColumnAggrAs } from 'src/app/_core/de-query/model/de-query.model';\nimport { Expression } from 'src/app/_shared/utils/expression.model';\nimport { ConfigColumn, ConfigColumnBaseDTO } from 'src/app/workspaces/details/config/config-column.model';\nimport { WorkspaceGridRow } from 'src/app/workspaces/details/grid/workspace-grid.component';\n\nexport interface WorkspaceViewColumnDTO {\n name: string;\n aggrAs: DeQueryColumnAggrAs;\n config?: ConfigColumnBaseDTO;\n}\n\n/**\n * Workspace Column.\n * Created from context and update from dto object that comes from view settings.\n */\nexport class WorkspaceColumn {\n contextLine: ContextLine;\n\n name: string;\n get caption(): string {\n return this.config.format.caption || this.contextLine.caption;\n }\n description: string;\n idColumnName: string;\n lookupColumn: string;\n type: string; // e.g. 'int' | 'string'\n aggrAs: DeQueryColumnAggrAs;\n groupName: string;\n groupCaption: string;\n get format(): string {\n return this.config.format.format || this.contextLine.format || this.contextLine.type || 'string';\n }\n get align(): 'left' | 'right' | 'center' {\n return this.config.format.align || (['decimal', 'int'].includes(this.type) ? 'right' : 'left');\n }\n get columnFilter(): string {\n const filterMap = {\n number: 'agNumberColumnFilter',\n decimal: 'agNumberColumnFilter',\n int: 'agNumberColumnFilter',\n string: 'agTextColumnFilter'\n };\n return filterMap[this.contextLine.type] ? filterMap[this.contextLine.type] : 'agSetColumnFilter';\n }\n config = new ConfigColumn();\n jsFormula?: Expression;\n\n isCalculatedColumn = false;\n\n static getAggregatedValue(row: WorkspaceGridRow, colName: string, aggrAs: string): string | number {\n if (aggrAs === 'minMax') {\n return WorkspaceColumn.minMaxValue(row, colName);\n }\n return row[`${colName}$${aggrAs}`];\n }\n\n constructor(contextLine: ContextLine, viewDto?: WorkspaceViewColumnDTO) {\n if (!contextLine) {\n return;\n }\n this.contextLine = contextLine;\n\n this.name = contextLine.name;\n this.description = contextLine.description;\n this.idColumnName = contextLine.idColumnName;\n this.lookupColumn = contextLine.lookupColumn;\n this.type = contextLine.type;\n this.groupName = contextLine.groupName;\n this.groupCaption = contextLine.groupCaption;\n this.config.setDefaultConfig(contextLine.config as ConfigColumnBaseDTO);\n\n this.isCalculatedColumn = contextLine.objectType === 'calculatedColumns';\n\n if (viewDto) {\n this.updateFromViewDto(viewDto);\n }\n\n this.setCalculatedData();\n }\n\n private static minMaxValue(row: WorkspaceGridRow, colName: string): string | number {\n const maxValue = row[`${colName}$max`];\n const minValue = row[`${colName}$min`];\n if (row[`${colName}$single`]) {\n return WorkspaceColumn.isNil(maxValue) ? '' : maxValue;\n }\n if (WorkspaceColumn.isNil(maxValue) && WorkspaceColumn.isNil(minValue)) {\n return '';\n }\n\n return `[${minValue}-${maxValue}]`;\n }\n\n private static isNil(value: string | number): boolean {\n return value === null || value === undefined;\n }\n\n idValueFromRow(row: WorkspaceGridRow): string | number {\n if (row.inserted) {\n return row[this.idColumnName];\n }\n if (this.aggrAs) {\n return WorkspaceColumn.getAggregatedValue(row, this.idColumnName, this.aggrAs);\n }\n return row[this.idColumnName];\n }\n\n valueFromRow(row: WorkspaceGridRow): string | number {\n if (row.inserted) {\n return row[this.name];\n }\n if (this.aggrAs) {\n return WorkspaceColumn.getAggregatedValue(row, this.name, this.aggrAs);\n }\n return row[this.name];\n }\n\n toDto(): WorkspaceViewColumnDTO {\n return {\n name: this.name,\n aggrAs: this.aggrAs,\n config: this.config.getViewConfig() as ConfigColumnBaseDTO\n };\n }\n\n isIdColumnOverridden(): boolean {\n return this.config.edit.lookupConfig.idColumn && this.config.edit.lookupConfig.idColumn !== this.idColumnName;\n }\n\n isValueColumnOverridden(): boolean {\n return this.config.edit.lookupConfig.valueColumn && this.config.edit.lookupConfig.valueColumn !== this.name;\n }\n\n // private\n\n private setCalculatedData(): void {\n if (this.contextLine.objectType === 'calculatedColumns' && (!this.config.jsFormula || this.config.jsFormula.length === 0)) {\n console.warn(`AGR: Calculated column: '${this.name}' has no \"config.jsFormula\" which is required`);\n return;\n }\n if (!this.config.jsFormula) {\n return;\n }\n this.jsFormula = new Expression(this.config.jsFormula);\n }\n\n private updateFromViewDto(dto: WorkspaceViewColumnDTO): void {\n this.aggrAs = dto.aggrAs;\n if (dto.config) {\n this.config.setViewConfig(dto.config);\n }\n }\n}\n","/* eslint-disable max-classes-per-file */\nimport { Params } from '@angular/router';\nimport { cloneDeep } from 'lodash';\n\nimport { ContextLine } from 'src/app/_core/de-query/model/context-line.model';\nimport { DeQuery, DeQueryFilter } from 'src/app/_core/de-query/model/de-query.model';\nimport { WorkspaceFullQueryDrilldownDTO } from 'src/app/workspaces/details/workspace-details.service';\n\n/**\n * View Settings drilldown properties. Saved in DB.\n */\nexport interface WorkspaceDrilldownDTO {\n name: string;\n locked?: boolean;\n resetLevel?: boolean;\n}\n\n/**\n * Drilldown properties. Only saved in local storage.\n */\nexport interface WorkspaceDrilldownStateDTO {\n name: string;\n selected?: WorkspaceDrilldownOptionDTO;\n closed?: boolean;\n}\n\nexport interface WorkspaceDrilldownOptionDTO {\n caption?: string;\n value?: string | number;\n}\n\nexport class WorkspaceDrilldownOption {\n caption: string | undefined = '[no value]';\n value?: string | number | undefined;\n\n constructor(option: WorkspaceDrilldownOptionDTO) {\n this.caption = option.caption === '' || option.caption === null || option.caption === 'null' ? '[no value]' : option.caption;\n this.value = option.value;\n }\n\n toDto(): WorkspaceDrilldownOptionDTO {\n return { caption: this.caption, value: this.value };\n }\n}\n\n/**\n * Workspace Drilldown.\n * Created from context and update from dto object that comes from view settings\n */\nexport class WorkspaceDrilldown {\n name: string;\n idColumnName: string;\n caption: string;\n lookupColumn: string;\n resetLevel = false;\n closed = false;\n selected: WorkspaceDrilldownOption = new WorkspaceDrilldownOption({});\n contextType: string;\n\n showInfo = false;\n\n additionalQueryFilter?: DeQueryFilter;\n\n // undefined - options have not been loaded from API\n // [] - There are no options present (no data)\n options?: WorkspaceDrilldownOption[];\n\n private locked = false;\n\n get isLocked(): boolean {\n return this.locked;\n }\n\n constructor(contextLine: ContextLine, dto?: WorkspaceDrilldownDTO) {\n if (!contextLine) {\n return;\n }\n\n this.name = contextLine.name;\n this.caption = contextLine.caption;\n this.idColumnName = contextLine.idColumnName;\n this.lookupColumn = contextLine.lookupColumn;\n this.contextType = contextLine.type;\n\n if (dto) {\n this.updateFromDto(dto);\n }\n }\n\n // To\n\n /**\n * Used to save drilldown info to the database\n */\n toDto(): WorkspaceDrilldownDTO {\n return {\n name: this.name,\n locked: this.locked,\n resetLevel: this.resetLevel\n };\n }\n\n /**\n * Used to save drilldown state in local storage (persistent)\n */\n toStateDto(): WorkspaceDrilldownStateDTO {\n return {\n name: this.name,\n closed: this.locked ? false : this.closed,\n selected: this.selected.toDto()\n };\n }\n\n toDeQuery(prevFilters: DeQueryFilter[]): DeQuery {\n return {\n columns: [{ name: this.name }],\n filters: this.deQueryFilters(prevFilters)\n };\n }\n\n toFullQueryQueryParam(): WorkspaceFullQueryDrilldownDTO {\n return {\n name: this.name,\n menuPending: !this.closed,\n lookup_column: this.lookupColumn,\n lastSelectedValue: this.selected.value ? this.selected.value : undefined,\n resetLevel: this.resetLevel\n };\n }\n\n toDeQueryFilter(): DeQueryFilter {\n return {\n column: { name: this.idColumnName },\n operator: '=',\n values: [this.selected.value]\n };\n }\n\n // Apply and update model\n updateFromDto(dto: WorkspaceDrilldownDTO): void {\n this.locked = dto.locked !== undefined ? !!dto.locked : false;\n if (this.locked) {\n this.closed = false;\n }\n this.resetLevel = dto.resetLevel !== undefined ? !!dto.resetLevel : false;\n }\n\n updateFromState(dto: WorkspaceDrilldownStateDTO): void {\n this.selected = dto.selected !== undefined ? new WorkspaceDrilldownOption(dto.selected) : new WorkspaceDrilldownOption({});\n this.closed = this.locked ? false : dto.closed !== undefined ? !!dto.closed : false;\n }\n\n updateFromUrlParams(params: Params): void {\n const urlValue = params[this.name];\n if (!urlValue) {\n return;\n }\n if (urlValue === 'is-closed' && !this.locked) {\n this.closed = true;\n return;\n }\n this.select(this.findMatchingOption({ value: +urlValue, caption: urlValue }));\n }\n\n applyFullQuery(drilldownDto: WorkspaceFullQueryDrilldownDTO): void {\n if (!drilldownDto.menu || drilldownDto.menu.length === 0) {\n this.selected = new WorkspaceDrilldownOption({});\n this.options = [];\n return;\n }\n this.options = drilldownDto.menu.map((option) => new WorkspaceDrilldownOption(option));\n this.selected = this.findMatchingOption(this.selected ?? drilldownDto.selected);\n }\n\n setOptions(options: WorkspaceDrilldownOption[]): void {\n this.options = options;\n this.selected = this.findMatchingOption(this.selected);\n }\n\n // Actions\n\n select(option: WorkspaceDrilldownOption): void {\n if (!option) {\n return;\n }\n this.selected = option;\n this.closed = false;\n }\n\n toggleLocked(): void {\n this.locked = !this.locked;\n if (this.locked) {\n this.closed = false;\n }\n }\n\n private deQueryFilters(prevFilters: DeQueryFilter[]): DeQueryFilter[] {\n if (this.additionalQueryFilter) {\n return this.resetLevel ? [this.additionalQueryFilter] : cloneDeep(prevFilters).concat([this.additionalQueryFilter]);\n }\n return this.resetLevel ? [] : cloneDeep(prevFilters);\n }\n\n private findMatchingOption(selectedOption: WorkspaceDrilldownOptionDTO): WorkspaceDrilldownOption {\n if (!this.options || this.options.length === 0) {\n return new WorkspaceDrilldownOption({});\n }\n if (!selectedOption) {\n return this.options[0];\n }\n let foundSelected = this.options.find((option) => option.value === selectedOption.value);\n if (foundSelected) {\n return foundSelected;\n }\n foundSelected = this.options.find((option) => option.caption === selectedOption.caption);\n if (foundSelected) {\n return foundSelected;\n }\n return this.options[0];\n }\n}\n","import { ConfigActionArgDTO } from 'src/app/workspaces/details/config/shared/config-action-args.model';\nimport { ConfigCheckboxes } from 'src/app/workspaces/details/config/shared/config-checkboxes.model';\n\nexport interface ConfigSerieEditDTO {\n enabled?: boolean;\n readOnlyIfNull: boolean;\n toggleEditableRelativeToCurrent: { [columnName: string]: ConfigSerieFromTo };\n action?: string;\n actionArgs?: ConfigActionArgDTO;\n checkboxes?: ConfigCheckboxes;\n}\n\ninterface ConfigSerieFromTo {\n from: number;\n to: number;\n}\n\nexport class ConfigSerieEdit {\n enabled?: boolean;\n readOnlyIfNull: boolean;\n toggleEditableRelativeToCurrent: { [columnName: string]: ConfigSerieFromTo } = {};\n action?: string;\n actionArgs?: ConfigActionArgDTO = {};\n checkboxes?: ConfigCheckboxes = new ConfigCheckboxes();\n\n constructor(dto?: ConfigSerieEditDTO) {\n if (!dto) {\n return;\n }\n this.enabled = dto.enabled;\n this.readOnlyIfNull = dto.readOnlyIfNull;\n this.toggleEditableRelativeToCurrent = dto.toggleEditableRelativeToCurrent;\n this.action = dto.action;\n if (dto.actionArgs) {\n Object.assign(this.actionArgs, dto.actionArgs);\n }\n this.checkboxes = dto.checkboxes;\n }\n}\n","export interface ConfigSerieFormatDTO {\n caption?: string;\n format?: string;\n aggregation?: SerieFormatAggregation;\n displayDiv?: number;\n checkboxes?: boolean;\n}\n\ntype SerieFormatAggregation = 'min' | 'max' | 'count' | 'countDistinct' | 'minMax';\n\nexport class ConfigSerieFormat {\n caption?: string;\n format?: string;\n aggregation?: SerieFormatAggregation;\n displayDiv?: number;\n\n constructor(dto?: ConfigSerieFormatDTO) {\n if (!dto) {\n return;\n }\n this.caption = dto.caption;\n this.format = dto.format;\n this.aggregation = dto.aggregation;\n this.displayDiv = dto.displayDiv;\n }\n}\n","/* eslint-disable max-classes-per-file */\nimport { get } from 'lodash';\n\nimport { AgrUtils } from 'src/app/_shared/utils/agr-utils';\nimport { ConfigSerieEdit, ConfigSerieEditDTO } from 'src/app/workspaces/details/config/config-serie-edit.model';\nimport { ConfigSerieFormat, ConfigSerieFormatDTO } from 'src/app/workspaces/details/config/config-serie-format.model';\n\n/**\n * To add new config:\n * 1. Add to DTO\n * 2. Add to base class\n * 3. Add to Config class\n * 4. Update assign() function\n * 5. Set app default\n */\n\n//////////////////////////////////////////\n\n/**\n * App Config (defaults)\n */\nconst appConfig: ConfigSerieBaseDTO = {\n excluded: false,\n pinned: false,\n edit: {\n enabled: undefined,\n readOnlyIfNull: false,\n toggleEditableRelativeToCurrent: {},\n action: 'batch_update',\n checkboxes: {\n enabled: false,\n trueValue: 1,\n falseValue: 0,\n disableIfNull: false\n }\n },\n format: {\n caption: undefined,\n format: undefined,\n aggregation: undefined,\n displayDiv: 1\n }\n};\n\n//////////////////////////////////////////\n\n/**\n * Config Serie.\n *\n * The class wraps view, default and app configs to make getting and setting configs easier.\n * Configs are defined in three places: Workspace view, context line and finally in the app (the default).\n * Config from view will override default config, which will override app config.\n */\nexport class ConfigSerie {\n excluded?: boolean; // Exclude serie (link icon)\n pinned?: boolean; // Required (lock icon)\n edit = new ConfigSerieEdit();\n format = new ConfigSerieFormat();\n\n hasViewConfig = false; // Used to activate button\n\n private viewConfig = new ConfigSerieBase();\n private defaultConfig = new ConfigSerieBase();\n private appConfig = new ConfigSerieBase(appConfig);\n\n constructor(viewConfigDto?: ConfigSerieBaseDTO, defaultConfigDto?: ConfigSerieBaseDTO) {\n this.viewConfig = new ConfigSerieBase(viewConfigDto);\n this.defaultConfig = new ConfigSerieBase(defaultConfigDto);\n this.assign();\n }\n\n getViewConfigClean(): ConfigSerieBase {\n const sanitized = AgrUtils.sanitize(this.viewConfig);\n return AgrUtils.deleteEmpty(sanitized) as ConfigSerieBase;\n }\n\n getViewConfig(): ConfigSerieBase {\n return this.viewConfig;\n }\n\n getDefaultConfig(): ConfigSerieBase {\n return this.defaultConfig;\n }\n\n setViewConfig(configDto: ConfigSerieBaseDTO): void {\n this.viewConfig = new ConfigSerieBase(configDto);\n this.assign();\n }\n\n setDefaultConfig(configDto: ConfigSerieBaseDTO): void {\n this.defaultConfig = new ConfigSerieBase(configDto);\n this.assign();\n }\n\n togglePinned(): void {\n this.viewConfig.pinned = !this.pinned;\n this.viewConfig.excluded = this.viewConfig.pinned ? false : this.excluded;\n this.cleanOnDefault();\n this.assign();\n }\n\n toggleExcluded(): void {\n this.viewConfig.excluded = !this.excluded;\n this.viewConfig.pinned = this.viewConfig.excluded ? false : this.pinned;\n this.cleanOnDefault();\n this.assign();\n }\n\n clean(): void {\n this.viewConfig.excluded = !!this.excluded;\n this.viewConfig.pinned = this.viewConfig.excluded ? false : this.pinned;\n this.cleanOnDefault();\n this.assign();\n }\n\n private assign(): void {\n this.excluded = this.get('excluded');\n this.pinned = this.get('pinned');\n // Edit\n this.edit.enabled = this.get('edit.enabled');\n this.edit.readOnlyIfNull = this.get('edit.readOnlyIfNull');\n this.edit.toggleEditableRelativeToCurrent = this.get('edit.toggleEditableRelativeToCurrent');\n this.edit.action = this.get('edit.action');\n this.edit.actionArgs = this.get('edit.actionArgs');\n this.edit.checkboxes.enabled = this.get('edit.checkboxes.enabled');\n this.edit.checkboxes.disableIfNull = this.get('edit.checkboxes.disableIfNull');\n this.edit.checkboxes.trueValue = this.get('edit.checkboxes.trueValue');\n this.edit.checkboxes.falseValue = this.get('edit.checkboxes.falseValue');\n // Format\n this.format.caption = this.get('format.caption');\n this.format.format = this.get('format.format');\n this.format.aggregation = this.get('format.aggregation');\n this.format.displayDiv = this.get('format.displayDiv');\n // Other\n this.hasViewConfig = JSON.stringify(this.getViewConfigClean()) !== '{}';\n }\n\n /**\n * Get config property following the hierarchy:\n * 1. View config\n * 2. Default config (from data_elements)\n * 3. App config\n */\n private get(key: string): any {\n if (get(this.viewConfig, key) !== undefined) {\n return get(this.viewConfig, key);\n }\n if (get(this.defaultConfig, key) !== undefined) {\n return get(this.defaultConfig, key);\n }\n return get(this.appConfig, key);\n }\n\n /**\n * Removes selected properties from view config if they match app default.\n * This is done so that this.hasViewConfig will not always be true after user toggles config buttons.\n */\n private cleanOnDefault(): void {\n let doCleanUp = true;\n if (this.viewConfig.pinned !== this.appConfig.pinned) {\n doCleanUp = false;\n }\n if (this.viewConfig.excluded !== this.appConfig.excluded) {\n doCleanUp = false;\n }\n if (doCleanUp) {\n delete this.viewConfig.pinned;\n delete this.viewConfig.excluded;\n }\n }\n}\n\n//////////////////////////////////////////\n\nexport interface ConfigSerieBaseDTO {\n excluded?: boolean;\n pinned?: boolean;\n edit?: ConfigSerieEditDTO;\n format?: ConfigSerieFormatDTO;\n itemDetails?: object;\n}\n\nclass ConfigSerieBase {\n excluded?: boolean;\n pinned?: boolean;\n edit: ConfigSerieEdit;\n format = new ConfigSerieFormat();\n itemDetails?: object;\n\n constructor(configDto?: ConfigSerieBaseDTO) {\n if (!configDto) {\n return;\n }\n this.excluded = configDto.excluded;\n this.pinned = configDto.pinned;\n this.edit = configDto.edit;\n this.format = new ConfigSerieFormat(configDto.format);\n }\n}\n","import { ContextLine } from 'src/app/_core/de-query/model/context-line.model';\nimport { Expression } from 'src/app/_shared/utils/expression.model';\nimport { ConfigSerie, ConfigSerieBaseDTO } from 'src/app/workspaces/details/config/config-serie.model';\n\nexport interface WorkspaceSerieConfig {\n visible?: boolean;\n excluded?: boolean;\n}\n\nexport interface WorkspaceViewSerieDTO {\n name: string;\n config: ConfigSerieBaseDTO;\n}\n\ntype SerieAggregation = 'avg' | 'sum' | 'cs';\ntype SerieType = 'client_calculated' | 'stored';\ntype RefreshProfile = 'affected_rows_only' | 'rows_and_affected_rows' | 'row';\n\n/**\n * Workspace Serie\n */\nexport class WorkspaceSerie {\n name: string;\n get caption(): string {\n return this.config.format.caption || this.contextLine.caption;\n }\n description: string;\n groupName: string;\n groupCaption: string;\n readOnly: boolean;\n get format(): string {\n return this.config.format.format || this.contextLine.format || 'decimal:0';\n }\n seriesAffected?: string;\n\n config = new ConfigSerie();\n\n serieAggregation?: SerieAggregation;\n serieType?: SerieType;\n refreshProfile?: RefreshProfile;\n jsFormula?: Expression;\n\n // other\n showInfo = false;\n csExpr;\n\n private contextLine: ContextLine;\n\n constructor(contextLine: ContextLine, viewDto?: WorkspaceViewSerieDTO) {\n if (!contextLine) {\n return;\n }\n this.contextLine = contextLine;\n\n this.name = contextLine.name;\n this.description = contextLine.description;\n this.serieAggregation = contextLine.aggregation as SerieAggregation;\n this.serieType = contextLine.seriesType as SerieType;\n this.refreshProfile = contextLine.refreshProfile as RefreshProfile;\n this.groupName = contextLine.groupName;\n this.groupCaption = contextLine.groupCaption;\n this.readOnly = contextLine.readOnly;\n this.jsFormula = contextLine.seriesJsFormulaValue ? new Expression(contextLine.seriesJsFormulaValue) : undefined;\n this.seriesAffected = contextLine.seriesAffected;\n\n this.config.setDefaultConfig(contextLine.config as ConfigSerieBaseDTO);\n\n if (viewDto) {\n this.updateFromDto(viewDto);\n }\n }\n\n get editable(): boolean {\n return this.config.edit.enabled === undefined ? !this.readOnly : this.config.edit.enabled;\n }\n\n get isCalculatedSerie(): boolean {\n return this.serieType === 'client_calculated';\n }\n\n toDto(): WorkspaceViewSerieDTO {\n return {\n name: this.name,\n config: this.config.getViewConfig()\n };\n }\n\n private updateFromDto(dto: WorkspaceViewSerieDTO): void {\n if (dto.config) {\n this.config.setViewConfig(dto.config);\n }\n }\n}\n","export class ApiVersion {\n version: string;\n buildNumber?: string;\n buildSuffix?: string;\n dataSource?: string;\n imageVersion?: string;\n\n constructor(dto?: ApiVersion) {\n if (!dto) {\n return;\n }\n Object.assign(this, dto);\n }\n}\n","/**\n * From local environment.ts files\n */\nexport interface EnvironmentDTO {\n version: string;\n buildInfo: string;\n name: string;\n production: boolean;\n imageVersion: string;\n}\n\nexport class ClientVersion {\n version: string;\n buildInfo: string;\n versionName: string;\n versionLabel: string;\n imageVersion: string;\n\n constructor(dto?: EnvironmentDTO) {\n if (!dto) {\n return;\n }\n this.version = dto.version;\n this.buildInfo = dto.buildInfo;\n this.versionName = this.getName(this.version);\n this.versionLabel = this.getLabel(this.version);\n this.imageVersion = dto.imageVersion;\n }\n\n /**\n * E.g. 6.0\n */\n private getName(version: string): string {\n const split = version.split('.');\n return `${split[0]}.${split[1]}`; // E.g. 6.0.0 -> 6.0\n }\n\n /**\n * E.g. v6.0\n */\n private getLabel(version: string): string {\n const split = version.split('.');\n return `v${split[0]}.${split[1]}`; // E.g. 6.0.0 -> v6.0\n }\n}\n","export class DBVersion {\n version: string;\n imageVersion?: string;\n connectionString: string;\n\n constructor(dto?: DBVersion) {\n if (!dto) {\n return;\n }\n Object.assign(this, dto);\n }\n}\n","import { ApiVersion } from 'src/app/_core/version/api-version.model';\nimport { ClientVersion } from 'src/app/_core/version/client-version.model';\nimport { DBVersion } from 'src/app/_core/version/db-version.model';\n\n/**\n * Version info from AGR Pool.\n */\nexport interface ProjectVersionDTO {\n id: number;\n project: string;\n client: string;\n api: string;\n databases: string;\n}\n\n/**\n * Current app version info and versions from AGR Pool.\n */\nexport class AppInfo {\n client = new ClientVersion();\n api = new ApiVersion();\n database = new DBVersion();\n project: string;\n hasNewPatch = false;\n\n constructor(clientVersion?: ClientVersion) {\n if (!clientVersion) {\n return;\n }\n this.client = clientVersion;\n this.project = this.client.versionName;\n }\n\n updateFromVersionList(versions: ProjectVersionDTO[]): void {\n this.setProjectVersion(versions);\n this.determineHasNewPatch(versions);\n }\n\n /**\n * When current app versions do not mach with any pool versions.\n */\n hasNoMatchingProject(): boolean {\n return !this.project;\n }\n\n private setProjectVersion(poolVersions: ProjectVersionDTO[]): void {\n if (!poolVersions) {\n return;\n }\n const matchingVersion = poolVersions.find((poolVersion) => {\n const matchingClient = poolVersion.client === this.client.version;\n const matchingApi = poolVersion.api === this.api.version;\n const matchingDatabases = poolVersion.databases === this.database.version;\n return matchingClient && matchingApi && matchingDatabases;\n });\n this.project = matchingVersion ? matchingVersion.project : `${this.client.version.split('.')[0]}.${this.client.version.split('.')[1]}`;\n }\n\n private determineHasNewPatch(versions: ProjectVersionDTO[]): void {\n if (!versions || !this.project) {\n return;\n }\n const currentMajor = +this.project.split('.')[0]; // e.g 6 from 6.1-r8\n const currentMinor = +this.project.split('-r')[0].split('.')[1]; // e.g 1 from 6.1-r8\n const currentPatch = +this.project.split('-r')[1]; // 8 from 6.1-r8\n this.hasNewPatch =\n versions.findIndex((versionObj) => {\n const major = +versionObj.project.split('.')[0]; // e.g 6 from 6.1-r8\n const minor = +versionObj.project.split('-r')[0].split('.')[1]; // e.g 1 from 6.1-r8\n const patch = +versionObj.project.split('-r')[1]; // 8 from 6.1-r8\n return major === currentMajor && minor === currentMinor && patch > currentPatch;\n }) > -1;\n }\n}\n","// tslint:disable:no-relative-imports\nimport * as packageJson from '../../package.json';\n\nconst env = packageJson; // This is to fix build errors\n\nexport const environment = {\n version: env.version,\n buildInfo: env.buildInfo,\n imageVersion: env.imageVersion,\n production: true,\n name: 'prod'\n};\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, forkJoin } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { API_ROOT } from 'src/app/_core/models/api-route.model';\nimport { ApiVersion } from 'src/app/_core/version/api-version.model';\nimport { AppInfo, ProjectVersionDTO } from 'src/app/_core/version/app-info.model';\nimport { ClientVersion } from 'src/app/_core/version/client-version.model';\nimport { DBVersion } from 'src/app/_core/version/db-version.model';\n\nimport { environment } from 'src/environments/environment';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class VersionService {\n constructor(private http: HttpClient) {}\n\n getAppInfo(): Observable {\n const appInfo = new AppInfo(this.getClientVersion());\n\n return forkJoin([this.getApiVersion(), this.getDbVersion(), this.getAllVersions()]).pipe(\n map((result) => {\n appInfo.api = result[0];\n appInfo.database = result[1];\n appInfo.updateFromVersionList(result[2]);\n return appInfo;\n })\n );\n }\n\n getClientVersion(): ClientVersion {\n return new ClientVersion(environment);\n }\n\n private getApiVersion(): Observable {\n return this.http.get(`${API_ROOT}/about/api`).pipe(map((dto: ApiVersion) => new ApiVersion(dto)));\n }\n\n private getDbVersion(): Observable {\n return this.http.get(`${API_ROOT}/about/database`).pipe(map((dto: DBVersion) => new DBVersion(dto)));\n }\n\n private getAllVersions(): Observable {\n return this.http.get(`https://pool.agrdynamics.com/api/versions`);\n }\n}\n","
    \n \n
    \n\n
    \n
    \n \"App\n {{ appInfo.project }}\n
    \n\n \n
    \n
    CLIENT
    \n
    \n
    \n
    VERSION
    \n
    {{ appInfo.client.version }}
    \n
    \n
    \n
    ABOUT_BUILD
    \n
    {{ appInfo.client.buildInfo }}
    \n
    \n
    \n
    IMAGE_VERSION
    \n
    {{ appInfo.client.imageVersion }}
    \n
    \n
    \n
    TIMEZONE
    \n
    {{ clientTimezone }}
    \n
    \n\n \n
    \n
    API
    \n
    \n
    \n
    VERSION
    \n
    {{ appInfo.api.version }}
    \n
    \n
    \n
    ABOUT_BUILD
    \n
    {{ appInfo.api.buildSuffix }}
    \n
    \n
    \n
    IMAGE_VERSION
    \n
    {{ appInfo.api.imageVersion }}
    \n
    \n \n
    \n
    \n
    DATABASE
    \n
    \n
    \n
    VERSION
    \n
    {{ appInfo.database.version }}
    \n
    \n
    \n
    IMAGE_VERSION
    \n
    {{ appInfo.database.imageVersion }}
    \n
    \n
    \n
    ABOUT_SOURCE
    \n
    {{ appInfo.api.dataSource }}
    \n
    \n
    \n
    TIMEZONE
    \n \n {{ 'DATABASE_TIMEZONE_UNDEFINED_INFO' | agrTranslate }}\n \n
    \n {{ serverTimezone }}\n \n \n \n
    \n
    \n
    \n\n \n
    \n
    BROWSER
    \n
    \n
    \n
    NAME
    \n
    \n {{ browserName }} {{ browserVersion }}\n \n \n
    \n

    PLEASE_USE_CHROME

    \n
    \n
    \n
    \n
    \n
    \n
    ABOUT_USER_AGENT
    \n
    {{ userAgent }}
    \n
    \n NAV_SHOW_MORE\n
    \n
    \n\n \n
    \n
    \n
    APP_SETTINGS
    \n
    \n
    \n
    LANGUAGE
    \n
    {{ language }}
    \n
    \n
    \n
    LOCALE
    \n
    \n \n {{ dateLocale }}, {{ numberLocale }}\n \n
    \n
    \n
    \n
    \n\n
    \n","import { Component, OnInit } from '@angular/core';\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\nimport * as bowser from 'bowser';\n\nimport { AuthService } from 'src/app/_core/authorization/auth.service';\nimport { FormatService } from 'src/app/_core/format.service';\nimport { UserDTO } from 'src/app/_core/models/user.model';\nimport { SessionService } from 'src/app/_core/session.service';\nimport { SettingsService } from 'src/app/_core/settings/settings.service';\nimport { AppInfo } from 'src/app/_core/version/app-info.model';\nimport { VersionService } from 'src/app/_core/version/version.service';\n\n@Component({\n selector: 'agr-about-modal',\n templateUrl: './about-modal.component.html',\n styleUrls: ['./about-modal.component.scss']\n})\nexport class AboutModalComponent implements OnInit {\n title = 'ABOUT_AGR';\n parser = bowser.getParser(window.navigator.userAgent);\n appInfo = new AppInfo();\n browserName: string;\n browserVersion: string;\n userAgent: string;\n notChrome = false;\n showUserAgentString = false;\n\n // App and user settings\n user: UserDTO;\n language: string;\n dateLocale: string;\n numberLocale: string;\n serverTimezone: string;\n clientTimezone: string;\n\n constructor(\n public modal: NgbActiveModal,\n public authService: AuthService,\n private formatService: FormatService,\n private sessionService: SessionService,\n private settingsService: SettingsService,\n private versionService: VersionService\n ) {}\n\n ngOnInit(): void {\n this.getVersionInfo();\n this.getBrowserInfo();\n this.setSettings();\n }\n\n getVersionInfo(): void {\n this.versionService.getAppInfo().subscribe((appInfo) => (this.appInfo = appInfo));\n }\n\n getBrowserInfo(): void {\n this.browserName = this.parser.getBrowserName();\n if (this.browserName !== 'Chrome') {\n this.notChrome = true;\n }\n this.browserVersion = this.parser.getBrowserVersion().slice(0, 4);\n this.userAgent = navigator.userAgent;\n }\n\n closeModal(): void {\n this.modal.close();\n }\n\n private setSettings(): void {\n this.user = { ...this.sessionService.user };\n this.language = this.user.language ? this.user.language : this.settingsService.defaultLanguage();\n const userLocale = this.formatService.getLocale();\n this.numberLocale = userLocale ? userLocale : this.formatService.numberLocale;\n this.dateLocale = userLocale ? userLocale : this.formatService.dateLocale;\n this.serverTimezone = this.settingsService.serverTimezone() ? this.settingsService.serverTimezone() : 'UTC±0';\n this.clientTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone;\n }\n}\n","import { Component } from '@angular/core';\nimport { AbstractControl, FormBuilder } from '@angular/forms';\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\n\nimport { IndexDbCacheService } from 'src/app/_core/de-query/index-db-cache.service';\nimport { SessionService } from 'src/app/_core/session.service';\n\n@Component({\n selector: 'agr-clear-data-modal',\n templateUrl: './clear-data-modal.component.html'\n})\nexport class ClearDataModalComponent {\n form = this.formBuilder.group({\n clearLocalStorage: [false],\n clearIndexedDb: [true]\n });\n\n get clearLocalStorage(): AbstractControl {\n return this.form.get('clearLocalStorage');\n }\n get clearIndexedDb(): AbstractControl {\n return this.form.get('clearIndexedDb');\n }\n\n constructor(\n public modal: NgbActiveModal,\n private formBuilder: FormBuilder,\n private indexDbCacheService: IndexDbCacheService,\n private sessionService: SessionService\n ) {}\n\n onSubmit(): void {\n if (this.clearLocalStorage.value) {\n this.sessionService.clear();\n }\n if (this.clearIndexedDb.value) {\n this.indexDbCacheService.clear();\n }\n this.modal.close();\n }\n}\n","
    \n
    \n

    CLEAR_BROWSER_DATA

    \n \n
    \n\n
    \n
    \n \n \n \n
    \n\n
    \n \n \n \n
    \n
    \n\n
    \n \n \n
    \n
    \n","
    \n \n \n\n \n
    \n
    \n \n
    \n
    \n
    \n
    NAV_EXECUTION_LIST
    \n
    \n
    \n
    \n \n \n \n \n \n \n \n \n \n
    \n
    \n
    \n\n \n
    0\">\n \n \n
    \n {{ action.type | agrTranslate }}\n \n : {{ action.caption | agrTranslate }}\n \n \n \n \n
    \n \n
    \n
    \n
    \n \n
    \n {{ action.userId === 0 ? ('SCHEDULER' | agrTranslate) : action.userName }}, {{ action.createdAt | agrFromNow }}\n \n DONE\n
    \n
    ERROR
    \n
    \n \n
    \n\n \n
    \n NAV_EXEC_NOTHING_TO_SHOW\n
    \n\n \n \n
    \n\n","import { ChangeDetectorRef, Component, OnInit } from '@angular/core';\n\nimport { SessionService } from 'src/app/_core/session.service';\nimport { SignalRService, SignalRStatus } from 'src/app/_core/signal-r.service';\nimport { StoreService } from 'src/app/_core/store.service';\nimport { ExecutionListService } from 'src/app/nav/execution-list/execution-list.service';\nimport { ExecutionNotification } from 'src/app/nav/execution-list/execution-notification.model';\n\ninterface ExecutionListState {\n showActionsFromOtherUsers: boolean;\n}\n\n@Component({\n selector: 'agr-execution-list',\n templateUrl: './execution-list.component.html',\n styleUrls: ['./execution-list.component.scss']\n})\nexport class ExecutionListComponent implements OnInit {\n connectionStatus: SignalRStatus = SignalRStatus.off;\n activeExecutionsCount: number;\n allActions: ExecutionNotification[] = [];\n actions: ExecutionNotification[] = [];\n userActionsCount = 0;\n get allUserActions(): ExecutionNotification[] {\n return this.allActions.filter((action) => action.userId === this.sessionService.user.id);\n }\n\n state: ExecutionListState = {\n showActionsFromOtherUsers: false\n };\n\n private stateKey = 'executions.list';\n\n constructor(\n private changeDetectorRef: ChangeDetectorRef,\n private executionListService: ExecutionListService,\n public sessionService: SessionService,\n private storeService: StoreService,\n private signalRService: SignalRService\n ) {}\n\n ngOnInit(): void {\n setTimeout(() => {\n this.loadState();\n this.initializeNotifications();\n this.startNotificationsListener();\n this.startSignalrStatusListener();\n // For some reason this fixes returnUrl not working\n }, 1000);\n }\n\n clearAction(id: number, event: Event): void {\n this.stopEvent(event);\n this.executionListService.clearAction(id).subscribe(() => {\n this.allActions = this.allActions.filter((action) => action.id !== id);\n this.setVisibleActions();\n });\n }\n\n clearAllUserActions(event: Event): void {\n this.stopEvent(event);\n this.executionListService.clearMultipleActions(this.allUserActions).subscribe();\n this.allActions = this.allActions.filter((action) => action.userId !== this.sessionService.user.id || action.progressPercent !== 100);\n this.setVisibleActions();\n }\n\n toggleActionsFromOtherUsers(event: Event): void {\n this.stopEvent(event);\n this.state.showActionsFromOtherUsers = !this.state.showActionsFromOtherUsers;\n this.setVisibleActions();\n this.saveState();\n }\n\n /**\n * Stopping mouse click to propagate (prevents dropdown from closing).\n */\n stopEvent(event: Event): void {\n event.stopPropagation();\n event.preventDefault();\n }\n\n /**\n * Return the appropriate tooltip text for the tasks icon\n */\n getTaskTooltip(): string {\n // If connection status is connected (or not yet determined)\n if (this.connectionStatus === SignalRStatus.on) {\n if (this.activeExecutionsCount === 0) {\n return 'NO_PENDING_USER_ACTIONS';\n }\n if (this.activeExecutionsCount === 1) {\n return 'PENDING_USER_ACTION';\n }\n return 'PENDING_USER_ACTIONS';\n }\n if (this.connectionStatus === SignalRStatus.lost) {\n return 'SERVER_CONNECTION_LOST';\n }\n return 'ATTEMPTING_SERVER_RECONNECTION';\n }\n\n // private\n\n private startSignalrStatusListener(): void {\n // Give it a few seconds before we start listening to the signalR status\n setTimeout(() => {\n this.connectionStatus = this.signalRService.status;\n this.signalRService.statusSubject.subscribe((connectionStatus) => {\n this.connectionStatus = connectionStatus ? connectionStatus : this.connectionStatus;\n });\n }, 5000);\n }\n\n private initializeNotifications(): void {\n this.executionListService.getActions().subscribe((actions) => {\n this.setupActions(actions);\n });\n }\n\n private startNotificationsListener(): void {\n this.executionListService.listenForActions().subscribe((actions) => {\n this.setupActions(actions);\n this.changeDetectorRef.detectChanges();\n });\n }\n\n private setupActions(actions: ExecutionNotification[]): void {\n this.allActions = actions;\n this.activeExecutionsCount = actions.filter((action) => {\n return action.progressPercent !== 100 && (this.state.showActionsFromOtherUsers || action.userId === this.sessionService.user.id);\n }).length;\n this.setVisibleActions();\n }\n\n private setVisibleActions(): void {\n this.actions = this.state.showActionsFromOtherUsers ? this.allActions : this.allUserActions;\n this.userActionsCount = this.allUserActions.length;\n }\n\n private loadState(): void {\n this.state = this.storeService.load(this.stateKey, this.state) as ExecutionListState;\n }\n\n private saveState(): void {\n this.storeService.set(this.stateKey, this.state);\n }\n}\n","\n
    \n
    \n

    NAV_MY_PROFILE

    \n \n
    \n\n
    \n \n
    \n \n \n
    \n
    REQUIRED
    \n
    INPUT_IS_TOO_LONG
    \n
    \n
    \n\n \n
    \n \n\n \n \n \n \n \n\n \n\n
    \n
    REQUIRED
    \n
    INPUT_IS_TOO_LONG
    \n
    \n
    \n\n \n
    \n \n \n

    {{ 'LOCALE_INFO' | agrTranslate }}

    \n

    \n {{ 'DATE_LOCALE' | agrTranslate }}: {{ formatService.dateLocale }}
    \n {{ 'NUMBER_LOCALE' | agrTranslate }}: {{ formatService.numberLocale }}\n

    \n {{ 'DATE' | agrTranslate }}: {{ now | agrFormat: 'date:fullDate' }}
    \n {{ 'CURRENCY' | agrTranslate }}: {{ 10015463.51 | agrFormat: 'currency' }}
    \n {{ 'NUMBER' | agrTranslate }}: {{ 10500.2 | agrFormat: 'number' }}
    \n {{ 'PERCENTAGE' | agrTranslate }}: {{ 0.245 | agrFormat: 'percent' }}\n
    \n \n \n
    \n\n \n
    \n
    \n
    USERNAME
    \n
    {{ [user.username] }}
    \n
    \n
    \n
    EMAIL
    \n
    {{ user.email }}
    \n
    \n
    \n
    ROLES
    \n
    {{ userRoles }}
    \n
    \n
    \n
    ACCESS_GROUPS
    \n
    {{ userAccessGroups }}
    \n
    \n
    \n\n \n
    \n
    \n \n
    \n \n \n
    \n\n
    \n \n
    \n \n \n
    \n
    REQUIRED
    \n
    INCORRECT_PASSWORD
    \n
    PASSWORD_MUST_BE_AT_LEAST_8_CHARACTERS
    \n
    \n
    \n\n \n
    \n \n \n
    \n
    REQUIRED
    \n
    PASSWORD_MUST_BE_AT_LEAST_8_CHARACTERS
    \n
    INPUT_IS_TOO_LONG
    \n
    \n
    \n\n \n
    \n \n \n
    \n
    PASSWORDS_DO_NOT_MATCH
    \n
    \n
    \n
    \n
    \n
    \n
    \n\n
    \n \n \n
    \n \n
    \n","/* eslint-disable max-classes-per-file */\nimport { HttpClient } from '@angular/common/http';\nimport { Component, OnInit, ViewChild } from '@angular/core';\nimport { AbstractControl, AbstractControlOptions, FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap';\nimport { map } from 'lodash';\nimport { Observable } from 'rxjs';\nimport { mergeMap } from 'rxjs/operators';\n\nimport { AuthService } from 'src/app/_core/authorization/auth.service';\nimport { FormatService } from 'src/app/_core/format.service';\nimport { API_ROOT } from 'src/app/_core/models/api-route.model';\nimport { User, UserDTO } from 'src/app/_core/models/user.model';\nimport { SessionService } from 'src/app/_core/session.service';\nimport { SettingsService } from 'src/app/_core/settings/settings.service';\nimport { TranslationsService } from 'src/app/_core/translations.service';\nimport { UsersModalService } from 'src/app/settings/users/users-modal/users-modal.service';\n\n@Component({\n selector: 'agr-my-profile',\n templateUrl: './my-profile.component.html'\n})\nexport class MyProfileComponent implements OnInit {\n @ViewChild('content', { static: true }) content;\n modal: NgbModalRef;\n form: FormGroup;\n submitted: boolean;\n user: User;\n userRoles: string;\n userAccessGroups: string;\n accessGroupsActive: boolean;\n editingPassword: boolean;\n availableLanguages = [];\n availableLocales = [];\n now = Date.now();\n\n disableFallbackTranslations = false;\n\n /**\n * Add getters for easier form control access\n */\n get name(): AbstractControl {\n return this.form.get('name');\n }\n get language(): AbstractControl {\n return this.form.get('language');\n }\n get locale(): AbstractControl {\n return this.form.get('locale');\n }\n get newPassword(): AbstractControl {\n return this.form.get('newPassword');\n }\n get currentPassword(): AbstractControl {\n return this.form.get('newPassword.currentPassword');\n }\n get password(): AbstractControl {\n return this.form.get('newPassword.password');\n }\n get confirmPassword(): AbstractControl {\n return this.form.get('newPassword.confirmPassword');\n }\n\n constructor(\n public authService: AuthService,\n public sessionService: SessionService,\n public formatService: FormatService,\n private formBuilder: FormBuilder,\n private httpClient: HttpClient,\n private ngbModal: NgbModal,\n private settingsService: SettingsService,\n private translationsService: TranslationsService,\n private usersModalService: UsersModalService\n ) {}\n\n ngOnInit(): void {\n this.user = new User(this.sessionService.user);\n this.getAvailableLanguages();\n this.availableLocales = ['', ...this.formatService.availableLocales]; // Empty value to use default system locale\n this.disableFallbackTranslations = localStorage.getItem('disableFallbackTranslations') === 'true';\n }\n\n /**\n * Open/close change password well\n */\n showChangePassword(): void {\n this.editingPassword = true;\n this.addPasswordValidators();\n }\n\n hideChangePassword(): void {\n this.editingPassword = false;\n this.removePasswordValidators();\n this.clearPasswordFields();\n }\n\n /**\n * Setup modal and form\n */\n open(): void {\n this.submitted = false;\n this.editingPassword = false;\n this.buildForm();\n this.setFormData();\n this.accessGroupsActive = this.settingsService.getValue('user_access_active');\n this.modal = this.ngbModal.open(this.content, { size: 'sm', backdrop: 'static' });\n }\n\n /**\n * Activates feedback fields or submits the form if valid.\n * Will close the modal if form is pristine.\n */\n // eslint-disable-next-line max-lines-per-function\n onSubmit(): void {\n this.submitted = true; // make feedback elements visible\n if (this.form.invalid || this.form.pending) {\n return;\n }\n if (this.form.pristine) {\n this.modal.close();\n return;\n }\n\n if (this.editingPassword) {\n this.verifyPassword().subscribe((res: VerifyPasswordDTO) => {\n if (!res.isVerified) {\n this.currentPassword.setErrors({ incorrect: true });\n return;\n }\n this.updateProfile(this.form).subscribe(\n () => {\n this.cleanUp();\n },\n () => this.cleanUp()\n );\n });\n } else {\n this.updateProfile(this.form).subscribe(\n () => {\n this.cleanUp();\n },\n () => this.cleanUp()\n );\n }\n }\n\n trackLanguage({}: number, language: any): any {\n return language ? language.code : undefined;\n }\n\n onLocaleChange(): void {\n this.updateLocale();\n }\n\n onDismissModal(): void {\n this.resetLocale();\n this.modal.dismiss();\n }\n\n toggleFallbackTranslations(): void {\n this.disableFallbackTranslations = !this.disableFallbackTranslations;\n localStorage.setItem('disableFallbackTranslations', `${this.disableFallbackTranslations}`);\n }\n\n // private\n\n private getAvailableLanguages(): void {\n this.translationsService.getAvailableLanguages().subscribe((languages) => {\n this.availableLanguages = languages;\n });\n }\n\n // - form setup\n\n private buildForm(): void {\n const configControls = { currentPassword: [''], password: [''], confirmPassword: [''] };\n const options: AbstractControlOptions = { validators: this.passwordMismatch.bind(this) };\n this.form = this.formBuilder.group({\n name: ['', [Validators.required, Validators.maxLength(64)]],\n language: [''],\n locale: [''],\n newPassword: this.formBuilder.group(configControls, options)\n });\n }\n\n private setFormData(): void {\n this.user = new User(this.sessionService.user);\n this.userRoles = map(this.user.roles, (role) => role.caption).join(', ');\n this.userAccessGroups = map(this.user.accessGroups, (accessGroup) => accessGroup.name).join(', ');\n this.name.setValue(this.user.name);\n this.language.setValue(this.user.language || this.settingsService.defaultLanguage());\n this.locale.setValue(this.user.locale || '');\n }\n\n // *** Validators ***\n\n private passwordMismatch(newPassword: FormGroup): { mismatch: boolean } {\n return this.usersModalService.passwordMismatch(newPassword);\n }\n\n private verifyPassword(): Observable {\n return this.httpClient.post(`${API_ROOT}/users/verify-password`, { password: this.currentPassword.value });\n }\n\n // - toggle change password\n\n private clearPasswordFields(): void {\n this.currentPassword.setValue('');\n this.password.setValue('');\n this.confirmPassword.setValue('');\n }\n\n private addPasswordValidators(): void {\n this.currentPassword.setValidators([Validators.required, Validators.minLength(8)]);\n this.currentPassword.updateValueAndValidity();\n this.password.setValidators([Validators.required, Validators.minLength(8), Validators.maxLength(64)]);\n this.password.updateValueAndValidity();\n }\n\n private removePasswordValidators(): void {\n this.currentPassword.setValidators([]);\n this.password.setValidators([]);\n this.confirmPassword.setValidators([]);\n }\n\n // - form submission\n\n private updateProfile(form: any): Observable {\n const newPass = form.value.newPassword;\n const user: UserDTO = {\n id: this.user.id,\n userId: this.user.id,\n name: form.value.name,\n language: form.value.language,\n locale: form.value.locale\n };\n if (this.editingPassword) {\n user.editingPassword = true;\n user.currentPassword = newPass.currentPassword;\n user.password = newPass.password;\n user.passwordConfirmation = newPass.confirmPassword;\n }\n return this.httpClient\n .put(`${API_ROOT}/users/profile/${this.user.id}`, user)\n .pipe(mergeMap(() => this.httpClient.delete(`${API_ROOT}/cache`)));\n }\n\n /**\n * Update session, language and close modal\n */\n private cleanUp(): void {\n this.httpClient.get(`${API_ROOT}/users/logged-in-user`).subscribe((userDto: UserDTO) => {\n this.sessionService.user = userDto;\n if (this.user.language !== userDto.language) {\n this.translationsService.storeLanguage(userDto.language);\n this.cleanLocalStorage();\n location.reload();\n }\n this.modal.close();\n });\n }\n\n /**\n * When language is changed some data in local storage gets corrupted so we need to clean.\n */\n private cleanLocalStorage(): void {\n localStorage.setItem('items.pers', ''); // clear the view settings\n }\n\n private updateLocale(): void {\n const user = this.sessionService.user;\n user.locale = this.locale.value;\n this.sessionService.user = user;\n this.formatService.registerLocaleData(user.locale);\n }\n\n private resetLocale(): void {\n const user = this.sessionService.user;\n user.locale = this.user.locale;\n this.sessionService.user = user;\n }\n}\nclass VerifyPasswordDTO {\n isVerified: boolean;\n}\n","/* eslint-disable max-classes-per-file */\nimport { TimezoneService } from 'src/app/_core/timezone.service';\n\ninterface CustomActionParameterDTO {\n id?: number;\n customActionId?: number;\n orderNum?: number;\n name?: string;\n description?: string;\n procParamName?: string;\n required?: boolean;\n createdAt?: string; // Date\n updatedAt?: string; // Date\n paramValue?: string;\n}\n\nexport class CustomActionParameter {\n id: number;\n name: string;\n value: string | undefined;\n description: string;\n customActionId: number;\n required: boolean;\n procedureParameterName: string;\n orderNumber: number;\n createdAt: Date;\n updatedAt: Date;\n\n constructor(actionParameter?: CustomActionParameterDTO) {\n if (!actionParameter) {\n return;\n }\n this.id = actionParameter.id;\n this.name = actionParameter.name;\n this.value = actionParameter.paramValue;\n this.description = actionParameter.description;\n this.customActionId = actionParameter.customActionId;\n this.required = actionParameter.required;\n this.procedureParameterName = actionParameter.procParamName;\n this.orderNumber = actionParameter.orderNum;\n this.createdAt = TimezoneService.serverTimeToClientTime(actionParameter.createdAt);\n this.updatedAt = TimezoneService.serverTimeToClientTime(actionParameter.updatedAt);\n }\n\n get formName(): string {\n return `parameter-${this.id}`;\n }\n\n toCustomActionParameter(): CustomActionParameterDTO {\n return {\n id: this.id,\n customActionId: this.customActionId,\n required: this.required,\n procParamName: this.procedureParameterName,\n paramValue: this.value\n };\n }\n}\n\nexport interface CustomActionDTO {\n id?: number;\n name?: string;\n description?: string;\n storedProcedure?: string;\n requiredRole?: string;\n createdAt?: string; // Date\n updatedAt?: string; // Date\n customActionParameters?: CustomActionParameterDTO[];\n}\n\nexport interface CustomActionExecRequest {\n customActionId: number;\n customActionParameters: CustomActionParameterDTO[];\n storedProcedure: string;\n}\n\nexport class CustomAction {\n id: number;\n name: string;\n description: string;\n storedProcedure: string;\n requiredRole: string;\n createdAt: Date;\n updatedAt: Date;\n customActionParameters: CustomActionParameter[];\n\n constructor(action?: CustomActionDTO) {\n if (!action) {\n return;\n }\n this.id = action.id;\n this.name = action.name;\n this.description = action.description;\n this.storedProcedure = action.storedProcedure;\n this.requiredRole = action.requiredRole;\n this.createdAt = TimezoneService.serverTimeToClientTime(action.createdAt);\n this.updatedAt = TimezoneService.serverTimeToClientTime(action.updatedAt);\n this.customActionParameters = action.customActionParameters\n ? action.customActionParameters.map((parameter) => new CustomActionParameter(parameter))\n : [];\n }\n\n toActionExecutionRequest(): CustomActionExecRequest {\n return {\n customActionId: this.id,\n customActionParameters: this.customActionParameters.map((actionParam) => actionParam.toCustomActionParameter()),\n storedProcedure: this.storedProcedure\n };\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { ToasterService } from 'angular2-toaster';\nimport { Observable } from 'rxjs';\nimport { map, tap } from 'rxjs/operators';\n\nimport { API_ROOT } from 'src/app/_core/models/api-route.model';\nimport { CustomAction, CustomActionDTO } from 'src/app/_core/models/custom-action.model';\nimport { TranslationsService } from 'src/app/_core/translations.service';\nimport { ActionExecutionResponseDTO } from 'src/app/nav/execution-list/execution-notification.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CustomActionsService {\n constructor(private httpClient: HttpClient, private toasterService: ToasterService) {}\n\n getAllCustomActions(): Observable {\n return this.httpClient.get(`${API_ROOT}/custom-actions`).pipe(\n map((customActions: CustomActionDTO[]) => {\n return customActions.map((customAction) => new CustomAction(customAction));\n })\n );\n }\n\n executeCustomAction(customAction: CustomAction): Observable {\n return this.httpClient.post(`${API_ROOT}/custom-actions/${customAction.id}/execute`, customAction.toActionExecutionRequest()).pipe(\n tap((response: ActionExecutionResponseDTO) => {\n this.createActionResponseMessage(response);\n return response;\n })\n );\n }\n\n private createActionResponseMessage(response: ActionExecutionResponseDTO): void {\n const toastType = response.ActionExecutionId !== -1 ? 'info' : 'error';\n const toastTitle = TranslationsService.get('CUSTOM_ACTION_STARTED');\n if (toastType === 'info') {\n this.toasterService.pop(toastType, toastTitle);\n } else {\n this.toasterService.pop(toastType, toastTitle, response.LockedStatus);\n }\n }\n}\n","\n \n
    \n

    CUSTOM_ACTIONS

    \n \n
    \n\n \n
    \n \n
    \n \n
    \n \n \n
    \n\n
    \n
    \n \n {{ 'DESCRIPTION' | agrTranslate }} : {{ selectedCustomAction.description }}\n
    \n
    \n
    \n \n \n {{ param.description }}\n \n \n \n
    \n {{ 'REQUIRED' | agrTranslate }}\n
    \n
    \n
    \n
    \n
    \n\n \n
    \n
    \n \n EXECUTE\n \n
    \n
    \n \n
    \n","import { Component, ViewChild } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap';\nimport { Observable } from 'rxjs';\n\nimport { CustomAction } from 'src/app/_core/models/custom-action.model';\nimport { CustomActionsService } from 'src/app/nav/custom-actions/custom-actions.service';\n\n@Component({\n selector: 'agr-custom-actions',\n templateUrl: './custom-actions.component.html'\n})\nexport class CustomActionsComponent {\n @ViewChild('content', { static: true }) content;\n modal: NgbModalRef;\n\n customActions$: Observable;\n selectedCustomAction: CustomAction;\n submitted = false;\n\n form = new FormGroup({});\n\n constructor(private modalService: NgbModal, private customActionsService: CustomActionsService) {}\n\n open(): void {\n this.customActions$ = this.customActionsService.getAllCustomActions();\n this.selectedCustomAction = undefined;\n this.submitted = false;\n this.modal = this.modalService.open(this.content);\n }\n\n onActionSelectionChanged(): void {\n this.setFormValues();\n }\n\n onExecute(): void {\n this.submitted = true;\n if (this.form.invalid) {\n return;\n }\n\n this.setActionValuesFromForm();\n this.customActionsService.executeCustomAction(this.selectedCustomAction).subscribe();\n this.modal.close();\n }\n\n onClose(): void {\n this.modal.close();\n }\n\n /**\n * When an action is selected we setup the form based on the action parameters\n */\n private setFormValues(): void {\n this.form = new FormGroup({});\n if (this.selectedCustomAction) {\n this.selectedCustomAction.customActionParameters.forEach((actionParam) => {\n if (!this.form.get(actionParam.name)) {\n this.form.addControl(\n actionParam.name,\n actionParam.required ? new FormControl(actionParam.value || '', Validators.required) : new FormControl(actionParam.value || '')\n );\n }\n });\n }\n }\n\n /**\n * When submitting the form we copy the form values (input fields)\n * to the action parameter model that is posted to the API\n */\n private setActionValuesFromForm(): void {\n this.selectedCustomAction.customActionParameters.forEach((actionParam) => {\n actionParam.value = this.form.get(actionParam.name).value;\n });\n }\n}\n","\n\n\n\n\n\n","/* eslint-disable no-unused-vars */\nimport { Component, OnInit } from '@angular/core';\nimport { NavigationStart, Router, RouterEvent } from '@angular/router';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\n\nimport { AuthService } from 'src/app/_core/authorization/auth.service';\nimport { GlobalEventsService } from 'src/app/_core/global-events.service';\nimport { SessionService } from 'src/app/_core/session.service';\nimport { SettingsService } from 'src/app/_core/settings/settings.service';\nimport { StoreService } from 'src/app/_core/store.service';\nimport { VersionService } from 'src/app/_core/version/version.service';\nimport { AboutModalComponent } from 'src/app/nav/about-modal/about-modal.component';\nimport { ClearDataModalComponent } from 'src/app/nav/clear-data-modal/clear-data-modal.component';\nimport { AgrNav, MainNavigation, ModularNav, SettingsNavigation } from 'src/app/nav/nav.model';\n\ndeclare global {\n interface Window {\n Userlane: any;\n }\n}\n\ninterface InfoDropdownItem {\n caption: string;\n url: string;\n isEnabled?: boolean;\n}\n\nexport interface NavPers {\n activeModuleName?: string; // Name of active module\n}\n\n@Component({\n selector: 'agr-nav',\n templateUrl: './nav.component.html',\n styleUrls: ['./nav.component.scss']\n})\nexport class NavComponent implements OnInit {\n mainNav: MainNavigation;\n settingsNav: SettingsNavigation;\n currentUrl: string;\n filterText: string;\n activeModule: ModularNav = new ModularNav();\n hasAssistant = true;\n\n barColor = 'nav-blue';\n persKey = 'navigation';\n pers: NavPers = {\n activeModuleName: undefined\n };\n\n infoDropdown: InfoDropdownItem[] = [];\n userlaneEnabled: boolean;\n\n constructor(\n private globalEventsService: GlobalEventsService,\n private modal: NgbModal,\n private router: Router,\n private settingsService: SettingsService,\n private storeService: StoreService,\n private versionService: VersionService,\n public authService: AuthService,\n public sessionService: SessionService\n ) {}\n\n ngOnInit(): void {\n this.listenForChanges();\n this.setModularNavigation();\n this.setSettingsNavigation();\n this.listenForRouteChanges();\n this.loadPers();\n this.loadActiveModule();\n this.setCssColors();\n this.setInfoDropdown();\n this.userlaneEnabled = !!this.settingsService.getValue('userlane_enabled');\n }\n\n listenForChanges(): void {\n this.globalEventsService.redrawNavBarEvent$.subscribe(() => {\n this.setModularNavigation();\n this.setSettingsNavigation();\n this.loadActiveModule();\n });\n }\n\n listenForRouteChanges(): void {\n this.router.events.subscribe((routerEvent: RouterEvent) => {\n if (routerEvent instanceof NavigationStart && routerEvent.url !== undefined) {\n this.currentUrl = routerEvent.url;\n this.loadActiveModule();\n }\n });\n }\n\n openClearBrowserDataModal(): void {\n this.modal.open(ClearDataModalComponent, { size: 'sm' });\n }\n\n openAboutModal(): void {\n this.modal.open(AboutModalComponent, { size: 'sm' });\n }\n\n onNavigationFilterInput(): void {\n if (this.filterText.length === 0) {\n this.mainNav.modules.forEach((module) => module.resetDropdownNavigation());\n } else {\n this.mainNav.modules.forEach((module) => module.flattenDropdownNavigation());\n }\n }\n\n assistantClicked(): void {\n this.hasAssistant ? window.Userlane('hide') : window.Userlane('openAssistant');\n this.hasAssistant = !this.hasAssistant;\n }\n\n /**\n * The appNavigation is cloned to be able to filter features and modules for each user without affecting the others.\n * The navigation (features) of each module is then filtered according to user access.\n * The modules are then filtered; if no feature is accessible within a module, the module will not be displayed.\n */\n private setModularNavigation(): void {\n this.mainNav = this.settingsService.appNavigation();\n this.mainNav.modules.forEach((modularNav) => {\n modularNav.navigation = this.filterFeatureless(modularNav.navigationAll);\n });\n this.mainNav.modules = this.mainNav.modules.filter((mod) => mod.navigation.length > 0);\n }\n\n private setSettingsNavigation(): void {\n this.settingsNav = this.settingsService.settingsNavigation();\n this.settingsNav.navigation = this.filterFeatureless(this.settingsNav.navigation);\n }\n\n private setInfoDropdown(): void {\n this.infoDropdown = [\n this.setCustomUserManual(),\n this.setUserManual(),\n this.setTechnicalManual(),\n this.setServiceDeskDropdownItem('GENERAL_INQUIRIES'),\n this.setServiceDeskDropdownItem('REPORT_PROBLEM'),\n this.setServiceDeskDropdownItem('IMPROVEMENT_IDEA'),\n this.setServiceDeskDropdownItem('CHANGE_REQUEST')\n ];\n }\n\n private setUserManual(): InfoDropdownItem {\n const isEssentials = this.settingsService.getValue('agr_system') === 'essentials';\n return {\n caption: 'USER_MANUAL',\n url: isEssentials\n ? `https://docs.agrdynamics.com/essentials/user/general/`\n : `https://docs.agrdynamics.com/${this.versionService.getClientVersion().versionName}/user`,\n isEnabled: true\n };\n }\n\n private setTechnicalManual(): InfoDropdownItem {\n return {\n caption: 'TECHNICAL_MANUAL',\n url: `https://docs.agrdynamics.com/${this.versionService.getClientVersion().versionName}/technical`,\n isEnabled: this.authService.hasFeature('developmentMode')\n };\n }\n\n private setCustomUserManual(): InfoDropdownItem {\n const customUserManual: InfoDropdownItem = {\n caption: this.settingsService.getValue('documentation_caption'),\n url: this.settingsService.getValue('documentation_url')\n };\n customUserManual.isEnabled = customUserManual.caption && customUserManual.caption.length > 0;\n return customUserManual;\n }\n\n private setServiceDeskDropdownItem(caption: string): InfoDropdownItem {\n let urlEnding = '';\n switch (caption) {\n case 'GENERAL_INQUIRIES': {\n urlEnding = '1';\n break;\n }\n case 'REPORT_PROBLEM': {\n urlEnding = '5';\n break;\n }\n case 'IMPROVEMENT_IDEA': {\n urlEnding = '41';\n break;\n }\n case 'CHANGE_REQUEST': {\n urlEnding = '4';\n break;\n }\n default:\n urlEnding = '1';\n }\n const serviceUrl = 'https://agrinventory.atlassian.net/servicedesk/customer/portal/1/group/1/create/';\n return {\n caption,\n url: `${serviceUrl}${urlEnding}`,\n isEnabled: caption !== 'CHANGE_REQUEST' ? true : this.settingsService.isEnterprise()\n };\n }\n\n /**\n * The URL decides which module we are in. If no specific module owns the url (e.g. /settings),\n * nor has it as a homepage, then pers is retrieved.\n * The activeModuleName is saved immediately to pers so that it can be accessed anywhere in the app.\n */\n private loadActiveModule(): void {\n this.mainNav.modules.forEach((modularNav) => {\n const activeNav = modularNav.navigation.find((agrNav) => `/${agrNav.path}` === this.currentUrl);\n if (activeNav) {\n this.selectModule(modularNav);\n return;\n }\n if (`/${modularNav.homepage}` === this.currentUrl) {\n this.selectModule(modularNav);\n return;\n }\n });\n this.selectModule(this.mainNav.modules.find((module) => module.name === this.pers.activeModuleName));\n }\n\n private selectModule(modularNav?: ModularNav): void {\n this.activeModule = modularNav ? modularNav : this.mainNav.defaultModule;\n this.pers.activeModuleName = this.activeModule.name;\n this.setCssColors();\n this.savePers();\n }\n\n /**\n * Sets the color defined in module to the navigation bar\n */\n private setCssColors(): void {\n this.barColor = this.activeModule.color ? `nav-${this.activeModule.color}` : 'nav-blue';\n }\n\n private loadPers(): void {\n this.pers = this.storeService.load(this.persKey, this.pers) as NavPers;\n }\n\n private savePers(): void {\n this.storeService.set(this.persKey, this.pers);\n }\n\n private filterFeatureless(menuItems: AgrNav[]): AgrNav[] {\n const menu = menuItems.filter((menuItem: AgrNav) => {\n return !menuItem.feature || this.authService.hasFeature(menuItem.feature);\n });\n menu.forEach((menuItem: AgrNav, index: number) => {\n if (menuItem.submenu.length > 0) {\n menuItem.submenu = this.filterFeatureless(menuItem.submenu);\n if (menuItem.submenu.length === 0) {\n // Delete the submenu if it is empty\n menu.splice(index, 1);\n }\n }\n });\n return menu;\n }\n}\n","import { Subject, BehaviorSubject, timer, of, combineLatest, Subscription } from 'rxjs';\nimport { tap, map, skip, delay, filter, debounce, switchMap, distinctUntilChanged } from 'rxjs/operators';\nimport { InjectionToken, Injectable, Inject, Optional, NgModule, Component, Input, Output, ChangeDetectionStrategy, EventEmitter, ViewEncapsulation, defineInjectable, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/**\r\n * @fileoverview added by tsickle\r\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\r\n */\r\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/common';\n\nfunction NgProgressComponent_ng_container_0_div_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 6);\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵstyleProp(\"box-shadow\", \"0 0 10px \" + ctx_r2.color + \", 0 0 5px \" + ctx_r2.color);\n} }\nfunction NgProgressComponent_ng_container_0_div_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 7);\n ɵngcc0.ɵɵelement(1, \"div\", 8);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"border-top-color\", ctx_r3.color)(\"border-left-color\", ctx_r3.color);\n} }\nfunction NgProgressComponent_ng_container_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 1)(2, \"div\", 2)(3, \"div\", 3);\n ɵngcc0.ɵɵtemplate(4, NgProgressComponent_ng_container_0_div_4_Template, 1, 2, \"div\", 4);\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵtemplate(5, NgProgressComponent_ng_container_0_div_5_Template, 2, 4, \"div\", 5);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const state_r1 = ctx.$implicit;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"transition\", \"opacity \" + ctx_r0.speed + \"ms \" + ctx_r0.ease);\n ɵngcc0.ɵɵclassProp(\"-active\", state_r1.active);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵstyleProp(\"transform\", state_r1.transform)(\"background-color\", ctx_r0.color)(\"transition\", state_r1.active ? \"all \" + ctx_r0.speed + \"ms \" + ctx_r0.ease : \"none\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.meteor);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.spinner);\n} }\nclass NgProgressRef {\r\n /**\r\n * @param {?} customConfig\r\n * @param {?} deleteInstance\r\n */\r\n constructor(customConfig, deleteInstance) {\r\n this.deleteInstance = deleteInstance;\r\n /**\r\n * Stream that increments and updates progress state\r\n */\r\n this._trickling = new Subject();\r\n /**\r\n * Stream that combines \"_trickling\" and \"config\" streams\r\n */\r\n this._worker = Subscription.EMPTY;\r\n this._state = new BehaviorSubject({ active: false, value: 0 });\r\n this._config = new BehaviorSubject(customConfig);\r\n this.state = this._state.asObservable();\r\n this.config = this._state.asObservable();\r\n this._worker = combineLatest(this._trickling, this._config).pipe(debounce(([start, config]) => timer(start ? config.debounceTime : 0)), switchMap(([start, config]) => start ? this.onTrickling(config) : this.onComplete(config))).subscribe();\r\n }\r\n /**\r\n * Get current progress state\r\n * @return {?}\r\n */\r\n get currState() {\r\n return this._state.value;\r\n }\r\n /**\r\n * Check if progress has started\r\n * @return {?}\r\n */\r\n get isStarted() {\r\n return this.currState.active;\r\n }\r\n /**\r\n * Progress start event\r\n * @return {?}\r\n */\r\n get started() {\r\n return this._state.pipe(map((state) => state.active), distinctUntilChanged(), filter(active => active));\r\n }\r\n /**\r\n * Progress ended event\r\n * @return {?}\r\n */\r\n get completed() {\r\n return this._state.pipe(map((state) => state.active), distinctUntilChanged(), filter(active => !active), skip(1));\r\n }\r\n /**\r\n * Start the progress\r\n * @return {?}\r\n */\r\n start() {\r\n this._trickling.next(true);\r\n }\r\n /**\r\n * Complete the progress\r\n * @return {?}\r\n */\r\n complete() {\r\n this._trickling.next(false);\r\n }\r\n /**\r\n * Increment the progress\r\n * @param {?=} amount\r\n * @return {?}\r\n */\r\n inc(amount) {\r\n /** @type {?} */\r\n const n = this.currState.value;\r\n if (!this.isStarted) {\r\n this.start();\r\n }\r\n else {\r\n if (typeof amount !== 'number') {\r\n amount = this._config.value.trickleFunc(n);\r\n }\r\n this.set(n + amount);\r\n }\r\n }\r\n /**\r\n * Set the progress\r\n * @param {?} n\r\n * @return {?}\r\n */\r\n set(n) {\r\n this.setState({ value: this.clamp(n), active: true });\r\n }\r\n /**\r\n * Set config\r\n * @param {?} config\r\n * @return {?}\r\n */\r\n setConfig(config) {\r\n this._config.next(Object.assign({}, this._config.value, config));\r\n }\r\n /**\r\n * Destroy progress reference\r\n * @return {?}\r\n */\r\n destroy() {\r\n this._worker.unsubscribe();\r\n this._trickling.complete();\r\n this._state.complete();\r\n this._config.complete();\r\n this.deleteInstance();\r\n }\r\n /**\r\n * Set progress state\r\n * @param {?} state\r\n * @return {?}\r\n */\r\n setState(state) {\r\n this._state.next(Object.assign({}, this.currState, state));\r\n }\r\n /**\r\n * Clamps a value to be between min and max\r\n * @param {?} n\r\n * @return {?}\r\n */\r\n clamp(n) {\r\n return Math.max(this._config.value.min, Math.min(this._config.value.max, n));\r\n }\r\n /**\r\n * Keeps incrementing the progress\r\n * @param {?} config\r\n * @return {?}\r\n */\r\n onTrickling(config) {\r\n if (!this.isStarted) {\r\n this.set(this._config.value.min);\r\n }\r\n return timer(0, config.trickleSpeed).pipe(tap(() => this.inc()));\r\n }\r\n /**\r\n * Completes then resets the progress\r\n * @param {?} config\r\n * @return {?}\r\n */\r\n onComplete(config) {\r\n return !this.isStarted ? of({}) : of({}).pipe(\r\n // Completes the progress\r\n tap(() => this.setState({ value: 100 })), \r\n // Hides the progress bar after a tiny delay\r\n delay(config.speed * 1.7), tap(() => this.setState({ active: false })), \r\n // Resets the progress state\r\n delay(config.speed), tap(() => this.setState({ value: 0 })));\r\n }\r\n}\n\n/**\r\n * @fileoverview added by tsickle\r\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\r\n */\r\n/** @type {?} */\r\nconst CONFIG = new InjectionToken('config');\n\n/**\r\n * @fileoverview added by tsickle\r\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\r\n */\r\nconst ɵ0 = (n) => {\r\n if (n >= 0 && n < 20)\r\n return 10;\r\n if (n >= 20 && n < 50)\r\n return 4;\r\n if (n >= 50 && n < 80)\r\n return 2;\r\n if (n >= 80 && n < 99)\r\n return 0.5;\r\n return 0;\r\n};\r\n/** @type {?} */\r\nconst defaultConfig = {\r\n min: 8,\r\n max: 100,\r\n speed: 200,\r\n debounceTime: 0,\r\n trickleSpeed: 300,\r\n fixed: true,\r\n meteor: true,\r\n thick: false,\r\n spinner: true,\r\n ease: 'linear',\r\n color: '#1B95E0',\r\n direction: 'ltr+',\r\n spinnerPosition: 'right',\r\n trickleFunc: ɵ0\r\n};\r\nclass NgProgress {\r\n /**\r\n * @param {?} config\r\n */\r\n constructor(config) {\r\n /**\r\n * Store progress bar instances\r\n */\r\n this._instances = new Map();\r\n this.config = Object.assign({}, defaultConfig, config);\r\n }\r\n /**\r\n * Get or Create progress bar by ID\r\n * @param {?=} id\r\n * @param {?=} config\r\n * @return {?}\r\n */\r\n ref(id = 'root', config) {\r\n if (this._instances.has(id)) {\r\n /** @type {?} */\r\n const progressRef = this._instances.get(id);\r\n if (config) {\r\n progressRef.setConfig(Object.assign({}, this.config, config));\r\n }\r\n return progressRef;\r\n }\r\n else {\r\n /** @type {?} */\r\n const progressRef = new NgProgressRef(Object.assign({}, this.config, config), this.deleteInstance(id));\r\n return this._instances.set(id, progressRef).get(id);\r\n }\r\n }\r\n /**\r\n * Destroy all progress bar instances\r\n * @return {?}\r\n */\r\n destroyAll() {\r\n this._instances.forEach((ref) => ref.destroy());\r\n }\r\n /**\r\n * A destroyer function for each progress bar instance\r\n * @param {?} id\r\n * @return {?}\r\n */\r\n deleteInstance(id) {\r\n return () => {\r\n this._instances.delete(id);\r\n };\r\n }\r\n}\nNgProgress.ɵfac = function NgProgress_Factory(t) { return new (t || NgProgress)(ɵngcc0.ɵɵinject(CONFIG, 8)); };\nNgProgress.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgProgress, factory: NgProgress.ɵfac, providedIn: 'root' });\r\n/** @nocollapse */\r\nNgProgress.ctorParameters = () => [\r\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [CONFIG,] }] }\r\n];\r\n/** @nocollapse */ NgProgress.ngInjectableDef = defineInjectable({ factory: function NgProgress_Factory() { return new NgProgress(inject(CONFIG, 8)); }, token: NgProgress, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgProgress, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [CONFIG]\n }] }]; }, null); })();\n\n/**\r\n * @fileoverview added by tsickle\r\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\r\n */\r\nclass NgProgressComponent {\r\n /**\r\n * @param {?} _ngProgress\r\n */\r\n constructor(_ngProgress) {\r\n this._ngProgress = _ngProgress;\r\n this._started = Subscription.EMPTY;\r\n this._completed = Subscription.EMPTY;\r\n /**\r\n * Creates a new instance if id is not already exists\r\n */\r\n this.id = 'root';\r\n /**\r\n * Initializes inputs from the global config\r\n */\r\n this.min = this._ngProgress.config.min;\r\n this.max = this._ngProgress.config.max;\r\n this.ease = this._ngProgress.config.ease;\r\n this.color = this._ngProgress.config.color;\r\n this.speed = this._ngProgress.config.speed;\r\n this.thick = this._ngProgress.config.thick;\r\n this.fixed = this._ngProgress.config.fixed;\r\n this.meteor = this._ngProgress.config.meteor;\r\n this.spinner = this._ngProgress.config.spinner;\r\n this.trickleSpeed = this._ngProgress.config.trickleSpeed;\r\n this.debounceTime = this._ngProgress.config.debounceTime;\r\n this.trickleFunc = this._ngProgress.config.trickleFunc;\r\n this.spinnerPosition = this._ngProgress.config.spinnerPosition;\r\n this.direction = this._ngProgress.config.direction;\r\n this.started = new EventEmitter();\r\n this.completed = new EventEmitter();\r\n }\r\n /**\r\n * @return {?}\r\n */\r\n get isStarted() {\r\n return this.progressRef.isStarted;\r\n }\r\n /**\r\n * @return {?}\r\n */\r\n ngOnChanges() {\r\n if (this.progressRef instanceof NgProgressRef) {\r\n // Update progress bar config when inputs change\r\n this.progressRef.setConfig({\r\n max: (this.max > 0 && this.max <= 100) ? this.max : 100,\r\n min: (this.min < 100 && this.min >= 0) ? this.min : 0,\r\n speed: this.speed,\r\n trickleSpeed: this.trickleSpeed,\r\n trickleFunc: this.trickleFunc,\r\n debounceTime: this.debounceTime\r\n });\r\n }\r\n }\r\n /**\r\n * @return {?}\r\n */\r\n ngOnInit() {\r\n // Get progress bar service instance\r\n this.progressRef = this._ngProgress.ref(this.id, {\r\n max: this.max,\r\n min: this.min,\r\n speed: this.speed,\r\n trickleSpeed: this.trickleSpeed,\r\n debounceTime: this.debounceTime\r\n });\r\n // Subscribe to progress state\r\n this.state$ = this.progressRef.state.pipe(map((state) => ({\r\n active: state.active,\r\n transform: `translate3d(${state.value}%,0,0)`\r\n })));\r\n // Subscribes to started and completed events on deman\r\n if (this.started.observers.length) {\r\n this._started = this.progressRef.started.subscribe(() => this.started.emit());\r\n }\r\n if (this.completed.observers.length) {\r\n this._completed = this.progressRef.completed.subscribe(() => this.completed.emit());\r\n }\r\n }\r\n /**\r\n * @return {?}\r\n */\r\n ngOnDestroy() {\r\n this._started.unsubscribe();\r\n this._completed.unsubscribe();\r\n this.progressRef.destroy();\r\n }\r\n /**\r\n * @return {?}\r\n */\r\n start() {\r\n this.progressRef.start();\r\n }\r\n /**\r\n * @return {?}\r\n */\r\n complete() {\r\n this.progressRef.complete();\r\n }\r\n /**\r\n * @param {?=} n\r\n * @return {?}\r\n */\r\n inc(n) {\r\n this.progressRef.inc(n);\r\n }\r\n /**\r\n * @param {?} n\r\n * @return {?}\r\n */\r\n set(n) {\r\n this.progressRef.set(n);\r\n }\r\n}\nNgProgressComponent.ɵfac = function NgProgressComponent_Factory(t) { return new (t || NgProgressComponent)(ɵngcc0.ɵɵdirectiveInject(NgProgress)); };\nNgProgressComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgProgressComponent, selectors: [[\"ng-progress\"]], hostAttrs: [\"role\", \"progressbar\"], hostVars: 4, hostBindings: function NgProgressComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"spinnerPosition\", ctx.spinnerPosition)(\"dir\", ctx.direction)(\"thick\", ctx.thick)(\"fixed\", ctx.fixed);\n } }, inputs: { id: \"id\", min: \"min\", max: \"max\", ease: \"ease\", color: \"color\", speed: \"speed\", thick: \"thick\", fixed: \"fixed\", meteor: \"meteor\", spinner: \"spinner\", trickleSpeed: \"trickleSpeed\", debounceTime: \"debounceTime\", trickleFunc: \"trickleFunc\", spinnerPosition: \"spinnerPosition\", direction: \"direction\" }, outputs: { started: \"started\", completed: \"completed\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 2, vars: 3, consts: [[4, \"ngIf\"], [1, \"ng-progress-bar\"], [1, \"ng-bar-placeholder\"], [1, \"ng-bar\"], [\"class\", \"ng-meteor\", 3, \"boxShadow\", 4, \"ngIf\"], [\"class\", \"ng-spinner\", 4, \"ngIf\"], [1, \"ng-meteor\"], [1, \"ng-spinner\"], [1, \"ng-spinner-icon\"]], template: function NgProgressComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgProgressComponent_ng_container_0_Template, 6, 12, \"ng-container\", 0);\n ɵngcc0.ɵɵpipe(1, \"async\");\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ɵngcc0.ɵɵpipeBind1(1, 1, ctx.state$));\n } }, directives: [ɵngcc1.NgIf], pipes: [ɵngcc1.AsyncPipe], styles: [\"ng-progress{z-index:999999;pointer-events:none}ng-progress[fixed=true] .ng-progress-bar,ng-progress[fixed=true] .ng-spinner{position:fixed}ng-progress[fixed=true] .ng-spinner{top:15px}ng-progress[fixed=true][spinnerPosition=left] .ng-spinner{left:15px}ng-progress[fixed=true][spinnerPosition=right] .ng-spinner{right:15px}ng-progress[thick=true] .ng-spinner-icon{width:24px;height:24px;border-width:3px}ng-progress[thick=true] .ng-bar-placeholder{height:3px!important}ng-progress[dir='ltr+'] .ng-meteor,ng-progress[dir=ltr-] .ng-meteor{-webkit-transform:rotate(3deg);transform:rotate(3deg)}ng-progress[dir='ltr+'][thick=true] .ng-meteor,ng-progress[dir=ltr-][thick=true] .ng-meteor{-webkit-transform:rotate(4deg);transform:rotate(4deg)}ng-progress[dir='ltr+'] .ng-bar,ng-progress[dir='rtl+'] .ng-bar{margin-left:-100%}ng-progress[dir='ltr+'] .ng-meteor,ng-progress[dir='rtl+'] .ng-meteor{right:0}ng-progress[dir='ltr+'] .ng-meteor,ng-progress[dir=rtl-] .ng-meteor{top:-3px}ng-progress[dir='ltr+'][thick=true] .ng-meteor,ng-progress[dir=rtl-][thick=true] .ng-meteor{top:-4px}ng-progress[dir='rtl+'] .ng-meteor,ng-progress[dir=ltr-] .ng-meteor{bottom:-3px}ng-progress[dir='rtl+'][thick=true] .ng-meteor,ng-progress[dir=ltr-][thick=true] .ng-meteor{bottom:-4px}ng-progress[dir='rtl+'] .ng-bar-placeholder,ng-progress[dir=ltr-] .ng-bar-placeholder{-webkit-transform:rotate(180deg);transform:rotate(180deg)}ng-progress[dir='rtl+'] .ng-spinner-icon,ng-progress[dir=ltr-] .ng-spinner-icon{animation-direction:reverse}ng-progress[dir='rtl+'] .ng-meteor,ng-progress[dir=rtl-] .ng-meteor{-webkit-transform:rotate(-3deg);transform:rotate(-3deg)}ng-progress[dir='rtl+'][thick=true] .ng-meteor,ng-progress[dir=rtl-][thick=true] .ng-meteor{-webkit-transform:rotate(-4deg);transform:rotate(-4deg)}ng-progress[spinnerPosition=left] .ng-spinner{left:10px}ng-progress[spinnerPosition=right] .ng-spinner{right:10px}.ng-progress-bar{position:relative;z-index:999999;top:0;left:0;width:100%;zoom:1;opacity:0}.ng-progress-bar.-active{opacity:1;transition:none}.ng-bar-placeholder{position:absolute;height:2px;width:100%}.ng-bar{width:100%;height:100%;-webkit-transform:translate(-100%,0,0);transform:translate(-100%,0,0)}.ng-meteor{display:block;position:absolute;width:100px;height:100%;opacity:1}.ng-spinner{position:absolute;display:block;z-index:1031;top:10px}.ng-spinner-icon{width:18px;height:18px;box-sizing:border-box;-webkit-animation:.4s linear infinite spinner-animation;animation:.4s linear infinite spinner-animation;border:2px solid transparent;border-radius:50%}@-webkit-keyframes spinner-animation{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spinner-animation{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}\"], encapsulation: 2, changeDetection: 0 });\r\n/** @nocollapse */\r\nNgProgressComponent.ctorParameters = () => [\r\n { type: NgProgress }\r\n];\r\nNgProgressComponent.propDecorators = {\r\n id: [{ type: Input }],\r\n min: [{ type: Input }],\r\n max: [{ type: Input }],\r\n ease: [{ type: Input }],\r\n color: [{ type: Input }],\r\n speed: [{ type: Input }],\r\n thick: [{ type: Input }],\r\n fixed: [{ type: Input }],\r\n meteor: [{ type: Input }],\r\n spinner: [{ type: Input }],\r\n trickleSpeed: [{ type: Input }],\r\n debounceTime: [{ type: Input }],\r\n trickleFunc: [{ type: Input }],\r\n spinnerPosition: [{ type: Input }],\r\n direction: [{ type: Input }],\r\n started: [{ type: Output }],\r\n completed: [{ type: Output }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgProgressComponent, [{\n type: Component,\n args: [{\n selector: 'ng-progress',\n host: {\n 'role': 'progressbar',\n '[attr.spinnerPosition]': 'spinnerPosition',\n '[attr.dir]': 'direction',\n '[attr.thick]': 'thick',\n '[attr.fixed]': 'fixed'\n },\n template: `\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n styles: [\"ng-progress{z-index:999999;pointer-events:none}ng-progress[fixed=true] .ng-progress-bar,ng-progress[fixed=true] .ng-spinner{position:fixed}ng-progress[fixed=true] .ng-spinner{top:15px}ng-progress[fixed=true][spinnerPosition=left] .ng-spinner{left:15px}ng-progress[fixed=true][spinnerPosition=right] .ng-spinner{right:15px}ng-progress[thick=true] .ng-spinner-icon{width:24px;height:24px;border-width:3px}ng-progress[thick=true] .ng-bar-placeholder{height:3px!important}ng-progress[dir='ltr+'] .ng-meteor,ng-progress[dir=ltr-] .ng-meteor{-webkit-transform:rotate(3deg);transform:rotate(3deg)}ng-progress[dir='ltr+'][thick=true] .ng-meteor,ng-progress[dir=ltr-][thick=true] .ng-meteor{-webkit-transform:rotate(4deg);transform:rotate(4deg)}ng-progress[dir='ltr+'] .ng-bar,ng-progress[dir='rtl+'] .ng-bar{margin-left:-100%}ng-progress[dir='ltr+'] .ng-meteor,ng-progress[dir='rtl+'] .ng-meteor{right:0}ng-progress[dir='ltr+'] .ng-meteor,ng-progress[dir=rtl-] .ng-meteor{top:-3px}ng-progress[dir='ltr+'][thick=true] .ng-meteor,ng-progress[dir=rtl-][thick=true] .ng-meteor{top:-4px}ng-progress[dir='rtl+'] .ng-meteor,ng-progress[dir=ltr-] .ng-meteor{bottom:-3px}ng-progress[dir='rtl+'][thick=true] .ng-meteor,ng-progress[dir=ltr-][thick=true] .ng-meteor{bottom:-4px}ng-progress[dir='rtl+'] .ng-bar-placeholder,ng-progress[dir=ltr-] .ng-bar-placeholder{-webkit-transform:rotate(180deg);transform:rotate(180deg)}ng-progress[dir='rtl+'] .ng-spinner-icon,ng-progress[dir=ltr-] .ng-spinner-icon{animation-direction:reverse}ng-progress[dir='rtl+'] .ng-meteor,ng-progress[dir=rtl-] .ng-meteor{-webkit-transform:rotate(-3deg);transform:rotate(-3deg)}ng-progress[dir='rtl+'][thick=true] .ng-meteor,ng-progress[dir=rtl-][thick=true] .ng-meteor{-webkit-transform:rotate(-4deg);transform:rotate(-4deg)}ng-progress[spinnerPosition=left] .ng-spinner{left:10px}ng-progress[spinnerPosition=right] .ng-spinner{right:10px}.ng-progress-bar{position:relative;z-index:999999;top:0;left:0;width:100%;zoom:1;opacity:0}.ng-progress-bar.-active{opacity:1;transition:none}.ng-bar-placeholder{position:absolute;height:2px;width:100%}.ng-bar{width:100%;height:100%;-webkit-transform:translate(-100%,0,0);transform:translate(-100%,0,0)}.ng-meteor{display:block;position:absolute;width:100px;height:100%;opacity:1}.ng-spinner{position:absolute;display:block;z-index:1031;top:10px}.ng-spinner-icon{width:18px;height:18px;box-sizing:border-box;-webkit-animation:.4s linear infinite spinner-animation;animation:.4s linear infinite spinner-animation;border:2px solid transparent;border-radius:50%}@-webkit-keyframes spinner-animation{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spinner-animation{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}\"]\n }]\n }], function () { return [{ type: NgProgress }]; }, { id: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], ease: [{\n type: Input\n }], color: [{\n type: Input\n }], speed: [{\n type: Input\n }], thick: [{\n type: Input\n }], fixed: [{\n type: Input\n }], meteor: [{\n type: Input\n }], spinner: [{\n type: Input\n }], trickleSpeed: [{\n type: Input\n }], debounceTime: [{\n type: Input\n }], trickleFunc: [{\n type: Input\n }], spinnerPosition: [{\n type: Input\n }], direction: [{\n type: Input\n }], started: [{\n type: Output\n }], completed: [{\n type: Output\n }] }); })();\n\n/**\r\n * @fileoverview added by tsickle\r\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\r\n */\r\nclass NgProgressModule {\r\n /**\r\n * @param {?=} config\r\n * @return {?}\r\n */\r\n static forRoot(config) {\r\n return {\r\n ngModule: NgProgressModule,\r\n providers: [\r\n { provide: CONFIG, useValue: config }\r\n ]\r\n };\r\n }\r\n}\nNgProgressModule.ɵfac = function NgProgressModule_Factory(t) { return new (t || NgProgressModule)(); };\nNgProgressModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgProgressModule });\nNgProgressModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgProgressModule, [{\n type: NgModule,\n args: [{\n declarations: [NgProgressComponent],\n exports: [NgProgressComponent],\n imports: [CommonModule]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgProgressModule, { declarations: function () { return [NgProgressComponent]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgProgressComponent]; } }); })();\n\n/**\r\n * @fileoverview added by tsickle\r\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\r\n */\n\n/**\r\n * @fileoverview added by tsickle\r\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\r\n */\n\nexport { NgProgressModule, NgProgressComponent, NgProgressRef, NgProgress, CONFIG };\n\n","import { operate } from '../util/lift';\nimport { noop } from '../util/noop';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nexport function debounce(durationSelector) {\n return operate((source, subscriber) => {\n let hasValue = false;\n let lastValue = null;\n let durationSubscriber = null;\n const emit = () => {\n durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe();\n durationSubscriber = null;\n if (hasValue) {\n hasValue = false;\n const value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n };\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe();\n hasValue = true;\n lastValue = value;\n durationSubscriber = createOperatorSubscriber(subscriber, emit, noop);\n innerFrom(durationSelector(value)).subscribe(durationSubscriber);\n }, () => {\n emit();\n subscriber.complete();\n }, undefined, () => {\n lastValue = durationSubscriber = null;\n }));\n });\n}\n","/* eslint-disable no-unused-vars */\n/* eslint-disable max-len */\n/* eslint-disable @typescript-eslint/no-var-requires */\n/* eslint-disable @typescript-eslint/no-require-imports */\n/* eslint-disable no-param-reassign */\n/* eslint-disable id-length */\nimport { Component, ComponentFactoryResolver, ComponentRef, HostListener, OnInit, ViewChild, ViewContainerRef } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport { Router, RoutesRecognized } from '@angular/router';\nimport { NgbDatepickerConfig, NgbModalConfig, NgbPopoverConfig, NgbTooltipConfig } from '@ng-bootstrap/ng-bootstrap';\nimport { NgSelectConfig } from '@ng-select/ng-select';\nimport { ToasterConfig, ToasterService } from 'angular2-toaster';\nimport jquery from 'jquery';\n\nimport { getLocaleFirstDayOfWeek } from '@angular/common';\nimport { FormatService } from 'src/app/_core/format.service';\nimport { GlobalEventsService } from 'src/app/_core/global-events.service';\nimport { SessionService } from 'src/app/_core/session.service';\nimport { SettingsService } from 'src/app/_core/settings/settings.service';\nimport { SignalRService } from 'src/app/_core/signal-r.service';\nimport { TranslationsService } from 'src/app/_core/translations.service';\nimport { NavComponent } from 'src/app/nav/nav.component';\n\ndeclare global {\n interface Window {\n Userlane: any;\n heap: any;\n }\n}\n\n@Component({\n selector: 'agr-root',\n templateUrl: './app.component.html'\n})\nexport class AppComponent implements OnInit {\n @ViewChild('nav', { read: ViewContainerRef, static: true }) nav: ViewContainerRef;\n navRef: ComponentRef;\n toasterConfig = new ToasterConfig({\n positionClass: 'toast-bottom-right',\n mouseoverTimerStop: true,\n animation: 'fade', // slideUp can brake e2e tests\n limit: 4,\n timeout: {\n error: 9000,\n success: 5000,\n info: 5000\n }\n });\n\n constructor(\n private componentFactoryResolver: ComponentFactoryResolver,\n private formatService: FormatService,\n private globalEventsService: GlobalEventsService,\n private ngbDatepickerConfig: NgbDatepickerConfig,\n private ngbModalConfig: NgbModalConfig,\n private ngbPopoverConfig: NgbPopoverConfig,\n private ngbTooltipConfig: NgbTooltipConfig,\n private ngSelectConfig: NgSelectConfig,\n private router: Router,\n private sessionService: SessionService,\n private settingsService: SettingsService,\n private signalRService: SignalRService,\n private titleService: Title,\n private toasterService: ToasterService,\n private viewContainerRef: ViewContainerRef\n ) {\n // tooltip\n this.ngbTooltipConfig.container = 'body';\n // modal\n this.ngbModalConfig.backdrop = 'static';\n // popover\n this.ngbPopoverConfig.container = 'body';\n // datepicker\n const today = new Date();\n const month = today.getMonth();\n this.ngbDatepickerConfig.startDate = { month: month + 1, year: today.getFullYear() };\n this.ngbDatepickerConfig.showWeekNumbers = true;\n this.ngbDatepickerConfig.firstDayOfWeek = getLocaleFirstDayOfWeek(this.formatService.getLocale());\n }\n\n ngOnInit(): void {\n // Remove loading indicator. See index.html\n jquery('#app-loading').remove();\n // SignalR\n this.signalRService.createConnection();\n window.onbeforeunload = () => {\n this.signalRService.stopConnection();\n };\n\n // NgSelect Config\n this.ngSelectConfig.notFoundText = TranslationsService.get('NO_ITEMS_FOUND');\n this.ngSelectConfig.appendTo = 'body';\n\n this.setNavBarEvents();\n this.setDocumentTitle();\n this.setDemoMode();\n\n this.initializeUserlane(); // third-party software\n this.initializeHeap(); // third-party software\n }\n\n @HostListener('window:offline', ['$event']) onOffline(): void {\n if (this.settingsService.onlineCheck()) {\n this.toasterService.pop('warning', TranslationsService.get('CONNECTION_LOST'), TranslationsService.get('CONNECTION_LOST_MSG'));\n }\n }\n\n private setNavBarEvents(): void {\n this.globalEventsService.showNavBarEvent$.subscribe((showNavbar) => {\n if (this.navRef) {\n this.navRef.destroy();\n this.viewContainerRef.clear();\n }\n if (showNavbar) {\n const factory = this.componentFactoryResolver.resolveComponentFactory(NavComponent);\n this.navRef = this.nav.createComponent(factory);\n this.navRef.changeDetectorRef.detectChanges();\n return;\n }\n });\n }\n\n /**\n * Used for demos to set fixed date.\n */\n private setDemoMode(): void {\n if (!this.settingsService.getValue('demo_mode')) {\n return;\n }\n const timemachine = require('timemachine');\n timemachine.config({\n dateString: this.settingsService.getValue('demo_mode_date'),\n tick: true\n });\n console.warn(`AGR: Demo mode is active. Current date set to ${new Date().toDateString()}`);\n }\n\n //////////////////////////////////////////\n\n /**\n * JS Snippet from Userlane\n * Adds a chatbox/helper on top of software. Responsible: Gunnar\n * https://www.userlane.com/\n */\n\n private initializeUserlane(): void {\n if (!this.settingsService.getValue('userlane_enabled')) {\n // Set a dummy userlane function so that other places where userlane is used do not error\n window.Userlane = () => 0;\n return;\n }\n this.loadUserlane(window, document, 'script', 'https://cdn.userlane.com/userlane.js', 'Userlane');\n // identify the user for Userlane\n const currentUser = this.sessionService.user;\n window.Userlane('identify', currentUser.id, {});\n // initialize Userlane with your Property ID\n window.Userlane('init', 'zr65v');\n }\n\n private loadUserlane(\n win: Window & typeof globalThis,\n doc: Document,\n type: string,\n path: string,\n name: string,\n el?: any,\n elCollection?: any\n ): void {\n win['UserlaneCommandObject'] = name;\n win[name] =\n win[name] ||\n function forUserlane(): void {\n (win[name].q = win[name].q || []).push(arguments);\n };\n el = doc.createElement(type);\n elCollection = doc.getElementsByTagName(type)[0];\n el.async = 1;\n el.src = path;\n elCollection.parentNode.insertBefore(el, elCollection);\n }\n\n //////////////////////////////////////////\n\n /**\n * JS Snippet from Heap\n * Adds analytics of how users are using the system. Responsible: Gunnar\n * https://heap.io/\n */\n\n // eslint-disable-next-line max-lines-per-function\n private initializeHeap(): void {\n window.heap = window.heap || [];\n // eslint-disable-next-line max-lines-per-function\n window.heap.load = function forHeap(e: any, t: any): void {\n window.heap.appid = e;\n window.heap.config = t = t || {};\n const heapScript = document.createElement('script');\n heapScript.type = 'text/javascript';\n heapScript.async = !0;\n heapScript.src = `https://cdn.heapanalytics.com/js/heap-${e}.js`;\n const a = document.getElementsByTagName('script')[0];\n a.parentNode.insertBefore(heapScript, a);\n for (\n let n = function (e: any): any {\n return function (): void {\n window.heap.push([e].concat(Array.prototype.slice.call(arguments, 0)));\n };\n },\n p = [\n 'addEventProperties',\n 'addUserProperties',\n 'clearEventProperties',\n 'identify',\n 'resetIdentity',\n 'removeEventProperty',\n 'setEventProperties',\n 'track',\n 'unsetEventProperty'\n ],\n o = 0;\n o < p.length;\n o += 1\n ) {\n window.heap[p[o]] = n(p[o]);\n }\n };\n window.heap.load('4145477862'); // appId\n }\n\n //////////////////////////////////////////\n\n /**\n * Dynamic titles are handled in components (e.g. in report details and workspaces)\n */\n private setDocumentTitle(): void {\n this.router.events.subscribe((route) => {\n if (!(route instanceof RoutesRecognized)) {\n return;\n }\n const title = this.titles[route.url] ? this.titles[route.url] : 'AGR';\n this.titleService.setTitle(title);\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/member-ordering\n private titles = {\n '/dashboard': TranslationsService.get('NAV_DASHBOARD'),\n '/items': TranslationsService.get('ITEMS'),\n '/orders': TranslationsService.get('ORDERS'),\n '/reports': TranslationsService.get('REPORTS'),\n '/erp-setup/welcome': TranslationsService.get('SETUP_WELCOME_NAME'),\n '/erp-setup/items': TranslationsService.get('SETUP_ITEMS_NAME'),\n '/erp-setup/vendors': TranslationsService.get('SETUP_VENDORS_NAME'),\n '/erp-setup/order-routes': TranslationsService.get('SETUP_ORDER_ROUTES_NAME'),\n '/erp-setup/lead-time': TranslationsService.get('SETUP_LEAD_TIME_NAME'),\n '/erp-setup/customers': TranslationsService.get('SETUP_CUSTOMERS_NAME'),\n '/erp-setup/run': TranslationsService.get('SETUP_RUN_NAME'),\n '/scheduler/counting': TranslationsService.get('NAV_COUNTING'),\n '/scheduler/scheduled-orders': TranslationsService.get('SCHEDULED_ORDERS'),\n '/scheduler/tasks': TranslationsService.get('TASKS'),\n '/scheduler/schedules': TranslationsService.get('SCHEDULES'),\n '/settings/translations': TranslationsService.get('TRANSLATIONS'),\n '/settings/user-management/roles': `${TranslationsService.get('NAV_USER_MANAGEMENT')} - ${TranslationsService.get('ROLES')}`,\n '/settings/user-management/users': `${TranslationsService.get('NAV_USER_MANAGEMENT')} - ${TranslationsService.get('USERS')}`,\n '/settings/view/forecast': `${TranslationsService.get('SETTINGS')} - ${TranslationsService.get('FORECAST')}`,\n '/settings/view/orders': `${TranslationsService.get('SETTINGS')} - ${TranslationsService.get('ORDERS')}`,\n '/settings/view/system': `${TranslationsService.get('SETTINGS')} - System`,\n '/translations': `${TranslationsService.get('TRANSLATIONS')}`,\n '/workspaces/list/all': TranslationsService.get('WORKSPACES'),\n '/workspaces/list/plans': TranslationsService.get('NAV_PLANS'),\n '/workspaces/list/rm': TranslationsService.get('NAV_RANGE_MANAGER'),\n '/workspaces/list/dm': TranslationsService.get('NAV_DEPARTMENT_MANAGER'),\n '/workspaces/list/om': TranslationsService.get('NAV_OPTION_MANAGER'),\n '/workspaces/list/lm': TranslationsService.get('NAV_LOCATION_MANAGER'),\n '/workspaces/list/ppm': TranslationsService.get('PURCHASE_PLAN_MANAGER'),\n '/workspaces/list/rplm': TranslationsService.get('REPLENISHMENT_MANAGER')\n };\n}\n","\n\n\n\n\n","/**\n * @license Angular v13.3.0\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport { ɵAnimationGroupPlayer, NoopAnimationPlayer, AUTO_STYLE, ɵPRE_STYLE, sequence, style } from '@angular/animations';\nimport * as i0 from '@angular/core';\nimport { ɵRuntimeError, Injectable } from '@angular/core';\n\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 NG_DEV_MODE$1 = typeof ngDevMode === 'undefined' || !!ngDevMode;\nconst LINE_START = '\\n - ';\nfunction invalidTimingValue(exp) {\n return new ɵRuntimeError(3000 /* INVALID_TIMING_VALUE */, NG_DEV_MODE$1 && `The provided timing value \"${exp}\" is invalid.`);\n}\nfunction negativeStepValue() {\n return new ɵRuntimeError(3100 /* NEGATIVE_STEP_VALUE */, NG_DEV_MODE$1 && 'Duration values below 0 are not allowed for this animation step.');\n}\nfunction negativeDelayValue() {\n return new ɵRuntimeError(3101 /* NEGATIVE_DELAY_VALUE */, NG_DEV_MODE$1 && 'Delay values below 0 are not allowed for this animation step.');\n}\nfunction invalidStyleParams(varName) {\n return new ɵRuntimeError(3001 /* INVALID_STYLE_PARAMS */, NG_DEV_MODE$1 &&\n `Unable to resolve the local animation param ${varName} in the given list of values`);\n}\nfunction invalidParamValue(varName) {\n return new ɵRuntimeError(3003 /* INVALID_PARAM_VALUE */, NG_DEV_MODE$1 && `Please provide a value for the animation param ${varName}`);\n}\nfunction invalidNodeType(nodeType) {\n return new ɵRuntimeError(3004 /* INVALID_NODE_TYPE */, NG_DEV_MODE$1 && `Unable to resolve animation metadata node #${nodeType}`);\n}\nfunction invalidCssUnitValue(userProvidedProperty, value) {\n return new ɵRuntimeError(3005 /* INVALID_CSS_UNIT_VALUE */, NG_DEV_MODE$1 && `Please provide a CSS unit value for ${userProvidedProperty}:${value}`);\n}\nfunction invalidTrigger() {\n return new ɵRuntimeError(3006 /* INVALID_TRIGGER */, NG_DEV_MODE$1 &&\n 'animation triggers cannot be prefixed with an `@` sign (e.g. trigger(\\'@foo\\', [...]))');\n}\nfunction invalidDefinition() {\n return new ɵRuntimeError(3007 /* INVALID_DEFINITION */, NG_DEV_MODE$1 && 'only state() and transition() definitions can sit inside of a trigger()');\n}\nfunction invalidState(metadataName, missingSubs) {\n return new ɵRuntimeError(3008 /* INVALID_STATE */, NG_DEV_MODE$1 &&\n `state(\"${metadataName}\", ...) must define default values for all the following style substitutions: ${missingSubs.join(', ')}`);\n}\nfunction invalidStyleValue(value) {\n return new ɵRuntimeError(3002 /* INVALID_STYLE_VALUE */, NG_DEV_MODE$1 && `The provided style string value ${value} is not allowed.`);\n}\nfunction invalidProperty(prop) {\n return new ɵRuntimeError(3009 /* INVALID_PROPERTY */, NG_DEV_MODE$1 &&\n `The provided animation property \"${prop}\" is not a supported CSS property for animations`);\n}\nfunction invalidParallelAnimation(prop, firstStart, firstEnd, secondStart, secondEnd) {\n return new ɵRuntimeError(3010 /* INVALID_PARALLEL_ANIMATION */, NG_DEV_MODE$1 &&\n `The CSS property \"${prop}\" that exists between the times of \"${firstStart}ms\" and \"${firstEnd}ms\" is also being animated in a parallel animation between the times of \"${secondStart}ms\" and \"${secondEnd}ms\"`);\n}\nfunction invalidKeyframes() {\n return new ɵRuntimeError(3011 /* INVALID_KEYFRAMES */, NG_DEV_MODE$1 && `keyframes() must be placed inside of a call to animate()`);\n}\nfunction invalidOffset() {\n return new ɵRuntimeError(3012 /* INVALID_OFFSET */, NG_DEV_MODE$1 && `Please ensure that all keyframe offsets are between 0 and 1`);\n}\nfunction keyframeOffsetsOutOfOrder() {\n return new ɵRuntimeError(3200 /* KEYFRAME_OFFSETS_OUT_OF_ORDER */, NG_DEV_MODE$1 && `Please ensure that all keyframe offsets are in order`);\n}\nfunction keyframesMissingOffsets() {\n return new ɵRuntimeError(3202 /* KEYFRAMES_MISSING_OFFSETS */, NG_DEV_MODE$1 && `Not all style() steps within the declared keyframes() contain offsets`);\n}\nfunction invalidStagger() {\n return new ɵRuntimeError(3013 /* INVALID_STAGGER */, NG_DEV_MODE$1 && `stagger() can only be used inside of query()`);\n}\nfunction invalidQuery(selector) {\n return new ɵRuntimeError(3014 /* INVALID_QUERY */, NG_DEV_MODE$1 &&\n `\\`query(\"${selector}\")\\` returned zero elements. (Use \\`query(\"${selector}\", { optional: true })\\` if you wish to allow this.)`);\n}\nfunction invalidExpression(expr) {\n return new ɵRuntimeError(3015 /* INVALID_EXPRESSION */, NG_DEV_MODE$1 && `The provided transition expression \"${expr}\" is not supported`);\n}\nfunction invalidTransitionAlias(alias) {\n return new ɵRuntimeError(3016 /* INVALID_TRANSITION_ALIAS */, NG_DEV_MODE$1 && `The transition alias value \"${alias}\" is not supported`);\n}\nfunction validationFailed(errors) {\n return new ɵRuntimeError(3500 /* VALIDATION_FAILED */, NG_DEV_MODE$1 && `animation validation failed:\\n${errors.map(err => err.message).join('\\n')}`);\n}\nfunction buildingFailed(errors) {\n return new ɵRuntimeError(3501 /* BUILDING_FAILED */, NG_DEV_MODE$1 && `animation building failed:\\n${errors.map(err => err.message).join('\\n')}`);\n}\nfunction triggerBuildFailed(name, errors) {\n return new ɵRuntimeError(3404 /* TRIGGER_BUILD_FAILED */, NG_DEV_MODE$1 &&\n `The animation trigger \"${name}\" has failed to build due to the following errors:\\n - ${errors.map(err => err.message).join('\\n - ')}`);\n}\nfunction animationFailed(errors) {\n return new ɵRuntimeError(3502 /* ANIMATION_FAILED */, NG_DEV_MODE$1 &&\n `Unable to animate due to the following errors:${LINE_START}${errors.map(err => err.message).join(LINE_START)}`);\n}\nfunction registerFailed(errors) {\n return new ɵRuntimeError(3503 /* REGISTRATION_FAILED */, NG_DEV_MODE$1 &&\n `Unable to build the animation due to the following errors: ${errors.map(err => err.message).join('\\n')}`);\n}\nfunction missingOrDestroyedAnimation() {\n return new ɵRuntimeError(3300 /* MISSING_OR_DESTROYED_ANIMATION */, NG_DEV_MODE$1 && 'The requested animation doesn\\'t exist or has already been destroyed');\n}\nfunction createAnimationFailed(errors) {\n return new ɵRuntimeError(3504 /* CREATE_ANIMATION_FAILED */, NG_DEV_MODE$1 &&\n `Unable to create the animation due to the following errors:${errors.map(err => err.message).join('\\n')}`);\n}\nfunction missingPlayer(id) {\n return new ɵRuntimeError(3301 /* MISSING_PLAYER */, NG_DEV_MODE$1 && `Unable to find the timeline player referenced by ${id}`);\n}\nfunction missingTrigger(phase, name) {\n return new ɵRuntimeError(3302 /* MISSING_TRIGGER */, NG_DEV_MODE$1 &&\n `Unable to listen on the animation trigger event \"${phase}\" because the animation trigger \"${name}\" doesn\\'t exist!`);\n}\nfunction missingEvent(name) {\n return new ɵRuntimeError(3303 /* MISSING_EVENT */, NG_DEV_MODE$1 &&\n `Unable to listen on the animation trigger \"${name}\" because the provided event is undefined!`);\n}\nfunction unsupportedTriggerEvent(phase, name) {\n return new ɵRuntimeError(3400 /* UNSUPPORTED_TRIGGER_EVENT */, NG_DEV_MODE$1 &&\n `The provided animation trigger event \"${phase}\" for the animation trigger \"${name}\" is not supported!`);\n}\nfunction unregisteredTrigger(name) {\n return new ɵRuntimeError(3401 /* UNREGISTERED_TRIGGER */, NG_DEV_MODE$1 && `The provided animation trigger \"${name}\" has not been registered!`);\n}\nfunction triggerTransitionsFailed(errors) {\n return new ɵRuntimeError(3402 /* TRIGGER_TRANSITIONS_FAILED */, NG_DEV_MODE$1 &&\n `Unable to process animations due to the following failed trigger transitions\\n ${errors.map(err => err.message).join('\\n')}`);\n}\nfunction triggerParsingFailed(name, errors) {\n return new ɵRuntimeError(3403 /* TRIGGER_PARSING_FAILED */, NG_DEV_MODE$1 &&\n `Animation parsing for the ${name} trigger have failed:${LINE_START}${errors.map(err => err.message).join(LINE_START)}`);\n}\nfunction transitionFailed(name, errors) {\n return new ɵRuntimeError(3505 /* TRANSITION_FAILED */, NG_DEV_MODE$1 &&\n `@${name} has failed due to:\\n ${errors.map(err => err.message).join('\\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 */\nfunction isBrowser() {\n return (typeof window !== 'undefined' && typeof window.document !== 'undefined');\n}\nfunction isNode() {\n // Checking only for `process` isn't enough to identify whether or not we're in a Node\n // environment, because Webpack by default will polyfill the `process`. While we can discern\n // that Webpack polyfilled it by looking at `process.browser`, it's very Webpack-specific and\n // might not be future-proof. Instead we look at the stringified version of `process` which\n // is `[object process]` in Node and `[object Object]` when polyfilled.\n return typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n}\nfunction optimizeGroupPlayer(players) {\n switch (players.length) {\n case 0:\n return new NoopAnimationPlayer();\n case 1:\n return players[0];\n default:\n return new ɵAnimationGroupPlayer(players);\n }\n}\nfunction normalizeKeyframes(driver, normalizer, element, keyframes, preStyles = {}, postStyles = {}) {\n const errors = [];\n const normalizedKeyframes = [];\n let previousOffset = -1;\n let previousKeyframe = null;\n keyframes.forEach(kf => {\n const offset = kf['offset'];\n const isSameOffset = offset == previousOffset;\n const normalizedKeyframe = (isSameOffset && previousKeyframe) || {};\n Object.keys(kf).forEach(prop => {\n let normalizedProp = prop;\n let normalizedValue = kf[prop];\n if (prop !== 'offset') {\n normalizedProp = normalizer.normalizePropertyName(normalizedProp, errors);\n switch (normalizedValue) {\n case ɵPRE_STYLE:\n normalizedValue = preStyles[prop];\n break;\n case AUTO_STYLE:\n normalizedValue = postStyles[prop];\n break;\n default:\n normalizedValue =\n normalizer.normalizeStyleValue(prop, normalizedProp, normalizedValue, errors);\n break;\n }\n }\n normalizedKeyframe[normalizedProp] = normalizedValue;\n });\n if (!isSameOffset) {\n normalizedKeyframes.push(normalizedKeyframe);\n }\n previousKeyframe = normalizedKeyframe;\n previousOffset = offset;\n });\n if (errors.length) {\n throw animationFailed(errors);\n }\n return normalizedKeyframes;\n}\nfunction listenOnPlayer(player, eventName, event, callback) {\n switch (eventName) {\n case 'start':\n player.onStart(() => callback(event && copyAnimationEvent(event, 'start', player)));\n break;\n case 'done':\n player.onDone(() => callback(event && copyAnimationEvent(event, 'done', player)));\n break;\n case 'destroy':\n player.onDestroy(() => callback(event && copyAnimationEvent(event, 'destroy', player)));\n break;\n }\n}\nfunction copyAnimationEvent(e, phaseName, player) {\n const totalTime = player.totalTime;\n const disabled = player.disabled ? true : false;\n const event = makeAnimationEvent(e.element, e.triggerName, e.fromState, e.toState, phaseName || e.phaseName, totalTime == undefined ? e.totalTime : totalTime, disabled);\n const data = e['_data'];\n if (data != null) {\n event['_data'] = data;\n }\n return event;\n}\nfunction makeAnimationEvent(element, triggerName, fromState, toState, phaseName = '', totalTime = 0, disabled) {\n return { element, triggerName, fromState, toState, phaseName, totalTime, disabled: !!disabled };\n}\nfunction getOrSetAsInMap(map, key, defaultValue) {\n let value;\n if (map instanceof Map) {\n value = map.get(key);\n if (!value) {\n map.set(key, value = defaultValue);\n }\n }\n else {\n value = map[key];\n if (!value) {\n value = map[key] = defaultValue;\n }\n }\n return value;\n}\nfunction parseTimelineCommand(command) {\n const separatorPos = command.indexOf(':');\n const id = command.substring(1, separatorPos);\n const action = command.substr(separatorPos + 1);\n return [id, action];\n}\nlet _contains = (elm1, elm2) => false;\nlet _query = (element, selector, multi) => {\n return [];\n};\nlet _documentElement = null;\nfunction getParentElement(element) {\n const parent = element.parentNode || element.host; // consider host to support shadow DOM\n if (parent === _documentElement) {\n return null;\n }\n return parent;\n}\n// Define utility methods for browsers and platform-server(domino) where Element\n// and utility methods exist.\nconst _isNode = isNode();\nif (_isNode || typeof Element !== 'undefined') {\n if (!isBrowser()) {\n _contains = (elm1, elm2) => elm1.contains(elm2);\n }\n else {\n // Read the document element in an IIFE that's been marked pure to avoid a top-level property\n // read that may prevent tree-shaking.\n _documentElement = /* @__PURE__ */ (() => document.documentElement)();\n _contains = (elm1, elm2) => {\n while (elm2) {\n if (elm2 === elm1) {\n return true;\n }\n elm2 = getParentElement(elm2);\n }\n return false;\n };\n }\n _query = (element, selector, multi) => {\n if (multi) {\n return Array.from(element.querySelectorAll(selector));\n }\n const elem = element.querySelector(selector);\n return elem ? [elem] : [];\n };\n}\nfunction containsVendorPrefix(prop) {\n // Webkit is the only real popular vendor prefix nowadays\n // cc: http://shouldiprefix.com/\n return prop.substring(1, 6) == 'ebkit'; // webkit or Webkit\n}\nlet _CACHED_BODY = null;\nlet _IS_WEBKIT = false;\nfunction validateStyleProperty(prop) {\n if (!_CACHED_BODY) {\n _CACHED_BODY = getBodyNode() || {};\n _IS_WEBKIT = _CACHED_BODY.style ? ('WebkitAppearance' in _CACHED_BODY.style) : false;\n }\n let result = true;\n if (_CACHED_BODY.style && !containsVendorPrefix(prop)) {\n result = prop in _CACHED_BODY.style;\n if (!result && _IS_WEBKIT) {\n const camelProp = 'Webkit' + prop.charAt(0).toUpperCase() + prop.substr(1);\n result = camelProp in _CACHED_BODY.style;\n }\n }\n return result;\n}\nfunction getBodyNode() {\n if (typeof document != 'undefined') {\n return document.body;\n }\n return null;\n}\nconst containsElement = _contains;\nconst invokeQuery = _query;\nfunction hypenatePropsObject(object) {\n const newObj = {};\n Object.keys(object).forEach(prop => {\n const newProp = prop.replace(/([a-z])([A-Z])/g, '$1-$2');\n newObj[newProp] = object[prop];\n });\n return newObj;\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 * @publicApi\n */\nclass NoopAnimationDriver {\n validateStyleProperty(prop) {\n return validateStyleProperty(prop);\n }\n matchesElement(_element, _selector) {\n // This method is deprecated and no longer in use so we return false.\n return false;\n }\n containsElement(elm1, elm2) {\n return containsElement(elm1, elm2);\n }\n getParentElement(element) {\n return getParentElement(element);\n }\n query(element, selector, multi) {\n return invokeQuery(element, selector, multi);\n }\n computeStyle(element, prop, defaultValue) {\n return defaultValue || '';\n }\n animate(element, keyframes, duration, delay, easing, previousPlayers = [], scrubberAccessRequested) {\n return new NoopAnimationPlayer(duration, delay);\n }\n}\nNoopAnimationDriver.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: NoopAnimationDriver, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNoopAnimationDriver.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: NoopAnimationDriver });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: NoopAnimationDriver, decorators: [{\n type: Injectable\n }] });\n/**\n * @publicApi\n */\nclass AnimationDriver {\n}\nAnimationDriver.NOOP = ( /* @__PURE__ */new NoopAnimationDriver());\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 ONE_SECOND = 1000;\nconst SUBSTITUTION_EXPR_START = '{{';\nconst SUBSTITUTION_EXPR_END = '}}';\nconst ENTER_CLASSNAME = 'ng-enter';\nconst LEAVE_CLASSNAME = 'ng-leave';\nconst NG_TRIGGER_CLASSNAME = 'ng-trigger';\nconst NG_TRIGGER_SELECTOR = '.ng-trigger';\nconst NG_ANIMATING_CLASSNAME = 'ng-animating';\nconst NG_ANIMATING_SELECTOR = '.ng-animating';\nfunction resolveTimingValue(value) {\n if (typeof value == 'number')\n return value;\n const matches = value.match(/^(-?[\\.\\d]+)(m?s)/);\n if (!matches || matches.length < 2)\n return 0;\n return _convertTimeValueToMS(parseFloat(matches[1]), matches[2]);\n}\nfunction _convertTimeValueToMS(value, unit) {\n switch (unit) {\n case 's':\n return value * ONE_SECOND;\n default: // ms or something else\n return value;\n }\n}\nfunction resolveTiming(timings, errors, allowNegativeValues) {\n return timings.hasOwnProperty('duration') ?\n timings :\n parseTimeExpression(timings, errors, allowNegativeValues);\n}\nfunction parseTimeExpression(exp, errors, allowNegativeValues) {\n const regex = /^(-?[\\.\\d]+)(m?s)(?:\\s+(-?[\\.\\d]+)(m?s))?(?:\\s+([-a-z]+(?:\\(.+?\\))?))?$/i;\n let duration;\n let delay = 0;\n let easing = '';\n if (typeof exp === 'string') {\n const matches = exp.match(regex);\n if (matches === null) {\n errors.push(invalidTimingValue(exp));\n return { duration: 0, delay: 0, easing: '' };\n }\n duration = _convertTimeValueToMS(parseFloat(matches[1]), matches[2]);\n const delayMatch = matches[3];\n if (delayMatch != null) {\n delay = _convertTimeValueToMS(parseFloat(delayMatch), matches[4]);\n }\n const easingVal = matches[5];\n if (easingVal) {\n easing = easingVal;\n }\n }\n else {\n duration = exp;\n }\n if (!allowNegativeValues) {\n let containsErrors = false;\n let startIndex = errors.length;\n if (duration < 0) {\n errors.push(negativeStepValue());\n containsErrors = true;\n }\n if (delay < 0) {\n errors.push(negativeDelayValue());\n containsErrors = true;\n }\n if (containsErrors) {\n errors.splice(startIndex, 0, invalidTimingValue(exp));\n }\n }\n return { duration, delay, easing };\n}\nfunction copyObj(obj, destination = {}) {\n Object.keys(obj).forEach(prop => {\n destination[prop] = obj[prop];\n });\n return destination;\n}\nfunction normalizeStyles(styles) {\n const normalizedStyles = {};\n if (Array.isArray(styles)) {\n styles.forEach(data => copyStyles(data, false, normalizedStyles));\n }\n else {\n copyStyles(styles, false, normalizedStyles);\n }\n return normalizedStyles;\n}\nfunction copyStyles(styles, readPrototype, destination = {}) {\n if (readPrototype) {\n // we make use of a for-in loop so that the\n // prototypically inherited properties are\n // revealed from the backFill map\n for (let prop in styles) {\n destination[prop] = styles[prop];\n }\n }\n else {\n copyObj(styles, destination);\n }\n return destination;\n}\nfunction getStyleAttributeString(element, key, value) {\n // Return the key-value pair string to be added to the style attribute for the\n // given CSS style key.\n if (value) {\n return key + ':' + value + ';';\n }\n else {\n return '';\n }\n}\nfunction writeStyleAttribute(element) {\n // Read the style property of the element and manually reflect it to the\n // style attribute. This is needed because Domino on platform-server doesn't\n // understand the full set of allowed CSS properties and doesn't reflect some\n // of them automatically.\n let styleAttrValue = '';\n for (let i = 0; i < element.style.length; i++) {\n const key = element.style.item(i);\n styleAttrValue += getStyleAttributeString(element, key, element.style.getPropertyValue(key));\n }\n for (const key in element.style) {\n // Skip internal Domino properties that don't need to be reflected.\n if (!element.style.hasOwnProperty(key) || key.startsWith('_')) {\n continue;\n }\n const dashKey = camelCaseToDashCase(key);\n styleAttrValue += getStyleAttributeString(element, dashKey, element.style[key]);\n }\n element.setAttribute('style', styleAttrValue);\n}\nfunction setStyles(element, styles, formerStyles) {\n if (element['style']) {\n Object.keys(styles).forEach(prop => {\n const camelProp = dashCaseToCamelCase(prop);\n if (formerStyles && !formerStyles.hasOwnProperty(prop)) {\n formerStyles[prop] = element.style[camelProp];\n }\n element.style[camelProp] = styles[prop];\n });\n // On the server set the 'style' attribute since it's not automatically reflected.\n if (isNode()) {\n writeStyleAttribute(element);\n }\n }\n}\nfunction eraseStyles(element, styles) {\n if (element['style']) {\n Object.keys(styles).forEach(prop => {\n const camelProp = dashCaseToCamelCase(prop);\n element.style[camelProp] = '';\n });\n // On the server set the 'style' attribute since it's not automatically reflected.\n if (isNode()) {\n writeStyleAttribute(element);\n }\n }\n}\nfunction normalizeAnimationEntry(steps) {\n if (Array.isArray(steps)) {\n if (steps.length == 1)\n return steps[0];\n return sequence(steps);\n }\n return steps;\n}\nfunction validateStyleParams(value, options, errors) {\n const params = options.params || {};\n const matches = extractStyleParams(value);\n if (matches.length) {\n matches.forEach(varName => {\n if (!params.hasOwnProperty(varName)) {\n errors.push(invalidStyleParams(varName));\n }\n });\n }\n}\nconst PARAM_REGEX = new RegExp(`${SUBSTITUTION_EXPR_START}\\\\s*(.+?)\\\\s*${SUBSTITUTION_EXPR_END}`, 'g');\nfunction extractStyleParams(value) {\n let params = [];\n if (typeof value === 'string') {\n let match;\n while (match = PARAM_REGEX.exec(value)) {\n params.push(match[1]);\n }\n PARAM_REGEX.lastIndex = 0;\n }\n return params;\n}\nfunction interpolateParams(value, params, errors) {\n const original = value.toString();\n const str = original.replace(PARAM_REGEX, (_, varName) => {\n let localVal = params[varName];\n // this means that the value was never overridden by the data passed in by the user\n if (!params.hasOwnProperty(varName)) {\n errors.push(invalidParamValue(varName));\n localVal = '';\n }\n return localVal.toString();\n });\n // we do this to assert that numeric values stay as they are\n return str == original ? value : str;\n}\nfunction iteratorToArray(iterator) {\n const arr = [];\n let item = iterator.next();\n while (!item.done) {\n arr.push(item.value);\n item = iterator.next();\n }\n return arr;\n}\nconst DASH_CASE_REGEXP = /-+([a-z0-9])/g;\nfunction dashCaseToCamelCase(input) {\n return input.replace(DASH_CASE_REGEXP, (...m) => m[1].toUpperCase());\n}\nfunction camelCaseToDashCase(input) {\n return input.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n}\nfunction allowPreviousPlayerStylesMerge(duration, delay) {\n return duration === 0 || delay === 0;\n}\nfunction balancePreviousStylesIntoKeyframes(element, keyframes, previousStyles) {\n const previousStyleProps = Object.keys(previousStyles);\n if (previousStyleProps.length && keyframes.length) {\n let startingKeyframe = keyframes[0];\n let missingStyleProps = [];\n previousStyleProps.forEach(prop => {\n if (!startingKeyframe.hasOwnProperty(prop)) {\n missingStyleProps.push(prop);\n }\n startingKeyframe[prop] = previousStyles[prop];\n });\n if (missingStyleProps.length) {\n // tslint:disable-next-line\n for (var i = 1; i < keyframes.length; i++) {\n let kf = keyframes[i];\n missingStyleProps.forEach(function (prop) {\n kf[prop] = computeStyle(element, prop);\n });\n }\n }\n }\n return keyframes;\n}\nfunction visitDslNode(visitor, node, context) {\n switch (node.type) {\n case 7 /* Trigger */:\n return visitor.visitTrigger(node, context);\n case 0 /* State */:\n return visitor.visitState(node, context);\n case 1 /* Transition */:\n return visitor.visitTransition(node, context);\n case 2 /* Sequence */:\n return visitor.visitSequence(node, context);\n case 3 /* Group */:\n return visitor.visitGroup(node, context);\n case 4 /* Animate */:\n return visitor.visitAnimate(node, context);\n case 5 /* Keyframes */:\n return visitor.visitKeyframes(node, context);\n case 6 /* Style */:\n return visitor.visitStyle(node, context);\n case 8 /* Reference */:\n return visitor.visitReference(node, context);\n case 9 /* AnimateChild */:\n return visitor.visitAnimateChild(node, context);\n case 10 /* AnimateRef */:\n return visitor.visitAnimateRef(node, context);\n case 11 /* Query */:\n return visitor.visitQuery(node, context);\n case 12 /* Stagger */:\n return visitor.visitStagger(node, context);\n default:\n throw invalidNodeType(node.type);\n }\n}\nfunction computeStyle(element, prop) {\n return window.getComputedStyle(element)[prop];\n}\n\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 NG_DEV_MODE = typeof ngDevMode === 'undefined' || !!ngDevMode;\nfunction createListOfWarnings(warnings) {\n const LINE_START = '\\n - ';\n return `${LINE_START}${warnings.filter(Boolean).map(warning => warning).join(LINE_START)}`;\n}\nfunction warnValidation(warnings) {\n NG_DEV_MODE && console.warn(`animation validation warnings:${createListOfWarnings(warnings)}`);\n}\nfunction warnTriggerBuild(name, warnings) {\n NG_DEV_MODE &&\n console.warn(`The animation trigger \"${name}\" has built with the following warnings:${createListOfWarnings(warnings)}`);\n}\nfunction warnRegister(warnings) {\n NG_DEV_MODE &&\n console.warn(`Animation built with the following warnings:${createListOfWarnings(warnings)}`);\n}\nfunction triggerParsingWarnings(name, warnings) {\n NG_DEV_MODE &&\n console.warn(`Animation parsing for the ${name} trigger presents the following warnings:${createListOfWarnings(warnings)}`);\n}\nfunction pushUnrecognizedPropertiesWarning(warnings, props) {\n if (ngDevMode && props.length) {\n warnings.push(`The provided CSS properties are not recognized properties supported for animations: ${props.join(', ')}`);\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 ANY_STATE = '*';\nfunction parseTransitionExpr(transitionValue, errors) {\n const expressions = [];\n if (typeof transitionValue == 'string') {\n transitionValue.split(/\\s*,\\s*/).forEach(str => parseInnerTransitionStr(str, expressions, errors));\n }\n else {\n expressions.push(transitionValue);\n }\n return expressions;\n}\nfunction parseInnerTransitionStr(eventStr, expressions, errors) {\n if (eventStr[0] == ':') {\n const result = parseAnimationAlias(eventStr, errors);\n if (typeof result == 'function') {\n expressions.push(result);\n return;\n }\n eventStr = result;\n }\n const match = eventStr.match(/^(\\*|[-\\w]+)\\s*()\\s*(\\*|[-\\w]+)$/);\n if (match == null || match.length < 4) {\n errors.push(invalidExpression(eventStr));\n return expressions;\n }\n const fromState = match[1];\n const separator = match[2];\n const toState = match[3];\n expressions.push(makeLambdaFromStates(fromState, toState));\n const isFullAnyStateExpr = fromState == ANY_STATE && toState == ANY_STATE;\n if (separator[0] == '<' && !isFullAnyStateExpr) {\n expressions.push(makeLambdaFromStates(toState, fromState));\n }\n}\nfunction parseAnimationAlias(alias, errors) {\n switch (alias) {\n case ':enter':\n return 'void => *';\n case ':leave':\n return '* => void';\n case ':increment':\n return (fromState, toState) => parseFloat(toState) > parseFloat(fromState);\n case ':decrement':\n return (fromState, toState) => parseFloat(toState) < parseFloat(fromState);\n default:\n errors.push(invalidTransitionAlias(alias));\n return '* => *';\n }\n}\n// DO NOT REFACTOR ... keep the follow set instantiations\n// with the values intact (closure compiler for some reason\n// removes follow-up lines that add the values outside of\n// the constructor...\nconst TRUE_BOOLEAN_VALUES = new Set(['true', '1']);\nconst FALSE_BOOLEAN_VALUES = new Set(['false', '0']);\nfunction makeLambdaFromStates(lhs, rhs) {\n const LHS_MATCH_BOOLEAN = TRUE_BOOLEAN_VALUES.has(lhs) || FALSE_BOOLEAN_VALUES.has(lhs);\n const RHS_MATCH_BOOLEAN = TRUE_BOOLEAN_VALUES.has(rhs) || FALSE_BOOLEAN_VALUES.has(rhs);\n return (fromState, toState) => {\n let lhsMatch = lhs == ANY_STATE || lhs == fromState;\n let rhsMatch = rhs == ANY_STATE || rhs == toState;\n if (!lhsMatch && LHS_MATCH_BOOLEAN && typeof fromState === 'boolean') {\n lhsMatch = fromState ? TRUE_BOOLEAN_VALUES.has(lhs) : FALSE_BOOLEAN_VALUES.has(lhs);\n }\n if (!rhsMatch && RHS_MATCH_BOOLEAN && typeof toState === 'boolean') {\n rhsMatch = toState ? TRUE_BOOLEAN_VALUES.has(rhs) : FALSE_BOOLEAN_VALUES.has(rhs);\n }\n return lhsMatch && rhsMatch;\n };\n}\n\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 SELF_TOKEN = ':self';\nconst SELF_TOKEN_REGEX = new RegExp(`\\s*${SELF_TOKEN}\\s*,?`, 'g');\n/*\n * [Validation]\n * The visitor code below will traverse the animation AST generated by the animation verb functions\n * (the output is a tree of objects) and attempt to perform a series of validations on the data. The\n * following corner-cases will be validated:\n *\n * 1. Overlap of animations\n * Given that a CSS property cannot be animated in more than one place at the same time, it's\n * important that this behavior is detected and validated. The way in which this occurs is that\n * each time a style property is examined, a string-map containing the property will be updated with\n * the start and end times for when the property is used within an animation step.\n *\n * If there are two or more parallel animations that are currently running (these are invoked by the\n * group()) on the same element then the validator will throw an error. Since the start/end timing\n * values are collected for each property then if the current animation step is animating the same\n * property and its timing values fall anywhere into the window of time that the property is\n * currently being animated within then this is what causes an error.\n *\n * 2. Timing values\n * The validator will validate to see if a timing value of `duration delay easing` or\n * `durationNumber` is valid or not.\n *\n * (note that upon validation the code below will replace the timing data with an object containing\n * {duration,delay,easing}.\n *\n * 3. Offset Validation\n * Each of the style() calls are allowed to have an offset value when placed inside of keyframes().\n * Offsets within keyframes() are considered valid when:\n *\n * - No offsets are used at all\n * - Each style() entry contains an offset value\n * - Each offset is between 0 and 1\n * - Each offset is greater to or equal than the previous one\n *\n * Otherwise an error will be thrown.\n */\nfunction buildAnimationAst(driver, metadata, errors, warnings) {\n return new AnimationAstBuilderVisitor(driver).build(metadata, errors, warnings);\n}\nconst ROOT_SELECTOR = '';\nclass AnimationAstBuilderVisitor {\n constructor(_driver) {\n this._driver = _driver;\n }\n build(metadata, errors, warnings) {\n const context = new AnimationAstBuilderContext(errors);\n this._resetContextStyleTimingState(context);\n const ast = visitDslNode(this, normalizeAnimationEntry(metadata), context);\n if (context.unsupportedCSSPropertiesFound.size) {\n pushUnrecognizedPropertiesWarning(warnings, [...context.unsupportedCSSPropertiesFound.keys()]);\n }\n return ast;\n }\n _resetContextStyleTimingState(context) {\n context.currentQuerySelector = ROOT_SELECTOR;\n context.collectedStyles = {};\n context.collectedStyles[ROOT_SELECTOR] = {};\n context.currentTime = 0;\n }\n visitTrigger(metadata, context) {\n let queryCount = context.queryCount = 0;\n let depCount = context.depCount = 0;\n const states = [];\n const transitions = [];\n if (metadata.name.charAt(0) == '@') {\n context.errors.push(invalidTrigger());\n }\n metadata.definitions.forEach(def => {\n this._resetContextStyleTimingState(context);\n if (def.type == 0 /* State */) {\n const stateDef = def;\n const name = stateDef.name;\n name.toString().split(/\\s*,\\s*/).forEach(n => {\n stateDef.name = n;\n states.push(this.visitState(stateDef, context));\n });\n stateDef.name = name;\n }\n else if (def.type == 1 /* Transition */) {\n const transition = this.visitTransition(def, context);\n queryCount += transition.queryCount;\n depCount += transition.depCount;\n transitions.push(transition);\n }\n else {\n context.errors.push(invalidDefinition());\n }\n });\n return {\n type: 7 /* Trigger */,\n name: metadata.name,\n states,\n transitions,\n queryCount,\n depCount,\n options: null\n };\n }\n visitState(metadata, context) {\n const styleAst = this.visitStyle(metadata.styles, context);\n const astParams = (metadata.options && metadata.options.params) || null;\n if (styleAst.containsDynamicStyles) {\n const missingSubs = new Set();\n const params = astParams || {};\n styleAst.styles.forEach(value => {\n if (isObject(value)) {\n const stylesObj = value;\n Object.keys(stylesObj).forEach(prop => {\n extractStyleParams(stylesObj[prop]).forEach(sub => {\n if (!params.hasOwnProperty(sub)) {\n missingSubs.add(sub);\n }\n });\n });\n }\n });\n if (missingSubs.size) {\n const missingSubsArr = iteratorToArray(missingSubs.values());\n context.errors.push(invalidState(metadata.name, missingSubsArr));\n }\n }\n return {\n type: 0 /* State */,\n name: metadata.name,\n style: styleAst,\n options: astParams ? { params: astParams } : null\n };\n }\n visitTransition(metadata, context) {\n context.queryCount = 0;\n context.depCount = 0;\n const animation = visitDslNode(this, normalizeAnimationEntry(metadata.animation), context);\n const matchers = parseTransitionExpr(metadata.expr, context.errors);\n return {\n type: 1 /* Transition */,\n matchers,\n animation,\n queryCount: context.queryCount,\n depCount: context.depCount,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitSequence(metadata, context) {\n return {\n type: 2 /* Sequence */,\n steps: metadata.steps.map(s => visitDslNode(this, s, context)),\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitGroup(metadata, context) {\n const currentTime = context.currentTime;\n let furthestTime = 0;\n const steps = metadata.steps.map(step => {\n context.currentTime = currentTime;\n const innerAst = visitDslNode(this, step, context);\n furthestTime = Math.max(furthestTime, context.currentTime);\n return innerAst;\n });\n context.currentTime = furthestTime;\n return {\n type: 3 /* Group */,\n steps,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitAnimate(metadata, context) {\n const timingAst = constructTimingAst(metadata.timings, context.errors);\n context.currentAnimateTimings = timingAst;\n let styleAst;\n let styleMetadata = metadata.styles ? metadata.styles : style({});\n if (styleMetadata.type == 5 /* Keyframes */) {\n styleAst = this.visitKeyframes(styleMetadata, context);\n }\n else {\n let styleMetadata = metadata.styles;\n let isEmpty = false;\n if (!styleMetadata) {\n isEmpty = true;\n const newStyleData = {};\n if (timingAst.easing) {\n newStyleData['easing'] = timingAst.easing;\n }\n styleMetadata = style(newStyleData);\n }\n context.currentTime += timingAst.duration + timingAst.delay;\n const _styleAst = this.visitStyle(styleMetadata, context);\n _styleAst.isEmptyStep = isEmpty;\n styleAst = _styleAst;\n }\n context.currentAnimateTimings = null;\n return {\n type: 4 /* Animate */,\n timings: timingAst,\n style: styleAst,\n options: null\n };\n }\n visitStyle(metadata, context) {\n const ast = this._makeStyleAst(metadata, context);\n this._validateStyleAst(ast, context);\n return ast;\n }\n _makeStyleAst(metadata, context) {\n const styles = [];\n if (Array.isArray(metadata.styles)) {\n metadata.styles.forEach(styleTuple => {\n if (typeof styleTuple == 'string') {\n if (styleTuple == AUTO_STYLE) {\n styles.push(styleTuple);\n }\n else {\n context.errors.push(invalidStyleValue(styleTuple));\n }\n }\n else {\n styles.push(styleTuple);\n }\n });\n }\n else {\n styles.push(metadata.styles);\n }\n let containsDynamicStyles = false;\n let collectedEasing = null;\n styles.forEach(styleData => {\n if (isObject(styleData)) {\n const styleMap = styleData;\n const easing = styleMap['easing'];\n if (easing) {\n collectedEasing = easing;\n delete styleMap['easing'];\n }\n if (!containsDynamicStyles) {\n for (let prop in styleMap) {\n const value = styleMap[prop];\n if (value.toString().indexOf(SUBSTITUTION_EXPR_START) >= 0) {\n containsDynamicStyles = true;\n break;\n }\n }\n }\n }\n });\n return {\n type: 6 /* Style */,\n styles,\n easing: collectedEasing,\n offset: metadata.offset,\n containsDynamicStyles,\n options: null\n };\n }\n _validateStyleAst(ast, context) {\n const timings = context.currentAnimateTimings;\n let endTime = context.currentTime;\n let startTime = context.currentTime;\n if (timings && startTime > 0) {\n startTime -= timings.duration + timings.delay;\n }\n ast.styles.forEach(tuple => {\n if (typeof tuple == 'string')\n return;\n Object.keys(tuple).forEach(prop => {\n if (!this._driver.validateStyleProperty(prop)) {\n delete tuple[prop];\n context.unsupportedCSSPropertiesFound.add(prop);\n return;\n }\n const collectedStyles = context.collectedStyles[context.currentQuerySelector];\n const collectedEntry = collectedStyles[prop];\n let updateCollectedStyle = true;\n if (collectedEntry) {\n if (startTime != endTime && startTime >= collectedEntry.startTime &&\n endTime <= collectedEntry.endTime) {\n context.errors.push(invalidParallelAnimation(prop, collectedEntry.startTime, collectedEntry.endTime, startTime, endTime));\n updateCollectedStyle = false;\n }\n // we always choose the smaller start time value since we\n // want to have a record of the entire animation window where\n // the style property is being animated in between\n startTime = collectedEntry.startTime;\n }\n if (updateCollectedStyle) {\n collectedStyles[prop] = { startTime, endTime };\n }\n if (context.options) {\n validateStyleParams(tuple[prop], context.options, context.errors);\n }\n });\n });\n }\n visitKeyframes(metadata, context) {\n const ast = { type: 5 /* Keyframes */, styles: [], options: null };\n if (!context.currentAnimateTimings) {\n context.errors.push(invalidKeyframes());\n return ast;\n }\n const MAX_KEYFRAME_OFFSET = 1;\n let totalKeyframesWithOffsets = 0;\n const offsets = [];\n let offsetsOutOfOrder = false;\n let keyframesOutOfRange = false;\n let previousOffset = 0;\n const keyframes = metadata.steps.map(styles => {\n const style = this._makeStyleAst(styles, context);\n let offsetVal = style.offset != null ? style.offset : consumeOffset(style.styles);\n let offset = 0;\n if (offsetVal != null) {\n totalKeyframesWithOffsets++;\n offset = style.offset = offsetVal;\n }\n keyframesOutOfRange = keyframesOutOfRange || offset < 0 || offset > 1;\n offsetsOutOfOrder = offsetsOutOfOrder || offset < previousOffset;\n previousOffset = offset;\n offsets.push(offset);\n return style;\n });\n if (keyframesOutOfRange) {\n context.errors.push(invalidOffset());\n }\n if (offsetsOutOfOrder) {\n context.errors.push(keyframeOffsetsOutOfOrder());\n }\n const length = metadata.steps.length;\n let generatedOffset = 0;\n if (totalKeyframesWithOffsets > 0 && totalKeyframesWithOffsets < length) {\n context.errors.push(keyframesMissingOffsets());\n }\n else if (totalKeyframesWithOffsets == 0) {\n generatedOffset = MAX_KEYFRAME_OFFSET / (length - 1);\n }\n const limit = length - 1;\n const currentTime = context.currentTime;\n const currentAnimateTimings = context.currentAnimateTimings;\n const animateDuration = currentAnimateTimings.duration;\n keyframes.forEach((kf, i) => {\n const offset = generatedOffset > 0 ? (i == limit ? 1 : (generatedOffset * i)) : offsets[i];\n const durationUpToThisFrame = offset * animateDuration;\n context.currentTime = currentTime + currentAnimateTimings.delay + durationUpToThisFrame;\n currentAnimateTimings.duration = durationUpToThisFrame;\n this._validateStyleAst(kf, context);\n kf.offset = offset;\n ast.styles.push(kf);\n });\n return ast;\n }\n visitReference(metadata, context) {\n return {\n type: 8 /* Reference */,\n animation: visitDslNode(this, normalizeAnimationEntry(metadata.animation), context),\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitAnimateChild(metadata, context) {\n context.depCount++;\n return {\n type: 9 /* AnimateChild */,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitAnimateRef(metadata, context) {\n return {\n type: 10 /* AnimateRef */,\n animation: this.visitReference(metadata.animation, context),\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitQuery(metadata, context) {\n const parentSelector = context.currentQuerySelector;\n const options = (metadata.options || {});\n context.queryCount++;\n context.currentQuery = metadata;\n const [selector, includeSelf] = normalizeSelector(metadata.selector);\n context.currentQuerySelector =\n parentSelector.length ? (parentSelector + ' ' + selector) : selector;\n getOrSetAsInMap(context.collectedStyles, context.currentQuerySelector, {});\n const animation = visitDslNode(this, normalizeAnimationEntry(metadata.animation), context);\n context.currentQuery = null;\n context.currentQuerySelector = parentSelector;\n return {\n type: 11 /* Query */,\n selector,\n limit: options.limit || 0,\n optional: !!options.optional,\n includeSelf,\n animation,\n originalSelector: metadata.selector,\n options: normalizeAnimationOptions(metadata.options)\n };\n }\n visitStagger(metadata, context) {\n if (!context.currentQuery) {\n context.errors.push(invalidStagger());\n }\n const timings = metadata.timings === 'full' ?\n { duration: 0, delay: 0, easing: 'full' } :\n resolveTiming(metadata.timings, context.errors, true);\n return {\n type: 12 /* Stagger */,\n animation: visitDslNode(this, normalizeAnimationEntry(metadata.animation), context),\n timings,\n options: null\n };\n }\n}\nfunction normalizeSelector(selector) {\n const hasAmpersand = selector.split(/\\s*,\\s*/).find(token => token == SELF_TOKEN) ? true : false;\n if (hasAmpersand) {\n selector = selector.replace(SELF_TOKEN_REGEX, '');\n }\n // Note: the :enter and :leave aren't normalized here since those\n // selectors are filled in at runtime during timeline building\n selector = selector.replace(/@\\*/g, NG_TRIGGER_SELECTOR)\n .replace(/@\\w+/g, match => NG_TRIGGER_SELECTOR + '-' + match.substr(1))\n .replace(/:animating/g, NG_ANIMATING_SELECTOR);\n return [selector, hasAmpersand];\n}\nfunction normalizeParams(obj) {\n return obj ? copyObj(obj) : null;\n}\nclass AnimationAstBuilderContext {\n constructor(errors) {\n this.errors = errors;\n this.queryCount = 0;\n this.depCount = 0;\n this.currentTransition = null;\n this.currentQuery = null;\n this.currentQuerySelector = null;\n this.currentAnimateTimings = null;\n this.currentTime = 0;\n this.collectedStyles = {};\n this.options = null;\n this.unsupportedCSSPropertiesFound = new Set();\n }\n}\nfunction consumeOffset(styles) {\n if (typeof styles == 'string')\n return null;\n let offset = null;\n if (Array.isArray(styles)) {\n styles.forEach(styleTuple => {\n if (isObject(styleTuple) && styleTuple.hasOwnProperty('offset')) {\n const obj = styleTuple;\n offset = parseFloat(obj['offset']);\n delete obj['offset'];\n }\n });\n }\n else if (isObject(styles) && styles.hasOwnProperty('offset')) {\n const obj = styles;\n offset = parseFloat(obj['offset']);\n delete obj['offset'];\n }\n return offset;\n}\nfunction isObject(value) {\n return !Array.isArray(value) && typeof value == 'object';\n}\nfunction constructTimingAst(value, errors) {\n let timings = null;\n if (value.hasOwnProperty('duration')) {\n timings = value;\n }\n else if (typeof value == 'number') {\n const duration = resolveTiming(value, errors).duration;\n return makeTimingAst(duration, 0, '');\n }\n const strValue = value;\n const isDynamic = strValue.split(/\\s+/).some(v => v.charAt(0) == '{' && v.charAt(1) == '{');\n if (isDynamic) {\n const ast = makeTimingAst(0, 0, '');\n ast.dynamic = true;\n ast.strValue = strValue;\n return ast;\n }\n timings = timings || resolveTiming(strValue, errors);\n return makeTimingAst(timings.duration, timings.delay, timings.easing);\n}\nfunction normalizeAnimationOptions(options) {\n if (options) {\n options = copyObj(options);\n if (options['params']) {\n options['params'] = normalizeParams(options['params']);\n }\n }\n else {\n options = {};\n }\n return options;\n}\nfunction makeTimingAst(duration, delay, easing) {\n return { duration, delay, easing };\n}\n\nfunction createTimelineInstruction(element, keyframes, preStyleProps, postStyleProps, duration, delay, easing = null, subTimeline = false) {\n return {\n type: 1 /* TimelineAnimation */,\n element,\n keyframes,\n preStyleProps,\n postStyleProps,\n duration,\n delay,\n totalTime: duration + delay,\n easing,\n subTimeline\n };\n}\n\nclass ElementInstructionMap {\n constructor() {\n this._map = new Map();\n }\n get(element) {\n return this._map.get(element) || [];\n }\n append(element, instructions) {\n let existingInstructions = this._map.get(element);\n if (!existingInstructions) {\n this._map.set(element, existingInstructions = []);\n }\n existingInstructions.push(...instructions);\n }\n has(element) {\n return this._map.has(element);\n }\n clear() {\n this._map.clear();\n }\n}\n\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 ONE_FRAME_IN_MILLISECONDS = 1;\nconst ENTER_TOKEN = ':enter';\nconst ENTER_TOKEN_REGEX = new RegExp(ENTER_TOKEN, 'g');\nconst LEAVE_TOKEN = ':leave';\nconst LEAVE_TOKEN_REGEX = new RegExp(LEAVE_TOKEN, 'g');\n/*\n * The code within this file aims to generate web-animations-compatible keyframes from Angular's\n * animation DSL code.\n *\n * The code below will be converted from:\n *\n * ```\n * sequence([\n * style({ opacity: 0 }),\n * animate(1000, style({ opacity: 0 }))\n * ])\n * ```\n *\n * To:\n * ```\n * keyframes = [{ opacity: 0, offset: 0 }, { opacity: 1, offset: 1 }]\n * duration = 1000\n * delay = 0\n * easing = ''\n * ```\n *\n * For this operation to cover the combination of animation verbs (style, animate, group, etc...) a\n * combination of prototypical inheritance, AST traversal and merge-sort-like algorithms are used.\n *\n * [AST Traversal]\n * Each of the animation verbs, when executed, will return an string-map object representing what\n * type of action it is (style, animate, group, etc...) and the data associated with it. This means\n * that when functional composition mix of these functions is evaluated (like in the example above)\n * then it will end up producing a tree of objects representing the animation itself.\n *\n * When this animation object tree is processed by the visitor code below it will visit each of the\n * verb statements within the visitor. And during each visit it will build the context of the\n * animation keyframes by interacting with the `TimelineBuilder`.\n *\n * [TimelineBuilder]\n * This class is responsible for tracking the styles and building a series of keyframe objects for a\n * timeline between a start and end time. The builder starts off with an initial timeline and each\n * time the AST comes across a `group()`, `keyframes()` or a combination of the two within a\n * `sequence()` then it will generate a sub timeline for each step as well as a new one after\n * they are complete.\n *\n * As the AST is traversed, the timing state on each of the timelines will be incremented. If a sub\n * timeline was created (based on one of the cases above) then the parent timeline will attempt to\n * merge the styles used within the sub timelines into itself (only with group() this will happen).\n * This happens with a merge operation (much like how the merge works in mergeSort) and it will only\n * copy the most recently used styles from the sub timelines into the parent timeline. This ensures\n * that if the styles are used later on in another phase of the animation then they will be the most\n * up-to-date values.\n *\n * [How Missing Styles Are Updated]\n * Each timeline has a `backFill` property which is responsible for filling in new styles into\n * already processed keyframes if a new style shows up later within the animation sequence.\n *\n * ```\n * sequence([\n * style({ width: 0 }),\n * animate(1000, style({ width: 100 })),\n * animate(1000, style({ width: 200 })),\n * animate(1000, style({ width: 300 }))\n * animate(1000, style({ width: 400, height: 400 })) // notice how `height` doesn't exist anywhere\n * else\n * ])\n * ```\n *\n * What is happening here is that the `height` value is added later in the sequence, but is missing\n * from all previous animation steps. Therefore when a keyframe is created it would also be missing\n * from all previous keyframes up until where it is first used. For the timeline keyframe generation\n * to properly fill in the style it will place the previous value (the value from the parent\n * timeline) or a default value of `*` into the backFill object. Given that each of the keyframe\n * styles is an object that prototypically inherits from the backFill object, this means that if a\n * value is added into the backFill then it will automatically propagate any missing values to all\n * keyframes. Therefore the missing `height` value will be properly filled into the already\n * processed keyframes.\n *\n * When a sub-timeline is created it will have its own backFill property. This is done so that\n * styles present within the sub-timeline do not accidentally seep into the previous/future timeline\n * keyframes\n *\n * (For prototypically-inherited contents to be detected a `for(i in obj)` loop must be used.)\n *\n * [Validation]\n * The code in this file is not responsible for validation. That functionality happens with within\n * the `AnimationValidatorVisitor` code.\n */\nfunction buildAnimationTimelines(driver, rootElement, ast, enterClassName, leaveClassName, startingStyles = {}, finalStyles = {}, options, subInstructions, errors = []) {\n return new AnimationTimelineBuilderVisitor().buildKeyframes(driver, rootElement, ast, enterClassName, leaveClassName, startingStyles, finalStyles, options, subInstructions, errors);\n}\nclass AnimationTimelineBuilderVisitor {\n buildKeyframes(driver, rootElement, ast, enterClassName, leaveClassName, startingStyles, finalStyles, options, subInstructions, errors = []) {\n subInstructions = subInstructions || new ElementInstructionMap();\n const context = new AnimationTimelineContext(driver, rootElement, subInstructions, enterClassName, leaveClassName, errors, []);\n context.options = options;\n context.currentTimeline.setStyles([startingStyles], null, context.errors, options);\n visitDslNode(this, ast, context);\n // this checks to see if an actual animation happened\n const timelines = context.timelines.filter(timeline => timeline.containsAnimation());\n if (Object.keys(finalStyles).length) {\n // note: we just want to apply the final styles for the rootElement, so we do not\n // just apply the styles to the last timeline but the last timeline which\n // element is the root one (basically `*`-styles are replaced with the actual\n // state style values only for the root element)\n let lastRootTimeline;\n for (let i = timelines.length - 1; i >= 0; i--) {\n const timeline = timelines[i];\n if (timeline.element === rootElement) {\n lastRootTimeline = timeline;\n break;\n }\n }\n if (lastRootTimeline && !lastRootTimeline.allowOnlyTimelineStyles()) {\n lastRootTimeline.setStyles([finalStyles], null, context.errors, options);\n }\n }\n return timelines.length ? timelines.map(timeline => timeline.buildKeyframes()) :\n [createTimelineInstruction(rootElement, [], [], [], 0, 0, '', false)];\n }\n visitTrigger(ast, context) {\n // these values are not visited in this AST\n }\n visitState(ast, context) {\n // these values are not visited in this AST\n }\n visitTransition(ast, context) {\n // these values are not visited in this AST\n }\n visitAnimateChild(ast, context) {\n const elementInstructions = context.subInstructions.get(context.element);\n if (elementInstructions) {\n const innerContext = context.createSubContext(ast.options);\n const startTime = context.currentTimeline.currentTime;\n const endTime = this._visitSubInstructions(elementInstructions, innerContext, innerContext.options);\n if (startTime != endTime) {\n // we do this on the upper context because we created a sub context for\n // the sub child animations\n context.transformIntoNewTimeline(endTime);\n }\n }\n context.previousNode = ast;\n }\n visitAnimateRef(ast, context) {\n const innerContext = context.createSubContext(ast.options);\n innerContext.transformIntoNewTimeline();\n this.visitReference(ast.animation, innerContext);\n context.transformIntoNewTimeline(innerContext.currentTimeline.currentTime);\n context.previousNode = ast;\n }\n _visitSubInstructions(instructions, context, options) {\n const startTime = context.currentTimeline.currentTime;\n let furthestTime = startTime;\n // this is a special-case for when a user wants to skip a sub\n // animation from being fired entirely.\n const duration = options.duration != null ? resolveTimingValue(options.duration) : null;\n const delay = options.delay != null ? resolveTimingValue(options.delay) : null;\n if (duration !== 0) {\n instructions.forEach(instruction => {\n const instructionTimings = context.appendInstructionToTimeline(instruction, duration, delay);\n furthestTime =\n Math.max(furthestTime, instructionTimings.duration + instructionTimings.delay);\n });\n }\n return furthestTime;\n }\n visitReference(ast, context) {\n context.updateOptions(ast.options, true);\n visitDslNode(this, ast.animation, context);\n context.previousNode = ast;\n }\n visitSequence(ast, context) {\n const subContextCount = context.subContextCount;\n let ctx = context;\n const options = ast.options;\n if (options && (options.params || options.delay)) {\n ctx = context.createSubContext(options);\n ctx.transformIntoNewTimeline();\n if (options.delay != null) {\n if (ctx.previousNode.type == 6 /* Style */) {\n ctx.currentTimeline.snapshotCurrentStyles();\n ctx.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n }\n const delay = resolveTimingValue(options.delay);\n ctx.delayNextStep(delay);\n }\n }\n if (ast.steps.length) {\n ast.steps.forEach(s => visitDslNode(this, s, ctx));\n // this is here just in case the inner steps only contain or end with a style() call\n ctx.currentTimeline.applyStylesToKeyframe();\n // this means that some animation function within the sequence\n // ended up creating a sub timeline (which means the current\n // timeline cannot overlap with the contents of the sequence)\n if (ctx.subContextCount > subContextCount) {\n ctx.transformIntoNewTimeline();\n }\n }\n context.previousNode = ast;\n }\n visitGroup(ast, context) {\n const innerTimelines = [];\n let furthestTime = context.currentTimeline.currentTime;\n const delay = ast.options && ast.options.delay ? resolveTimingValue(ast.options.delay) : 0;\n ast.steps.forEach(s => {\n const innerContext = context.createSubContext(ast.options);\n if (delay) {\n innerContext.delayNextStep(delay);\n }\n visitDslNode(this, s, innerContext);\n furthestTime = Math.max(furthestTime, innerContext.currentTimeline.currentTime);\n innerTimelines.push(innerContext.currentTimeline);\n });\n // this operation is run after the AST loop because otherwise\n // if the parent timeline's collected styles were updated then\n // it would pass in invalid data into the new-to-be forked items\n innerTimelines.forEach(timeline => context.currentTimeline.mergeTimelineCollectedStyles(timeline));\n context.transformIntoNewTimeline(furthestTime);\n context.previousNode = ast;\n }\n _visitTiming(ast, context) {\n if (ast.dynamic) {\n const strValue = ast.strValue;\n const timingValue = context.params ? interpolateParams(strValue, context.params, context.errors) : strValue;\n return resolveTiming(timingValue, context.errors);\n }\n else {\n return { duration: ast.duration, delay: ast.delay, easing: ast.easing };\n }\n }\n visitAnimate(ast, context) {\n const timings = context.currentAnimateTimings = this._visitTiming(ast.timings, context);\n const timeline = context.currentTimeline;\n if (timings.delay) {\n context.incrementTime(timings.delay);\n timeline.snapshotCurrentStyles();\n }\n const style = ast.style;\n if (style.type == 5 /* Keyframes */) {\n this.visitKeyframes(style, context);\n }\n else {\n context.incrementTime(timings.duration);\n this.visitStyle(style, context);\n timeline.applyStylesToKeyframe();\n }\n context.currentAnimateTimings = null;\n context.previousNode = ast;\n }\n visitStyle(ast, context) {\n const timeline = context.currentTimeline;\n const timings = context.currentAnimateTimings;\n // this is a special case for when a style() call\n // directly follows an animate() call (but not inside of an animate() call)\n if (!timings && timeline.getCurrentStyleProperties().length) {\n timeline.forwardFrame();\n }\n const easing = (timings && timings.easing) || ast.easing;\n if (ast.isEmptyStep) {\n timeline.applyEmptyStep(easing);\n }\n else {\n timeline.setStyles(ast.styles, easing, context.errors, context.options);\n }\n context.previousNode = ast;\n }\n visitKeyframes(ast, context) {\n const currentAnimateTimings = context.currentAnimateTimings;\n const startTime = (context.currentTimeline).duration;\n const duration = currentAnimateTimings.duration;\n const innerContext = context.createSubContext();\n const innerTimeline = innerContext.currentTimeline;\n innerTimeline.easing = currentAnimateTimings.easing;\n ast.styles.forEach(step => {\n const offset = step.offset || 0;\n innerTimeline.forwardTime(offset * duration);\n innerTimeline.setStyles(step.styles, step.easing, context.errors, context.options);\n innerTimeline.applyStylesToKeyframe();\n });\n // this will ensure that the parent timeline gets all the styles from\n // the child even if the new timeline below is not used\n context.currentTimeline.mergeTimelineCollectedStyles(innerTimeline);\n // we do this because the window between this timeline and the sub timeline\n // should ensure that the styles within are exactly the same as they were before\n context.transformIntoNewTimeline(startTime + duration);\n context.previousNode = ast;\n }\n visitQuery(ast, context) {\n // in the event that the first step before this is a style step we need\n // to ensure the styles are applied before the children are animated\n const startTime = context.currentTimeline.currentTime;\n const options = (ast.options || {});\n const delay = options.delay ? resolveTimingValue(options.delay) : 0;\n if (delay &&\n (context.previousNode.type === 6 /* Style */ ||\n (startTime == 0 && context.currentTimeline.getCurrentStyleProperties().length))) {\n context.currentTimeline.snapshotCurrentStyles();\n context.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n }\n let furthestTime = startTime;\n const elms = context.invokeQuery(ast.selector, ast.originalSelector, ast.limit, ast.includeSelf, options.optional ? true : false, context.errors);\n context.currentQueryTotal = elms.length;\n let sameElementTimeline = null;\n elms.forEach((element, i) => {\n context.currentQueryIndex = i;\n const innerContext = context.createSubContext(ast.options, element);\n if (delay) {\n innerContext.delayNextStep(delay);\n }\n if (element === context.element) {\n sameElementTimeline = innerContext.currentTimeline;\n }\n visitDslNode(this, ast.animation, innerContext);\n // this is here just incase the inner steps only contain or end\n // with a style() call (which is here to signal that this is a preparatory\n // call to style an element before it is animated again)\n innerContext.currentTimeline.applyStylesToKeyframe();\n const endTime = innerContext.currentTimeline.currentTime;\n furthestTime = Math.max(furthestTime, endTime);\n });\n context.currentQueryIndex = 0;\n context.currentQueryTotal = 0;\n context.transformIntoNewTimeline(furthestTime);\n if (sameElementTimeline) {\n context.currentTimeline.mergeTimelineCollectedStyles(sameElementTimeline);\n context.currentTimeline.snapshotCurrentStyles();\n }\n context.previousNode = ast;\n }\n visitStagger(ast, context) {\n const parentContext = context.parentContext;\n const tl = context.currentTimeline;\n const timings = ast.timings;\n const duration = Math.abs(timings.duration);\n const maxTime = duration * (context.currentQueryTotal - 1);\n let delay = duration * context.currentQueryIndex;\n let staggerTransformer = timings.duration < 0 ? 'reverse' : timings.easing;\n switch (staggerTransformer) {\n case 'reverse':\n delay = maxTime - delay;\n break;\n case 'full':\n delay = parentContext.currentStaggerTime;\n break;\n }\n const timeline = context.currentTimeline;\n if (delay) {\n timeline.delayNextStep(delay);\n }\n const startingTime = timeline.currentTime;\n visitDslNode(this, ast.animation, context);\n context.previousNode = ast;\n // time = duration + delay\n // the reason why this computation is so complex is because\n // the inner timeline may either have a delay value or a stretched\n // keyframe depending on if a subtimeline is not used or is used.\n parentContext.currentStaggerTime =\n (tl.currentTime - startingTime) + (tl.startTime - parentContext.currentTimeline.startTime);\n }\n}\nconst DEFAULT_NOOP_PREVIOUS_NODE = {};\nclass AnimationTimelineContext {\n constructor(_driver, element, subInstructions, _enterClassName, _leaveClassName, errors, timelines, initialTimeline) {\n this._driver = _driver;\n this.element = element;\n this.subInstructions = subInstructions;\n this._enterClassName = _enterClassName;\n this._leaveClassName = _leaveClassName;\n this.errors = errors;\n this.timelines = timelines;\n this.parentContext = null;\n this.currentAnimateTimings = null;\n this.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n this.subContextCount = 0;\n this.options = {};\n this.currentQueryIndex = 0;\n this.currentQueryTotal = 0;\n this.currentStaggerTime = 0;\n this.currentTimeline = initialTimeline || new TimelineBuilder(this._driver, element, 0);\n timelines.push(this.currentTimeline);\n }\n get params() {\n return this.options.params;\n }\n updateOptions(options, skipIfExists) {\n if (!options)\n return;\n const newOptions = options;\n let optionsToUpdate = this.options;\n // NOTE: this will get patched up when other animation methods support duration overrides\n if (newOptions.duration != null) {\n optionsToUpdate.duration = resolveTimingValue(newOptions.duration);\n }\n if (newOptions.delay != null) {\n optionsToUpdate.delay = resolveTimingValue(newOptions.delay);\n }\n const newParams = newOptions.params;\n if (newParams) {\n let paramsToUpdate = optionsToUpdate.params;\n if (!paramsToUpdate) {\n paramsToUpdate = this.options.params = {};\n }\n Object.keys(newParams).forEach(name => {\n if (!skipIfExists || !paramsToUpdate.hasOwnProperty(name)) {\n paramsToUpdate[name] = interpolateParams(newParams[name], paramsToUpdate, this.errors);\n }\n });\n }\n }\n _copyOptions() {\n const options = {};\n if (this.options) {\n const oldParams = this.options.params;\n if (oldParams) {\n const params = options['params'] = {};\n Object.keys(oldParams).forEach(name => {\n params[name] = oldParams[name];\n });\n }\n }\n return options;\n }\n createSubContext(options = null, element, newTime) {\n const target = element || this.element;\n const context = new AnimationTimelineContext(this._driver, target, this.subInstructions, this._enterClassName, this._leaveClassName, this.errors, this.timelines, this.currentTimeline.fork(target, newTime || 0));\n context.previousNode = this.previousNode;\n context.currentAnimateTimings = this.currentAnimateTimings;\n context.options = this._copyOptions();\n context.updateOptions(options);\n context.currentQueryIndex = this.currentQueryIndex;\n context.currentQueryTotal = this.currentQueryTotal;\n context.parentContext = this;\n this.subContextCount++;\n return context;\n }\n transformIntoNewTimeline(newTime) {\n this.previousNode = DEFAULT_NOOP_PREVIOUS_NODE;\n this.currentTimeline = this.currentTimeline.fork(this.element, newTime);\n this.timelines.push(this.currentTimeline);\n return this.currentTimeline;\n }\n appendInstructionToTimeline(instruction, duration, delay) {\n const updatedTimings = {\n duration: duration != null ? duration : instruction.duration,\n delay: this.currentTimeline.currentTime + (delay != null ? delay : 0) + instruction.delay,\n easing: ''\n };\n const builder = new SubTimelineBuilder(this._driver, instruction.element, instruction.keyframes, instruction.preStyleProps, instruction.postStyleProps, updatedTimings, instruction.stretchStartingKeyframe);\n this.timelines.push(builder);\n return updatedTimings;\n }\n incrementTime(time) {\n this.currentTimeline.forwardTime(this.currentTimeline.duration + time);\n }\n delayNextStep(delay) {\n // negative delays are not yet supported\n if (delay > 0) {\n this.currentTimeline.delayNextStep(delay);\n }\n }\n invokeQuery(selector, originalSelector, limit, includeSelf, optional, errors) {\n let results = [];\n if (includeSelf) {\n results.push(this.element);\n }\n if (selector.length > 0) { // only if :self is used then the selector can be empty\n selector = selector.replace(ENTER_TOKEN_REGEX, '.' + this._enterClassName);\n selector = selector.replace(LEAVE_TOKEN_REGEX, '.' + this._leaveClassName);\n const multi = limit != 1;\n let elements = this._driver.query(this.element, selector, multi);\n if (limit !== 0) {\n elements = limit < 0 ? elements.slice(elements.length + limit, elements.length) :\n elements.slice(0, limit);\n }\n results.push(...elements);\n }\n if (!optional && results.length == 0) {\n errors.push(invalidQuery(originalSelector));\n }\n return results;\n }\n}\nclass TimelineBuilder {\n constructor(_driver, element, startTime, _elementTimelineStylesLookup) {\n this._driver = _driver;\n this.element = element;\n this.startTime = startTime;\n this._elementTimelineStylesLookup = _elementTimelineStylesLookup;\n this.duration = 0;\n this._previousKeyframe = {};\n this._currentKeyframe = {};\n this._keyframes = new Map();\n this._styleSummary = {};\n this._pendingStyles = {};\n this._backFill = {};\n this._currentEmptyStepKeyframe = null;\n if (!this._elementTimelineStylesLookup) {\n this._elementTimelineStylesLookup = new Map();\n }\n this._localTimelineStyles = Object.create(this._backFill, {});\n this._globalTimelineStyles = this._elementTimelineStylesLookup.get(element);\n if (!this._globalTimelineStyles) {\n this._globalTimelineStyles = this._localTimelineStyles;\n this._elementTimelineStylesLookup.set(element, this._localTimelineStyles);\n }\n this._loadKeyframe();\n }\n containsAnimation() {\n switch (this._keyframes.size) {\n case 0:\n return false;\n case 1:\n return this.getCurrentStyleProperties().length > 0;\n default:\n return true;\n }\n }\n getCurrentStyleProperties() {\n return Object.keys(this._currentKeyframe);\n }\n get currentTime() {\n return this.startTime + this.duration;\n }\n delayNextStep(delay) {\n // in the event that a style() step is placed right before a stagger()\n // and that style() step is the very first style() value in the animation\n // then we need to make a copy of the keyframe [0, copy, 1] so that the delay\n // properly applies the style() values to work with the stagger...\n const hasPreStyleStep = this._keyframes.size == 1 && Object.keys(this._pendingStyles).length;\n if (this.duration || hasPreStyleStep) {\n this.forwardTime(this.currentTime + delay);\n if (hasPreStyleStep) {\n this.snapshotCurrentStyles();\n }\n }\n else {\n this.startTime += delay;\n }\n }\n fork(element, currentTime) {\n this.applyStylesToKeyframe();\n return new TimelineBuilder(this._driver, element, currentTime || this.currentTime, this._elementTimelineStylesLookup);\n }\n _loadKeyframe() {\n if (this._currentKeyframe) {\n this._previousKeyframe = this._currentKeyframe;\n }\n this._currentKeyframe = this._keyframes.get(this.duration);\n if (!this._currentKeyframe) {\n this._currentKeyframe = Object.create(this._backFill, {});\n this._keyframes.set(this.duration, this._currentKeyframe);\n }\n }\n forwardFrame() {\n this.duration += ONE_FRAME_IN_MILLISECONDS;\n this._loadKeyframe();\n }\n forwardTime(time) {\n this.applyStylesToKeyframe();\n this.duration = time;\n this._loadKeyframe();\n }\n _updateStyle(prop, value) {\n this._localTimelineStyles[prop] = value;\n this._globalTimelineStyles[prop] = value;\n this._styleSummary[prop] = { time: this.currentTime, value };\n }\n allowOnlyTimelineStyles() {\n return this._currentEmptyStepKeyframe !== this._currentKeyframe;\n }\n applyEmptyStep(easing) {\n if (easing) {\n this._previousKeyframe['easing'] = easing;\n }\n // special case for animate(duration):\n // all missing styles are filled with a `*` value then\n // if any destination styles are filled in later on the same\n // keyframe then they will override the overridden styles\n // We use `_globalTimelineStyles` here because there may be\n // styles in previous keyframes that are not present in this timeline\n Object.keys(this._globalTimelineStyles).forEach(prop => {\n this._backFill[prop] = this._globalTimelineStyles[prop] || AUTO_STYLE;\n this._currentKeyframe[prop] = AUTO_STYLE;\n });\n this._currentEmptyStepKeyframe = this._currentKeyframe;\n }\n setStyles(input, easing, errors, options) {\n if (easing) {\n this._previousKeyframe['easing'] = easing;\n }\n const params = (options && options.params) || {};\n const styles = flattenStyles(input, this._globalTimelineStyles);\n Object.keys(styles).forEach(prop => {\n const val = interpolateParams(styles[prop], params, errors);\n this._pendingStyles[prop] = val;\n if (!this._localTimelineStyles.hasOwnProperty(prop)) {\n this._backFill[prop] = this._globalTimelineStyles.hasOwnProperty(prop) ?\n this._globalTimelineStyles[prop] :\n AUTO_STYLE;\n }\n this._updateStyle(prop, val);\n });\n }\n applyStylesToKeyframe() {\n const styles = this._pendingStyles;\n const props = Object.keys(styles);\n if (props.length == 0)\n return;\n this._pendingStyles = {};\n props.forEach(prop => {\n const val = styles[prop];\n this._currentKeyframe[prop] = val;\n });\n Object.keys(this._localTimelineStyles).forEach(prop => {\n if (!this._currentKeyframe.hasOwnProperty(prop)) {\n this._currentKeyframe[prop] = this._localTimelineStyles[prop];\n }\n });\n }\n snapshotCurrentStyles() {\n Object.keys(this._localTimelineStyles).forEach(prop => {\n const val = this._localTimelineStyles[prop];\n this._pendingStyles[prop] = val;\n this._updateStyle(prop, val);\n });\n }\n getFinalKeyframe() {\n return this._keyframes.get(this.duration);\n }\n get properties() {\n const properties = [];\n for (let prop in this._currentKeyframe) {\n properties.push(prop);\n }\n return properties;\n }\n mergeTimelineCollectedStyles(timeline) {\n Object.keys(timeline._styleSummary).forEach(prop => {\n const details0 = this._styleSummary[prop];\n const details1 = timeline._styleSummary[prop];\n if (!details0 || details1.time > details0.time) {\n this._updateStyle(prop, details1.value);\n }\n });\n }\n buildKeyframes() {\n this.applyStylesToKeyframe();\n const preStyleProps = new Set();\n const postStyleProps = new Set();\n const isEmpty = this._keyframes.size === 1 && this.duration === 0;\n let finalKeyframes = [];\n this._keyframes.forEach((keyframe, time) => {\n const finalKeyframe = copyStyles(keyframe, true);\n Object.keys(finalKeyframe).forEach(prop => {\n const value = finalKeyframe[prop];\n if (value == ɵPRE_STYLE) {\n preStyleProps.add(prop);\n }\n else if (value == AUTO_STYLE) {\n postStyleProps.add(prop);\n }\n });\n if (!isEmpty) {\n finalKeyframe['offset'] = time / this.duration;\n }\n finalKeyframes.push(finalKeyframe);\n });\n const preProps = preStyleProps.size ? iteratorToArray(preStyleProps.values()) : [];\n const postProps = postStyleProps.size ? iteratorToArray(postStyleProps.values()) : [];\n // special case for a 0-second animation (which is designed just to place styles onscreen)\n if (isEmpty) {\n const kf0 = finalKeyframes[0];\n const kf1 = copyObj(kf0);\n kf0['offset'] = 0;\n kf1['offset'] = 1;\n finalKeyframes = [kf0, kf1];\n }\n return createTimelineInstruction(this.element, finalKeyframes, preProps, postProps, this.duration, this.startTime, this.easing, false);\n }\n}\nclass SubTimelineBuilder extends TimelineBuilder {\n constructor(driver, element, keyframes, preStyleProps, postStyleProps, timings, _stretchStartingKeyframe = false) {\n super(driver, element, timings.delay);\n this.keyframes = keyframes;\n this.preStyleProps = preStyleProps;\n this.postStyleProps = postStyleProps;\n this._stretchStartingKeyframe = _stretchStartingKeyframe;\n this.timings = { duration: timings.duration, delay: timings.delay, easing: timings.easing };\n }\n containsAnimation() {\n return this.keyframes.length > 1;\n }\n buildKeyframes() {\n let keyframes = this.keyframes;\n let { delay, duration, easing } = this.timings;\n if (this._stretchStartingKeyframe && delay) {\n const newKeyframes = [];\n const totalTime = duration + delay;\n const startingGap = delay / totalTime;\n // the original starting keyframe now starts once the delay is done\n const newFirstKeyframe = copyStyles(keyframes[0], false);\n newFirstKeyframe['offset'] = 0;\n newKeyframes.push(newFirstKeyframe);\n const oldFirstKeyframe = copyStyles(keyframes[0], false);\n oldFirstKeyframe['offset'] = roundOffset(startingGap);\n newKeyframes.push(oldFirstKeyframe);\n /*\n When the keyframe is stretched then it means that the delay before the animation\n starts is gone. Instead the first keyframe is placed at the start of the animation\n and it is then copied to where it starts when the original delay is over. This basically\n means nothing animates during that delay, but the styles are still rendered. For this\n to work the original offset values that exist in the original keyframes must be \"warped\"\n so that they can take the new keyframe + delay into account.\n \n delay=1000, duration=1000, keyframes = 0 .5 1\n \n turns into\n \n delay=0, duration=2000, keyframes = 0 .33 .66 1\n */\n // offsets between 1 ... n -1 are all warped by the keyframe stretch\n const limit = keyframes.length - 1;\n for (let i = 1; i <= limit; i++) {\n let kf = copyStyles(keyframes[i], false);\n const oldOffset = kf['offset'];\n const timeAtKeyframe = delay + oldOffset * duration;\n kf['offset'] = roundOffset(timeAtKeyframe / totalTime);\n newKeyframes.push(kf);\n }\n // the new starting keyframe should be added at the start\n duration = totalTime;\n delay = 0;\n easing = '';\n keyframes = newKeyframes;\n }\n return createTimelineInstruction(this.element, keyframes, this.preStyleProps, this.postStyleProps, duration, delay, easing, true);\n }\n}\nfunction roundOffset(offset, decimalPoints = 3) {\n const mult = Math.pow(10, decimalPoints - 1);\n return Math.round(offset * mult) / mult;\n}\nfunction flattenStyles(input, allStyles) {\n const styles = {};\n let allProperties;\n input.forEach(token => {\n if (token === '*') {\n allProperties = allProperties || Object.keys(allStyles);\n allProperties.forEach(prop => {\n styles[prop] = AUTO_STYLE;\n });\n }\n else {\n copyStyles(token, false, styles);\n }\n });\n return styles;\n}\n\nclass Animation {\n constructor(_driver, input) {\n this._driver = _driver;\n const errors = [];\n const warnings = [];\n const ast = buildAnimationAst(_driver, input, errors, warnings);\n if (errors.length) {\n throw validationFailed(errors);\n }\n if (warnings.length) {\n warnValidation(warnings);\n }\n this._animationAst = ast;\n }\n buildTimelines(element, startingStyles, destinationStyles, options, subInstructions) {\n const start = Array.isArray(startingStyles) ? normalizeStyles(startingStyles) :\n startingStyles;\n const dest = Array.isArray(destinationStyles) ? normalizeStyles(destinationStyles) :\n destinationStyles;\n const errors = [];\n subInstructions = subInstructions || new ElementInstructionMap();\n const result = buildAnimationTimelines(this._driver, element, this._animationAst, ENTER_CLASSNAME, LEAVE_CLASSNAME, start, dest, options, subInstructions, errors);\n if (errors.length) {\n throw buildingFailed(errors);\n }\n return result;\n }\n}\n\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 * @publicApi\n */\nclass AnimationStyleNormalizer {\n}\n/**\n * @publicApi\n */\nclass NoopAnimationStyleNormalizer {\n normalizePropertyName(propertyName, errors) {\n return propertyName;\n }\n normalizeStyleValue(userProvidedProperty, normalizedProperty, value, errors) {\n return value;\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 WebAnimationsStyleNormalizer extends AnimationStyleNormalizer {\n normalizePropertyName(propertyName, errors) {\n return dashCaseToCamelCase(propertyName);\n }\n normalizeStyleValue(userProvidedProperty, normalizedProperty, value, errors) {\n let unit = '';\n const strVal = value.toString().trim();\n if (DIMENSIONAL_PROP_MAP[normalizedProperty] && value !== 0 && value !== '0') {\n if (typeof value === 'number') {\n unit = 'px';\n }\n else {\n const valAndSuffixMatch = value.match(/^[+-]?[\\d\\.]+([a-z]*)$/);\n if (valAndSuffixMatch && valAndSuffixMatch[1].length == 0) {\n errors.push(invalidCssUnitValue(userProvidedProperty, value));\n }\n }\n }\n return strVal + unit;\n }\n}\nconst DIMENSIONAL_PROP_MAP = (() => makeBooleanMap('width,height,minWidth,minHeight,maxWidth,maxHeight,left,top,bottom,right,fontSize,outlineWidth,outlineOffset,paddingTop,paddingLeft,paddingBottom,paddingRight,marginTop,marginLeft,marginBottom,marginRight,borderRadius,borderWidth,borderTopWidth,borderLeftWidth,borderRightWidth,borderBottomWidth,textIndent,perspective'\n .split(',')))();\nfunction makeBooleanMap(keys) {\n const map = {};\n keys.forEach(key => map[key] = true);\n return map;\n}\n\nfunction createTransitionInstruction(element, triggerName, fromState, toState, isRemovalTransition, fromStyles, toStyles, timelines, queriedElements, preStyleProps, postStyleProps, totalTime, errors) {\n return {\n type: 0 /* TransitionAnimation */,\n element,\n triggerName,\n isRemovalTransition,\n fromState,\n fromStyles,\n toState,\n toStyles,\n timelines,\n queriedElements,\n preStyleProps,\n postStyleProps,\n totalTime,\n errors\n };\n}\n\nconst EMPTY_OBJECT = {};\nclass AnimationTransitionFactory {\n constructor(_triggerName, ast, _stateStyles) {\n this._triggerName = _triggerName;\n this.ast = ast;\n this._stateStyles = _stateStyles;\n }\n match(currentState, nextState, element, params) {\n return oneOrMoreTransitionsMatch(this.ast.matchers, currentState, nextState, element, params);\n }\n buildStyles(stateName, params, errors) {\n const backupStateStyler = this._stateStyles['*'];\n const stateStyler = this._stateStyles[stateName];\n const backupStyles = backupStateStyler ? backupStateStyler.buildStyles(params, errors) : {};\n return stateStyler ? stateStyler.buildStyles(params, errors) : backupStyles;\n }\n build(driver, element, currentState, nextState, enterClassName, leaveClassName, currentOptions, nextOptions, subInstructions, skipAstBuild) {\n const errors = [];\n const transitionAnimationParams = this.ast.options && this.ast.options.params || EMPTY_OBJECT;\n const currentAnimationParams = currentOptions && currentOptions.params || EMPTY_OBJECT;\n const currentStateStyles = this.buildStyles(currentState, currentAnimationParams, errors);\n const nextAnimationParams = nextOptions && nextOptions.params || EMPTY_OBJECT;\n const nextStateStyles = this.buildStyles(nextState, nextAnimationParams, errors);\n const queriedElements = new Set();\n const preStyleMap = new Map();\n const postStyleMap = new Map();\n const isRemoval = nextState === 'void';\n const animationOptions = { params: Object.assign(Object.assign({}, transitionAnimationParams), nextAnimationParams) };\n const timelines = skipAstBuild ?\n [] :\n buildAnimationTimelines(driver, element, this.ast.animation, enterClassName, leaveClassName, currentStateStyles, nextStateStyles, animationOptions, subInstructions, errors);\n let totalTime = 0;\n timelines.forEach(tl => {\n totalTime = Math.max(tl.duration + tl.delay, totalTime);\n });\n if (errors.length) {\n return createTransitionInstruction(element, this._triggerName, currentState, nextState, isRemoval, currentStateStyles, nextStateStyles, [], [], preStyleMap, postStyleMap, totalTime, errors);\n }\n timelines.forEach(tl => {\n const elm = tl.element;\n const preProps = getOrSetAsInMap(preStyleMap, elm, {});\n tl.preStyleProps.forEach(prop => preProps[prop] = true);\n const postProps = getOrSetAsInMap(postStyleMap, elm, {});\n tl.postStyleProps.forEach(prop => postProps[prop] = true);\n if (elm !== element) {\n queriedElements.add(elm);\n }\n });\n const queriedElementsList = iteratorToArray(queriedElements.values());\n return createTransitionInstruction(element, this._triggerName, currentState, nextState, isRemoval, currentStateStyles, nextStateStyles, timelines, queriedElementsList, preStyleMap, postStyleMap, totalTime);\n }\n}\nfunction oneOrMoreTransitionsMatch(matchFns, currentState, nextState, element, params) {\n return matchFns.some(fn => fn(currentState, nextState, element, params));\n}\nclass AnimationStateStyles {\n constructor(styles, defaultParams, normalizer) {\n this.styles = styles;\n this.defaultParams = defaultParams;\n this.normalizer = normalizer;\n }\n buildStyles(params, errors) {\n const finalStyles = {};\n const combinedParams = copyObj(this.defaultParams);\n Object.keys(params).forEach(key => {\n const value = params[key];\n if (value != null) {\n combinedParams[key] = value;\n }\n });\n this.styles.styles.forEach(value => {\n if (typeof value !== 'string') {\n const styleObj = value;\n Object.keys(styleObj).forEach(prop => {\n let val = styleObj[prop];\n if (val.length > 1) {\n val = interpolateParams(val, combinedParams, errors);\n }\n const normalizedProp = this.normalizer.normalizePropertyName(prop, errors);\n val = this.normalizer.normalizeStyleValue(prop, normalizedProp, val, errors);\n finalStyles[normalizedProp] = val;\n });\n }\n });\n return finalStyles;\n }\n}\n\nfunction buildTrigger(name, ast, normalizer) {\n return new AnimationTrigger(name, ast, normalizer);\n}\nclass AnimationTrigger {\n constructor(name, ast, _normalizer) {\n this.name = name;\n this.ast = ast;\n this._normalizer = _normalizer;\n this.transitionFactories = [];\n this.states = {};\n ast.states.forEach(ast => {\n const defaultParams = (ast.options && ast.options.params) || {};\n this.states[ast.name] = new AnimationStateStyles(ast.style, defaultParams, _normalizer);\n });\n balanceProperties(this.states, 'true', '1');\n balanceProperties(this.states, 'false', '0');\n ast.transitions.forEach(ast => {\n this.transitionFactories.push(new AnimationTransitionFactory(name, ast, this.states));\n });\n this.fallbackTransition = createFallbackTransition(name, this.states, this._normalizer);\n }\n get containsQueries() {\n return this.ast.queryCount > 0;\n }\n matchTransition(currentState, nextState, element, params) {\n const entry = this.transitionFactories.find(f => f.match(currentState, nextState, element, params));\n return entry || null;\n }\n matchStyles(currentState, params, errors) {\n return this.fallbackTransition.buildStyles(currentState, params, errors);\n }\n}\nfunction createFallbackTransition(triggerName, states, normalizer) {\n const matchers = [(fromState, toState) => true];\n const animation = { type: 2 /* Sequence */, steps: [], options: null };\n const transition = {\n type: 1 /* Transition */,\n animation,\n matchers,\n options: null,\n queryCount: 0,\n depCount: 0\n };\n return new AnimationTransitionFactory(triggerName, transition, states);\n}\nfunction balanceProperties(obj, key1, key2) {\n if (obj.hasOwnProperty(key1)) {\n if (!obj.hasOwnProperty(key2)) {\n obj[key2] = obj[key1];\n }\n }\n else if (obj.hasOwnProperty(key2)) {\n obj[key1] = obj[key2];\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 EMPTY_INSTRUCTION_MAP = new ElementInstructionMap();\nclass TimelineAnimationEngine {\n constructor(bodyNode, _driver, _normalizer) {\n this.bodyNode = bodyNode;\n this._driver = _driver;\n this._normalizer = _normalizer;\n this._animations = {};\n this._playersById = {};\n this.players = [];\n }\n register(id, metadata) {\n const errors = [];\n const warnings = [];\n const ast = buildAnimationAst(this._driver, metadata, errors, warnings);\n if (errors.length) {\n throw registerFailed(errors);\n }\n else {\n if (warnings.length) {\n warnRegister(warnings);\n }\n this._animations[id] = ast;\n }\n }\n _buildPlayer(i, preStyles, postStyles) {\n const element = i.element;\n const keyframes = normalizeKeyframes(this._driver, this._normalizer, element, i.keyframes, preStyles, postStyles);\n return this._driver.animate(element, keyframes, i.duration, i.delay, i.easing, [], true);\n }\n create(id, element, options = {}) {\n const errors = [];\n const ast = this._animations[id];\n let instructions;\n const autoStylesMap = new Map();\n if (ast) {\n instructions = buildAnimationTimelines(this._driver, element, ast, ENTER_CLASSNAME, LEAVE_CLASSNAME, {}, {}, options, EMPTY_INSTRUCTION_MAP, errors);\n instructions.forEach(inst => {\n const styles = getOrSetAsInMap(autoStylesMap, inst.element, {});\n inst.postStyleProps.forEach(prop => styles[prop] = null);\n });\n }\n else {\n errors.push(missingOrDestroyedAnimation());\n instructions = [];\n }\n if (errors.length) {\n throw createAnimationFailed(errors);\n }\n autoStylesMap.forEach((styles, element) => {\n Object.keys(styles).forEach(prop => {\n styles[prop] = this._driver.computeStyle(element, prop, AUTO_STYLE);\n });\n });\n const players = instructions.map(i => {\n const styles = autoStylesMap.get(i.element);\n return this._buildPlayer(i, {}, styles);\n });\n const player = optimizeGroupPlayer(players);\n this._playersById[id] = player;\n player.onDestroy(() => this.destroy(id));\n this.players.push(player);\n return player;\n }\n destroy(id) {\n const player = this._getPlayer(id);\n player.destroy();\n delete this._playersById[id];\n const index = this.players.indexOf(player);\n if (index >= 0) {\n this.players.splice(index, 1);\n }\n }\n _getPlayer(id) {\n const player = this._playersById[id];\n if (!player) {\n throw missingPlayer(id);\n }\n return player;\n }\n listen(id, element, eventName, callback) {\n // triggerName, fromState, toState are all ignored for timeline animations\n const baseEvent = makeAnimationEvent(element, '', '', '');\n listenOnPlayer(this._getPlayer(id), eventName, baseEvent, callback);\n return () => { };\n }\n command(id, element, command, args) {\n if (command == 'register') {\n this.register(id, args[0]);\n return;\n }\n if (command == 'create') {\n const options = (args[0] || {});\n this.create(id, element, options);\n return;\n }\n const player = this._getPlayer(id);\n switch (command) {\n case 'play':\n player.play();\n break;\n case 'pause':\n player.pause();\n break;\n case 'reset':\n player.reset();\n break;\n case 'restart':\n player.restart();\n break;\n case 'finish':\n player.finish();\n break;\n case 'init':\n player.init();\n break;\n case 'setPosition':\n player.setPosition(parseFloat(args[0]));\n break;\n case 'destroy':\n this.destroy(id);\n break;\n }\n }\n}\n\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 QUEUED_CLASSNAME = 'ng-animate-queued';\nconst QUEUED_SELECTOR = '.ng-animate-queued';\nconst DISABLED_CLASSNAME = 'ng-animate-disabled';\nconst DISABLED_SELECTOR = '.ng-animate-disabled';\nconst STAR_CLASSNAME = 'ng-star-inserted';\nconst STAR_SELECTOR = '.ng-star-inserted';\nconst EMPTY_PLAYER_ARRAY = [];\nconst NULL_REMOVAL_STATE = {\n namespaceId: '',\n setForRemoval: false,\n setForMove: false,\n hasAnimation: false,\n removedBeforeQueried: false\n};\nconst NULL_REMOVED_QUERIED_STATE = {\n namespaceId: '',\n setForMove: false,\n setForRemoval: false,\n hasAnimation: false,\n removedBeforeQueried: true\n};\nconst REMOVAL_FLAG = '__ng_removed';\nclass StateValue {\n constructor(input, namespaceId = '') {\n this.namespaceId = namespaceId;\n const isObj = input && input.hasOwnProperty('value');\n const value = isObj ? input['value'] : input;\n this.value = normalizeTriggerValue(value);\n if (isObj) {\n const options = copyObj(input);\n delete options['value'];\n this.options = options;\n }\n else {\n this.options = {};\n }\n if (!this.options.params) {\n this.options.params = {};\n }\n }\n get params() {\n return this.options.params;\n }\n absorbOptions(options) {\n const newParams = options.params;\n if (newParams) {\n const oldParams = this.options.params;\n Object.keys(newParams).forEach(prop => {\n if (oldParams[prop] == null) {\n oldParams[prop] = newParams[prop];\n }\n });\n }\n }\n}\nconst VOID_VALUE = 'void';\nconst DEFAULT_STATE_VALUE = new StateValue(VOID_VALUE);\nclass AnimationTransitionNamespace {\n constructor(id, hostElement, _engine) {\n this.id = id;\n this.hostElement = hostElement;\n this._engine = _engine;\n this.players = [];\n this._triggers = {};\n this._queue = [];\n this._elementListeners = new Map();\n this._hostClassName = 'ng-tns-' + id;\n addClass(hostElement, this._hostClassName);\n }\n listen(element, name, phase, callback) {\n if (!this._triggers.hasOwnProperty(name)) {\n throw missingTrigger(phase, name);\n }\n if (phase == null || phase.length == 0) {\n throw missingEvent(name);\n }\n if (!isTriggerEventValid(phase)) {\n throw unsupportedTriggerEvent(phase, name);\n }\n const listeners = getOrSetAsInMap(this._elementListeners, element, []);\n const data = { name, phase, callback };\n listeners.push(data);\n const triggersWithStates = getOrSetAsInMap(this._engine.statesByElement, element, {});\n if (!triggersWithStates.hasOwnProperty(name)) {\n addClass(element, NG_TRIGGER_CLASSNAME);\n addClass(element, NG_TRIGGER_CLASSNAME + '-' + name);\n triggersWithStates[name] = DEFAULT_STATE_VALUE;\n }\n return () => {\n // the event listener is removed AFTER the flush has occurred such\n // that leave animations callbacks can fire (otherwise if the node\n // is removed in between then the listeners would be deregistered)\n this._engine.afterFlush(() => {\n const index = listeners.indexOf(data);\n if (index >= 0) {\n listeners.splice(index, 1);\n }\n if (!this._triggers[name]) {\n delete triggersWithStates[name];\n }\n });\n };\n }\n register(name, ast) {\n if (this._triggers[name]) {\n // throw\n return false;\n }\n else {\n this._triggers[name] = ast;\n return true;\n }\n }\n _getTrigger(name) {\n const trigger = this._triggers[name];\n if (!trigger) {\n throw unregisteredTrigger(name);\n }\n return trigger;\n }\n trigger(element, triggerName, value, defaultToFallback = true) {\n const trigger = this._getTrigger(triggerName);\n const player = new TransitionAnimationPlayer(this.id, triggerName, element);\n let triggersWithStates = this._engine.statesByElement.get(element);\n if (!triggersWithStates) {\n addClass(element, NG_TRIGGER_CLASSNAME);\n addClass(element, NG_TRIGGER_CLASSNAME + '-' + triggerName);\n this._engine.statesByElement.set(element, triggersWithStates = {});\n }\n let fromState = triggersWithStates[triggerName];\n const toState = new StateValue(value, this.id);\n const isObj = value && value.hasOwnProperty('value');\n if (!isObj && fromState) {\n toState.absorbOptions(fromState.options);\n }\n triggersWithStates[triggerName] = toState;\n if (!fromState) {\n fromState = DEFAULT_STATE_VALUE;\n }\n const isRemoval = toState.value === VOID_VALUE;\n // normally this isn't reached by here, however, if an object expression\n // is passed in then it may be a new object each time. Comparing the value\n // is important since that will stay the same despite there being a new object.\n // The removal arc here is special cased because the same element is triggered\n // twice in the event that it contains animations on the outer/inner portions\n // of the host container\n if (!isRemoval && fromState.value === toState.value) {\n // this means that despite the value not changing, some inner params\n // have changed which means that the animation final styles need to be applied\n if (!objEquals(fromState.params, toState.params)) {\n const errors = [];\n const fromStyles = trigger.matchStyles(fromState.value, fromState.params, errors);\n const toStyles = trigger.matchStyles(toState.value, toState.params, errors);\n if (errors.length) {\n this._engine.reportError(errors);\n }\n else {\n this._engine.afterFlush(() => {\n eraseStyles(element, fromStyles);\n setStyles(element, toStyles);\n });\n }\n }\n return;\n }\n const playersOnElement = getOrSetAsInMap(this._engine.playersByElement, element, []);\n playersOnElement.forEach(player => {\n // only remove the player if it is queued on the EXACT same trigger/namespace\n // we only also deal with queued players here because if the animation has\n // started then we want to keep the player alive until the flush happens\n // (which is where the previousPlayers are passed into the new player)\n if (player.namespaceId == this.id && player.triggerName == triggerName && player.queued) {\n player.destroy();\n }\n });\n let transition = trigger.matchTransition(fromState.value, toState.value, element, toState.params);\n let isFallbackTransition = false;\n if (!transition) {\n if (!defaultToFallback)\n return;\n transition = trigger.fallbackTransition;\n isFallbackTransition = true;\n }\n this._engine.totalQueuedPlayers++;\n this._queue.push({ element, triggerName, transition, fromState, toState, player, isFallbackTransition });\n if (!isFallbackTransition) {\n addClass(element, QUEUED_CLASSNAME);\n player.onStart(() => {\n removeClass(element, QUEUED_CLASSNAME);\n });\n }\n player.onDone(() => {\n let index = this.players.indexOf(player);\n if (index >= 0) {\n this.players.splice(index, 1);\n }\n const players = this._engine.playersByElement.get(element);\n if (players) {\n let index = players.indexOf(player);\n if (index >= 0) {\n players.splice(index, 1);\n }\n }\n });\n this.players.push(player);\n playersOnElement.push(player);\n return player;\n }\n deregister(name) {\n delete this._triggers[name];\n this._engine.statesByElement.forEach((stateMap, element) => {\n delete stateMap[name];\n });\n this._elementListeners.forEach((listeners, element) => {\n this._elementListeners.set(element, listeners.filter(entry => {\n return entry.name != name;\n }));\n });\n }\n clearElementCache(element) {\n this._engine.statesByElement.delete(element);\n this._elementListeners.delete(element);\n const elementPlayers = this._engine.playersByElement.get(element);\n if (elementPlayers) {\n elementPlayers.forEach(player => player.destroy());\n this._engine.playersByElement.delete(element);\n }\n }\n _signalRemovalForInnerTriggers(rootElement, context) {\n const elements = this._engine.driver.query(rootElement, NG_TRIGGER_SELECTOR, true);\n // emulate a leave animation for all inner nodes within this node.\n // If there are no animations found for any of the nodes then clear the cache\n // for the element.\n elements.forEach(elm => {\n // this means that an inner remove() operation has already kicked off\n // the animation on this element...\n if (elm[REMOVAL_FLAG])\n return;\n const namespaces = this._engine.fetchNamespacesByElement(elm);\n if (namespaces.size) {\n namespaces.forEach(ns => ns.triggerLeaveAnimation(elm, context, false, true));\n }\n else {\n this.clearElementCache(elm);\n }\n });\n // If the child elements were removed along with the parent, their animations might not\n // have completed. Clear all the elements from the cache so we don't end up with a memory leak.\n this._engine.afterFlushAnimationsDone(() => elements.forEach(elm => this.clearElementCache(elm)));\n }\n triggerLeaveAnimation(element, context, destroyAfterComplete, defaultToFallback) {\n const triggerStates = this._engine.statesByElement.get(element);\n const previousTriggersValues = new Map();\n if (triggerStates) {\n const players = [];\n Object.keys(triggerStates).forEach(triggerName => {\n previousTriggersValues.set(triggerName, triggerStates[triggerName].value);\n // this check is here in the event that an element is removed\n // twice (both on the host level and the component level)\n if (this._triggers[triggerName]) {\n const player = this.trigger(element, triggerName, VOID_VALUE, defaultToFallback);\n if (player) {\n players.push(player);\n }\n }\n });\n if (players.length) {\n this._engine.markElementAsRemoved(this.id, element, true, context, previousTriggersValues);\n if (destroyAfterComplete) {\n optimizeGroupPlayer(players).onDone(() => this._engine.processLeaveNode(element));\n }\n return true;\n }\n }\n return false;\n }\n prepareLeaveAnimationListeners(element) {\n const listeners = this._elementListeners.get(element);\n const elementStates = this._engine.statesByElement.get(element);\n // if this statement fails then it means that the element was picked up\n // by an earlier flush (or there are no listeners at all to track the leave).\n if (listeners && elementStates) {\n const visitedTriggers = new Set();\n listeners.forEach(listener => {\n const triggerName = listener.name;\n if (visitedTriggers.has(triggerName))\n return;\n visitedTriggers.add(triggerName);\n const trigger = this._triggers[triggerName];\n const transition = trigger.fallbackTransition;\n const fromState = elementStates[triggerName] || DEFAULT_STATE_VALUE;\n const toState = new StateValue(VOID_VALUE);\n const player = new TransitionAnimationPlayer(this.id, triggerName, element);\n this._engine.totalQueuedPlayers++;\n this._queue.push({\n element,\n triggerName,\n transition,\n fromState,\n toState,\n player,\n isFallbackTransition: true\n });\n });\n }\n }\n removeNode(element, context) {\n const engine = this._engine;\n if (element.childElementCount) {\n this._signalRemovalForInnerTriggers(element, context);\n }\n // this means that a * => VOID animation was detected and kicked off\n if (this.triggerLeaveAnimation(element, context, true))\n return;\n // find the player that is animating and make sure that the\n // removal is delayed until that player has completed\n let containsPotentialParentTransition = false;\n if (engine.totalAnimations) {\n const currentPlayers = engine.players.length ? engine.playersByQueriedElement.get(element) : [];\n // when this `if statement` does not continue forward it means that\n // a previous animation query has selected the current element and\n // is animating it. In this situation want to continue forwards and\n // allow the element to be queued up for animation later.\n if (currentPlayers && currentPlayers.length) {\n containsPotentialParentTransition = true;\n }\n else {\n let parent = element;\n while (parent = parent.parentNode) {\n const triggers = engine.statesByElement.get(parent);\n if (triggers) {\n containsPotentialParentTransition = true;\n break;\n }\n }\n }\n }\n // at this stage we know that the element will either get removed\n // during flush or will be picked up by a parent query. Either way\n // we need to fire the listeners for this element when it DOES get\n // removed (once the query parent animation is done or after flush)\n this.prepareLeaveAnimationListeners(element);\n // whether or not a parent has an animation we need to delay the deferral of the leave\n // operation until we have more information (which we do after flush() has been called)\n if (containsPotentialParentTransition) {\n engine.markElementAsRemoved(this.id, element, false, context);\n }\n else {\n const removalFlag = element[REMOVAL_FLAG];\n if (!removalFlag || removalFlag === NULL_REMOVAL_STATE) {\n // we do this after the flush has occurred such\n // that the callbacks can be fired\n engine.afterFlush(() => this.clearElementCache(element));\n engine.destroyInnerAnimations(element);\n engine._onRemovalComplete(element, context);\n }\n }\n }\n insertNode(element, parent) {\n addClass(element, this._hostClassName);\n }\n drainQueuedTransitions(microtaskId) {\n const instructions = [];\n this._queue.forEach(entry => {\n const player = entry.player;\n if (player.destroyed)\n return;\n const element = entry.element;\n const listeners = this._elementListeners.get(element);\n if (listeners) {\n listeners.forEach((listener) => {\n if (listener.name == entry.triggerName) {\n const baseEvent = makeAnimationEvent(element, entry.triggerName, entry.fromState.value, entry.toState.value);\n baseEvent['_data'] = microtaskId;\n listenOnPlayer(entry.player, listener.phase, baseEvent, listener.callback);\n }\n });\n }\n if (player.markedForDestroy) {\n this._engine.afterFlush(() => {\n // now we can destroy the element properly since the event listeners have\n // been bound to the player\n player.destroy();\n });\n }\n else {\n instructions.push(entry);\n }\n });\n this._queue = [];\n return instructions.sort((a, b) => {\n // if depCount == 0 them move to front\n // otherwise if a contains b then move back\n const d0 = a.transition.ast.depCount;\n const d1 = b.transition.ast.depCount;\n if (d0 == 0 || d1 == 0) {\n return d0 - d1;\n }\n return this._engine.driver.containsElement(a.element, b.element) ? 1 : -1;\n });\n }\n destroy(context) {\n this.players.forEach(p => p.destroy());\n this._signalRemovalForInnerTriggers(this.hostElement, context);\n }\n elementContainsData(element) {\n let containsData = false;\n if (this._elementListeners.has(element))\n containsData = true;\n containsData =\n (this._queue.find(entry => entry.element === element) ? true : false) || containsData;\n return containsData;\n }\n}\nclass TransitionAnimationEngine {\n constructor(bodyNode, driver, _normalizer) {\n this.bodyNode = bodyNode;\n this.driver = driver;\n this._normalizer = _normalizer;\n this.players = [];\n this.newHostElements = new Map();\n this.playersByElement = new Map();\n this.playersByQueriedElement = new Map();\n this.statesByElement = new Map();\n this.disabledNodes = new Set();\n this.totalAnimations = 0;\n this.totalQueuedPlayers = 0;\n this._namespaceLookup = {};\n this._namespaceList = [];\n this._flushFns = [];\n this._whenQuietFns = [];\n this.namespacesByHostElement = new Map();\n this.collectedEnterElements = [];\n this.collectedLeaveElements = [];\n // this method is designed to be overridden by the code that uses this engine\n this.onRemovalComplete = (element, context) => { };\n }\n /** @internal */\n _onRemovalComplete(element, context) {\n this.onRemovalComplete(element, context);\n }\n get queuedPlayers() {\n const players = [];\n this._namespaceList.forEach(ns => {\n ns.players.forEach(player => {\n if (player.queued) {\n players.push(player);\n }\n });\n });\n return players;\n }\n createNamespace(namespaceId, hostElement) {\n const ns = new AnimationTransitionNamespace(namespaceId, hostElement, this);\n if (this.bodyNode && this.driver.containsElement(this.bodyNode, hostElement)) {\n this._balanceNamespaceList(ns, hostElement);\n }\n else {\n // defer this later until flush during when the host element has\n // been inserted so that we know exactly where to place it in\n // the namespace list\n this.newHostElements.set(hostElement, ns);\n // given that this host element is a part of the animation code, it\n // may or may not be inserted by a parent node that is of an\n // animation renderer type. If this happens then we can still have\n // access to this item when we query for :enter nodes. If the parent\n // is a renderer then the set data-structure will normalize the entry\n this.collectEnterElement(hostElement);\n }\n return this._namespaceLookup[namespaceId] = ns;\n }\n _balanceNamespaceList(ns, hostElement) {\n const namespaceList = this._namespaceList;\n const namespacesByHostElement = this.namespacesByHostElement;\n const limit = namespaceList.length - 1;\n if (limit >= 0) {\n let found = false;\n if (this.driver.getParentElement !== undefined) {\n // Fast path for when the driver implements `getParentElement`, which allows us to find the\n // closest ancestor with an existing namespace that we can then insert `ns` after, without\n // having to inspect all existing namespaces.\n let ancestor = this.driver.getParentElement(hostElement);\n while (ancestor) {\n const ancestorNs = namespacesByHostElement.get(ancestor);\n if (ancestorNs) {\n // An animation namespace has been registered for this ancestor, so we insert `ns`\n // right after it to establish top-down ordering of animation namespaces.\n const index = namespaceList.indexOf(ancestorNs);\n namespaceList.splice(index + 1, 0, ns);\n found = true;\n break;\n }\n ancestor = this.driver.getParentElement(ancestor);\n }\n }\n else {\n // Slow path for backwards compatibility if the driver does not implement\n // `getParentElement`, to be removed once `getParentElement` is a required method.\n for (let i = limit; i >= 0; i--) {\n const nextNamespace = namespaceList[i];\n if (this.driver.containsElement(nextNamespace.hostElement, hostElement)) {\n namespaceList.splice(i + 1, 0, ns);\n found = true;\n break;\n }\n }\n }\n if (!found) {\n // No namespace exists that is an ancestor of `ns`, so `ns` is inserted at the front to\n // ensure that any existing descendants are ordered after `ns`, retaining the desired\n // top-down ordering.\n namespaceList.unshift(ns);\n }\n }\n else {\n namespaceList.push(ns);\n }\n namespacesByHostElement.set(hostElement, ns);\n return ns;\n }\n register(namespaceId, hostElement) {\n let ns = this._namespaceLookup[namespaceId];\n if (!ns) {\n ns = this.createNamespace(namespaceId, hostElement);\n }\n return ns;\n }\n registerTrigger(namespaceId, name, trigger) {\n let ns = this._namespaceLookup[namespaceId];\n if (ns && ns.register(name, trigger)) {\n this.totalAnimations++;\n }\n }\n destroy(namespaceId, context) {\n if (!namespaceId)\n return;\n const ns = this._fetchNamespace(namespaceId);\n this.afterFlush(() => {\n this.namespacesByHostElement.delete(ns.hostElement);\n delete this._namespaceLookup[namespaceId];\n const index = this._namespaceList.indexOf(ns);\n if (index >= 0) {\n this._namespaceList.splice(index, 1);\n }\n });\n this.afterFlushAnimationsDone(() => ns.destroy(context));\n }\n _fetchNamespace(id) {\n return this._namespaceLookup[id];\n }\n fetchNamespacesByElement(element) {\n // normally there should only be one namespace per element, however\n // if @triggers are placed on both the component element and then\n // its host element (within the component code) then there will be\n // two namespaces returned. We use a set here to simply deduplicate\n // the namespaces in case (for the reason described above) there are multiple triggers\n const namespaces = new Set();\n const elementStates = this.statesByElement.get(element);\n if (elementStates) {\n const keys = Object.keys(elementStates);\n for (let i = 0; i < keys.length; i++) {\n const nsId = elementStates[keys[i]].namespaceId;\n if (nsId) {\n const ns = this._fetchNamespace(nsId);\n if (ns) {\n namespaces.add(ns);\n }\n }\n }\n }\n return namespaces;\n }\n trigger(namespaceId, element, name, value) {\n if (isElementNode(element)) {\n const ns = this._fetchNamespace(namespaceId);\n if (ns) {\n ns.trigger(element, name, value);\n return true;\n }\n }\n return false;\n }\n insertNode(namespaceId, element, parent, insertBefore) {\n if (!isElementNode(element))\n return;\n // special case for when an element is removed and reinserted (move operation)\n // when this occurs we do not want to use the element for deletion later\n const details = element[REMOVAL_FLAG];\n if (details && details.setForRemoval) {\n details.setForRemoval = false;\n details.setForMove = true;\n const index = this.collectedLeaveElements.indexOf(element);\n if (index >= 0) {\n this.collectedLeaveElements.splice(index, 1);\n }\n }\n // in the event that the namespaceId is blank then the caller\n // code does not contain any animation code in it, but it is\n // just being called so that the node is marked as being inserted\n if (namespaceId) {\n const ns = this._fetchNamespace(namespaceId);\n // This if-statement is a workaround for router issue #21947.\n // The router sometimes hits a race condition where while a route\n // is being instantiated a new navigation arrives, triggering leave\n // animation of DOM that has not been fully initialized, until this\n // is resolved, we need to handle the scenario when DOM is not in a\n // consistent state during the animation.\n if (ns) {\n ns.insertNode(element, parent);\n }\n }\n // only *directives and host elements are inserted before\n if (insertBefore) {\n this.collectEnterElement(element);\n }\n }\n collectEnterElement(element) {\n this.collectedEnterElements.push(element);\n }\n markElementAsDisabled(element, value) {\n if (value) {\n if (!this.disabledNodes.has(element)) {\n this.disabledNodes.add(element);\n addClass(element, DISABLED_CLASSNAME);\n }\n }\n else if (this.disabledNodes.has(element)) {\n this.disabledNodes.delete(element);\n removeClass(element, DISABLED_CLASSNAME);\n }\n }\n removeNode(namespaceId, element, isHostElement, context) {\n if (isElementNode(element)) {\n const ns = namespaceId ? this._fetchNamespace(namespaceId) : null;\n if (ns) {\n ns.removeNode(element, context);\n }\n else {\n this.markElementAsRemoved(namespaceId, element, false, context);\n }\n if (isHostElement) {\n const hostNS = this.namespacesByHostElement.get(element);\n if (hostNS && hostNS.id !== namespaceId) {\n hostNS.removeNode(element, context);\n }\n }\n }\n else {\n this._onRemovalComplete(element, context);\n }\n }\n markElementAsRemoved(namespaceId, element, hasAnimation, context, previousTriggersValues) {\n this.collectedLeaveElements.push(element);\n element[REMOVAL_FLAG] = {\n namespaceId,\n setForRemoval: context,\n hasAnimation,\n removedBeforeQueried: false,\n previousTriggersValues\n };\n }\n listen(namespaceId, element, name, phase, callback) {\n if (isElementNode(element)) {\n return this._fetchNamespace(namespaceId).listen(element, name, phase, callback);\n }\n return () => { };\n }\n _buildInstruction(entry, subTimelines, enterClassName, leaveClassName, skipBuildAst) {\n return entry.transition.build(this.driver, entry.element, entry.fromState.value, entry.toState.value, enterClassName, leaveClassName, entry.fromState.options, entry.toState.options, subTimelines, skipBuildAst);\n }\n destroyInnerAnimations(containerElement) {\n let elements = this.driver.query(containerElement, NG_TRIGGER_SELECTOR, true);\n elements.forEach(element => this.destroyActiveAnimationsForElement(element));\n if (this.playersByQueriedElement.size == 0)\n return;\n elements = this.driver.query(containerElement, NG_ANIMATING_SELECTOR, true);\n elements.forEach(element => this.finishActiveQueriedAnimationOnElement(element));\n }\n destroyActiveAnimationsForElement(element) {\n const players = this.playersByElement.get(element);\n if (players) {\n players.forEach(player => {\n // special case for when an element is set for destruction, but hasn't started.\n // in this situation we want to delay the destruction until the flush occurs\n // so that any event listeners attached to the player are triggered.\n if (player.queued) {\n player.markedForDestroy = true;\n }\n else {\n player.destroy();\n }\n });\n }\n }\n finishActiveQueriedAnimationOnElement(element) {\n const players = this.playersByQueriedElement.get(element);\n if (players) {\n players.forEach(player => player.finish());\n }\n }\n whenRenderingDone() {\n return new Promise(resolve => {\n if (this.players.length) {\n return optimizeGroupPlayer(this.players).onDone(() => resolve());\n }\n else {\n resolve();\n }\n });\n }\n processLeaveNode(element) {\n var _a;\n const details = element[REMOVAL_FLAG];\n if (details && details.setForRemoval) {\n // this will prevent it from removing it twice\n element[REMOVAL_FLAG] = NULL_REMOVAL_STATE;\n if (details.namespaceId) {\n this.destroyInnerAnimations(element);\n const ns = this._fetchNamespace(details.namespaceId);\n if (ns) {\n ns.clearElementCache(element);\n }\n }\n this._onRemovalComplete(element, details.setForRemoval);\n }\n if ((_a = element.classList) === null || _a === void 0 ? void 0 : _a.contains(DISABLED_CLASSNAME)) {\n this.markElementAsDisabled(element, false);\n }\n this.driver.query(element, DISABLED_SELECTOR, true).forEach(node => {\n this.markElementAsDisabled(node, false);\n });\n }\n flush(microtaskId = -1) {\n let players = [];\n if (this.newHostElements.size) {\n this.newHostElements.forEach((ns, element) => this._balanceNamespaceList(ns, element));\n this.newHostElements.clear();\n }\n if (this.totalAnimations && this.collectedEnterElements.length) {\n for (let i = 0; i < this.collectedEnterElements.length; i++) {\n const elm = this.collectedEnterElements[i];\n addClass(elm, STAR_CLASSNAME);\n }\n }\n if (this._namespaceList.length &&\n (this.totalQueuedPlayers || this.collectedLeaveElements.length)) {\n const cleanupFns = [];\n try {\n players = this._flushAnimations(cleanupFns, microtaskId);\n }\n finally {\n for (let i = 0; i < cleanupFns.length; i++) {\n cleanupFns[i]();\n }\n }\n }\n else {\n for (let i = 0; i < this.collectedLeaveElements.length; i++) {\n const element = this.collectedLeaveElements[i];\n this.processLeaveNode(element);\n }\n }\n this.totalQueuedPlayers = 0;\n this.collectedEnterElements.length = 0;\n this.collectedLeaveElements.length = 0;\n this._flushFns.forEach(fn => fn());\n this._flushFns = [];\n if (this._whenQuietFns.length) {\n // we move these over to a variable so that\n // if any new callbacks are registered in another\n // flush they do not populate the existing set\n const quietFns = this._whenQuietFns;\n this._whenQuietFns = [];\n if (players.length) {\n optimizeGroupPlayer(players).onDone(() => {\n quietFns.forEach(fn => fn());\n });\n }\n else {\n quietFns.forEach(fn => fn());\n }\n }\n }\n reportError(errors) {\n throw triggerTransitionsFailed(errors);\n }\n _flushAnimations(cleanupFns, microtaskId) {\n const subTimelines = new ElementInstructionMap();\n const skippedPlayers = [];\n const skippedPlayersMap = new Map();\n const queuedInstructions = [];\n const queriedElements = new Map();\n const allPreStyleElements = new Map();\n const allPostStyleElements = new Map();\n const disabledElementsSet = new Set();\n this.disabledNodes.forEach(node => {\n disabledElementsSet.add(node);\n const nodesThatAreDisabled = this.driver.query(node, QUEUED_SELECTOR, true);\n for (let i = 0; i < nodesThatAreDisabled.length; i++) {\n disabledElementsSet.add(nodesThatAreDisabled[i]);\n }\n });\n const bodyNode = this.bodyNode;\n const allTriggerElements = Array.from(this.statesByElement.keys());\n const enterNodeMap = buildRootMap(allTriggerElements, this.collectedEnterElements);\n // this must occur before the instructions are built below such that\n // the :enter queries match the elements (since the timeline queries\n // are fired during instruction building).\n const enterNodeMapIds = new Map();\n let i = 0;\n enterNodeMap.forEach((nodes, root) => {\n const className = ENTER_CLASSNAME + i++;\n enterNodeMapIds.set(root, className);\n nodes.forEach(node => addClass(node, className));\n });\n const allLeaveNodes = [];\n const mergedLeaveNodes = new Set();\n const leaveNodesWithoutAnimations = new Set();\n for (let i = 0; i < this.collectedLeaveElements.length; i++) {\n const element = this.collectedLeaveElements[i];\n const details = element[REMOVAL_FLAG];\n if (details && details.setForRemoval) {\n allLeaveNodes.push(element);\n mergedLeaveNodes.add(element);\n if (details.hasAnimation) {\n this.driver.query(element, STAR_SELECTOR, true).forEach(elm => mergedLeaveNodes.add(elm));\n }\n else {\n leaveNodesWithoutAnimations.add(element);\n }\n }\n }\n const leaveNodeMapIds = new Map();\n const leaveNodeMap = buildRootMap(allTriggerElements, Array.from(mergedLeaveNodes));\n leaveNodeMap.forEach((nodes, root) => {\n const className = LEAVE_CLASSNAME + i++;\n leaveNodeMapIds.set(root, className);\n nodes.forEach(node => addClass(node, className));\n });\n cleanupFns.push(() => {\n enterNodeMap.forEach((nodes, root) => {\n const className = enterNodeMapIds.get(root);\n nodes.forEach(node => removeClass(node, className));\n });\n leaveNodeMap.forEach((nodes, root) => {\n const className = leaveNodeMapIds.get(root);\n nodes.forEach(node => removeClass(node, className));\n });\n allLeaveNodes.forEach(element => {\n this.processLeaveNode(element);\n });\n });\n const allPlayers = [];\n const erroneousTransitions = [];\n for (let i = this._namespaceList.length - 1; i >= 0; i--) {\n const ns = this._namespaceList[i];\n ns.drainQueuedTransitions(microtaskId).forEach(entry => {\n const player = entry.player;\n const element = entry.element;\n allPlayers.push(player);\n if (this.collectedEnterElements.length) {\n const details = element[REMOVAL_FLAG];\n // animations for move operations (elements being removed and reinserted,\n // e.g. when the order of an *ngFor list changes) are currently not supported\n if (details && details.setForMove) {\n if (details.previousTriggersValues &&\n details.previousTriggersValues.has(entry.triggerName)) {\n const previousValue = details.previousTriggersValues.get(entry.triggerName);\n // we need to restore the previous trigger value since the element has\n // only been moved and hasn't actually left the DOM\n const triggersWithStates = this.statesByElement.get(entry.element);\n if (triggersWithStates && triggersWithStates[entry.triggerName]) {\n triggersWithStates[entry.triggerName].value = previousValue;\n }\n }\n player.destroy();\n return;\n }\n }\n const nodeIsOrphaned = !bodyNode || !this.driver.containsElement(bodyNode, element);\n const leaveClassName = leaveNodeMapIds.get(element);\n const enterClassName = enterNodeMapIds.get(element);\n const instruction = this._buildInstruction(entry, subTimelines, enterClassName, leaveClassName, nodeIsOrphaned);\n if (instruction.errors && instruction.errors.length) {\n erroneousTransitions.push(instruction);\n return;\n }\n // even though the element may not be in the DOM, it may still\n // be added at a later point (due to the mechanics of content\n // projection and/or dynamic component insertion) therefore it's\n // important to still style the element.\n if (nodeIsOrphaned) {\n player.onStart(() => eraseStyles(element, instruction.fromStyles));\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n skippedPlayers.push(player);\n return;\n }\n // if an unmatched transition is queued and ready to go\n // then it SHOULD NOT render an animation and cancel the\n // previously running animations.\n if (entry.isFallbackTransition) {\n player.onStart(() => eraseStyles(element, instruction.fromStyles));\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n skippedPlayers.push(player);\n return;\n }\n // this means that if a parent animation uses this animation as a sub-trigger\n // then it will instruct the timeline builder not to add a player delay, but\n // instead stretch the first keyframe gap until the animation starts. This is\n // important in order to prevent extra initialization styles from being\n // required by the user for the animation.\n const timelines = [];\n instruction.timelines.forEach(tl => {\n tl.stretchStartingKeyframe = true;\n if (!this.disabledNodes.has(tl.element)) {\n timelines.push(tl);\n }\n });\n instruction.timelines = timelines;\n subTimelines.append(element, instruction.timelines);\n const tuple = { instruction, player, element };\n queuedInstructions.push(tuple);\n instruction.queriedElements.forEach(element => getOrSetAsInMap(queriedElements, element, []).push(player));\n instruction.preStyleProps.forEach((stringMap, element) => {\n const props = Object.keys(stringMap);\n if (props.length) {\n let setVal = allPreStyleElements.get(element);\n if (!setVal) {\n allPreStyleElements.set(element, setVal = new Set());\n }\n props.forEach(prop => setVal.add(prop));\n }\n });\n instruction.postStyleProps.forEach((stringMap, element) => {\n const props = Object.keys(stringMap);\n let setVal = allPostStyleElements.get(element);\n if (!setVal) {\n allPostStyleElements.set(element, setVal = new Set());\n }\n props.forEach(prop => setVal.add(prop));\n });\n });\n }\n if (erroneousTransitions.length) {\n const errors = [];\n erroneousTransitions.forEach(instruction => {\n errors.push(transitionFailed(instruction.triggerName, instruction.errors));\n });\n allPlayers.forEach(player => player.destroy());\n this.reportError(errors);\n }\n const allPreviousPlayersMap = new Map();\n // this map tells us which element in the DOM tree is contained by\n // which animation. Further down this map will get populated once\n // the players are built and in doing so we can use it to efficiently\n // figure out if a sub player is skipped due to a parent player having priority.\n const animationElementMap = new Map();\n queuedInstructions.forEach(entry => {\n const element = entry.element;\n if (subTimelines.has(element)) {\n animationElementMap.set(element, element);\n this._beforeAnimationBuild(entry.player.namespaceId, entry.instruction, allPreviousPlayersMap);\n }\n });\n skippedPlayers.forEach(player => {\n const element = player.element;\n const previousPlayers = this._getPreviousPlayers(element, false, player.namespaceId, player.triggerName, null);\n previousPlayers.forEach(prevPlayer => {\n getOrSetAsInMap(allPreviousPlayersMap, element, []).push(prevPlayer);\n prevPlayer.destroy();\n });\n });\n // this is a special case for nodes that will be removed either by\n // having their own leave animations or by being queried in a container\n // that will be removed once a parent animation is complete. The idea\n // here is that * styles must be identical to ! styles because of\n // backwards compatibility (* is also filled in by default in many places).\n // Otherwise * styles will return an empty value or \"auto\" since the element\n // passed to getComputedStyle will not be visible (since * === destination)\n const replaceNodes = allLeaveNodes.filter(node => {\n return replacePostStylesAsPre(node, allPreStyleElements, allPostStyleElements);\n });\n // POST STAGE: fill the * styles\n const postStylesMap = new Map();\n const allLeaveQueriedNodes = cloakAndComputeStyles(postStylesMap, this.driver, leaveNodesWithoutAnimations, allPostStyleElements, AUTO_STYLE);\n allLeaveQueriedNodes.forEach(node => {\n if (replacePostStylesAsPre(node, allPreStyleElements, allPostStyleElements)) {\n replaceNodes.push(node);\n }\n });\n // PRE STAGE: fill the ! styles\n const preStylesMap = new Map();\n enterNodeMap.forEach((nodes, root) => {\n cloakAndComputeStyles(preStylesMap, this.driver, new Set(nodes), allPreStyleElements, ɵPRE_STYLE);\n });\n replaceNodes.forEach(node => {\n const post = postStylesMap.get(node);\n const pre = preStylesMap.get(node);\n postStylesMap.set(node, Object.assign(Object.assign({}, post), pre));\n });\n const rootPlayers = [];\n const subPlayers = [];\n const NO_PARENT_ANIMATION_ELEMENT_DETECTED = {};\n queuedInstructions.forEach(entry => {\n const { element, player, instruction } = entry;\n // this means that it was never consumed by a parent animation which\n // means that it is independent and therefore should be set for animation\n if (subTimelines.has(element)) {\n if (disabledElementsSet.has(element)) {\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n player.disabled = true;\n player.overrideTotalTime(instruction.totalTime);\n skippedPlayers.push(player);\n return;\n }\n // this will flow up the DOM and query the map to figure out\n // if a parent animation has priority over it. In the situation\n // that a parent is detected then it will cancel the loop. If\n // nothing is detected, or it takes a few hops to find a parent,\n // then it will fill in the missing nodes and signal them as having\n // a detected parent (or a NO_PARENT value via a special constant).\n let parentWithAnimation = NO_PARENT_ANIMATION_ELEMENT_DETECTED;\n if (animationElementMap.size > 1) {\n let elm = element;\n const parentsToAdd = [];\n while (elm = elm.parentNode) {\n const detectedParent = animationElementMap.get(elm);\n if (detectedParent) {\n parentWithAnimation = detectedParent;\n break;\n }\n parentsToAdd.push(elm);\n }\n parentsToAdd.forEach(parent => animationElementMap.set(parent, parentWithAnimation));\n }\n const innerPlayer = this._buildAnimation(player.namespaceId, instruction, allPreviousPlayersMap, skippedPlayersMap, preStylesMap, postStylesMap);\n player.setRealPlayer(innerPlayer);\n if (parentWithAnimation === NO_PARENT_ANIMATION_ELEMENT_DETECTED) {\n rootPlayers.push(player);\n }\n else {\n const parentPlayers = this.playersByElement.get(parentWithAnimation);\n if (parentPlayers && parentPlayers.length) {\n player.parentPlayer = optimizeGroupPlayer(parentPlayers);\n }\n skippedPlayers.push(player);\n }\n }\n else {\n eraseStyles(element, instruction.fromStyles);\n player.onDestroy(() => setStyles(element, instruction.toStyles));\n // there still might be a ancestor player animating this\n // element therefore we will still add it as a sub player\n // even if its animation may be disabled\n subPlayers.push(player);\n if (disabledElementsSet.has(element)) {\n skippedPlayers.push(player);\n }\n }\n });\n // find all of the sub players' corresponding inner animation players\n subPlayers.forEach(player => {\n // even if no players are found for a sub animation it\n // will still complete itself after the next tick since it's Noop\n const playersForElement = skippedPlayersMap.get(player.element);\n if (playersForElement && playersForElement.length) {\n const innerPlayer = optimizeGroupPlayer(playersForElement);\n player.setRealPlayer(innerPlayer);\n }\n });\n // the reason why we don't actually play the animation is\n // because all that a skipped player is designed to do is to\n // fire the start/done transition callback events\n skippedPlayers.forEach(player => {\n if (player.parentPlayer) {\n player.syncPlayerEvents(player.parentPlayer);\n }\n else {\n player.destroy();\n }\n });\n // run through all of the queued removals and see if they\n // were picked up by a query. If not then perform the removal\n // operation right away unless a parent animation is ongoing.\n for (let i = 0; i < allLeaveNodes.length; i++) {\n const element = allLeaveNodes[i];\n const details = element[REMOVAL_FLAG];\n removeClass(element, LEAVE_CLASSNAME);\n // this means the element has a removal animation that is being\n // taken care of and therefore the inner elements will hang around\n // until that animation is over (or the parent queried animation)\n if (details && details.hasAnimation)\n continue;\n let players = [];\n // if this element is queried or if it contains queried children\n // then we want for the element not to be removed from the page\n // until the queried animations have finished\n if (queriedElements.size) {\n let queriedPlayerResults = queriedElements.get(element);\n if (queriedPlayerResults && queriedPlayerResults.length) {\n players.push(...queriedPlayerResults);\n }\n let queriedInnerElements = this.driver.query(element, NG_ANIMATING_SELECTOR, true);\n for (let j = 0; j < queriedInnerElements.length; j++) {\n let queriedPlayers = queriedElements.get(queriedInnerElements[j]);\n if (queriedPlayers && queriedPlayers.length) {\n players.push(...queriedPlayers);\n }\n }\n }\n const activePlayers = players.filter(p => !p.destroyed);\n if (activePlayers.length) {\n removeNodesAfterAnimationDone(this, element, activePlayers);\n }\n else {\n this.processLeaveNode(element);\n }\n }\n // this is required so the cleanup method doesn't remove them\n allLeaveNodes.length = 0;\n rootPlayers.forEach(player => {\n this.players.push(player);\n player.onDone(() => {\n player.destroy();\n const index = this.players.indexOf(player);\n this.players.splice(index, 1);\n });\n player.play();\n });\n return rootPlayers;\n }\n elementContainsData(namespaceId, element) {\n let containsData = false;\n const details = element[REMOVAL_FLAG];\n if (details && details.setForRemoval)\n containsData = true;\n if (this.playersByElement.has(element))\n containsData = true;\n if (this.playersByQueriedElement.has(element))\n containsData = true;\n if (this.statesByElement.has(element))\n containsData = true;\n return this._fetchNamespace(namespaceId).elementContainsData(element) || containsData;\n }\n afterFlush(callback) {\n this._flushFns.push(callback);\n }\n afterFlushAnimationsDone(callback) {\n this._whenQuietFns.push(callback);\n }\n _getPreviousPlayers(element, isQueriedElement, namespaceId, triggerName, toStateValue) {\n let players = [];\n if (isQueriedElement) {\n const queriedElementPlayers = this.playersByQueriedElement.get(element);\n if (queriedElementPlayers) {\n players = queriedElementPlayers;\n }\n }\n else {\n const elementPlayers = this.playersByElement.get(element);\n if (elementPlayers) {\n const isRemovalAnimation = !toStateValue || toStateValue == VOID_VALUE;\n elementPlayers.forEach(player => {\n if (player.queued)\n return;\n if (!isRemovalAnimation && player.triggerName != triggerName)\n return;\n players.push(player);\n });\n }\n }\n if (namespaceId || triggerName) {\n players = players.filter(player => {\n if (namespaceId && namespaceId != player.namespaceId)\n return false;\n if (triggerName && triggerName != player.triggerName)\n return false;\n return true;\n });\n }\n return players;\n }\n _beforeAnimationBuild(namespaceId, instruction, allPreviousPlayersMap) {\n const triggerName = instruction.triggerName;\n const rootElement = instruction.element;\n // when a removal animation occurs, ALL previous players are collected\n // and destroyed (even if they are outside of the current namespace)\n const targetNameSpaceId = instruction.isRemovalTransition ? undefined : namespaceId;\n const targetTriggerName = instruction.isRemovalTransition ? undefined : triggerName;\n for (const timelineInstruction of instruction.timelines) {\n const element = timelineInstruction.element;\n const isQueriedElement = element !== rootElement;\n const players = getOrSetAsInMap(allPreviousPlayersMap, element, []);\n const previousPlayers = this._getPreviousPlayers(element, isQueriedElement, targetNameSpaceId, targetTriggerName, instruction.toState);\n previousPlayers.forEach(player => {\n const realPlayer = player.getRealPlayer();\n if (realPlayer.beforeDestroy) {\n realPlayer.beforeDestroy();\n }\n player.destroy();\n players.push(player);\n });\n }\n // this needs to be done so that the PRE/POST styles can be\n // computed properly without interfering with the previous animation\n eraseStyles(rootElement, instruction.fromStyles);\n }\n _buildAnimation(namespaceId, instruction, allPreviousPlayersMap, skippedPlayersMap, preStylesMap, postStylesMap) {\n const triggerName = instruction.triggerName;\n const rootElement = instruction.element;\n // we first run this so that the previous animation player\n // data can be passed into the successive animation players\n const allQueriedPlayers = [];\n const allConsumedElements = new Set();\n const allSubElements = new Set();\n const allNewPlayers = instruction.timelines.map(timelineInstruction => {\n const element = timelineInstruction.element;\n allConsumedElements.add(element);\n // FIXME (matsko): make sure to-be-removed animations are removed properly\n const details = element[REMOVAL_FLAG];\n if (details && details.removedBeforeQueried)\n return new NoopAnimationPlayer(timelineInstruction.duration, timelineInstruction.delay);\n const isQueriedElement = element !== rootElement;\n const previousPlayers = flattenGroupPlayers((allPreviousPlayersMap.get(element) || EMPTY_PLAYER_ARRAY)\n .map(p => p.getRealPlayer()))\n .filter(p => {\n // the `element` is not apart of the AnimationPlayer definition, but\n // Mock/WebAnimations\n // use the element within their implementation. This will be added in Angular5 to\n // AnimationPlayer\n const pp = p;\n return pp.element ? pp.element === element : false;\n });\n const preStyles = preStylesMap.get(element);\n const postStyles = postStylesMap.get(element);\n const keyframes = normalizeKeyframes(this.driver, this._normalizer, element, timelineInstruction.keyframes, preStyles, postStyles);\n const player = this._buildPlayer(timelineInstruction, keyframes, previousPlayers);\n // this means that this particular player belongs to a sub trigger. It is\n // important that we match this player up with the corresponding (@trigger.listener)\n if (timelineInstruction.subTimeline && skippedPlayersMap) {\n allSubElements.add(element);\n }\n if (isQueriedElement) {\n const wrappedPlayer = new TransitionAnimationPlayer(namespaceId, triggerName, element);\n wrappedPlayer.setRealPlayer(player);\n allQueriedPlayers.push(wrappedPlayer);\n }\n return player;\n });\n allQueriedPlayers.forEach(player => {\n getOrSetAsInMap(this.playersByQueriedElement, player.element, []).push(player);\n player.onDone(() => deleteOrUnsetInMap(this.playersByQueriedElement, player.element, player));\n });\n allConsumedElements.forEach(element => addClass(element, NG_ANIMATING_CLASSNAME));\n const player = optimizeGroupPlayer(allNewPlayers);\n player.onDestroy(() => {\n allConsumedElements.forEach(element => removeClass(element, NG_ANIMATING_CLASSNAME));\n setStyles(rootElement, instruction.toStyles);\n });\n // this basically makes all of the callbacks for sub element animations\n // be dependent on the upper players for when they finish\n allSubElements.forEach(element => {\n getOrSetAsInMap(skippedPlayersMap, element, []).push(player);\n });\n return player;\n }\n _buildPlayer(instruction, keyframes, previousPlayers) {\n if (keyframes.length > 0) {\n return this.driver.animate(instruction.element, keyframes, instruction.duration, instruction.delay, instruction.easing, previousPlayers);\n }\n // special case for when an empty transition|definition is provided\n // ... there is no point in rendering an empty animation\n return new NoopAnimationPlayer(instruction.duration, instruction.delay);\n }\n}\nclass TransitionAnimationPlayer {\n constructor(namespaceId, triggerName, element) {\n this.namespaceId = namespaceId;\n this.triggerName = triggerName;\n this.element = element;\n this._player = new NoopAnimationPlayer();\n this._containsRealPlayer = false;\n this._queuedCallbacks = {};\n this.destroyed = false;\n this.markedForDestroy = false;\n this.disabled = false;\n this.queued = true;\n this.totalTime = 0;\n }\n setRealPlayer(player) {\n if (this._containsRealPlayer)\n return;\n this._player = player;\n Object.keys(this._queuedCallbacks).forEach(phase => {\n this._queuedCallbacks[phase].forEach(callback => listenOnPlayer(player, phase, undefined, callback));\n });\n this._queuedCallbacks = {};\n this._containsRealPlayer = true;\n this.overrideTotalTime(player.totalTime);\n this.queued = false;\n }\n getRealPlayer() {\n return this._player;\n }\n overrideTotalTime(totalTime) {\n this.totalTime = totalTime;\n }\n syncPlayerEvents(player) {\n const p = this._player;\n if (p.triggerCallback) {\n player.onStart(() => p.triggerCallback('start'));\n }\n player.onDone(() => this.finish());\n player.onDestroy(() => this.destroy());\n }\n _queueEvent(name, callback) {\n getOrSetAsInMap(this._queuedCallbacks, name, []).push(callback);\n }\n onDone(fn) {\n if (this.queued) {\n this._queueEvent('done', fn);\n }\n this._player.onDone(fn);\n }\n onStart(fn) {\n if (this.queued) {\n this._queueEvent('start', fn);\n }\n this._player.onStart(fn);\n }\n onDestroy(fn) {\n if (this.queued) {\n this._queueEvent('destroy', fn);\n }\n this._player.onDestroy(fn);\n }\n init() {\n this._player.init();\n }\n hasStarted() {\n return this.queued ? false : this._player.hasStarted();\n }\n play() {\n !this.queued && this._player.play();\n }\n pause() {\n !this.queued && this._player.pause();\n }\n restart() {\n !this.queued && this._player.restart();\n }\n finish() {\n this._player.finish();\n }\n destroy() {\n this.destroyed = true;\n this._player.destroy();\n }\n reset() {\n !this.queued && this._player.reset();\n }\n setPosition(p) {\n if (!this.queued) {\n this._player.setPosition(p);\n }\n }\n getPosition() {\n return this.queued ? 0 : this._player.getPosition();\n }\n /** @internal */\n triggerCallback(phaseName) {\n const p = this._player;\n if (p.triggerCallback) {\n p.triggerCallback(phaseName);\n }\n }\n}\nfunction deleteOrUnsetInMap(map, key, value) {\n let currentValues;\n if (map instanceof Map) {\n currentValues = map.get(key);\n if (currentValues) {\n if (currentValues.length) {\n const index = currentValues.indexOf(value);\n currentValues.splice(index, 1);\n }\n if (currentValues.length == 0) {\n map.delete(key);\n }\n }\n }\n else {\n currentValues = map[key];\n if (currentValues) {\n if (currentValues.length) {\n const index = currentValues.indexOf(value);\n currentValues.splice(index, 1);\n }\n if (currentValues.length == 0) {\n delete map[key];\n }\n }\n }\n return currentValues;\n}\nfunction normalizeTriggerValue(value) {\n // we use `!= null` here because it's the most simple\n // way to test against a \"falsy\" value without mixing\n // in empty strings or a zero value. DO NOT OPTIMIZE.\n return value != null ? value : null;\n}\nfunction isElementNode(node) {\n return node && node['nodeType'] === 1;\n}\nfunction isTriggerEventValid(eventName) {\n return eventName == 'start' || eventName == 'done';\n}\nfunction cloakElement(element, value) {\n const oldValue = element.style.display;\n element.style.display = value != null ? value : 'none';\n return oldValue;\n}\nfunction cloakAndComputeStyles(valuesMap, driver, elements, elementPropsMap, defaultStyle) {\n const cloakVals = [];\n elements.forEach(element => cloakVals.push(cloakElement(element)));\n const failedElements = [];\n elementPropsMap.forEach((props, element) => {\n const styles = {};\n props.forEach(prop => {\n const value = styles[prop] = driver.computeStyle(element, prop, defaultStyle);\n // there is no easy way to detect this because a sub element could be removed\n // by a parent animation element being detached.\n if (!value || value.length == 0) {\n element[REMOVAL_FLAG] = NULL_REMOVED_QUERIED_STATE;\n failedElements.push(element);\n }\n });\n valuesMap.set(element, styles);\n });\n // we use a index variable here since Set.forEach(a, i) does not return\n // an index value for the closure (but instead just the value)\n let i = 0;\n elements.forEach(element => cloakElement(element, cloakVals[i++]));\n return failedElements;\n}\n/*\nSince the Angular renderer code will return a collection of inserted\nnodes in all areas of a DOM tree, it's up to this algorithm to figure\nout which nodes are roots for each animation @trigger.\n\nBy placing each inserted node into a Set and traversing upwards, it\nis possible to find the @trigger elements and well any direct *star\ninsertion nodes, if a @trigger root is found then the enter element\nis placed into the Map[@trigger] spot.\n */\nfunction buildRootMap(roots, nodes) {\n const rootMap = new Map();\n roots.forEach(root => rootMap.set(root, []));\n if (nodes.length == 0)\n return rootMap;\n const NULL_NODE = 1;\n const nodeSet = new Set(nodes);\n const localRootMap = new Map();\n function getRoot(node) {\n if (!node)\n return NULL_NODE;\n let root = localRootMap.get(node);\n if (root)\n return root;\n const parent = node.parentNode;\n if (rootMap.has(parent)) { // ngIf inside @trigger\n root = parent;\n }\n else if (nodeSet.has(parent)) { // ngIf inside ngIf\n root = NULL_NODE;\n }\n else { // recurse upwards\n root = getRoot(parent);\n }\n localRootMap.set(node, root);\n return root;\n }\n nodes.forEach(node => {\n const root = getRoot(node);\n if (root !== NULL_NODE) {\n rootMap.get(root).push(node);\n }\n });\n return rootMap;\n}\nfunction addClass(element, className) {\n var _a;\n (_a = element.classList) === null || _a === void 0 ? void 0 : _a.add(className);\n}\nfunction removeClass(element, className) {\n var _a;\n (_a = element.classList) === null || _a === void 0 ? void 0 : _a.remove(className);\n}\nfunction removeNodesAfterAnimationDone(engine, element, players) {\n optimizeGroupPlayer(players).onDone(() => engine.processLeaveNode(element));\n}\nfunction flattenGroupPlayers(players) {\n const finalPlayers = [];\n _flattenGroupPlayersRecur(players, finalPlayers);\n return finalPlayers;\n}\nfunction _flattenGroupPlayersRecur(players, finalPlayers) {\n for (let i = 0; i < players.length; i++) {\n const player = players[i];\n if (player instanceof ɵAnimationGroupPlayer) {\n _flattenGroupPlayersRecur(player.players, finalPlayers);\n }\n else {\n finalPlayers.push(player);\n }\n }\n}\nfunction objEquals(a, b) {\n const k1 = Object.keys(a);\n const k2 = Object.keys(b);\n if (k1.length != k2.length)\n return false;\n for (let i = 0; i < k1.length; i++) {\n const prop = k1[i];\n if (!b.hasOwnProperty(prop) || a[prop] !== b[prop])\n return false;\n }\n return true;\n}\nfunction replacePostStylesAsPre(element, allPreStyleElements, allPostStyleElements) {\n const postEntry = allPostStyleElements.get(element);\n if (!postEntry)\n return false;\n let preEntry = allPreStyleElements.get(element);\n if (preEntry) {\n postEntry.forEach(data => preEntry.add(data));\n }\n else {\n allPreStyleElements.set(element, postEntry);\n }\n allPostStyleElements.delete(element);\n return true;\n}\n\nclass AnimationEngine {\n constructor(bodyNode, _driver, _normalizer) {\n this.bodyNode = bodyNode;\n this._driver = _driver;\n this._normalizer = _normalizer;\n this._triggerCache = {};\n // this method is designed to be overridden by the code that uses this engine\n this.onRemovalComplete = (element, context) => { };\n this._transitionEngine = new TransitionAnimationEngine(bodyNode, _driver, _normalizer);\n this._timelineEngine = new TimelineAnimationEngine(bodyNode, _driver, _normalizer);\n this._transitionEngine.onRemovalComplete = (element, context) => this.onRemovalComplete(element, context);\n }\n registerTrigger(componentId, namespaceId, hostElement, name, metadata) {\n const cacheKey = componentId + '-' + name;\n let trigger = this._triggerCache[cacheKey];\n if (!trigger) {\n const errors = [];\n const warnings = [];\n const ast = buildAnimationAst(this._driver, metadata, errors, warnings);\n if (errors.length) {\n throw triggerBuildFailed(name, errors);\n }\n if (warnings.length) {\n warnTriggerBuild(name, warnings);\n }\n trigger = buildTrigger(name, ast, this._normalizer);\n this._triggerCache[cacheKey] = trigger;\n }\n this._transitionEngine.registerTrigger(namespaceId, name, trigger);\n }\n register(namespaceId, hostElement) {\n this._transitionEngine.register(namespaceId, hostElement);\n }\n destroy(namespaceId, context) {\n this._transitionEngine.destroy(namespaceId, context);\n }\n onInsert(namespaceId, element, parent, insertBefore) {\n this._transitionEngine.insertNode(namespaceId, element, parent, insertBefore);\n }\n onRemove(namespaceId, element, context, isHostElement) {\n this._transitionEngine.removeNode(namespaceId, element, isHostElement || false, context);\n }\n disableAnimations(element, disable) {\n this._transitionEngine.markElementAsDisabled(element, disable);\n }\n process(namespaceId, element, property, value) {\n if (property.charAt(0) == '@') {\n const [id, action] = parseTimelineCommand(property);\n const args = value;\n this._timelineEngine.command(id, element, action, args);\n }\n else {\n this._transitionEngine.trigger(namespaceId, element, property, value);\n }\n }\n listen(namespaceId, element, eventName, eventPhase, callback) {\n // @@listen\n if (eventName.charAt(0) == '@') {\n const [id, action] = parseTimelineCommand(eventName);\n return this._timelineEngine.listen(id, element, action, callback);\n }\n return this._transitionEngine.listen(namespaceId, element, eventName, eventPhase, callback);\n }\n flush(microtaskId = -1) {\n this._transitionEngine.flush(microtaskId);\n }\n get players() {\n return this._transitionEngine.players\n .concat(this._timelineEngine.players);\n }\n whenRenderingDone() {\n return this._transitionEngine.whenRenderingDone();\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 * Returns an instance of `SpecialCasedStyles` if and when any special (non animateable) styles are\n * detected.\n *\n * In CSS there exist properties that cannot be animated within a keyframe animation\n * (whether it be via CSS keyframes or web-animations) and the animation implementation\n * will ignore them. This function is designed to detect those special cased styles and\n * return a container that will be executed at the start and end of the animation.\n *\n * @returns an instance of `SpecialCasedStyles` if any special styles are detected otherwise `null`\n */\nfunction packageNonAnimatableStyles(element, styles) {\n let startStyles = null;\n let endStyles = null;\n if (Array.isArray(styles) && styles.length) {\n startStyles = filterNonAnimatableStyles(styles[0]);\n if (styles.length > 1) {\n endStyles = filterNonAnimatableStyles(styles[styles.length - 1]);\n }\n }\n else if (styles) {\n startStyles = filterNonAnimatableStyles(styles);\n }\n return (startStyles || endStyles) ? new SpecialCasedStyles(element, startStyles, endStyles) :\n null;\n}\n/**\n * Designed to be executed during a keyframe-based animation to apply any special-cased styles.\n *\n * When started (when the `start()` method is run) then the provided `startStyles`\n * will be applied. When finished (when the `finish()` method is called) the\n * `endStyles` will be applied as well any any starting styles. Finally when\n * `destroy()` is called then all styles will be removed.\n */\nclass SpecialCasedStyles {\n constructor(_element, _startStyles, _endStyles) {\n this._element = _element;\n this._startStyles = _startStyles;\n this._endStyles = _endStyles;\n this._state = 0 /* Pending */;\n let initialStyles = SpecialCasedStyles.initialStylesByElement.get(_element);\n if (!initialStyles) {\n SpecialCasedStyles.initialStylesByElement.set(_element, initialStyles = {});\n }\n this._initialStyles = initialStyles;\n }\n start() {\n if (this._state < 1 /* Started */) {\n if (this._startStyles) {\n setStyles(this._element, this._startStyles, this._initialStyles);\n }\n this._state = 1 /* Started */;\n }\n }\n finish() {\n this.start();\n if (this._state < 2 /* Finished */) {\n setStyles(this._element, this._initialStyles);\n if (this._endStyles) {\n setStyles(this._element, this._endStyles);\n this._endStyles = null;\n }\n this._state = 1 /* Started */;\n }\n }\n destroy() {\n this.finish();\n if (this._state < 3 /* Destroyed */) {\n SpecialCasedStyles.initialStylesByElement.delete(this._element);\n if (this._startStyles) {\n eraseStyles(this._element, this._startStyles);\n this._endStyles = null;\n }\n if (this._endStyles) {\n eraseStyles(this._element, this._endStyles);\n this._endStyles = null;\n }\n setStyles(this._element, this._initialStyles);\n this._state = 3 /* Destroyed */;\n }\n }\n}\nSpecialCasedStyles.initialStylesByElement = ( /* @__PURE__ */new WeakMap());\nfunction filterNonAnimatableStyles(styles) {\n let result = null;\n const props = Object.keys(styles);\n for (let i = 0; i < props.length; i++) {\n const prop = props[i];\n if (isNonAnimatableStyle(prop)) {\n result = result || {};\n result[prop] = styles[prop];\n }\n }\n return result;\n}\nfunction isNonAnimatableStyle(prop) {\n return prop === 'display' || prop === 'position';\n}\n\nclass WebAnimationsPlayer {\n constructor(element, keyframes, options, _specialStyles) {\n this.element = element;\n this.keyframes = keyframes;\n this.options = options;\n this._specialStyles = _specialStyles;\n this._onDoneFns = [];\n this._onStartFns = [];\n this._onDestroyFns = [];\n this._initialized = false;\n this._finished = false;\n this._started = false;\n this._destroyed = false;\n this.time = 0;\n this.parentPlayer = null;\n this.currentSnapshot = {};\n this._duration = options['duration'];\n this._delay = options['delay'] || 0;\n this.time = this._duration + this._delay;\n }\n _onFinish() {\n if (!this._finished) {\n this._finished = true;\n this._onDoneFns.forEach(fn => fn());\n this._onDoneFns = [];\n }\n }\n init() {\n this._buildPlayer();\n this._preparePlayerBeforeStart();\n }\n _buildPlayer() {\n if (this._initialized)\n return;\n this._initialized = true;\n const keyframes = this.keyframes;\n this.domPlayer =\n this._triggerWebAnimation(this.element, keyframes, this.options);\n this._finalKeyframe = keyframes.length ? keyframes[keyframes.length - 1] : {};\n this.domPlayer.addEventListener('finish', () => this._onFinish());\n }\n _preparePlayerBeforeStart() {\n // this is required so that the player doesn't start to animate right away\n if (this._delay) {\n this._resetDomPlayerState();\n }\n else {\n this.domPlayer.pause();\n }\n }\n /** @internal */\n _triggerWebAnimation(element, keyframes, options) {\n // jscompiler doesn't seem to know animate is a native property because it's not fully\n // supported yet across common browsers (we polyfill it for Edge/Safari) [CL #143630929]\n return element['animate'](keyframes, options);\n }\n onStart(fn) {\n this._onStartFns.push(fn);\n }\n onDone(fn) {\n this._onDoneFns.push(fn);\n }\n onDestroy(fn) {\n this._onDestroyFns.push(fn);\n }\n play() {\n this._buildPlayer();\n if (!this.hasStarted()) {\n this._onStartFns.forEach(fn => fn());\n this._onStartFns = [];\n this._started = true;\n if (this._specialStyles) {\n this._specialStyles.start();\n }\n }\n this.domPlayer.play();\n }\n pause() {\n this.init();\n this.domPlayer.pause();\n }\n finish() {\n this.init();\n if (this._specialStyles) {\n this._specialStyles.finish();\n }\n this._onFinish();\n this.domPlayer.finish();\n }\n reset() {\n this._resetDomPlayerState();\n this._destroyed = false;\n this._finished = false;\n this._started = false;\n }\n _resetDomPlayerState() {\n if (this.domPlayer) {\n this.domPlayer.cancel();\n }\n }\n restart() {\n this.reset();\n this.play();\n }\n hasStarted() {\n return this._started;\n }\n destroy() {\n if (!this._destroyed) {\n this._destroyed = true;\n this._resetDomPlayerState();\n this._onFinish();\n if (this._specialStyles) {\n this._specialStyles.destroy();\n }\n this._onDestroyFns.forEach(fn => fn());\n this._onDestroyFns = [];\n }\n }\n setPosition(p) {\n if (this.domPlayer === undefined) {\n this.init();\n }\n this.domPlayer.currentTime = p * this.time;\n }\n getPosition() {\n return this.domPlayer.currentTime / this.time;\n }\n get totalTime() {\n return this._delay + this._duration;\n }\n beforeDestroy() {\n const styles = {};\n if (this.hasStarted()) {\n // note: this code is invoked only when the `play` function was called prior to this\n // (thus `hasStarted` returns true), this implies that the code that initializes\n // `_finalKeyframe` has also been executed and the non-null assertion can be safely used here\n const finalKeyframe = this._finalKeyframe;\n Object.keys(finalKeyframe).forEach(prop => {\n if (prop != 'offset') {\n styles[prop] = this._finished ? finalKeyframe[prop] : computeStyle(this.element, prop);\n }\n });\n }\n this.currentSnapshot = styles;\n }\n /** @internal */\n triggerCallback(phaseName) {\n const methods = phaseName == 'start' ? this._onStartFns : this._onDoneFns;\n methods.forEach(fn => fn());\n methods.length = 0;\n }\n}\n\nclass WebAnimationsDriver {\n validateStyleProperty(prop) {\n return validateStyleProperty(prop);\n }\n matchesElement(_element, _selector) {\n // This method is deprecated and no longer in use so we return false.\n return false;\n }\n containsElement(elm1, elm2) {\n return containsElement(elm1, elm2);\n }\n getParentElement(element) {\n return getParentElement(element);\n }\n query(element, selector, multi) {\n return invokeQuery(element, selector, multi);\n }\n computeStyle(element, prop, defaultValue) {\n return window.getComputedStyle(element)[prop];\n }\n animate(element, keyframes, duration, delay, easing, previousPlayers = []) {\n const fill = delay == 0 ? 'both' : 'forwards';\n const playerOptions = { duration, delay, fill };\n // we check for this to avoid having a null|undefined value be present\n // for the easing (which results in an error for certain browsers #9752)\n if (easing) {\n playerOptions['easing'] = easing;\n }\n const previousStyles = {};\n const previousWebAnimationPlayers = previousPlayers.filter(player => player instanceof WebAnimationsPlayer);\n if (allowPreviousPlayerStylesMerge(duration, delay)) {\n previousWebAnimationPlayers.forEach(player => {\n let styles = player.currentSnapshot;\n Object.keys(styles).forEach(prop => previousStyles[prop] = styles[prop]);\n });\n }\n keyframes = keyframes.map(styles => copyStyles(styles, false));\n keyframes = balancePreviousStylesIntoKeyframes(element, keyframes, previousStyles);\n const specialStyles = packageNonAnimatableStyles(element, keyframes);\n return new WebAnimationsPlayer(element, keyframes, playerOptions, specialStyles);\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 * @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 { AnimationDriver, Animation as ɵAnimation, AnimationEngine as ɵAnimationEngine, AnimationStyleNormalizer as ɵAnimationStyleNormalizer, NoopAnimationDriver as ɵNoopAnimationDriver, NoopAnimationStyleNormalizer as ɵNoopAnimationStyleNormalizer, WebAnimationsDriver as ɵWebAnimationsDriver, WebAnimationsPlayer as ɵWebAnimationsPlayer, WebAnimationsStyleNormalizer as ɵWebAnimationsStyleNormalizer, allowPreviousPlayerStylesMerge as ɵallowPreviousPlayerStylesMerge, containsElement as ɵcontainsElement, getParentElement as ɵgetParentElement, invokeQuery as ɵinvokeQuery, validateStyleProperty as ɵvalidateStyleProperty };\n","/**\n * @license Angular v13.3.0\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport * as i0 from '@angular/core';\nimport { ViewEncapsulation, Injectable, Inject, InjectionToken, RendererFactory2, NgZone, NgModule } from '@angular/core';\nimport { ɵDomRendererFactory2, BrowserModule } from '@angular/platform-browser';\nimport { AnimationBuilder, sequence, AnimationFactory } from '@angular/animations';\nimport * as i1 from '@angular/animations/browser';\nimport { ɵAnimationEngine, ɵWebAnimationsStyleNormalizer, ɵAnimationStyleNormalizer, AnimationDriver, ɵWebAnimationsDriver, ɵNoopAnimationDriver } from '@angular/animations/browser';\nimport { DOCUMENT } from '@angular/common';\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 BrowserAnimationBuilder extends AnimationBuilder {\n constructor(rootRenderer, doc) {\n super();\n this._nextAnimationId = 0;\n const typeData = { id: '0', encapsulation: ViewEncapsulation.None, styles: [], data: { animation: [] } };\n this._renderer = rootRenderer.createRenderer(doc.body, typeData);\n }\n build(animation) {\n const id = this._nextAnimationId.toString();\n this._nextAnimationId++;\n const entry = Array.isArray(animation) ? sequence(animation) : animation;\n issueAnimationCommand(this._renderer, null, id, 'register', [entry]);\n return new BrowserAnimationFactory(id, this._renderer);\n }\n}\nBrowserAnimationBuilder.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: BrowserAnimationBuilder, deps: [{ token: i0.RendererFactory2 }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nBrowserAnimationBuilder.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: BrowserAnimationBuilder });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: BrowserAnimationBuilder, decorators: [{\n type: Injectable\n }], ctorParameters: function () {\n return [{ type: i0.RendererFactory2 }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }];\n } });\nclass BrowserAnimationFactory extends AnimationFactory {\n constructor(_id, _renderer) {\n super();\n this._id = _id;\n this._renderer = _renderer;\n }\n create(element, options) {\n return new RendererAnimationPlayer(this._id, element, options || {}, this._renderer);\n }\n}\nclass RendererAnimationPlayer {\n constructor(id, element, options, _renderer) {\n this.id = id;\n this.element = element;\n this._renderer = _renderer;\n this.parentPlayer = null;\n this._started = false;\n this.totalTime = 0;\n this._command('create', options);\n }\n _listen(eventName, callback) {\n return this._renderer.listen(this.element, `@@${this.id}:${eventName}`, callback);\n }\n _command(command, ...args) {\n return issueAnimationCommand(this._renderer, this.element, this.id, command, args);\n }\n onDone(fn) {\n this._listen('done', fn);\n }\n onStart(fn) {\n this._listen('start', fn);\n }\n onDestroy(fn) {\n this._listen('destroy', fn);\n }\n init() {\n this._command('init');\n }\n hasStarted() {\n return this._started;\n }\n play() {\n this._command('play');\n this._started = true;\n }\n pause() {\n this._command('pause');\n }\n restart() {\n this._command('restart');\n }\n finish() {\n this._command('finish');\n }\n destroy() {\n this._command('destroy');\n }\n reset() {\n this._command('reset');\n this._started = false;\n }\n setPosition(p) {\n this._command('setPosition', p);\n }\n getPosition() {\n var _a, _b;\n return (_b = (_a = this._renderer.engine.players[+this.id]) === null || _a === void 0 ? void 0 : _a.getPosition()) !== null && _b !== void 0 ? _b : 0;\n }\n}\nfunction issueAnimationCommand(renderer, element, id, command, args) {\n return renderer.setProperty(element, `@@${id}:${command}`, args);\n}\n\nconst ANIMATION_PREFIX = '@';\nconst DISABLE_ANIMATIONS_FLAG = '@.disabled';\nclass AnimationRendererFactory {\n constructor(delegate, engine, _zone) {\n this.delegate = delegate;\n this.engine = engine;\n this._zone = _zone;\n this._currentId = 0;\n this._microtaskId = 1;\n this._animationCallbacksBuffer = [];\n this._rendererCache = new Map();\n this._cdRecurDepth = 0;\n this.promise = Promise.resolve(0);\n engine.onRemovalComplete = (element, delegate) => {\n // Note: if a component element has a leave animation, and a host leave animation,\n // the view engine will call `removeChild` for the parent\n // component renderer as well as for the child component renderer.\n // Therefore, we need to check if we already removed the element.\n const parentNode = delegate === null || delegate === void 0 ? void 0 : delegate.parentNode(element);\n if (parentNode) {\n delegate.removeChild(parentNode, element);\n }\n };\n }\n createRenderer(hostElement, type) {\n const EMPTY_NAMESPACE_ID = '';\n // cache the delegates to find out which cached delegate can\n // be used by which cached renderer\n const delegate = this.delegate.createRenderer(hostElement, type);\n if (!hostElement || !type || !type.data || !type.data['animation']) {\n let renderer = this._rendererCache.get(delegate);\n if (!renderer) {\n renderer = new BaseAnimationRenderer(EMPTY_NAMESPACE_ID, delegate, this.engine);\n // only cache this result when the base renderer is used\n this._rendererCache.set(delegate, renderer);\n }\n return renderer;\n }\n const componentId = type.id;\n const namespaceId = type.id + '-' + this._currentId;\n this._currentId++;\n this.engine.register(namespaceId, hostElement);\n const registerTrigger = (trigger) => {\n if (Array.isArray(trigger)) {\n trigger.forEach(registerTrigger);\n }\n else {\n this.engine.registerTrigger(componentId, namespaceId, hostElement, trigger.name, trigger);\n }\n };\n const animationTriggers = type.data['animation'];\n animationTriggers.forEach(registerTrigger);\n return new AnimationRenderer(this, namespaceId, delegate, this.engine);\n }\n begin() {\n this._cdRecurDepth++;\n if (this.delegate.begin) {\n this.delegate.begin();\n }\n }\n _scheduleCountTask() {\n // always use promise to schedule microtask instead of use Zone\n this.promise.then(() => {\n this._microtaskId++;\n });\n }\n /** @internal */\n scheduleListenerCallback(count, fn, data) {\n if (count >= 0 && count < this._microtaskId) {\n this._zone.run(() => fn(data));\n return;\n }\n if (this._animationCallbacksBuffer.length == 0) {\n Promise.resolve(null).then(() => {\n this._zone.run(() => {\n this._animationCallbacksBuffer.forEach(tuple => {\n const [fn, data] = tuple;\n fn(data);\n });\n this._animationCallbacksBuffer = [];\n });\n });\n }\n this._animationCallbacksBuffer.push([fn, data]);\n }\n end() {\n this._cdRecurDepth--;\n // this is to prevent animations from running twice when an inner\n // component does CD when a parent component instead has inserted it\n if (this._cdRecurDepth == 0) {\n this._zone.runOutsideAngular(() => {\n this._scheduleCountTask();\n this.engine.flush(this._microtaskId);\n });\n }\n if (this.delegate.end) {\n this.delegate.end();\n }\n }\n whenRenderingDone() {\n return this.engine.whenRenderingDone();\n }\n}\nAnimationRendererFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: AnimationRendererFactory, deps: [{ token: i0.RendererFactory2 }, { token: i1.ɵAnimationEngine }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nAnimationRendererFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: AnimationRendererFactory });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: AnimationRendererFactory, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: i0.RendererFactory2 }, { type: i1.ɵAnimationEngine }, { type: i0.NgZone }]; } });\nclass BaseAnimationRenderer {\n constructor(namespaceId, delegate, engine) {\n this.namespaceId = namespaceId;\n this.delegate = delegate;\n this.engine = engine;\n this.destroyNode = this.delegate.destroyNode ? (n) => delegate.destroyNode(n) : null;\n }\n get data() {\n return this.delegate.data;\n }\n destroy() {\n this.engine.destroy(this.namespaceId, this.delegate);\n this.delegate.destroy();\n }\n createElement(name, namespace) {\n return this.delegate.createElement(name, namespace);\n }\n createComment(value) {\n return this.delegate.createComment(value);\n }\n createText(value) {\n return this.delegate.createText(value);\n }\n appendChild(parent, newChild) {\n this.delegate.appendChild(parent, newChild);\n this.engine.onInsert(this.namespaceId, newChild, parent, false);\n }\n insertBefore(parent, newChild, refChild, isMove = true) {\n this.delegate.insertBefore(parent, newChild, refChild);\n // If `isMove` true than we should animate this insert.\n this.engine.onInsert(this.namespaceId, newChild, parent, isMove);\n }\n removeChild(parent, oldChild, isHostElement) {\n this.engine.onRemove(this.namespaceId, oldChild, this.delegate, isHostElement);\n }\n selectRootElement(selectorOrNode, preserveContent) {\n return this.delegate.selectRootElement(selectorOrNode, preserveContent);\n }\n parentNode(node) {\n return this.delegate.parentNode(node);\n }\n nextSibling(node) {\n return this.delegate.nextSibling(node);\n }\n setAttribute(el, name, value, namespace) {\n this.delegate.setAttribute(el, name, value, namespace);\n }\n removeAttribute(el, name, namespace) {\n this.delegate.removeAttribute(el, name, namespace);\n }\n addClass(el, name) {\n this.delegate.addClass(el, name);\n }\n removeClass(el, name) {\n this.delegate.removeClass(el, name);\n }\n setStyle(el, style, value, flags) {\n this.delegate.setStyle(el, style, value, flags);\n }\n removeStyle(el, style, flags) {\n this.delegate.removeStyle(el, style, flags);\n }\n setProperty(el, name, value) {\n if (name.charAt(0) == ANIMATION_PREFIX && name == DISABLE_ANIMATIONS_FLAG) {\n this.disableAnimations(el, !!value);\n }\n else {\n this.delegate.setProperty(el, name, value);\n }\n }\n setValue(node, value) {\n this.delegate.setValue(node, value);\n }\n listen(target, eventName, callback) {\n return this.delegate.listen(target, eventName, callback);\n }\n disableAnimations(element, value) {\n this.engine.disableAnimations(element, value);\n }\n}\nclass AnimationRenderer extends BaseAnimationRenderer {\n constructor(factory, namespaceId, delegate, engine) {\n super(namespaceId, delegate, engine);\n this.factory = factory;\n this.namespaceId = namespaceId;\n }\n setProperty(el, name, value) {\n if (name.charAt(0) == ANIMATION_PREFIX) {\n if (name.charAt(1) == '.' && name == DISABLE_ANIMATIONS_FLAG) {\n value = value === undefined ? true : !!value;\n this.disableAnimations(el, value);\n }\n else {\n this.engine.process(this.namespaceId, el, name.substr(1), value);\n }\n }\n else {\n this.delegate.setProperty(el, name, value);\n }\n }\n listen(target, eventName, callback) {\n if (eventName.charAt(0) == ANIMATION_PREFIX) {\n const element = resolveElementFromTarget(target);\n let name = eventName.substr(1);\n let phase = '';\n // @listener.phase is for trigger animation callbacks\n // @@listener is for animation builder callbacks\n if (name.charAt(0) != ANIMATION_PREFIX) {\n [name, phase] = parseTriggerCallbackName(name);\n }\n return this.engine.listen(this.namespaceId, element, name, phase, event => {\n const countId = event['_data'] || -1;\n this.factory.scheduleListenerCallback(countId, callback, event);\n });\n }\n return this.delegate.listen(target, eventName, callback);\n }\n}\nfunction resolveElementFromTarget(target) {\n switch (target) {\n case 'body':\n return document.body;\n case 'document':\n return document;\n case 'window':\n return window;\n default:\n return target;\n }\n}\nfunction parseTriggerCallbackName(triggerName) {\n const dotIndex = triggerName.indexOf('.');\n const trigger = triggerName.substring(0, dotIndex);\n const phase = triggerName.substr(dotIndex + 1);\n return [trigger, phase];\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 InjectableAnimationEngine extends ɵAnimationEngine {\n constructor(doc, driver, normalizer) {\n super(doc.body, driver, normalizer);\n }\n ngOnDestroy() {\n this.flush();\n }\n}\nInjectableAnimationEngine.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: InjectableAnimationEngine, deps: [{ token: DOCUMENT }, { token: i1.AnimationDriver }, { token: i1.ɵAnimationStyleNormalizer }], target: i0.ɵɵFactoryTarget.Injectable });\nInjectableAnimationEngine.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: InjectableAnimationEngine });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: InjectableAnimationEngine, decorators: [{\n type: Injectable\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i1.AnimationDriver }, { type: i1.ɵAnimationStyleNormalizer }];\n } });\nfunction instantiateDefaultStyleNormalizer() {\n return new ɵWebAnimationsStyleNormalizer();\n}\nfunction instantiateRendererFactory(renderer, engine, zone) {\n return new AnimationRendererFactory(renderer, engine, zone);\n}\n/**\n * @publicApi\n */\nconst ANIMATION_MODULE_TYPE = new InjectionToken('AnimationModuleType');\nconst SHARED_ANIMATION_PROVIDERS = [\n { provide: AnimationBuilder, useClass: BrowserAnimationBuilder },\n { provide: ɵAnimationStyleNormalizer, useFactory: instantiateDefaultStyleNormalizer },\n { provide: ɵAnimationEngine, useClass: InjectableAnimationEngine }, {\n provide: RendererFactory2,\n useFactory: instantiateRendererFactory,\n deps: [ɵDomRendererFactory2, ɵAnimationEngine, NgZone]\n }\n];\n/**\n * Separate providers from the actual module so that we can do a local modification in Google3 to\n * include them in the BrowserModule.\n */\nconst BROWSER_ANIMATIONS_PROVIDERS = [\n { provide: AnimationDriver, useFactory: () => new ɵWebAnimationsDriver() },\n { provide: ANIMATION_MODULE_TYPE, useValue: 'BrowserAnimations' }, ...SHARED_ANIMATION_PROVIDERS\n];\n/**\n * Separate providers from the actual module so that we can do a local modification in Google3 to\n * include them in the BrowserTestingModule.\n */\nconst BROWSER_NOOP_ANIMATIONS_PROVIDERS = [\n { provide: AnimationDriver, useClass: ɵNoopAnimationDriver },\n { provide: ANIMATION_MODULE_TYPE, useValue: 'NoopAnimations' }, ...SHARED_ANIMATION_PROVIDERS\n];\n\n/**\n * @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 * Exports `BrowserModule` with additional [dependency-injection providers](guide/glossary#provider)\n * for use with animations. See [Animations](guide/animations).\n * @publicApi\n */\nclass BrowserAnimationsModule {\n /**\n * Configures the module based on the specified object.\n *\n * @param config Object used to configure the behavior of the `BrowserAnimationsModule`.\n * @see `BrowserAnimationsModuleConfig`\n *\n * @usageNotes\n * When registering the `BrowserAnimationsModule`, you can use the `withConfig`\n * function as follows:\n * ```\n * @NgModule({\n * imports: [BrowserAnimationsModule.withConfig(config)]\n * })\n * class MyNgModule {}\n * ```\n */\n static withConfig(config) {\n return {\n ngModule: BrowserAnimationsModule,\n providers: config.disableAnimations ? BROWSER_NOOP_ANIMATIONS_PROVIDERS :\n BROWSER_ANIMATIONS_PROVIDERS\n };\n }\n}\nBrowserAnimationsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: BrowserAnimationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nBrowserAnimationsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: BrowserAnimationsModule, exports: [BrowserModule] });\nBrowserAnimationsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: BrowserAnimationsModule, providers: BROWSER_ANIMATIONS_PROVIDERS, imports: [BrowserModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: BrowserAnimationsModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [BrowserModule],\n providers: BROWSER_ANIMATIONS_PROVIDERS,\n }]\n }] });\n/**\n * A null player that must be imported to allow disabling of animations.\n * @publicApi\n */\nclass NoopAnimationsModule {\n}\nNoopAnimationsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: NoopAnimationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNoopAnimationsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: NoopAnimationsModule, exports: [BrowserModule] });\nNoopAnimationsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: NoopAnimationsModule, providers: BROWSER_NOOP_ANIMATIONS_PROVIDERS, imports: [BrowserModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: NoopAnimationsModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [BrowserModule],\n providers: BROWSER_NOOP_ANIMATIONS_PROVIDERS,\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 * @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 { ANIMATION_MODULE_TYPE, BrowserAnimationsModule, NoopAnimationsModule, AnimationRenderer as ɵAnimationRenderer, AnimationRendererFactory as ɵAnimationRendererFactory, BrowserAnimationBuilder as ɵBrowserAnimationBuilder, BrowserAnimationFactory as ɵBrowserAnimationFactory, InjectableAnimationEngine as ɵInjectableAnimationEngine };\n","import { InjectionToken, Injectable, Optional, Inject, NgModule, defineInjectable, inject } from '@angular/core';\nimport { Router, NavigationStart, NavigationEnd, NavigationCancel, NavigationError } from '@angular/router';\nimport { of } from 'rxjs';\nimport { tap, delay, switchMap, filter } from 'rxjs/operators';\nimport { NgProgress } from '@ngx-progressbar/core';\n\n/**\r\n * @fileoverview added by tsickle\r\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\r\n */\r\n/** @type {?} */\r\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@ngx-progressbar/core';\nimport * as ɵngcc2 from '@angular/router';\nconst CONFIG = new InjectionToken('config');\n\n/**\r\n * @fileoverview added by tsickle\r\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\r\n */\r\n/**\r\n * Check if a router event type exists in an array of router event types\r\n * @param {?} routerEvent\r\n * @param {?} events\r\n * @return {?}\r\n */\r\nfunction eventExists(routerEvent, events) {\r\n /** @type {?} */\r\n let res = false;\r\n events.map((event) => res = res || routerEvent instanceof event);\r\n return res;\r\n}\r\nclass NgProgressRouter {\r\n /**\r\n * @param {?} progress\r\n * @param {?} router\r\n * @param {?} config\r\n */\r\n constructor(progress, router, config) {\r\n this._config = {\r\n id: 'root',\r\n delay: 0,\r\n startEvents: [NavigationStart],\r\n completeEvents: [NavigationEnd, NavigationCancel, NavigationError]\r\n };\r\n this._config = Object.assign({}, this._config, config);\r\n /** @type {?} */\r\n const progressRef = progress.ref(this._config.id);\r\n /** @type {?} */\r\n const startProgress = of({}).pipe(tap(() => progressRef.start()));\r\n /** @type {?} */\r\n const completeProgress = of({}).pipe(delay(this._config.delay), tap(() => progressRef.complete()));\r\n /** @type {?} */\r\n const filterEvents = [...this._config.startEvents, ...this._config.completeEvents];\r\n router.events.pipe(filter((event) => eventExists(event, filterEvents)), switchMap((event) => eventExists(event, this._config.startEvents) ? startProgress : completeProgress)).subscribe();\r\n }\r\n}\nNgProgressRouter.ɵfac = function NgProgressRouter_Factory(t) { return new (t || NgProgressRouter)(ɵngcc0.ɵɵinject(ɵngcc1.NgProgress), ɵngcc0.ɵɵinject(ɵngcc2.Router), ɵngcc0.ɵɵinject(CONFIG, 8)); };\nNgProgressRouter.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgProgressRouter, factory: NgProgressRouter.ɵfac, providedIn: 'root' });\r\n/** @nocollapse */\r\nNgProgressRouter.ctorParameters = () => [\r\n { type: NgProgress },\r\n { type: Router },\r\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [CONFIG,] }] }\r\n];\r\n/** @nocollapse */ NgProgressRouter.ngInjectableDef = defineInjectable({ factory: function NgProgressRouter_Factory() { return new NgProgressRouter(inject(NgProgress), inject(Router), inject(CONFIG, 8)); }, token: NgProgressRouter, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgProgressRouter, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], function () { return [{ type: ɵngcc1.NgProgress }, { type: ɵngcc2.Router }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [CONFIG]\n }] }]; }, null); })();\n\n/**\r\n * @fileoverview added by tsickle\r\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\r\n */\r\nclass NgProgressRouterModule {\r\n /**\r\n * @param {?} ngProgressRouter\r\n */\r\n constructor(ngProgressRouter) {\r\n }\r\n /**\r\n * @param {?=} config\r\n * @return {?}\r\n */\r\n static forRoot(config) {\r\n return {\r\n ngModule: NgProgressRouterModule,\r\n providers: [\r\n { provide: CONFIG, useValue: config }\r\n ]\r\n };\r\n }\r\n}\nNgProgressRouterModule.ɵfac = function NgProgressRouterModule_Factory(t) { return new (t || NgProgressRouterModule)(ɵngcc0.ɵɵinject(NgProgressRouter)); };\nNgProgressRouterModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgProgressRouterModule });\nNgProgressRouterModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\r\n/** @nocollapse */\r\nNgProgressRouterModule.ctorParameters = () => [\r\n { type: NgProgressRouter }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgProgressRouterModule, [{\n type: NgModule,\n args: [{}]\n }], function () { return [{ type: NgProgressRouter }]; }, null); })();\n\n/**\r\n * @fileoverview added by tsickle\r\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\r\n */\n\n/**\r\n * @fileoverview added by tsickle\r\n * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc\r\n */\n\nexport { NgProgressRouterModule, CONFIG as ɵc, NgProgressRouter as ɵa };\n\n","import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { NgProgress, NgProgressRef } from '@ngx-progressbar/core';\nimport { Observable } from 'rxjs';\n\n@Injectable()\nexport class LoaderInterceptor implements HttpInterceptor {\n private requests: HttpRequest[] = [];\n private progressRef: NgProgressRef;\n\n constructor(private ngProgress: NgProgress) {}\n\n intercept(req: HttpRequest, next: HttpHandler): Observable> {\n this.requests.push(req);\n this.updateLoadingProgress();\n return new Observable((observer) => {\n const subscription = next.handle(req).subscribe(\n (event) => {\n if (event instanceof HttpResponse) {\n this.removeRequest(req);\n observer.next(event);\n }\n },\n (err) => {\n this.removeRequest(req);\n observer.error(err);\n },\n () => {\n this.removeRequest(req);\n observer.complete();\n }\n );\n return () => {\n this.removeRequest(req);\n subscription.unsubscribe();\n };\n });\n }\n\n private removeRequest(req: HttpRequest): void {\n const requestIndex = this.requests.indexOf(req);\n if (requestIndex >= 0) {\n this.requests.splice(requestIndex, 1);\n }\n this.updateLoadingProgress();\n }\n\n private updateLoadingProgress(): void {\n this.progressRef = this.ngProgress.ref();\n if (this.requests.length > 0) {\n this.progressRef.start();\n }\n if (this.requests.length <= 0) {\n this.progressRef.complete();\n }\n }\n}\n","import { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { ToasterService } from 'angular2-toaster';\nimport { BehaviorSubject, Observable, throwError } from 'rxjs';\nimport { catchError, filter, mergeMap, switchMap, take } from 'rxjs/operators';\n\nimport { AuthService, TokenValidityState } from 'src/app/_core/authorization/auth.service';\nimport { TranslationsService } from 'src/app/_core/translations.service';\n\n@Injectable()\nexport class TokenInterceptor implements HttpInterceptor {\n private refreshOnGoingSubject: BehaviorSubject = new BehaviorSubject(undefined);\n private whiteList = [\n // routes that don't require token\n 'base',\n 'login',\n 'login_365',\n 'refresh-365',\n 'pool.agrdynamics.com',\n 'googleapis.com'\n ];\n\n constructor(private toasterService: ToasterService, private authService: AuthService, private router: Router) {}\n\n intercept(req: HttpRequest, next: HttpHandler): Observable> {\n if (!this.requiresToken(req.url)) {\n return this.handleState(req, next);\n }\n\n const state = this.authService.checkTokenValidity();\n switch (state) {\n case TokenValidityState.expired:\n return this.rerouteLogin(req, next);\n case TokenValidityState.requiresRefresh:\n return this.refreshToken(req, next);\n case TokenValidityState.refreshing:\n return this.waitForRefresh(req, next);\n case TokenValidityState.valid:\n return this.handleState(this.addToken(req), next);\n default:\n return this.handleState(req, next);\n }\n }\n\n // private:\n\n private requiresToken(url: string): boolean {\n if (!url.includes('api')) {\n return false;\n }\n\n return !this.whiteList.some((entry) => {\n return url.includes(entry);\n });\n }\n\n // eslint-disable-next-line max-lines-per-function\n private handleState(req: HttpRequest, next: HttpHandler): Observable> {\n if (req.url.includes('pool.agrdynamics.com')) {\n return next.handle(req);\n }\n // eslint-disable-next-line complexity\n return next.handle(req).pipe(\n // eslint-disable-next-line complexity\n catchError((error: HttpErrorResponse) => {\n if (['/login', 'refresh_365'].some((substring) => this.router.url.includes(substring))) {\n return throwError(error);\n }\n switch (error.status) {\n case 401:\n return this.authService.isRefreshingToken ? this.waitForRefresh(req, next) : this.refreshToken(req, next);\n case 403:\n if (!this.authService.isRefreshingToken) {\n const restrictedAccess = TranslationsService.get('RESTRICTED_ACCESS');\n const noPermission = TranslationsService.get('YOU_DO_NOT_HAVE_PERMISSION_TO_COMPLETE_ACTION');\n const resource = TranslationsService.get('RESOURCE');\n this.toasterService.pop('error', restrictedAccess, `${noPermission} ${resource}: ${error.url}`);\n }\n break;\n default:\n if (this.skipReportingError(error)) {\n break;\n }\n const message = error.error?.Message || error.error || error.message || error;\n try {\n if (typeof message !== 'string') {\n this.toasterService.pop('error', TranslationsService.get('OOOOPS'), TranslationsService.get('AN_ERROR_HAS_OCCURRED'));\n } else {\n this.toasterService.pop('error', TranslationsService.get('OOOOPS'), TranslationsService.get(message));\n }\n } catch (error) {}\n }\n return throwError(error);\n }) as any\n );\n }\n\n private skipReportingError(error: HttpErrorResponse): boolean {\n // When writing Advanced filter query, 500 error is expected\n return this.authService.isRefreshingToken || error.url.includes('pool.agrdynamics.com') || error.url.includes('mbe_reports/-999');\n }\n\n private rerouteLogin(req: HttpRequest, next: HttpHandler): Observable> {\n return next.handle(req).pipe(\n switchMap(() => {\n this.authService.logout();\n this.router.navigate(['/login']);\n return next.handle(req);\n }),\n catchError(() => {\n this.authService.logout();\n this.router.navigate(['/login']);\n return next.handle(req);\n })\n );\n }\n\n private refreshToken(req: HttpRequest, next: HttpHandler): Observable> {\n return this.authService.refreshToken().pipe(\n mergeMap((success) => {\n this.refreshOnGoingSubject.next(success);\n return next.handle(this.addToken(req));\n }),\n catchError((error) => {\n this.refreshOnGoingSubject.error(error);\n return this.rerouteLogin(req, next);\n })\n );\n }\n\n private waitForRefresh(req: HttpRequest, next: HttpHandler): Observable> {\n return this.refreshOnGoingSubject.pipe(\n filter((result) => result),\n take(1),\n switchMap(() => this.intercept(req, next)),\n catchError(() => this.intercept(req, next))\n );\n }\n\n private addToken(request: HttpRequest): HttpRequest {\n if (!this.authService.token) {\n return request;\n }\n return request.clone({\n headers: request.headers.set('Authorization', `Bearer ${this.authService.token}`)\n });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { NgModule, Optional, SkipSelf } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\nimport { TranslateModule } from '@ngx-translate/core';\n\nimport { AuthService } from 'src/app/_core/authorization/auth.service';\nimport { FeatAuthGuard } from 'src/app/_core/authorization/feat-auth-guard.service';\nimport { FormatService } from 'src/app/_core/format.service';\nimport { LoaderInterceptor } from 'src/app/_core/loader.interceptor';\nimport { NoAccessComponent } from 'src/app/_core/403-and-404/no-access.component';\nimport { NotFoundComponent } from 'src/app/_core/403-and-404/not-found.component';\nimport { SessionService } from 'src/app/_core/session.service';\nimport { SettingsService } from 'src/app/_core/settings/settings.service';\nimport { SignalRService } from 'src/app/_core/signal-r.service';\nimport { TimezoneService } from 'src/app/_core/timezone.service';\nimport { TokenInterceptor } from 'src/app/_core/token.interceptor';\nimport { SharedModule } from 'src/app/_shared/shared.module';\n\n@NgModule({\n imports: [SharedModule, CommonModule, FormsModule, ReactiveFormsModule, RouterModule, TranslateModule.forChild(), NgbModule],\n declarations: [NoAccessComponent, NotFoundComponent],\n providers: [\n FormatService,\n AuthService,\n FeatAuthGuard,\n LoaderInterceptor,\n SessionService,\n SignalRService,\n SettingsService,\n TimezoneService,\n {\n provide: HTTP_INTERCEPTORS,\n useClass: TokenInterceptor,\n multi: true\n },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: LoaderInterceptor,\n multi: true\n }\n ]\n})\nexport class CoreModule {\n constructor(@Optional() @SkipSelf() parentModule: CoreModule) {\n throwIfAlreadyLoaded(parentModule, 'CoreModule');\n }\n}\n\n/**\n * Make sure the core module will not be loaded more than once for the app.\n *\n * Code from the Angular Styleguide:\n * https://angular.io/guide/styleguide#prevent-re-import-of-the-core-module\n */\nfunction throwIfAlreadyLoaded(parentModule: any, moduleName: string): void {\n if (parentModule) {\n throw new Error(`${moduleName} has already been loaded. Import Core modules in the AppModule only.`);\n }\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'agr-no-access',\n templateUrl: './no-access.component.html',\n styleUrls: ['./403-and-404.scss']\n})\nexport class NoAccessComponent implements OnInit {\n constructor() {}\n\n ngOnInit(): void {}\n}\n","
    \n
    \n \n\n
    \n \n

    {{ 'RESTRICTED_ACCESS' | agrTranslate }}

    \n

    {{ 'THIS_FEATURE_IS_NOT_ALLOWED' | agrTranslate }}

    \n \n \n {{ 'GO_BACK' | agrTranslate }}\n \n ...{{ 'GO_TO_HOME_PAGE' | agrTranslate }}\n
    \n
    \n
    \n","
    \n
    \n \"App\n\n
    \n
    \n LOGIN_WITH_YOUR_MICROSOFT_ACCOUNT\n
    \n\n
    \n
    \n \n \n \n \n
    \n
    \n\n
    \n
    \n \n \n \n \n
    \n\n
    \n LOGIN_UNSUCCESSFUL \n
    \n \n FORGOT_YOUR_PASSWORD\n \n
    \n PLEASE_CONTACT_ADMIN_TO_RESET_YOUR_PASSWORD\n
    \n
    \n
    \n\n
    \n \n
    \n
    \n\n
    \n {{ appInfo.project }}\n
    \n
    \n
    \n {{ 'CLIENT' | agrTranslate }}: {{ appInfo.client.version }}\n - {{ appInfo.client.buildInfo }}\n
    \n
    \n API: {{ appInfo.api.version }}\n - {{ appInfo.api.buildSuffix }}\n
    \n
    {{ 'DATABASE' | agrTranslate }}: {{ appInfo.database.version }}
    \n
    \n\n © AGR Dynamics 2012 - {{ date.getFullYear() }}\n
    \n
    \n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { ToasterService } from 'angular2-toaster';\nimport { Observable, of } from 'rxjs';\n\nimport { AuthService } from 'src/app/_core/authorization/auth.service';\nimport { GlobalEventsService } from 'src/app/_core/global-events.service';\nimport { Auth365Config } from 'src/app/_core/models/base-config.model';\nimport { SessionService } from 'src/app/_core/session.service';\nimport { SettingsService } from 'src/app/_core/settings/settings.service';\nimport { SignalRService } from 'src/app/_core/signal-r.service';\nimport { StoreService } from 'src/app/_core/store.service';\nimport { TranslationsService } from 'src/app/_core/translations.service';\nimport { AppInfo } from 'src/app/_core/version/app-info.model';\nimport { VersionService } from 'src/app/_core/version/version.service';\n\ndeclare global {\n // eslint-disable-next-line no-unused-vars\n interface Window {\n Userlane: any;\n }\n}\n\ndeclare let pendo: any;\n\n@Component({\n selector: 'agr-login',\n templateUrl: './login.component.html',\n styleUrls: ['./login.component.scss']\n})\nexport class LoginComponent implements OnInit {\n date = new Date();\n loginError: boolean;\n user: string;\n password: string;\n showLostPasswordMsg: boolean;\n\n showVersionDetails = false;\n appInfo = new AppInfo();\n\n constructor(\n public sessionService: SessionService,\n private versionService: VersionService,\n private activatedRoute: ActivatedRoute,\n private authService: AuthService,\n private globalEventsService: GlobalEventsService,\n private router: Router,\n private settingsService: SettingsService,\n private storeService: StoreService,\n private translationsService: TranslationsService,\n private toasterService: ToasterService,\n private signalRService: SignalRService\n ) {}\n\n ngOnInit(): void {\n this.globalEventsService.hideNavBar();\n window.Userlane('hide');\n this.checkLogout();\n this.setReturnUrl();\n this.getAppInfo();\n if (this.sessionService.auth365Config) {\n this.check365Authentication();\n } else if (this.authService.isLoggedIn()) {\n this.enterApp();\n }\n }\n\n checkLogout(): void {\n if (this.activatedRoute.snapshot.queryParamMap.get('action') !== 'LOGOUT') {\n return;\n }\n this.sessionService.clearUserData();\n if (!this.sessionService.auth365Config) {\n this.router.navigateByUrl('/login');\n }\n }\n\n setReturnUrl(): void {\n const returnUrl = this.activatedRoute.snapshot.queryParamMap.get('returnUrl');\n if (returnUrl) {\n this.sessionService.returnUrl = returnUrl !== '/' ? returnUrl : undefined;\n }\n }\n\n getAppInfo(): void {\n this.versionService.getAppInfo().subscribe((appInfo) => {\n this.appInfo = appInfo;\n if (this.appInfo.hasNoMatchingProject()) {\n this.showVersionDetails = true;\n }\n });\n }\n\n check365Authentication(): void {\n if (this.activatedRoute.snapshot.queryParamMap.get('action') === 'LOGOUT') {\n return;\n }\n const code = this.activatedRoute.snapshot.queryParamMap.get('code');\n if (code) {\n this.authService.auth365Login(code, this.getAzureRedirectUrl()).subscribe(\n (ok) => {\n if (ok) {\n this.enterApp();\n }\n },\n () => {\n this.toasterService.pop('info', TranslationsService.get('MICROSOFT_LOGIN_ERROR_MESSAGE'));\n this.loginError = true;\n }\n );\n return;\n }\n\n this.authService.isLoggedIn() ? this.enterApp() : (document.location.href = this.buildAuth365Url(this.sessionService.auth365Config));\n }\n\n //////////////////////////////////////////\n\n login(credentials: any): void {\n if (this.sessionService.auth365Config) {\n document.location.href = this.buildAuth365Url(this.sessionService.auth365Config);\n return;\n }\n if (!credentials.user || !credentials.password) {\n return;\n }\n this.authService.classicLogin(credentials.user, credentials.password).subscribe(\n (ok) => {\n if (ok) {\n this.enterApp();\n }\n },\n () => {\n this.loginError = true;\n }\n );\n }\n\n // private\n\n private enterApp(): void {\n this.storeService.remove('navigation'); // Refresh the navigation in local storage\n this.globalEventsService.showNavBar();\n this.signalRService.register();\n this.checkLanguage().subscribe((hasChanged) => {\n this.router.navigate([this.sessionService.returnUrl || this.settingsService.homePage()]);\n this.sessionService.returnUrl = undefined;\n this.initializeUserlane();\n this.initializePendo();\n if (hasChanged) {\n location.reload();\n }\n });\n }\n\n private initializePendo(): void {\n // in your authentication promise handler or callback\n const user = this.sessionService.user;\n\n pendo.initialize({\n visitor: {\n id: `${user.id}:${user.email}`, // Required if user is logged in\n email: user.email, // Recommended if using Pendo Feedback, or NPS Email\n full_name: user.name, // Recommended if using Pendo Feedback\n // role: // Optional\n\n // You can add any additional visitor level key-values here,\n // as long as it's not one of the above reserved names.\n username: user.username\n },\n account: {\n id: user.email.split('@')[1]\n }\n });\n }\n\n private initializeUserlane(): void {\n // identify the user for Userlane\n const currentUser = this.sessionService.user;\n window.Userlane('identify', currentUser.id, {});\n // initialize Userlane with your Property ID\n window.Userlane('init', 'zr65v');\n }\n\n /**\n * Check if user has different language than is currently active.\n */\n private checkLanguage(): Observable {\n const userLanguage = this.sessionService.user.language || this.settingsService.defaultLanguage();\n const activeLanguage = this.translationsService.getLanguage();\n\n if (userLanguage !== activeLanguage) {\n return this.translationsService.setTranslations(userLanguage);\n }\n return of(false);\n }\n\n private buildAuth365Url(auth365Info: Auth365Config): string {\n return `${auth365Info.tokenEndpoint}/authorize?\\\n client_id=${auth365Info.appId}\\\n &response_type=code&response_mode=query&prompt=select_account\\\n &redirect_uri=${encodeURI(this.getAzureRedirectUrl())}`;\n }\n\n private getAzureRedirectUrl(): string {\n return document.location.port\n ? `${document.location.protocol}//${document.location.hostname}:${document.location.port}/login`\n : `${document.location.protocol}//${document.location.hostname}/login`;\n }\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'agr-not-found',\n templateUrl: './not-found.component.html',\n styleUrls: ['./403-and-404.scss']\n})\nexport class NotFoundComponent implements OnInit {\n constructor() {}\n\n ngOnInit(): void {}\n}\n","
    \n
    \n \n\n
    \n \n

    {{ 'PAGE_NOT_FOUND' | agrTranslate }}

    \n

    {{ 'SORRY_THE_PAGE_YOU_REQUESTED_WAS_NOT_FOUND' | agrTranslate }}

    \n \n \n {{ 'GO_BACK' | agrTranslate }}\n \n ...{{ 'GO_TO_HOME_PAGE' | agrTranslate }}\n
    \n
    \n
    \n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\n\nimport { FeatAuthGuard } from 'src/app/_core/authorization/feat-auth-guard.service';\nimport { NoAccessComponent } from 'src/app/_core/403-and-404/no-access.component';\nimport { ItemCardComponent } from 'src/app/item-card/item-card.component';\nimport { LoginComponent } from 'src/app/login/login.component';\nimport { NotFoundComponent } from 'src/app/_core/403-and-404/not-found.component';\n\nexport const routes: Routes = [\n { path: '', redirectTo: 'login', pathMatch: 'full' },\n { path: 'login', component: LoginComponent },\n { path: 'dashboard', loadChildren: () => import('./dashboard/dashboard.module').then((x) => x.DashboardModule) },\n { path: 'items', loadChildren: () => import('./reports/reports.module').then((x) => x.ReportsModule) },\n { path: 'selected-item', component: ItemCardComponent },\n { path: 'orders', loadChildren: () => import('./orders/orders.module').then((x) => x.OrdersModule) },\n { path: 'scheduler', loadChildren: () => import('./scheduler/scheduler.module').then((x) => x.SchedulerModule) },\n { path: 'reports', loadChildren: () => import('./reports/reports.module').then((x) => x.ReportsModule) },\n { path: 'settings', loadChildren: () => import('./settings/settings.module').then((x) => x.SettingsModule) },\n { path: 'executions', loadChildren: () => import('./executions/executions.module').then((x) => x.ExecutionsModule) },\n { path: 'workspaces', loadChildren: () => import('./workspaces/workspaces.module').then((x) => x.WorkspacesModule) },\n { path: 'erp-setup', loadChildren: () => import('./setup/setup.module').then((x) => x.SetupModule) },\n { path: 'translations', loadChildren: () => import('./translations/translations.module').then((x) => x.TranslationsModule) },\n { path: 'no-access', component: NoAccessComponent },\n { path: 'not-found', component: NotFoundComponent },\n { path: '**', component: NotFoundComponent }\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes, { relativeLinkResolution: 'legacy' })],\n providers: [FeatAuthGuard],\n exports: [RouterModule]\n})\nexport class AppRoutingModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\n\nimport { SharedModule } from 'src/app/_shared/shared.module';\nimport { AboutModalComponent } from 'src/app/nav/about-modal/about-modal.component';\nimport { ClearDataModalComponent } from 'src/app/nav/clear-data-modal/clear-data-modal.component';\nimport { CustomActionsComponent } from 'src/app/nav/custom-actions/custom-actions.component';\nimport { ExecutionListComponent } from 'src/app/nav/execution-list/execution-list.component';\nimport { MyProfileComponent } from 'src/app/nav/my-profile/my-profile.component';\nimport { NavComponent } from 'src/app/nav/nav.component';\n\n@NgModule({\n declarations: [\n AboutModalComponent,\n ClearDataModalComponent,\n CustomActionsComponent,\n ExecutionListComponent,\n MyProfileComponent,\n NavComponent\n ],\n imports: [CommonModule, FormsModule, NgbModule, ReactiveFormsModule, RouterModule, SharedModule]\n})\nexport class NavModule {}\n","// Declarations\nimport { AppComponent } from 'src/app/app.component';\nimport { LoginComponent } from 'src/app/login/login.component';\n\n// Angular imports\nimport { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { APP_INITIALIZER, NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { BrowserModule, Title } from '@angular/platform-browser';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\n\n// 3rd party imports\nimport { NgProgressModule } from '@ngx-progressbar/core';\nimport { NgProgressRouterModule } from '@ngx-progressbar/router';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ToasterModule } from 'angular2-toaster';\n\n// AGR Modules\nimport { CoreModule } from 'src/app/_core/core.module';\nimport { FromNowPipe } from 'src/app/_shared/pipes/from-now.pipe';\nimport { TranslatePipe } from 'src/app/_shared/pipes/translate.pipe';\nimport { SharedModule } from 'src/app/_shared/shared.module';\nimport { AppRoutingModule } from 'src/app/app-routing.module';\nimport { ItemCardModule } from 'src/app/item-card/item-card.module';\nimport { NavModule } from 'src/app/nav/nav.module';\n\n// App Init Services\nimport { SessionService } from 'src/app/_core/session.service';\nimport { SettingsService } from 'src/app/_core/settings/settings.service';\nimport { TimezoneService } from 'src/app/_core/timezone.service';\nimport { TranslationsService } from 'src/app/_core/translations.service';\n\nexport function appInit(sessionService: SessionService, settingsService: SettingsService, translationsService: TranslationsService): {} {\n return async () => {\n await sessionService.initialize().then(async () => {\n await settingsService.initialize().then(async () => {\n await translationsService.initialize();\n });\n });\n };\n}\n\n@NgModule({\n declarations: [AppComponent, LoginComponent],\n imports: [\n AppRoutingModule,\n BrowserAnimationsModule,\n BrowserModule,\n CoreModule,\n CommonModule,\n FormsModule,\n HttpClientModule,\n NavModule,\n SharedModule,\n ToasterModule.forRoot(),\n TranslateModule.forRoot({ useDefaultLang: true }),\n NgProgressModule,\n NgProgressRouterModule,\n ItemCardModule\n ],\n providers: [\n Title,\n TranslatePipe,\n FromNowPipe,\n {\n provide: APP_INITIALIZER,\n useFactory: appInit,\n deps: [SessionService, SettingsService, TranslationsService, TimezoneService],\n multi: true\n }\n ],\n bootstrap: [AppComponent]\n})\nexport class AppModule {}\n","import { LicenseManager } from '@ag-grid-enterprise/all-modules';\nimport { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from 'src/app/app.module';\nimport { environment } from 'src/environments/environment';\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic()\n .bootstrapModule(AppModule)\n .catch((err) => {\n // eslint-disable-next-line no-console\n console.log(err);\n });\n\n// The AG-Grid License\n// Also added in session.service.spec.ts for unit tests\nLicenseManager.setLicenseKey(\n // eslint-disable-next-line max-len\n 'CompanyName=App Dynamic ehf.,LicensedApplication=AGR5,LicenseType=SingleApplication,LicensedConcurrentDeveloperCount=4,LicensedProductionInstancesCount=73,AssetReference=AG-021201,ExpiryDate=28_November_2022_[v2]_MTY2OTU5MzYwMDAwMA==93994d2c45951e8aa0f08f86dca9cb3b'\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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\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 var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(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, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, 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\n/** @deprecated */\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\n/** @deprecated */\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 __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\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\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\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 (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, 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, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import { __rest, __decorate, __metadata } from 'tslib';\nimport { ContentChildren, QueryList, Input, Component, NgZone, Injectable, EventEmitter, ElementRef, ViewContainerRef, ComponentFactoryResolver, Output, ViewEncapsulation, ANALYZE_FOR_ENTRY_COMPONENTS, NgModule } from '@angular/core';\nimport { VanillaFrameworkOverrides, AgPromise, BaseComponentWrapper, ComponentUtil, Grid } from '@ag-grid-community/core';\n\nimport * as ɵngcc0 from '@angular/core';\nvar AgGridColumn_1;\nlet AgGridColumn = AgGridColumn_1 = class AgGridColumn {\n hasChildColumns() {\n if (this.childColumns && this.childColumns.length > 0) {\n // necessary because of https://github.com/angular/angular/issues/10098\n return !(this.childColumns.length === 1 && this.childColumns.first === this);\n }\n return false;\n }\n toColDef() {\n let colDef = this.createColDefFromGridColumn(this);\n if (this.hasChildColumns()) {\n colDef[\"children\"] = this.getChildColDefs(this.childColumns);\n }\n return colDef;\n }\n getChildColDefs(childColumns) {\n return childColumns\n // necessary because of https://github.com/angular/angular/issues/10098\n .filter(column => !column.hasChildColumns())\n .map((column) => {\n return column.toColDef();\n });\n }\n createColDefFromGridColumn(from) {\n let { childColumns } = from, colDef = __rest(from, [\"childColumns\"]);\n return colDef;\n }\n};\nAgGridColumn.ɵfac = function AgGridColumn_Factory(t) { return new (t || AgGridColumn)(); };\nAgGridColumn.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: AgGridColumn, selectors: [[\"ag-grid-column\"]], contentQueries: function AgGridColumn_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, AgGridColumn_1, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.childColumns = _t);\n } }, inputs: { filterFramework: \"filterFramework\", filterParams: \"filterParams\", floatingFilterComponent: \"floatingFilterComponent\", floatingFilterComponentParams: \"floatingFilterComponentParams\", floatingFilterComponentFramework: \"floatingFilterComponentFramework\", floatingFilterFramework: \"floatingFilterFramework\", filter: \"filter\", headerName: \"headerName\", headerValueGetter: \"headerValueGetter\", headerTooltip: \"headerTooltip\", headerClass: \"headerClass\", suppressHeaderKeyboardEvent: \"suppressHeaderKeyboardEvent\", columnGroupShow: \"columnGroupShow\", toolPanelClass: \"toolPanelClass\", suppressColumnsToolPanel: \"suppressColumnsToolPanel\", suppressFiltersToolPanel: \"suppressFiltersToolPanel\", tooltipComponent: \"tooltipComponent\", tooltipComponentFramework: \"tooltipComponentFramework\", tooltipComponentParams: \"tooltipComponentParams\", children: \"children\", groupId: \"groupId\", openByDefault: \"openByDefault\", marryChildren: \"marryChildren\", headerGroupComponent: \"headerGroupComponent\", headerGroupComponentFramework: \"headerGroupComponentFramework\", headerGroupComponentParams: \"headerGroupComponentParams\", colId: \"colId\", field: \"field\", type: \"type\", valueGetter: \"valueGetter\", valueFormatter: \"valueFormatter\", refData: \"refData\", keyCreator: \"keyCreator\", equals: \"equals\", tooltipField: \"tooltipField\", tooltipValueGetter: \"tooltipValueGetter\", checkboxSelection: \"checkboxSelection\", icons: \"icons\", suppressNavigable: \"suppressNavigable\", suppressKeyboardEvent: \"suppressKeyboardEvent\", suppressPaste: \"suppressPaste\", suppressFillHandle: \"suppressFillHandle\", hide: \"hide\", initialHide: \"initialHide\", lockVisible: \"lockVisible\", lockPosition: \"lockPosition\", suppressMovable: \"suppressMovable\", editable: \"editable\", valueSetter: \"valueSetter\", valueParser: \"valueParser\", cellEditor: \"cellEditor\", cellEditorFramework: \"cellEditorFramework\", cellEditorParams: \"cellEditorParams\", cellEditorSelector: \"cellEditorSelector\", singleClickEdit: \"singleClickEdit\", newValueHandler: \"newValueHandler\", cellEditorPopup: \"cellEditorPopup\", cellEditorPopupPosition: \"cellEditorPopupPosition\", onCellValueChanged: \"onCellValueChanged\", onCellClicked: \"onCellClicked\", onCellDoubleClicked: \"onCellDoubleClicked\", onCellContextMenu: \"onCellContextMenu\", getQuickFilterText: \"getQuickFilterText\", filterValueGetter: \"filterValueGetter\", floatingFilter: \"floatingFilter\", headerComponent: \"headerComponent\", headerComponentFramework: \"headerComponentFramework\", headerComponentParams: \"headerComponentParams\", menuTabs: \"menuTabs\", columnsMenuParams: \"columnsMenuParams\", suppressMenu: \"suppressMenu\", headerCheckboxSelection: \"headerCheckboxSelection\", headerCheckboxSelectionFilteredOnly: \"headerCheckboxSelectionFilteredOnly\", chartDataType: \"chartDataType\", pinned: \"pinned\", initialPinned: \"initialPinned\", lockPinned: \"lockPinned\", pinnedRowCellRenderer: \"pinnedRowCellRenderer\", pinnedRowCellRendererFramework: \"pinnedRowCellRendererFramework\", pinnedRowCellRendererParams: \"pinnedRowCellRendererParams\", pinnedRowValueFormatter: \"pinnedRowValueFormatter\", pivot: \"pivot\", initialPivot: \"initialPivot\", pivotIndex: \"pivotIndex\", initialPivotIndex: \"initialPivotIndex\", pivotComparator: \"pivotComparator\", enablePivot: \"enablePivot\", cellStyle: \"cellStyle\", cellClass: \"cellClass\", cellClassRules: \"cellClassRules\", cellRenderer: \"cellRenderer\", cellRendererFramework: \"cellRendererFramework\", cellRendererParams: \"cellRendererParams\", cellRendererSelector: \"cellRendererSelector\", autoHeight: \"autoHeight\", wrapText: \"wrapText\", enableCellChangeFlash: \"enableCellChangeFlash\", suppressCellFlash: \"suppressCellFlash\", rowDrag: \"rowDrag\", rowDragText: \"rowDragText\", dndSource: \"dndSource\", dndSourceOnRowDrag: \"dndSourceOnRowDrag\", rowGroup: \"rowGroup\", initialRowGroup: \"initialRowGroup\", rowGroupIndex: \"rowGroupIndex\", initialRowGroupIndex: \"initialRowGroupIndex\", enableRowGroup: \"enableRowGroup\", enableValue: \"enableValue\", aggFunc: \"aggFunc\", initialAggFunc: \"initialAggFunc\", allowedAggFuncs: \"allowedAggFuncs\", showRowGroup: \"showRowGroup\", sortable: \"sortable\", sort: \"sort\", initialSort: \"initialSort\", sortIndex: \"sortIndex\", initialSortIndex: \"initialSortIndex\", sortingOrder: \"sortingOrder\", comparator: \"comparator\", unSortIcon: \"unSortIcon\", sortedAt: \"sortedAt\", colSpan: \"colSpan\", rowSpan: \"rowSpan\", width: \"width\", initialWidth: \"initialWidth\", minWidth: \"minWidth\", maxWidth: \"maxWidth\", flex: \"flex\", initialFlex: \"initialFlex\", resizable: \"resizable\", suppressSizeToFit: \"suppressSizeToFit\", suppressAutoSize: \"suppressAutoSize\" }, decls: 0, vars: 0, template: function AgGridColumn_Template(rf, ctx) { }, encapsulation: 2 });\n__decorate([\n ContentChildren(AgGridColumn_1),\n __metadata(\"design:type\", QueryList)\n], AgGridColumn.prototype, \"childColumns\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"filterFramework\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"filterParams\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"floatingFilterComponent\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"floatingFilterComponentParams\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"floatingFilterComponentFramework\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"floatingFilterFramework\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"filter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"headerName\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"headerValueGetter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"headerTooltip\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"headerClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"suppressHeaderKeyboardEvent\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"columnGroupShow\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"toolPanelClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"suppressColumnsToolPanel\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"suppressFiltersToolPanel\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"tooltipComponent\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"tooltipComponentFramework\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"tooltipComponentParams\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"children\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"groupId\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"openByDefault\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"marryChildren\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"headerGroupComponent\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"headerGroupComponentFramework\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"headerGroupComponentParams\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"colId\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"field\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"type\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"valueGetter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"valueFormatter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"refData\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"keyCreator\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"equals\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"tooltipField\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"tooltipValueGetter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"checkboxSelection\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"icons\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"suppressNavigable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"suppressKeyboardEvent\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"suppressPaste\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"suppressFillHandle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"hide\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"initialHide\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"lockVisible\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"lockPosition\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"suppressMovable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"editable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"valueSetter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"valueParser\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"cellEditor\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"cellEditorFramework\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"cellEditorParams\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"cellEditorSelector\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"singleClickEdit\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"newValueHandler\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"cellEditorPopup\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"cellEditorPopupPosition\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"onCellValueChanged\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"onCellClicked\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"onCellDoubleClicked\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"onCellContextMenu\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"getQuickFilterText\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"filterValueGetter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"floatingFilter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"headerComponent\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"headerComponentFramework\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"headerComponentParams\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"menuTabs\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"columnsMenuParams\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"suppressMenu\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"headerCheckboxSelection\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"headerCheckboxSelectionFilteredOnly\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"chartDataType\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"pinned\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"initialPinned\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"lockPinned\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"pinnedRowCellRenderer\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"pinnedRowCellRendererFramework\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"pinnedRowCellRendererParams\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"pinnedRowValueFormatter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"pivot\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"initialPivot\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"pivotIndex\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"initialPivotIndex\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"pivotComparator\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"enablePivot\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"cellStyle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"cellClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"cellClassRules\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"cellRenderer\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"cellRendererFramework\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"cellRendererParams\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"cellRendererSelector\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"autoHeight\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"wrapText\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"enableCellChangeFlash\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"suppressCellFlash\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"rowDrag\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"rowDragText\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"dndSource\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"dndSourceOnRowDrag\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"rowGroup\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"initialRowGroup\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"rowGroupIndex\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"initialRowGroupIndex\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"enableRowGroup\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"enableValue\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"aggFunc\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"initialAggFunc\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"allowedAggFuncs\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"showRowGroup\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"sortable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"sort\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"initialSort\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"sortIndex\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"initialSortIndex\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"sortingOrder\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"comparator\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"unSortIcon\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"sortedAt\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"colSpan\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"rowSpan\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"width\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"initialWidth\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"minWidth\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"maxWidth\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"flex\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"initialFlex\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"resizable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"suppressSizeToFit\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridColumn.prototype, \"suppressAutoSize\", void 0);\n\nlet AngularFrameworkOverrides = class AngularFrameworkOverrides extends VanillaFrameworkOverrides {\n constructor(_ngZone) {\n super();\n this._ngZone = _ngZone;\n }\n setEmitterUsedCallback(isEmitterUsed) {\n this.isEmitterUsed = isEmitterUsed;\n }\n setTimeout(action, timeout) {\n if (this._ngZone) {\n this._ngZone.runOutsideAngular(() => {\n window.setTimeout(() => {\n action();\n }, timeout);\n });\n }\n else {\n window.setTimeout(() => {\n action();\n }, timeout);\n }\n }\n setInterval(action, interval) {\n return new AgPromise(resolve => {\n if (this._ngZone) {\n this._ngZone.runOutsideAngular(() => {\n resolve(window.setInterval(() => {\n action();\n }, interval));\n });\n }\n else {\n resolve(window.setInterval(() => {\n action();\n }, interval));\n }\n });\n }\n addEventListener(element, eventType, listener, useCapture) {\n if (this.isOutsideAngular(eventType) && this._ngZone) {\n this._ngZone.runOutsideAngular(() => {\n element.addEventListener(eventType, listener, useCapture);\n });\n }\n else {\n element.addEventListener(eventType, listener, useCapture);\n }\n }\n dispatchEvent(eventType, listener, global = false) {\n if (this.isOutsideAngular(eventType)) {\n if (this._ngZone) {\n this._ngZone.runOutsideAngular(listener);\n }\n else {\n listener();\n }\n }\n else if (this.isEmitterUsed(eventType) || global) {\n // only trigger off events (and potentially change detection) if actually used\n if (!NgZone.isInAngularZone() && this._ngZone) {\n this._ngZone.run(listener);\n }\n else {\n listener();\n }\n }\n }\n isFrameworkComponent(comp) {\n if (!comp) {\n return false;\n }\n const prototype = comp.prototype;\n const isAngularComp = prototype && 'agInit' in prototype;\n return isAngularComp;\n }\n};\nAngularFrameworkOverrides.ɵfac = function AngularFrameworkOverrides_Factory(t) { return new (t || AngularFrameworkOverrides)(ɵngcc0.ɵɵinject(ɵngcc0.NgZone)); };\nAngularFrameworkOverrides.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: AngularFrameworkOverrides, factory: function (t) { return AngularFrameworkOverrides.ɵfac(t); } });\nAngularFrameworkOverrides.ctorParameters = () => [\n { type: NgZone }\n];\nAngularFrameworkOverrides = __decorate([ __metadata(\"design:paramtypes\", [NgZone])\n], AngularFrameworkOverrides);\n\nlet AngularFrameworkComponentWrapper = class AngularFrameworkComponentWrapper extends BaseComponentWrapper {\n setViewContainerRef(viewContainerRef) {\n this.viewContainerRef = viewContainerRef;\n }\n setComponentFactoryResolver(componentFactoryResolver) {\n this.componentFactoryResolver = componentFactoryResolver;\n }\n createWrapper(OriginalConstructor) {\n let that = this;\n class DynamicAgNg2Component extends BaseGuiComponent {\n init(params) {\n super.init(params);\n this._componentRef.changeDetectorRef.detectChanges();\n }\n createComponent() {\n return that.createComponent(OriginalConstructor);\n }\n hasMethod(name) {\n return wrapper.getFrameworkComponentInstance()[name] != null;\n }\n callMethod(name, args) {\n const componentRef = this.getFrameworkComponentInstance();\n return wrapper.getFrameworkComponentInstance()[name].apply(componentRef, args);\n }\n addMethod(name, callback) {\n wrapper[name] = callback;\n }\n }\n let wrapper = new DynamicAgNg2Component();\n return wrapper;\n }\n createComponent(componentType) {\n // used to cache the factory, but this a) caused issues when used with either webpack/angularcli with --prod\n // but more significantly, the underlying implementation of resolveComponentFactory uses a map too, so us\n // caching the factory here yields no performance benefits\n let factory = this.componentFactoryResolver.resolveComponentFactory(componentType);\n return this.viewContainerRef.createComponent(factory);\n }\n};\nAngularFrameworkComponentWrapper.ɵfac = /*@__PURE__*/ function () { let ɵAngularFrameworkComponentWrapper_BaseFactory; return function AngularFrameworkComponentWrapper_Factory(t) { return (ɵAngularFrameworkComponentWrapper_BaseFactory || (ɵAngularFrameworkComponentWrapper_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(AngularFrameworkComponentWrapper)))(t || AngularFrameworkComponentWrapper); }; }();\nAngularFrameworkComponentWrapper.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: AngularFrameworkComponentWrapper, factory: function (t) { return AngularFrameworkComponentWrapper.ɵfac(t); } });\nclass BaseGuiComponent {\n init(params) {\n this._params = params;\n this._componentRef = this.createComponent();\n this._agAwareComponent = this._componentRef.instance;\n this._frameworkComponentInstance = this._componentRef.instance;\n this._eGui = this._componentRef.location.nativeElement;\n this._agAwareComponent.agInit(this._params);\n }\n getGui() {\n return this._eGui;\n }\n destroy() {\n if (this._frameworkComponentInstance && typeof this._frameworkComponentInstance.destroy === 'function') {\n this._frameworkComponentInstance.destroy();\n }\n if (this._componentRef) {\n this._componentRef.destroy();\n }\n }\n getFrameworkComponentInstance() {\n return this._frameworkComponentInstance;\n }\n}\n\nlet AgGridAngular = class AgGridAngular {\n constructor(elementDef, viewContainerRef, angularFrameworkOverrides, frameworkComponentWrapper, componentFactoryResolver) {\n this.viewContainerRef = viewContainerRef;\n this.angularFrameworkOverrides = angularFrameworkOverrides;\n this.frameworkComponentWrapper = frameworkComponentWrapper;\n this.componentFactoryResolver = componentFactoryResolver;\n this._initialised = false;\n this._destroyed = false;\n // in order to ensure firing of gridReady is deterministic\n this._fullyReady = AgPromise.resolve(true);\n // @START@\n /** Specifies the status bar components to use in the status bar. */\n this.statusBar = undefined;\n /** Specifies the side bar components. */\n this.sideBar = undefined;\n /** Set to `true` to not show the context menu. Use if you don't want to use the default 'right click' context menu. Default: `false` */\n this.suppressContextMenu = undefined;\n /** When using `suppressContextMenu`, you can use the `onCellContextMenu` function to provide your own code to handle cell `contextmenu` events.\n * This flag is useful to prevent the browser from showing its default context menu.\n * Default: `false` */\n this.preventDefaultOnContextMenu = undefined;\n /** Allows context menu to show, even when `Ctrl` key is held down. Default: `false` */\n this.allowContextMenuWithControlKey = undefined;\n /** Set to `true` to always show the column menu button, rather than only showing when the mouse is over the column header. Default: `false` */\n this.suppressMenuHide = undefined;\n /** Set to `true` to use the browser's default tooltip instead of using the grid's Tooltip Component. Default: `false` */\n this.enableBrowserTooltips = undefined;\n /** The delay in milliseconds that it takes for tooltips to show up once an element is hovered over.\n * **Note:** This property does not work if `enableBrowserTooltips` is `true`.\n * Default: `2000` */\n this.tooltipShowDelay = undefined;\n /** The delay in milliseconds that it takes for tooltips to hide once they have been displayed.\n * **Note:** This property does not work if `enableBrowserTooltips` is `true`.\n * Default: `10000` */\n this.tooltipHideDelay = undefined;\n /** Set to `true` to have tooltips follow the cursor once they are displayed. Default: `false` */\n this.tooltipMouseTrack = undefined;\n /** DOM element to use as the popup parent for grid popups (context menu, column menu etc). */\n this.popupParent = undefined;\n /** Set to `true` to also include headers when copying to clipboard using `Ctrl + C` clipboard. Default: `false` */\n this.copyHeadersToClipboard = undefined;\n /** Set to `true` to also include group headers when copying to clipboard using `Ctrl + C` clipboard. Default: `false` */\n this.copyGroupHeadersToClipboard = undefined;\n /** Specify the delimiter to use when copying to clipboard.\n * Default: `\\t` */\n this.clipboardDelimiter = undefined;\n /** Set to `true` to only have the range selection, and not row selection, copied to clipboard. Default: `false` */\n this.suppressCopyRowsToClipboard = undefined;\n /** Set to `true` to work around a bug with Excel (Windows) that adds an extra empty line at the end of ranges copied to the clipboard. Default: `false` */\n this.suppressLastEmptyLineOnPaste = undefined;\n /** Set to `true` to turn off paste operations within the grid. */\n this.suppressClipboardPaste = undefined;\n /** Set to `true` to stop the grid trying to use the Clipboard API, if it is blocked, and immediately fallback to the workaround. */\n this.suppressClipboardApi = undefined;\n /** Array of Column / Column Group definitions. */\n this.columnDefs = undefined;\n /** A default column definition. Items defined in the actual column definitions get precedence. */\n this.defaultColDef = undefined;\n /** A default column group definition. All column group definitions will use these properties. Items defined in the actual column group definition get precedence. */\n this.defaultColGroupDef = undefined;\n /** An object map of custom column types which contain groups of properties that column definitions can inherit by referencing in their `type` property. */\n this.columnTypes = undefined;\n /** Keeps the order of Columns maintained after new Column Definitions are updated. Default: `false` */\n this.maintainColumnOrder = undefined;\n /** If `true`, then dots in field names (e.g. `address.firstline`) are not treated as deep references. Allows you to use dots in your field name if you prefer. Default: `false` */\n this.suppressFieldDotNotation = undefined;\n /** @deprecated */\n this.deltaColumnMode = undefined;\n /** @deprecated */\n this.applyColumnDefOrder = undefined;\n /** @deprecated */\n this.immutableColumns = undefined;\n /** @deprecated */\n this.suppressSetColumnStateEvents = undefined;\n /** @deprecated */\n this.suppressColumnStateEvents = undefined;\n /** @deprecated Set via `defaultColDef.width`\n */\n this.colWidth = undefined;\n /** @deprecated Set via `defaultColDef.minWidth`\n */\n this.minColWidth = undefined;\n /** @deprecated Set via `defaultColDef.maxWidth`\n */\n this.maxColWidth = undefined;\n /** The height in pixels for the row containing the column label header. If not specified, it uses the theme value of `header-height`. */\n this.headerHeight = undefined;\n /** The height in pixels for the rows containing header column groups. If not specified, it uses `headerHeight`. */\n this.groupHeaderHeight = undefined;\n /** The height in pixels for the row containing the floating filters. If not specified, it uses the theme value of `header-height`. */\n this.floatingFiltersHeight = undefined;\n /** The height in pixels for the row containing the columns when in pivot mode. If not specified, it uses `headerHeight`. */\n this.pivotHeaderHeight = undefined;\n /** The height in pixels for the row containing header column groups when in pivot mode. If not specified, it uses `groupHeaderHeight`. */\n this.pivotGroupHeaderHeight = undefined;\n /** Allow reordering and pinning columns by dragging columns from the Columns Tool Panel to the grid. Default: `false` */\n this.allowDragFromColumnsToolPanel = undefined;\n /** Set to `true` to suppress column moving, i.e. to make the columns fixed position. Default: `false` */\n this.suppressMovableColumns = undefined;\n /** If `true`, the `ag-column-moving` class is not added to the grid while columns are moving. In the default themes, this results in no animation when moving columns. Default: `false` */\n this.suppressColumnMoveAnimation = undefined;\n /** If `true`, when you drag a column out of the grid (e.g. to the group zone) the column is not hidden. Default: `false` */\n this.suppressDragLeaveHidesColumns = undefined;\n /** Set to `'shift'` to have shift-resize as the default resize operation (same as user holding down `Shift` while resizing). */\n this.colResizeDefault = undefined;\n /** Suppresses auto-sizing columns for columns. In other words, double clicking a column's header's edge will not auto-size. Default: `false` */\n this.suppressAutoSize = undefined;\n /** Number of pixels to add to a column width after the [auto-sizing](/column-sizing/#auto-size-columns) calculation.\n * Set this if you want to add extra room to accommodate (for example) sort icons, or some other dynamic nature of the header.\n * Default: `4` */\n this.autoSizePadding = undefined;\n /** Set this to `true` to skip the `headerName` when `autoSize` is called by default. Default: `false` */\n this.skipHeaderOnAutoSize = undefined;\n /** A map of component names to components. */\n this.components = undefined;\n /** @deprecated As of v27, use `components` for framework components too.\n */\n this.frameworkComponents = undefined;\n /** @deprecated React UI is enabled by default. Use suppressReactUi=true to turn it off.\n */\n this.reactUi = undefined;\n /** @deprecated Set to true to enable the experimental React UI. Works with React framework only.\n It is planned the next major release of the grid will drop support of the legacy React engine,\n hence this property is deprecated as will be removed in the next major release.\n */\n this.suppressReactUi = undefined;\n /** Set to `'fullRow'` to enable Full Row Editing. Otherwise leave blank to edit one cell at a time. */\n this.editType = undefined;\n /** Set to `true` to enable Single Click Editing for cells, to start editing with a single click. Default: `false` */\n this.singleClickEdit = undefined;\n /** Set to `true` so that neither single nor double click starts editing. Default: `false` */\n this.suppressClickEdit = undefined;\n /** Set to `true` so stop the grid updating data after and edit. When this is set, it is intended the application will update the data, eg in an external immutable store, and then pass the new dataset to the grid. */\n this.readOnlyEdit = undefined;\n /** Set this to `true` to stop cell editing when grid loses focus.\n * The default is that the grid stays editing until focus goes onto another cell. For inline (non-popup) editors only.\n * Default: `false` */\n this.stopEditingWhenCellsLoseFocus = undefined;\n /** Set to `true` along with `enterMovesDownAfterEdit` to have Excel-style behaviour for the `Enter` key.\n * i.e. pressing the `Enter` key will move down to the cell beneath.\n * Default: `false` */\n this.enterMovesDown = undefined;\n /** Set to `true` along with `enterMovesDown` to have Excel-style behaviour for the 'Enter' key.\n * i.e. pressing the Enter key will move down to the cell beneath.\n * Default: `false` */\n this.enterMovesDownAfterEdit = undefined;\n /** Set to `true` to enable Undo / Redo while editing. */\n this.undoRedoCellEditing = undefined;\n /** Set the size of the undo / redo stack. Default: `10` */\n this.undoRedoCellEditingLimit = undefined;\n /** @deprecated Use stopEditingWhenCellsLoseFocus instead\n */\n this.stopEditingWhenGridLosesFocus = undefined;\n /** A default configuration object used to export to CSV. */\n this.defaultCsvExportParams = undefined;\n /** Prevents the user from exporting the grid to CSV. Default: `false` */\n this.suppressCsvExport = undefined;\n /** A default configuration object used to export to Excel. */\n this.defaultExcelExportParams = undefined;\n /** Prevents the user from exporting the grid to Excel. Default: `false` */\n this.suppressExcelExport = undefined;\n /** A list (array) of Excel styles to be used when exporting to Excel with styles. */\n this.excelStyles = undefined;\n /** @deprecated Use defaultCsvExportParams or defaultExcelExportParams\n */\n this.defaultExportParams = undefined;\n /** Rows are filtered using this text as a quick filter. */\n this.quickFilterText = undefined;\n /** Set to `true` to turn on the quick filter cache, used to improve performance when using the quick filter. Default: `false` */\n this.cacheQuickFilter = undefined;\n /** Set to `true` to override the default tree data filtering behaviour to instead exclude child nodes from filter results. Default: `false` */\n this.excludeChildrenWhenTreeDataFiltering = undefined;\n /** Set to `true` to Enable Charts. Default: `false` */\n this.enableCharts = undefined;\n /** The list of chart themes to be used. */\n this.chartThemes = undefined;\n /** A map containing custom chart themes. */\n this.customChartThemes = undefined;\n /** Chart theme overrides applied to all themes. */\n this.chartThemeOverrides = undefined;\n /** Provide your own loading cell renderer to use when data is loading via a DataSource.\n * See [Loading Cell Renderer](https://www.ag-grid.com/javascript-data-grid/component-loading-cell-renderer/) for framework specific implementation details. */\n this.loadingCellRenderer = undefined;\n /** @deprecated As of v27, use `loadingCellRenderer` for framework components too.\n */\n this.loadingCellRendererFramework = undefined;\n /** Params to be passed to the `loadingCellRenderer` component. */\n this.loadingCellRendererParams = undefined;\n /** Callback to select which loading cell renderer to be used when data is loading via a DataSource. */\n this.loadingCellRendererSelector = undefined;\n /** A map of key->value pairs for localising text within the grid. */\n this.localeText = undefined;\n /** Set to `true` to enable Master Detail. Default: `false` */\n this.masterDetail = undefined;\n /** Set to `true` to keep detail rows for when they are displayed again. Default: `false` */\n this.keepDetailRows = undefined;\n /** Sets the number of details rows to keep. Default: `10` */\n this.keepDetailRowsCount = undefined;\n /** Provide a custom `detailCellRenderer` to use when a master row is expanded.\n * See [Detail Cell Renderer](https://www.ag-grid.com/javascript-data-grid/master-detail-custom-detail/) for framework specific implementation details. */\n this.detailCellRenderer = undefined;\n /** @deprecated As of v27, use `detailCellRenderer` for framework components too.\n */\n this.detailCellRendererFramework = undefined;\n /** Specifies the params to be used by the Detail Cell Renderer. Can also be a function that provides the params to enable dynamic definitions of the params. */\n this.detailCellRendererParams = undefined;\n /** Set fixed height in pixels for each detail row. */\n this.detailRowHeight = undefined;\n /** Set to `true` to have the detail grid dynamically change it's height to fit it's rows. */\n this.detailRowAutoHeight = undefined;\n /** Provides a context object that is provided to different callbacks the grid uses. Used for passing additional information to the callbacks by your application. */\n this.context = undefined;\n /** A list of grids to treat as Aligned Grids. If grids are aligned then the columns and horizontal scrolling will be kept in sync. */\n this.alignedGrids = undefined;\n /** Change this value to set the tabIndex order of the Grid within your application. Default: `0` */\n this.tabIndex = undefined;\n /** The number of rows rendered outside the viewable area the grid renders.\n * Having a buffer means the grid will have rows ready to show as the user slowly scrolls vertically.\n * Default: `10` */\n this.rowBuffer = undefined;\n /** Set to `true` to turn on the value cache. Default: `false` */\n this.valueCache = undefined;\n /** Set to `true` to configure the value cache to not expire after data updates. Default: `false` */\n this.valueCacheNeverExpires = undefined;\n /** Set to `true` to allow cell expressions. Default: `false` */\n this.enableCellExpressions = undefined;\n /** If `true`, row nodes do not have their parents set.\n * The grid doesn't use the parent reference, but it is included to help the client code navigate the node tree if it wants by providing bi-direction navigation up and down the tree.\n * If this is a problem (e.g. if you need to convert the tree to JSON, which does not allow cyclic dependencies) then set this to `true`.\n * Default: `false` */\n this.suppressParentsInRowNodes = undefined;\n /** Disables touch support (but does not remove the browser's efforts to simulate mouse events on touch). Default: `false` */\n this.suppressTouch = undefined;\n /** Set to `true` to not set focus back on the grid after a refresh. This can avoid issues where you want to keep the focus on another part of the browser. Default: `false` */\n this.suppressFocusAfterRefresh = undefined;\n /** Disables the asynchronous nature of the events introduced in v10, and makes them synchronous. This property only exists for the purpose of supporting legacy code which has a dependency on synchronous events from earlier versions (v9 or earlier) of AG Grid. **It is strongly recommended that you do not change this property unless you have legacy issues.** Default: `false` */\n this.suppressAsyncEvents = undefined;\n /** The grid will check for `ResizeObserver` and use it if it exists in the browser, otherwise it will use the grid's alternative implementation. Some users reported issues with Chrome's `ResizeObserver`. Use this property to always use the grid's alternative implementation should such problems exist. Default: `false` */\n this.suppressBrowserResizeObserver = undefined;\n /** Disables showing a warning message in the console if using a `gridOptions` or `colDef` property that doesn't exist. Default: `false` */\n this.suppressPropertyNamesCheck = undefined;\n /** Disables change detection. Default: `false` */\n this.suppressChangeDetection = undefined;\n /** Set this to `true` to enable debug information from the grid and related components. Will result in additional logging being output, but very useful when investigating problems. Default: `false` */\n this.debug = undefined;\n /** Provide a template for 'loading' overlay. */\n this.overlayLoadingTemplate = undefined;\n /** Provide a custom loading overlay component.\n * See [Loading Overlay Component](https://www.ag-grid.com/javascript-data-grid/component-overlay/#simple-loading-overlay-component) for framework specific implementation details. */\n this.loadingOverlayComponent = undefined;\n /** @deprecated As of v27, use `loadingOverlayComponent` for framework components too.\n */\n this.loadingOverlayComponentFramework = undefined;\n /** Customise the parameters provided to the loading overlay component. */\n this.loadingOverlayComponentParams = undefined;\n /** Disables the 'loading' overlay. Default: `false` */\n this.suppressLoadingOverlay = undefined;\n /** Provide a template for 'no rows' overlay. */\n this.overlayNoRowsTemplate = undefined;\n /** Provide a custom no rows overlay component.\n * See [No Rows Overlay Component](https://www.ag-grid.com/javascript-data-grid/component-overlay/#simple-no-rows-overlay-component) for framework specific implementation details. */\n this.noRowsOverlayComponent = undefined;\n /** @deprecated As of v27, use `noRowsOverlayComponent` for framework components too.\n */\n this.noRowsOverlayComponentFramework = undefined;\n /** Customise the parameters provided to the no rows overlay component. */\n this.noRowsOverlayComponentParams = undefined;\n /** Disables the 'no rows' overlay. Default: `false` */\n this.suppressNoRowsOverlay = undefined;\n /** Set whether pagination is enabled. Default: `false` */\n this.pagination = undefined;\n /** How many rows to load per page. If `paginationAutoPageSize` is specified, this property is ignored. Default: `100` */\n this.paginationPageSize = undefined;\n /** Set to `true` so that the number of rows to load per page is automatically adjusted by the grid so each page shows enough rows to just fill the area designated for the grid. If `false`, `paginationPageSize` is used. Default: `false` */\n this.paginationAutoPageSize = undefined;\n /** Set to `true` to have pages split children of groups when using Row Grouping or detail rows with Master Detail. Default: `false` */\n this.paginateChildRows = undefined;\n /** If `true`, the default grid controls for navigation are hidden.\n * This is useful if `pagination=true` and you want to provide your own pagination controls.\n * Otherwise, when `pagination=true` the grid automatically shows the necessary controls at the bottom so that the user can navigate through the different pages.\n * Default: `false` */\n this.suppressPaginationPanel = undefined;\n /** Set to `true` to enable pivot mode. Default: `false` */\n this.pivotMode = undefined;\n /** When to show the 'pivot panel' (where you drag rows to pivot) at the top. Note that the pivot panel will never show if `pivotMode` is off. Default: `never` */\n this.pivotPanelShow = undefined;\n /** When set and the grid is in pivot mode, automatically calculated totals will appear within the Pivot Column Groups, in the position specified. */\n this.pivotColumnGroupTotals = undefined;\n /** When set and the grid is in pivot mode, automatically calculated totals will appear for each value column in the position specified. */\n this.pivotRowTotals = undefined;\n /** If `true`, the grid will not swap in the grouping column when pivoting. Useful if pivoting using Server Side Row Model or Viewport Row Model and you want full control of all columns including the group column. Default: `false` */\n this.pivotSuppressAutoColumn = undefined;\n /** When enabled, pivot column groups will appear 'fixed', without the ability to expand and collapse the column groups. Default: `false` */\n this.suppressExpandablePivotGroups = undefined;\n /** If `true`, then row group, pivot and value aggregation will be read-only from the GUI. The grid will display what values are used for each, but will not allow the user to change the selection. Default: `false` */\n this.functionsReadOnly = undefined;\n /** A map of 'function name' to 'function' for custom aggregation functions. */\n this.aggFuncs = undefined;\n /** When `true`, column headers won't include the `aggFunc` name, e.g. `'sum(Bank Balance)`' will just be `'Bank Balance'`. Default: `false` */\n this.suppressAggFuncInHeader = undefined;\n /** When `true`, the aggregations won't be computed for the root node of the grid. Default: `false` */\n this.suppressAggAtRootLevel = undefined;\n /** When using change detection, only the updated column will be re-aggregated. Default: `false` */\n this.aggregateOnlyChangedColumns = undefined;\n /** Set to `true` so that aggregations are not impacted by filtering. Default: `false` */\n this.suppressAggFilteredOnly = undefined;\n /** Set to `true` to enable Row Animation. Default: `false` */\n this.animateRows = undefined;\n /** Set to `true` to have cells flash after data changes. Default: `false` */\n this.enableCellChangeFlash = undefined;\n /** To be used in combination with `enableCellChangeFlash`, this configuration will set the delay in milliseconds of how long a cell should remain in its \"flashed\" state.\n * Default: `500` */\n this.cellFlashDelay = undefined;\n /** To be used in combination with `enableCellChangeFlash`, this configuration will set the delay in milliseconds of how long the \"flashed\" state animation takes to fade away after the timer set by `cellFlashDelay` has completed.\n * Default: `1000` */\n this.cellFadeDelay = undefined;\n /** Switch between layout options: `normal`, `autoHeight`, `print`.\n * Default: `normal` */\n this.domLayout = undefined;\n /** When `true`, the order of rows and columns in the DOM are consistent with what is on screen. Default: `false` */\n this.ensureDomOrder = undefined;\n /** Set to `true` to operate the grid in RTL (Right to Left) mode. Default: `false` */\n this.enableRtl = undefined;\n /** Set to `true` so that the grid doesn't virtualise the columns. For example, if you have 100 columns, but only 10 visible due to scrolling, all 100 will always be rendered. Default: `false` */\n this.suppressColumnVirtualisation = undefined;\n /** By default the grid has a limit of rendering a maximum of 500 rows at once (remember the grid only renders rows you can see, so unless your display shows more than 500 rows without vertically scrolling this will never be an issue).\n *
    **This is only relevant if you are manually setting `rowBuffer` to a high value (rendering more rows than can be seen) or if your grid height is able to display more than 500 rows at once.**\n * Default: `false` */\n this.suppressMaxRenderedRowRestriction = undefined;\n /** Set to `true` so that the grid doesn't virtualise the rows. For example, if you have 100 rows, but only 10 visible due to scrolling, all 100 will always be rendered. Default: `false` */\n this.suppressRowVirtualisation = undefined;\n /** Set to `true` to enable Managed Row Dragging. Default: `false` */\n this.rowDragManaged = undefined;\n /** Set to `true` to suppress row dragging. Default: `false` */\n this.suppressRowDrag = undefined;\n /** Set to `true` to suppress moving rows while dragging the `rowDrag` waffle. This option highlights the position where the row will be placed and it will only move the row on mouse up. Default: `false` */\n this.suppressMoveWhenRowDragging = undefined;\n /** Set to `true` to enable clicking and dragging anywhere on the row without the need for a drag handle. Default: `false` */\n this.rowDragEntireRow = undefined;\n /** Set to `true` to enable dragging multiple rows at the same time. Default: `false` */\n this.rowDragMultiRow = undefined;\n /** Provide your own cell renderer component to use for full width rows.\n * See [Full Width Rows](https://www.ag-grid.com/javascript-data-grid/full-width-rows/) for framework specific implementation details. */\n this.fullWidthCellRenderer = undefined;\n /** @deprecated As of v27, use `fullWidthCellRenderer` for framework components too.\n */\n this.fullWidthCellRendererFramework = undefined;\n /** Customise the parameters provided to the `fullWidthCellRenderer` component. */\n this.fullWidthCellRendererParams = undefined;\n /** Set to `true` to have the detail grid embedded in the master grid's container and so link their horizontal scrolling. */\n this.embedFullWidthRows = undefined;\n /** @deprecated */\n this.deprecatedEmbedFullWidthRows = undefined;\n /** Specifies how the results of row grouping should be displayed.\n *\n * The options are:\n *\n * - `'singleColumn'`: single group column automatically added by the grid.\n * - `'multipleColumns'`: a group column per row group is added automatically.\n * - `'groupRows'`: group rows are automatically added instead of group columns.\n * - `'custom'`: informs the grid that group columns will be provided. */\n this.groupDisplayType = undefined;\n /** If grouping, set to the number of levels to expand by default, e.g. `0` for none, `1` for first level only, etc. Set to `-1` to expand everything. Default: `0` */\n this.groupDefaultExpanded = undefined;\n /** Allows specifying the group 'auto column' if you are not happy with the default. If grouping, this column definition is included as the first column in the grid. If not grouping, this column is not included. */\n this.autoGroupColumnDef = undefined;\n /** When `true`, preserves the current group order when sorting on non-group columns. Default: `false` */\n this.groupMaintainOrder = undefined;\n /** When `true`, if you select a group, the children of the group will also be selected. Default: `false` */\n this.groupSelectsChildren = undefined;\n /** If grouping, this controls whether to show a group footer when the group is expanded.\n * If `true`, then by default, the footer will contain aggregate data (if any) when shown and the header will be blank.\n * When closed, the header will contain the aggregate data regardless of this setting (as the footer is hidden anyway).\n * This is handy for 'total' rows, that are displayed below the data when the group is open, and alongside the group when it is closed.\n * Default: `false` */\n this.groupIncludeFooter = undefined;\n /** Set to `true` to show a 'grand total' group footer across all groups. Default: `false` */\n this.groupIncludeTotalFooter = undefined;\n /** If `true`, and showing footer, aggregate data will always be displayed at both the header and footer levels. This stops the possibly undesirable behaviour of the header details 'jumping' to the footer on expand. Default: `false` */\n this.groupSuppressBlankHeader = undefined;\n /** If using `groupSelectsChildren`, then only the children that pass the current filter will get selected. Default: `false` */\n this.groupSelectsFiltered = undefined;\n /** Shows the open group in the group column for non-group rows. Default: `false` */\n this.showOpenedGroup = undefined;\n /** Set to `true` to collapse groups that only have one child. */\n this.groupRemoveSingleChildren = undefined;\n /** Set to `true` to collapse lowest level groups that only have one child. Default: `false` */\n this.groupRemoveLowestSingleChildren = undefined;\n /** Set to `true` to hide parents that are open. When used with multiple columns for showing groups, it can give a more pleasing user experience. Default: `false` */\n this.groupHideOpenParents = undefined;\n /** When to show the 'row group panel' (where you drag rows to group) at the top. Default: `never` */\n this.rowGroupPanelShow = undefined;\n /** Provide the Cell Renderer to use when `groupDisplayType = 'groupRows'`.\n * See [Group Row Cell Renderer](https://www.ag-grid.com/javascript-data-grid/grouping-group-rows/#providing-cell-renderer) for framework specific implementation details. */\n this.groupRowRenderer = undefined;\n /** @deprecated As of v27, use `groupRowRenderer` for framework components too.\n */\n this.groupRowRendererFramework = undefined;\n /** Customise the parameters provided to the `groupRowRenderer` component. */\n this.groupRowRendererParams = undefined;\n /** By default, when a column is un-grouped, i.e. using the Row Group Panel, it is made visible in the grid. This property stops the column becoming visible again when un-grouping. Default: `false` */\n this.suppressMakeColumnVisibleAfterUnGroup = undefined;\n /** Set to `true` to enable the Grid to work with Tree Data. You must also implement the `getDataPath(data)` callback. */\n this.treeData = undefined;\n /** @deprecated - this is now groupRowRendererParams.innerRenderer\n */\n this.groupRowInnerRenderer = undefined;\n /** @deprecated - this is now groupRowRendererParams.innerRenderer\n */\n this.groupRowInnerRendererFramework = undefined;\n /** @deprecated - Use groupDisplayType = 'multipleColumns' instead\n */\n this.groupMultiAutoColumn = undefined;\n /** @deprecated - Use groupDisplayType = 'groupRows' instead\n */\n this.groupUseEntireRow = undefined;\n /** @deprecated - Use groupDisplayType = 'custom' instead\n */\n this.groupSuppressAutoColumn = undefined;\n /** @deprecated - no longer needed, transaction updates keep group state\n */\n this.rememberGroupStateWhenNewData = undefined;\n /** Data to be displayed as pinned top rows in the grid. */\n this.pinnedTopRowData = undefined;\n /** Data to be displayed as pinned bottom rows in the grid. */\n this.pinnedBottomRowData = undefined;\n /** Sets the row model type. Default: `clientSide` */\n this.rowModelType = undefined;\n /** Set the data to be displayed as rows in the grid. */\n this.rowData = undefined;\n /** @deprecated Immutable Data is on by default when grid callback getRowId() is implemented\n Enables Immutable Data mode, for compatibility with immutable stores. Default: `false`\n */\n this.immutableData = undefined;\n /** How many milliseconds to wait before executing a batch of async transactions. */\n this.asyncTransactionWaitMillis = undefined;\n /** Prevents Transactions changing sort, filter, group or pivot state when transaction only contains updates. Default: `false` */\n this.suppressModelUpdateAfterUpdateTransaction = undefined;\n /** @deprecated */\n this.deltaRowDataMode = undefined;\n /** @deprecated use asyncTransactionWaitMillis instead\n */\n this.batchUpdateWaitMillis = undefined;\n /** Provide the datasource for infinite scrolling. */\n this.datasource = undefined;\n /** How many extra blank rows to display to the user at the end of the dataset, which sets the vertical scroll and then allows the grid to request viewing more rows of data.\n * Default: `1` */\n this.cacheOverflowSize = undefined;\n /** How many extra blank rows to display to the user at the end of the dataset, which sets the vertical scroll and then allows the grid to request viewing more rows of data.\n * Default: `1` */\n this.infiniteInitialRowCount = undefined;\n /** Whether to use Full Store or Partial Store for storing rows. Default: `full` */\n this.serverSideStoreType = undefined;\n /** How many rows for each block in the store, i.e. how many rows returned from the server at a time.\n * Default: `100` */\n this.cacheBlockSize = undefined;\n /** How many blocks to keep in the store. Default is no limit, so every requested block is kept. Use this if you have memory concerns, and blocks that were least recently viewed will be purged when the limit is hit. The grid will additionally make sure it has all the blocks needed to display what is currently visible, in case this property is set to a low value. */\n this.maxBlocksInCache = undefined;\n /** How many requests to hit the server with concurrently. If the max is reached, requests are queued.\n * Set to `-1` for no maximum restriction on requests.\n * Default: `2` */\n this.maxConcurrentDatasourceRequests = undefined;\n /** How many milliseconds to wait before loading a block. Useful when scrolling over many rows, spanning many Partial Store blocks, as it prevents blocks loading until scrolling has settled. */\n this.blockLoadDebounceMillis = undefined;\n /** When enabled, closing group rows will remove children of that row. Next time the row is opened, child rows will be read from the datasource again. This property only applies when there is Row Grouping. Default: `false` */\n this.purgeClosedRowNodes = undefined;\n /** Provide the `serverSideDatasource` for server side row model. */\n this.serverSideDatasource = undefined;\n /** When enabled, always refreshes top level groups regardless of which column was sorted. This property only applies when there is Row Grouping. Default: `false` */\n this.serverSideSortingAlwaysResets = undefined;\n /** When enabled, always refreshes stores after filter has changed. Used by Full Store only, to allow Server-Side Filtering. Default: `false` */\n this.serverSideFilteringAlwaysResets = undefined;\n /** @deprecated */\n this.suppressEnterpriseResetOnNewColumns = undefined;\n /** To use the viewport row model you need to provide the grid with a `viewportDatasource`. */\n this.viewportDatasource = undefined;\n /** When using viewport row model, sets the page size for the viewport. */\n this.viewportRowModelPageSize = undefined;\n /** When using viewport row model, sets the buffer size for the viewport. */\n this.viewportRowModelBufferSize = undefined;\n /** Set to `true` to always show the horizontal scrollbar. Default: `false` */\n this.alwaysShowHorizontalScroll = undefined;\n /** Set to `true` to always show the vertical scrollbar. Default: `false` */\n this.alwaysShowVerticalScroll = undefined;\n /** Set to `true` to debounce the vertical scrollbar. Can provide smoother scrolling on slow machines. Default: `false` */\n this.debounceVerticalScrollbar = undefined;\n /** Set to `true` to never show the horizontal scroll. This is useful if the grid is aligned with another grid and will scroll when the other grid scrolls. (Should not be used in combination with `alwaysShowHorizontalScroll`.) Default: `false` */\n this.suppressHorizontalScroll = undefined;\n /** When `true`, the grid will not scroll to the top when new row data is provided. Use this if you don't want the default behaviour of scrolling to the top every time you load new data. Default: `false` */\n this.suppressScrollOnNewData = undefined;\n /** When `true`, the grid will not allow mousewheel / touchpad scroll when popup elements are present. Default: `false` */\n this.suppressScrollWhenPopupsAreOpen = undefined;\n /** When `true`, the grid will not use animation frames when drawing rows while scrolling. Use this if the grid is working fast enough that you don't need animation frames and you don't want the grid to flicker. Default: `false` */\n this.suppressAnimationFrame = undefined;\n /** If `true`, middle clicks will result in `click` events for cells and rows. Otherwise the browser will use middle click to scroll the grid.
    **Note:** Not all browsers fire `click` events with the middle button. Most will fire only `mousedown` and `mouseup` events, which can be used to focus a cell, but will not work to call the `onCellClicked` function. Default: `false` */\n this.suppressMiddleClickScrolls = undefined;\n /** If `true`, mouse wheel events will be passed to the browser. Useful if your grid has no vertical scrolls and you want the mouse to scroll the browser page. Default: `false` */\n this.suppressPreventDefaultOnMouseWheel = undefined;\n /** Tell the grid how wide in pixels the scrollbar is, which is used in grid width calculations. Set only if using non-standard browser-provided scrollbars, so the grid can use the non-standard size in its calculations. */\n this.scrollbarWidth = undefined;\n /** Type of Row Selection: `single`, `multiple`. */\n this.rowSelection = undefined;\n /** Set to `true` to allow multiple rows to be selected using single click. Default: `false` */\n this.rowMultiSelectWithClick = undefined;\n /** If `true`, rows will not be deselected if you hold down `Ctrl` and click the row or press `Space`. Default: `false` */\n this.suppressRowDeselection = undefined;\n /** If `true`, row selection won't happen when rows are clicked. Use when you only want checkbox selection. Default: `false` */\n this.suppressRowClickSelection = undefined;\n /** @deprecated This property has been deprecated. Use `suppressCellFocus` instead.\n */\n this.suppressCellSelection = undefined;\n /** If `true`, cells won't be focusable. This means keyboard navigation will be disabled for grid cells, but remain enabled in other elements of the grid such as column headers, floating filters, tool panels. Default: `false` */\n this.suppressCellFocus = undefined;\n /** If `true`, only a single range can be selected. Default: `false` */\n this.suppressMultiRangeSelection = undefined;\n /** Set to `true` to be able to select the text within cells.\n *\n * **Note:** When this is set to `true`, the clipboard service is disabled.\n * Default: `false` */\n this.enableCellTextSelection = undefined;\n /** Set to `true` to enable Range Selection. Default: `false` */\n this.enableRangeSelection = undefined;\n /** Set to `true` to enable the Range Handle. Default: `false` */\n this.enableRangeHandle = undefined;\n /** Set to `true` to enable the Fill Handle. Default: `false` */\n this.enableFillHandle = undefined;\n /** Set to `'x'` to force the fill handle direction to horizontal, or set to `'y'` to force the fill handle direction to vertical. Default: `xy` */\n this.fillHandleDirection = undefined;\n /** Set this to `true` to prevent cell values from being cleared when the Range Selection is reduced by the Fill Handle. Default: `false` */\n this.suppressClearOnFillReduction = undefined;\n /** Array defining the order in which sorting occurs (if sorting is enabled). Values can be `'asc'`, `'desc'` or `null`. For example: `sortingOrder: ['asc', 'desc']`. Default: `[null, 'asc', 'desc']` */\n this.sortingOrder = undefined;\n /** Set to `true` to specify that the sort should take accented characters into account. If this feature is turned on the sort will be slower. Default: `false` */\n this.accentedSort = undefined;\n /** Set to `true` to show the 'no sort' icon. Default: `false` */\n this.unSortIcon = undefined;\n /** Set to `true` to suppress multi-sort when the user shift-clicks a column header. Default: `false` */\n this.suppressMultiSort = undefined;\n /** Set to `'ctrl'` to have multi sorting work using the `Ctrl` (or `Command ⌘` for Mac) key. */\n this.multiSortKey = undefined;\n /** Set to `true` to suppress sorting of un-sorted data to match original row data. Default: `false` */\n this.suppressMaintainUnsortedOrder = undefined;\n /** Icons to use inside the grid instead of the grid's default icons. */\n this.icons = undefined;\n /** Default row height in pixels. Default: `25` */\n this.rowHeight = undefined;\n /** The style properties to apply to all rows. Set to an object of key (style names) and values (style values) */\n this.rowStyle = undefined;\n /** CSS class(es) for all rows. Provide either a string (class name) or array of strings (array of class names). */\n this.rowClass = undefined;\n /** Rules which can be applied to include certain CSS classes. */\n this.rowClassRules = undefined;\n /** Set to `true` to not highlight rows by adding the `ag-row-hover` CSS class. Default: `false` */\n this.suppressRowHoverHighlight = undefined;\n /** Uses CSS `top` instead of CSS `transform` for positioning rows. Useful if the transform function is causing issues such as used in row spanning. Default: `false` */\n this.suppressRowTransform = undefined;\n /** Set to `true` to highlight columns by adding the `ag-column-hover` CSS class. Default: `false` */\n this.columnHoverHighlight = undefined;\n this.deltaSort = undefined;\n this.treeDataDisplayType = undefined;\n this.angularCompileRows = undefined;\n this.angularCompileFilters = undefined;\n this.functionsPassive = undefined;\n this.enableGroupEdit = undefined;\n /** For customising the context menu. */\n this.getContextMenuItems = undefined;\n /** For customising the main 'column header' menu. */\n this.getMainMenuItems = undefined;\n /** Allows user to process popups after they are created. Applications can use this if they want to, for example, reposition the popup. */\n this.postProcessPopup = undefined;\n /** Allows you to process cells for the clipboard. Handy if for example you have `Date` objects that need to have a particular format if importing into Excel. */\n this.processCellForClipboard = undefined;\n /** Allows you to process header values for the clipboard. */\n this.processHeaderForClipboard = undefined;\n /** Allows you to process group header values for the clipboard. */\n this.processGroupHeaderForClipboard = undefined;\n /** Allows you to process cells from the clipboard. Handy if for example you have number fields, and want to block non-numbers from getting into the grid. */\n this.processCellFromClipboard = undefined;\n /** Allows you to get the data that would otherwise go to the clipboard. To be used when you want to control the 'copy to clipboard' operation yourself. */\n this.sendToClipboard = undefined;\n /** Allows complete control of the paste operation, including cancelling the operation (so nothing happens) or replacing the data with other data. */\n this.processDataFromClipboard = undefined;\n /** Grid calls this method to know if an external filter is present. */\n this.isExternalFilterPresent = undefined;\n /** Should return `true` if external filter passes, otherwise `false`. */\n this.doesExternalFilterPass = undefined;\n /** Callback to be used to customise the chart toolbar items. */\n this.getChartToolbarItems = undefined;\n /** Callback to enable displaying the chart in an alternative chart container. */\n this.createChartContainer = undefined;\n /** Allows overriding the default behaviour for when user hits navigation (arrow) key when a header is focused. Return the next Header position to navigate to or `null` to stay on current header. */\n this.navigateToNextHeader = undefined;\n /** Allows overriding the default behaviour for when user hits `Tab` key when a header is focused. Return the next Header position to navigate to or `null` to stay on current header. */\n this.tabToNextHeader = undefined;\n /** Allows overriding the default behaviour for when user hits navigation (arrow) key when a cell is focused. Return the next Cell position to navigate to or `null` to stay on current cell. */\n this.navigateToNextCell = undefined;\n /** Allows overriding the default behaviour for when user hits `Tab` key when a cell is focused. Return the next Cell position to navigate to or null to stay on current cell. */\n this.tabToNextCell = undefined;\n /** Suppress the grid taking action for the relevant keyboard event when a cell is focused. */\n this.suppressKeyboardEvent = undefined;\n /** A callback for localising text within the grid. */\n this.localeTextFunc = undefined;\n /** Allows overriding what `document` is used. Currently used by Drag and Drop (may extend to other places in the future). Use this when you want the grid to use a different `document` than the one available on the global scope. This can happen if docking out components (something which Electron supports) */\n this.getDocument = undefined;\n /** Allows user to format the numbers in the pagination panel, i.e. 'row count' and 'page number' labels. This is for pagination panel only, to format numbers inside the grid's cells (i.e. your data), then use `valueFormatter` in the column definitions. */\n this.paginationNumberFormatter = undefined;\n /** Callback for grouping. */\n this.groupRowAggNodes = undefined;\n /** (Client-side Row Model only) Allows groups to be open by default. */\n this.isGroupOpenByDefault = undefined;\n /** Allows default sorting of groups. */\n this.defaultGroupOrderComparator = undefined;\n /** Callback to be used with pivoting, to allow changing the second column definition. */\n this.processSecondaryColDef = undefined;\n /** Callback to be used with pivoting, to allow changing the second column group definition. */\n this.processSecondaryColGroupDef = undefined;\n /** Callback to be used when working with Tree Data when `treeData = true`. */\n this.getDataPath = undefined;\n /** @deprecated - Use defaultGroupOrderComparator instead\n */\n this.defaultGroupSortComparator = undefined;\n /** Allows setting the child count for a group row. */\n this.getChildCount = undefined;\n /** Allows providing different params for different levels of grouping. */\n this.getServerSideStoreParams = undefined;\n /** Allows groups to be open by default. */\n this.isServerSideGroupOpenByDefault = undefined;\n /** Allows cancelling transactions. */\n this.isApplyServerSideTransaction = undefined;\n /** SSRM Tree Data: Allows specifying which rows are expandable. */\n this.isServerSideGroup = undefined;\n /** SSRM Tree Data: Allows specifying group keys. */\n this.getServerSideGroupKey = undefined;\n /** Return a business key for the node. If implemented, each row in the DOM will have an attribute `row-id='abc'` where `abc` is what you return as the business key.\n * This is useful for automated testing, as it provides a way for your tool to identify rows based on unique business keys. */\n this.getBusinessKeyForNode = undefined;\n /** @deprecated Use getRowId instead - however be aware, getRowId() will also set grid option immutableData=true\n Allows you to set the ID for a particular row node based on the data.\n */\n this.getRowNodeId = undefined;\n /** Allows you to set the ID for a particular row based on the data. */\n this.getRowId = undefined;\n /** Allows you to process rows after they are created, so you can do final adding of custom attributes etc. */\n this.processRowPostCreate = undefined;\n /** Callback to be used to determine which rows are selectable. By default rows are selectable, so return `false` to make a row un-selectable. */\n this.isRowSelectable = undefined;\n /** Callback to be used with Master Detail to determine if a row should be a master row. If `false` is returned no detail row will exist for this row. */\n this.isRowMaster = undefined;\n /** Callback to fill values instead of simply copying values or increasing number values using linear progression. */\n this.fillOperation = undefined;\n /** Callback to perform additional sorting after the grid has sorted the rows. */\n this.postSort = undefined;\n /** Callback version of property `rowStyle` to set style for each row individually. Function should return an object of CSS values or undefined for no styles. */\n this.getRowStyle = undefined;\n /** Callback version of property `rowClass` to set class(es) for each row individually. Function should return either a string (class name), array of strings (array of class names) or undefined for no class. */\n this.getRowClass = undefined;\n /** Callback version of property `rowHeight` to set height for each row individually. Function should return a positive number of pixels, or return `null`/`undefined` to use the default row height. */\n this.getRowHeight = undefined;\n /** Tells the grid if this row should be rendered as full width. */\n this.isFullWidthCell = undefined;\n /** The tool panel was hidden or shown. Use `api.isToolPanelShowing()` to get status. */\n this.toolPanelVisibleChanged = new EventEmitter();\n /** Paste operation has started. */\n this.pasteStart = new EventEmitter();\n /** Paste operation has ended. */\n this.pasteEnd = new EventEmitter();\n /** A column, or group of columns, was hidden / shown. */\n this.columnVisible = new EventEmitter();\n /** A column, or group of columns, was pinned / unpinned. */\n this.columnPinned = new EventEmitter();\n /** A column was resized. */\n this.columnResized = new EventEmitter();\n /** A column was moved. To find out when the column move is finished you can use the `dragStopped` event below. */\n this.columnMoved = new EventEmitter();\n /** A value column was added or removed. */\n this.columnValueChanged = new EventEmitter();\n /** The pivot mode flag was changed. */\n this.columnPivotModeChanged = new EventEmitter();\n /** A pivot column was added, removed or order changed. */\n this.columnPivotChanged = new EventEmitter();\n /** A column group was opened / closed. */\n this.columnGroupOpened = new EventEmitter();\n /** User set new columns. */\n this.newColumnsLoaded = new EventEmitter();\n /** The list of grid columns changed. */\n this.gridColumnsChanged = new EventEmitter();\n /** The list of displayed columns changed. This can result from columns open / close, column move, pivot, group, etc. */\n this.displayedColumnsChanged = new EventEmitter();\n /** The list of rendered columns changed (only columns in the visible scrolled viewport are rendered by default). */\n this.virtualColumnsChanged = new EventEmitter();\n /** Shotgun - gets called when either a) new columns are set or b) `columnApi.setState()` is used, so everything has changed. */\n this.columnEverythingChanged = new EventEmitter();\n /** Only used by Angular, React and VueJS AG Grid components (not used if doing plain JavaScript).\n * If the grid receives changes due to bound properties, this event fires after the grid has finished processing the change. */\n this.componentStateChanged = new EventEmitter();\n /** Value has changed after editing. This event will not fire if editing was cancelled (eg ESC was pressed). */\n this.cellValueChanged = new EventEmitter();\n /** Value has changed after editing. Only fires when doing Read Only Edits, ie `readOnlyEdit=true`. */\n this.cellEditRequest = new EventEmitter();\n /** A cell's value within a row has changed. This event corresponds to Full Row Editing only. */\n this.rowValueChanged = new EventEmitter();\n /** Editing a cell has started. */\n this.cellEditingStarted = new EventEmitter();\n /** Editing a cell has stopped. */\n this.cellEditingStopped = new EventEmitter();\n /** Editing a row has started (when row editing is enabled). When row editing, this event will be fired once and `cellEditingStarted` will be fired for each individual cell. Only fires when doing Full Row Editing. */\n this.rowEditingStarted = new EventEmitter();\n /** Editing a row has stopped (when row editing is enabled). When row editing, this event will be fired once and `cellEditingStopped` will be fired for each individual cell. Only fires when doing Full Row Editing. */\n this.rowEditingStopped = new EventEmitter();\n /** Filter has been opened. */\n this.filterOpened = new EventEmitter();\n /** Filter has been modified and applied. */\n this.filterChanged = new EventEmitter();\n /** Filter was modified but not applied. Used when filters have 'Apply' buttons. */\n this.filterModified = new EventEmitter();\n /** A chart has been created. */\n this.chartCreated = new EventEmitter();\n /** The data range for the chart has been changed. */\n this.chartRangeSelectionChanged = new EventEmitter();\n /** Formatting changes have been made by users through the Format Panel. */\n this.chartOptionsChanged = new EventEmitter();\n /** A chart has been destroyed. */\n this.chartDestroyed = new EventEmitter();\n /** DOM event `keyDown` happened on a cell. */\n this.cellKeyDown = new EventEmitter();\n /** DOM event `keyPress` happened on a cell. */\n this.cellKeyPress = new EventEmitter();\n /** The grid has initialised. Use this event if, for example, you need to use the grid's API to fix the columns to size. */\n this.gridReady = new EventEmitter();\n /** Fired the first time data is rendered into the grid. */\n this.firstDataRendered = new EventEmitter();\n /** The size of the grid `div` has changed. In other words, the grid was resized. */\n this.gridSizeChanged = new EventEmitter();\n /** Displayed rows have changed. Triggered after sort, filter or tree expand / collapse events. */\n this.modelUpdated = new EventEmitter();\n /** A row was removed from the DOM, for any reason. Use to clean up resources (if any) used by the row. */\n this.virtualRowRemoved = new EventEmitter();\n /** Which rows are rendered in the DOM has changed. */\n this.viewportChanged = new EventEmitter();\n /** The body was scrolled horizontally or vertically. */\n this.bodyScroll = new EventEmitter();\n /** Main body of the grid has stopped scrolling, either horizontally or vertically. */\n this.bodyScrollEnd = new EventEmitter();\n /** When dragging starts. This could be any action that uses the grid's Drag and Drop service, e.g. Column Moving, Column Resizing, Range Selection, Fill Handle, etc. */\n this.dragStarted = new EventEmitter();\n /** When dragging stops. This could be any action that uses the grid's Drag and Drop service, e.g. Column Moving, Column Resizing, Range Selection, Fill Handle, etc. */\n this.dragStopped = new EventEmitter();\n /** Triggered every time the paging state changes. Some of the most common scenarios for this event to be triggered are:\n *\n * - The page size changes.\n * - The current shown page is changed.\n * - New data is loaded onto the grid. */\n this.paginationChanged = new EventEmitter();\n /** A drag has started, or dragging was already started and the mouse has re-entered the grid having previously left the grid. */\n this.rowDragEnter = new EventEmitter();\n /** The mouse has moved while dragging. */\n this.rowDragMove = new EventEmitter();\n /** The mouse has left the grid while dragging. */\n this.rowDragLeave = new EventEmitter();\n /** The drag has finished over the grid. */\n this.rowDragEnd = new EventEmitter();\n /** A row group column was added or removed. */\n this.columnRowGroupChanged = new EventEmitter();\n /** A row group was opened or closed. */\n this.rowGroupOpened = new EventEmitter();\n /** Fired when calling either of the API methods `expandAll()` or `collapseAll()`. */\n this.expandOrCollapseAll = new EventEmitter();\n /** The client has set new pinned row data into the grid. */\n this.pinnedRowDataChanged = new EventEmitter();\n /** The client has set new data into the grid using `api.setRowData()` or by changing the `rowData` bound property. */\n this.rowDataChanged = new EventEmitter();\n /** The client has updated data for the grid using `api.applyTransaction(transaction)` or by changing the `rowData` bound property with `immutableData=true`. */\n this.rowDataUpdated = new EventEmitter();\n /** Async transactions have been applied. Contains a list of all transaction results. */\n this.asyncTransactionsFlushed = new EventEmitter();\n /** Cell is clicked. */\n this.cellClicked = new EventEmitter();\n /** Cell is double clicked. */\n this.cellDoubleClicked = new EventEmitter();\n /** Cell is focused. */\n this.cellFocused = new EventEmitter();\n /** Mouse entered cell. */\n this.cellMouseOver = new EventEmitter();\n /** Mouse left cell. */\n this.cellMouseOut = new EventEmitter();\n /** Mouse down on cell. */\n this.cellMouseDown = new EventEmitter();\n /** Row is clicked. */\n this.rowClicked = new EventEmitter();\n /** Row is double clicked. */\n this.rowDoubleClicked = new EventEmitter();\n /** Row is selected or deselected. The event contains the node in question, so call the node's `isSelected()` method to see if it was just selected or deselected. */\n this.rowSelected = new EventEmitter();\n /** Row selection is changed. Use the grid API `getSelectedNodes()` to get the new list of selected nodes. */\n this.selectionChanged = new EventEmitter();\n /** Cell is right clicked. */\n this.cellContextMenu = new EventEmitter();\n /** A change to range selection has occurred. */\n this.rangeSelectionChanged = new EventEmitter();\n /** Sort has changed. The grid also listens for this and updates the model. */\n this.sortChanged = new EventEmitter();\n this.columnRowGroupChangeRequest = new EventEmitter();\n this.columnPivotChangeRequest = new EventEmitter();\n this.columnValueChangeRequest = new EventEmitter();\n this.columnAggFuncChangeRequest = new EventEmitter();\n this._nativeElement = elementDef.nativeElement;\n }\n ngAfterViewInit() {\n this.frameworkComponentWrapper.setViewContainerRef(this.viewContainerRef);\n this.frameworkComponentWrapper.setComponentFactoryResolver(this.componentFactoryResolver);\n this.angularFrameworkOverrides.setEmitterUsedCallback(this.isEmitterUsed.bind(this));\n this.gridOptions = ComponentUtil.copyAttributesToGridOptions(this.gridOptions, this, true);\n this.gridParams = {\n globalEventListener: this.globalEventListener.bind(this),\n frameworkOverrides: this.angularFrameworkOverrides,\n providedBeanInstances: {\n frameworkComponentWrapper: this.frameworkComponentWrapper\n },\n modules: (this.modules || [])\n };\n if (this.columns && this.columns.length > 0) {\n this.gridOptions.columnDefs = this.columns\n .map((column) => {\n return column.toColDef();\n });\n }\n new Grid(this._nativeElement, this.gridOptions, this.gridParams);\n if (this.gridOptions.api) {\n this.api = this.gridOptions.api;\n }\n if (this.gridOptions.columnApi) {\n this.columnApi = this.gridOptions.columnApi;\n }\n this._initialised = true;\n // sometimes, especially in large client apps gridReady can fire before ngAfterViewInit\n // this ties these together so that gridReady will always fire after agGridAngular's ngAfterViewInit\n // the actual containing component's ngAfterViewInit will fire just after agGridAngular's\n this._fullyReady.resolveNow(null, resolve => resolve);\n }\n ngOnChanges(changes) {\n if (this._initialised) {\n ComponentUtil.processOnChange(changes, this.gridOptions, this.api, this.columnApi);\n }\n }\n ngOnDestroy() {\n if (this._initialised) {\n // need to do this before the destroy, so we know not to emit any events\n // while tearing down the grid.\n this._destroyed = true;\n if (this.api) {\n this.api.destroy();\n }\n }\n }\n // we'll emit the emit if a user is listening for a given event either on the component via normal angular binding\n // or via gridOptions\n isEmitterUsed(eventType) {\n const emitter = this[eventType];\n const hasEmitter = !!emitter && emitter.observers && emitter.observers.length > 0;\n // gridReady => onGridReady\n const asEventName = `on${eventType.charAt(0).toUpperCase()}${eventType.substring(1)}`;\n const hasGridOptionListener = !!this.gridOptions && !!this.gridOptions[asEventName];\n return hasEmitter || hasGridOptionListener;\n }\n globalEventListener(eventType, event) {\n // if we are tearing down, don't emit angular events, as this causes\n // problems with the angular router\n if (this._destroyed) {\n return;\n }\n // generically look up the eventType\n const emitter = this[eventType];\n if (emitter && this.isEmitterUsed(eventType)) {\n if (eventType === 'gridReady') {\n // if the user is listening for gridReady, wait for ngAfterViewInit to fire first, then emit the\n // gridReady event\n this._fullyReady.then((result => {\n emitter.emit(event);\n }));\n }\n else {\n emitter.emit(event);\n }\n }\n }\n};\nAgGridAngular.ɵfac = function AgGridAngular_Factory(t) { return new (t || AgGridAngular)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(AngularFrameworkOverrides), ɵngcc0.ɵɵdirectiveInject(AngularFrameworkComponentWrapper), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ComponentFactoryResolver)); };\nAgGridAngular.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: AgGridAngular, selectors: [[\"ag-grid-angular\"]], contentQueries: function AgGridAngular_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, AgGridColumn, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.columns = _t);\n } }, inputs: { statusBar: \"statusBar\", sideBar: \"sideBar\", suppressContextMenu: \"suppressContextMenu\", preventDefaultOnContextMenu: \"preventDefaultOnContextMenu\", allowContextMenuWithControlKey: \"allowContextMenuWithControlKey\", suppressMenuHide: \"suppressMenuHide\", enableBrowserTooltips: \"enableBrowserTooltips\", tooltipShowDelay: \"tooltipShowDelay\", tooltipHideDelay: \"tooltipHideDelay\", tooltipMouseTrack: \"tooltipMouseTrack\", popupParent: \"popupParent\", copyHeadersToClipboard: \"copyHeadersToClipboard\", copyGroupHeadersToClipboard: \"copyGroupHeadersToClipboard\", clipboardDelimiter: \"clipboardDelimiter\", suppressCopyRowsToClipboard: \"suppressCopyRowsToClipboard\", suppressLastEmptyLineOnPaste: \"suppressLastEmptyLineOnPaste\", suppressClipboardPaste: \"suppressClipboardPaste\", suppressClipboardApi: \"suppressClipboardApi\", columnDefs: \"columnDefs\", defaultColDef: \"defaultColDef\", defaultColGroupDef: \"defaultColGroupDef\", columnTypes: \"columnTypes\", maintainColumnOrder: \"maintainColumnOrder\", suppressFieldDotNotation: \"suppressFieldDotNotation\", deltaColumnMode: \"deltaColumnMode\", applyColumnDefOrder: \"applyColumnDefOrder\", immutableColumns: \"immutableColumns\", suppressSetColumnStateEvents: \"suppressSetColumnStateEvents\", suppressColumnStateEvents: \"suppressColumnStateEvents\", colWidth: \"colWidth\", minColWidth: \"minColWidth\", maxColWidth: \"maxColWidth\", headerHeight: \"headerHeight\", groupHeaderHeight: \"groupHeaderHeight\", floatingFiltersHeight: \"floatingFiltersHeight\", pivotHeaderHeight: \"pivotHeaderHeight\", pivotGroupHeaderHeight: \"pivotGroupHeaderHeight\", allowDragFromColumnsToolPanel: \"allowDragFromColumnsToolPanel\", suppressMovableColumns: \"suppressMovableColumns\", suppressColumnMoveAnimation: \"suppressColumnMoveAnimation\", suppressDragLeaveHidesColumns: \"suppressDragLeaveHidesColumns\", colResizeDefault: \"colResizeDefault\", suppressAutoSize: \"suppressAutoSize\", autoSizePadding: \"autoSizePadding\", skipHeaderOnAutoSize: \"skipHeaderOnAutoSize\", components: \"components\", frameworkComponents: \"frameworkComponents\", reactUi: \"reactUi\", suppressReactUi: \"suppressReactUi\", editType: \"editType\", singleClickEdit: \"singleClickEdit\", suppressClickEdit: \"suppressClickEdit\", readOnlyEdit: \"readOnlyEdit\", stopEditingWhenCellsLoseFocus: \"stopEditingWhenCellsLoseFocus\", enterMovesDown: \"enterMovesDown\", enterMovesDownAfterEdit: \"enterMovesDownAfterEdit\", undoRedoCellEditing: \"undoRedoCellEditing\", undoRedoCellEditingLimit: \"undoRedoCellEditingLimit\", stopEditingWhenGridLosesFocus: \"stopEditingWhenGridLosesFocus\", defaultCsvExportParams: \"defaultCsvExportParams\", suppressCsvExport: \"suppressCsvExport\", defaultExcelExportParams: \"defaultExcelExportParams\", suppressExcelExport: \"suppressExcelExport\", excelStyles: \"excelStyles\", defaultExportParams: \"defaultExportParams\", quickFilterText: \"quickFilterText\", cacheQuickFilter: \"cacheQuickFilter\", excludeChildrenWhenTreeDataFiltering: \"excludeChildrenWhenTreeDataFiltering\", enableCharts: \"enableCharts\", chartThemes: \"chartThemes\", customChartThemes: \"customChartThemes\", chartThemeOverrides: \"chartThemeOverrides\", loadingCellRenderer: \"loadingCellRenderer\", loadingCellRendererFramework: \"loadingCellRendererFramework\", loadingCellRendererParams: \"loadingCellRendererParams\", loadingCellRendererSelector: \"loadingCellRendererSelector\", localeText: \"localeText\", masterDetail: \"masterDetail\", keepDetailRows: \"keepDetailRows\", keepDetailRowsCount: \"keepDetailRowsCount\", detailCellRenderer: \"detailCellRenderer\", detailCellRendererFramework: \"detailCellRendererFramework\", detailCellRendererParams: \"detailCellRendererParams\", detailRowHeight: \"detailRowHeight\", detailRowAutoHeight: \"detailRowAutoHeight\", context: \"context\", alignedGrids: \"alignedGrids\", tabIndex: \"tabIndex\", rowBuffer: \"rowBuffer\", valueCache: \"valueCache\", valueCacheNeverExpires: \"valueCacheNeverExpires\", enableCellExpressions: \"enableCellExpressions\", suppressParentsInRowNodes: \"suppressParentsInRowNodes\", suppressTouch: \"suppressTouch\", suppressFocusAfterRefresh: \"suppressFocusAfterRefresh\", suppressAsyncEvents: \"suppressAsyncEvents\", suppressBrowserResizeObserver: \"suppressBrowserResizeObserver\", suppressPropertyNamesCheck: \"suppressPropertyNamesCheck\", suppressChangeDetection: \"suppressChangeDetection\", debug: \"debug\", overlayLoadingTemplate: \"overlayLoadingTemplate\", loadingOverlayComponent: \"loadingOverlayComponent\", loadingOverlayComponentFramework: \"loadingOverlayComponentFramework\", loadingOverlayComponentParams: \"loadingOverlayComponentParams\", suppressLoadingOverlay: \"suppressLoadingOverlay\", overlayNoRowsTemplate: \"overlayNoRowsTemplate\", noRowsOverlayComponent: \"noRowsOverlayComponent\", noRowsOverlayComponentFramework: \"noRowsOverlayComponentFramework\", noRowsOverlayComponentParams: \"noRowsOverlayComponentParams\", suppressNoRowsOverlay: \"suppressNoRowsOverlay\", pagination: \"pagination\", paginationPageSize: \"paginationPageSize\", paginationAutoPageSize: \"paginationAutoPageSize\", paginateChildRows: \"paginateChildRows\", suppressPaginationPanel: \"suppressPaginationPanel\", pivotMode: \"pivotMode\", pivotPanelShow: \"pivotPanelShow\", pivotColumnGroupTotals: \"pivotColumnGroupTotals\", pivotRowTotals: \"pivotRowTotals\", pivotSuppressAutoColumn: \"pivotSuppressAutoColumn\", suppressExpandablePivotGroups: \"suppressExpandablePivotGroups\", functionsReadOnly: \"functionsReadOnly\", aggFuncs: \"aggFuncs\", suppressAggFuncInHeader: \"suppressAggFuncInHeader\", suppressAggAtRootLevel: \"suppressAggAtRootLevel\", aggregateOnlyChangedColumns: \"aggregateOnlyChangedColumns\", suppressAggFilteredOnly: \"suppressAggFilteredOnly\", animateRows: \"animateRows\", enableCellChangeFlash: \"enableCellChangeFlash\", cellFlashDelay: \"cellFlashDelay\", cellFadeDelay: \"cellFadeDelay\", domLayout: \"domLayout\", ensureDomOrder: \"ensureDomOrder\", enableRtl: \"enableRtl\", suppressColumnVirtualisation: \"suppressColumnVirtualisation\", suppressMaxRenderedRowRestriction: \"suppressMaxRenderedRowRestriction\", suppressRowVirtualisation: \"suppressRowVirtualisation\", rowDragManaged: \"rowDragManaged\", suppressRowDrag: \"suppressRowDrag\", suppressMoveWhenRowDragging: \"suppressMoveWhenRowDragging\", rowDragEntireRow: \"rowDragEntireRow\", rowDragMultiRow: \"rowDragMultiRow\", fullWidthCellRenderer: \"fullWidthCellRenderer\", fullWidthCellRendererFramework: \"fullWidthCellRendererFramework\", fullWidthCellRendererParams: \"fullWidthCellRendererParams\", embedFullWidthRows: \"embedFullWidthRows\", deprecatedEmbedFullWidthRows: \"deprecatedEmbedFullWidthRows\", groupDisplayType: \"groupDisplayType\", groupDefaultExpanded: \"groupDefaultExpanded\", autoGroupColumnDef: \"autoGroupColumnDef\", groupMaintainOrder: \"groupMaintainOrder\", groupSelectsChildren: \"groupSelectsChildren\", groupIncludeFooter: \"groupIncludeFooter\", groupIncludeTotalFooter: \"groupIncludeTotalFooter\", groupSuppressBlankHeader: \"groupSuppressBlankHeader\", groupSelectsFiltered: \"groupSelectsFiltered\", showOpenedGroup: \"showOpenedGroup\", groupRemoveSingleChildren: \"groupRemoveSingleChildren\", groupRemoveLowestSingleChildren: \"groupRemoveLowestSingleChildren\", groupHideOpenParents: \"groupHideOpenParents\", rowGroupPanelShow: \"rowGroupPanelShow\", groupRowRenderer: \"groupRowRenderer\", groupRowRendererFramework: \"groupRowRendererFramework\", groupRowRendererParams: \"groupRowRendererParams\", suppressMakeColumnVisibleAfterUnGroup: \"suppressMakeColumnVisibleAfterUnGroup\", treeData: \"treeData\", groupRowInnerRenderer: \"groupRowInnerRenderer\", groupRowInnerRendererFramework: \"groupRowInnerRendererFramework\", groupMultiAutoColumn: \"groupMultiAutoColumn\", groupUseEntireRow: \"groupUseEntireRow\", groupSuppressAutoColumn: \"groupSuppressAutoColumn\", rememberGroupStateWhenNewData: \"rememberGroupStateWhenNewData\", pinnedTopRowData: \"pinnedTopRowData\", pinnedBottomRowData: \"pinnedBottomRowData\", rowModelType: \"rowModelType\", rowData: \"rowData\", immutableData: \"immutableData\", asyncTransactionWaitMillis: \"asyncTransactionWaitMillis\", suppressModelUpdateAfterUpdateTransaction: \"suppressModelUpdateAfterUpdateTransaction\", deltaRowDataMode: \"deltaRowDataMode\", batchUpdateWaitMillis: \"batchUpdateWaitMillis\", datasource: \"datasource\", cacheOverflowSize: \"cacheOverflowSize\", infiniteInitialRowCount: \"infiniteInitialRowCount\", serverSideStoreType: \"serverSideStoreType\", cacheBlockSize: \"cacheBlockSize\", maxBlocksInCache: \"maxBlocksInCache\", maxConcurrentDatasourceRequests: \"maxConcurrentDatasourceRequests\", blockLoadDebounceMillis: \"blockLoadDebounceMillis\", purgeClosedRowNodes: \"purgeClosedRowNodes\", serverSideDatasource: \"serverSideDatasource\", serverSideSortingAlwaysResets: \"serverSideSortingAlwaysResets\", serverSideFilteringAlwaysResets: \"serverSideFilteringAlwaysResets\", suppressEnterpriseResetOnNewColumns: \"suppressEnterpriseResetOnNewColumns\", viewportDatasource: \"viewportDatasource\", viewportRowModelPageSize: \"viewportRowModelPageSize\", viewportRowModelBufferSize: \"viewportRowModelBufferSize\", alwaysShowHorizontalScroll: \"alwaysShowHorizontalScroll\", alwaysShowVerticalScroll: \"alwaysShowVerticalScroll\", debounceVerticalScrollbar: \"debounceVerticalScrollbar\", suppressHorizontalScroll: \"suppressHorizontalScroll\", suppressScrollOnNewData: \"suppressScrollOnNewData\", suppressScrollWhenPopupsAreOpen: \"suppressScrollWhenPopupsAreOpen\", suppressAnimationFrame: \"suppressAnimationFrame\", suppressMiddleClickScrolls: \"suppressMiddleClickScrolls\", suppressPreventDefaultOnMouseWheel: \"suppressPreventDefaultOnMouseWheel\", scrollbarWidth: \"scrollbarWidth\", rowSelection: \"rowSelection\", rowMultiSelectWithClick: \"rowMultiSelectWithClick\", suppressRowDeselection: \"suppressRowDeselection\", suppressRowClickSelection: \"suppressRowClickSelection\", suppressCellSelection: \"suppressCellSelection\", suppressCellFocus: \"suppressCellFocus\", suppressMultiRangeSelection: \"suppressMultiRangeSelection\", enableCellTextSelection: \"enableCellTextSelection\", enableRangeSelection: \"enableRangeSelection\", enableRangeHandle: \"enableRangeHandle\", enableFillHandle: \"enableFillHandle\", fillHandleDirection: \"fillHandleDirection\", suppressClearOnFillReduction: \"suppressClearOnFillReduction\", sortingOrder: \"sortingOrder\", accentedSort: \"accentedSort\", unSortIcon: \"unSortIcon\", suppressMultiSort: \"suppressMultiSort\", multiSortKey: \"multiSortKey\", suppressMaintainUnsortedOrder: \"suppressMaintainUnsortedOrder\", icons: \"icons\", rowHeight: \"rowHeight\", rowStyle: \"rowStyle\", rowClass: \"rowClass\", rowClassRules: \"rowClassRules\", suppressRowHoverHighlight: \"suppressRowHoverHighlight\", suppressRowTransform: \"suppressRowTransform\", columnHoverHighlight: \"columnHoverHighlight\", deltaSort: \"deltaSort\", treeDataDisplayType: \"treeDataDisplayType\", angularCompileRows: \"angularCompileRows\", angularCompileFilters: \"angularCompileFilters\", functionsPassive: \"functionsPassive\", enableGroupEdit: \"enableGroupEdit\", getContextMenuItems: \"getContextMenuItems\", getMainMenuItems: \"getMainMenuItems\", postProcessPopup: \"postProcessPopup\", processCellForClipboard: \"processCellForClipboard\", processHeaderForClipboard: \"processHeaderForClipboard\", processGroupHeaderForClipboard: \"processGroupHeaderForClipboard\", processCellFromClipboard: \"processCellFromClipboard\", sendToClipboard: \"sendToClipboard\", processDataFromClipboard: \"processDataFromClipboard\", isExternalFilterPresent: \"isExternalFilterPresent\", doesExternalFilterPass: \"doesExternalFilterPass\", getChartToolbarItems: \"getChartToolbarItems\", createChartContainer: \"createChartContainer\", navigateToNextHeader: \"navigateToNextHeader\", tabToNextHeader: \"tabToNextHeader\", navigateToNextCell: \"navigateToNextCell\", tabToNextCell: \"tabToNextCell\", suppressKeyboardEvent: \"suppressKeyboardEvent\", localeTextFunc: \"localeTextFunc\", getDocument: \"getDocument\", paginationNumberFormatter: \"paginationNumberFormatter\", groupRowAggNodes: \"groupRowAggNodes\", isGroupOpenByDefault: \"isGroupOpenByDefault\", defaultGroupOrderComparator: \"defaultGroupOrderComparator\", processSecondaryColDef: \"processSecondaryColDef\", processSecondaryColGroupDef: \"processSecondaryColGroupDef\", getDataPath: \"getDataPath\", defaultGroupSortComparator: \"defaultGroupSortComparator\", getChildCount: \"getChildCount\", getServerSideStoreParams: \"getServerSideStoreParams\", isServerSideGroupOpenByDefault: \"isServerSideGroupOpenByDefault\", isApplyServerSideTransaction: \"isApplyServerSideTransaction\", isServerSideGroup: \"isServerSideGroup\", getServerSideGroupKey: \"getServerSideGroupKey\", getBusinessKeyForNode: \"getBusinessKeyForNode\", getRowNodeId: \"getRowNodeId\", getRowId: \"getRowId\", processRowPostCreate: \"processRowPostCreate\", isRowSelectable: \"isRowSelectable\", isRowMaster: \"isRowMaster\", fillOperation: \"fillOperation\", postSort: \"postSort\", getRowStyle: \"getRowStyle\", getRowClass: \"getRowClass\", getRowHeight: \"getRowHeight\", isFullWidthCell: \"isFullWidthCell\", gridOptions: \"gridOptions\", modules: \"modules\" }, outputs: { toolPanelVisibleChanged: \"toolPanelVisibleChanged\", pasteStart: \"pasteStart\", pasteEnd: \"pasteEnd\", columnVisible: \"columnVisible\", columnPinned: \"columnPinned\", columnResized: \"columnResized\", columnMoved: \"columnMoved\", columnValueChanged: \"columnValueChanged\", columnPivotModeChanged: \"columnPivotModeChanged\", columnPivotChanged: \"columnPivotChanged\", columnGroupOpened: \"columnGroupOpened\", newColumnsLoaded: \"newColumnsLoaded\", gridColumnsChanged: \"gridColumnsChanged\", displayedColumnsChanged: \"displayedColumnsChanged\", virtualColumnsChanged: \"virtualColumnsChanged\", columnEverythingChanged: \"columnEverythingChanged\", componentStateChanged: \"componentStateChanged\", cellValueChanged: \"cellValueChanged\", cellEditRequest: \"cellEditRequest\", rowValueChanged: \"rowValueChanged\", cellEditingStarted: \"cellEditingStarted\", cellEditingStopped: \"cellEditingStopped\", rowEditingStarted: \"rowEditingStarted\", rowEditingStopped: \"rowEditingStopped\", filterOpened: \"filterOpened\", filterChanged: \"filterChanged\", filterModified: \"filterModified\", chartCreated: \"chartCreated\", chartRangeSelectionChanged: \"chartRangeSelectionChanged\", chartOptionsChanged: \"chartOptionsChanged\", chartDestroyed: \"chartDestroyed\", cellKeyDown: \"cellKeyDown\", cellKeyPress: \"cellKeyPress\", gridReady: \"gridReady\", firstDataRendered: \"firstDataRendered\", gridSizeChanged: \"gridSizeChanged\", modelUpdated: \"modelUpdated\", virtualRowRemoved: \"virtualRowRemoved\", viewportChanged: \"viewportChanged\", bodyScroll: \"bodyScroll\", bodyScrollEnd: \"bodyScrollEnd\", dragStarted: \"dragStarted\", dragStopped: \"dragStopped\", paginationChanged: \"paginationChanged\", rowDragEnter: \"rowDragEnter\", rowDragMove: \"rowDragMove\", rowDragLeave: \"rowDragLeave\", rowDragEnd: \"rowDragEnd\", columnRowGroupChanged: \"columnRowGroupChanged\", rowGroupOpened: \"rowGroupOpened\", expandOrCollapseAll: \"expandOrCollapseAll\", pinnedRowDataChanged: \"pinnedRowDataChanged\", rowDataChanged: \"rowDataChanged\", rowDataUpdated: \"rowDataUpdated\", asyncTransactionsFlushed: \"asyncTransactionsFlushed\", cellClicked: \"cellClicked\", cellDoubleClicked: \"cellDoubleClicked\", cellFocused: \"cellFocused\", cellMouseOver: \"cellMouseOver\", cellMouseOut: \"cellMouseOut\", cellMouseDown: \"cellMouseDown\", rowClicked: \"rowClicked\", rowDoubleClicked: \"rowDoubleClicked\", rowSelected: \"rowSelected\", selectionChanged: \"selectionChanged\", cellContextMenu: \"cellContextMenu\", rangeSelectionChanged: \"rangeSelectionChanged\", sortChanged: \"sortChanged\", columnRowGroupChangeRequest: \"columnRowGroupChangeRequest\", columnPivotChangeRequest: \"columnPivotChangeRequest\", columnValueChangeRequest: \"columnValueChangeRequest\", columnAggFuncChangeRequest: \"columnAggFuncChangeRequest\" }, features: [ɵngcc0.ɵɵProvidersFeature([\n AngularFrameworkOverrides,\n AngularFrameworkComponentWrapper\n ]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 0, vars: 0, template: function AgGridAngular_Template(rf, ctx) { }, encapsulation: 2 });\nAgGridAngular.ctorParameters = () => [\n { type: ElementRef },\n { type: ViewContainerRef },\n { type: AngularFrameworkOverrides },\n { type: AngularFrameworkComponentWrapper },\n { type: ComponentFactoryResolver }\n];\n__decorate([\n ContentChildren(AgGridColumn),\n __metadata(\"design:type\", QueryList)\n], AgGridAngular.prototype, \"columns\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"gridOptions\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], AgGridAngular.prototype, \"modules\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"statusBar\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"sideBar\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressContextMenu\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"preventDefaultOnContextMenu\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"allowContextMenuWithControlKey\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressMenuHide\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"enableBrowserTooltips\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"tooltipShowDelay\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"tooltipHideDelay\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"tooltipMouseTrack\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"popupParent\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"copyHeadersToClipboard\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"copyGroupHeadersToClipboard\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"clipboardDelimiter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressCopyRowsToClipboard\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressLastEmptyLineOnPaste\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressClipboardPaste\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressClipboardApi\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"columnDefs\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"defaultColDef\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"defaultColGroupDef\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"columnTypes\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"maintainColumnOrder\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressFieldDotNotation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"deltaColumnMode\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"applyColumnDefOrder\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"immutableColumns\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressSetColumnStateEvents\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressColumnStateEvents\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"colWidth\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"minColWidth\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"maxColWidth\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"headerHeight\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"groupHeaderHeight\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"floatingFiltersHeight\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"pivotHeaderHeight\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"pivotGroupHeaderHeight\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"allowDragFromColumnsToolPanel\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressMovableColumns\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressColumnMoveAnimation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressDragLeaveHidesColumns\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"colResizeDefault\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressAutoSize\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"autoSizePadding\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"skipHeaderOnAutoSize\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"components\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"frameworkComponents\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"reactUi\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressReactUi\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"editType\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"singleClickEdit\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressClickEdit\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"readOnlyEdit\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"stopEditingWhenCellsLoseFocus\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"enterMovesDown\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"enterMovesDownAfterEdit\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"undoRedoCellEditing\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"undoRedoCellEditingLimit\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"stopEditingWhenGridLosesFocus\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"defaultCsvExportParams\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressCsvExport\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"defaultExcelExportParams\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressExcelExport\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"excelStyles\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"defaultExportParams\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"quickFilterText\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"cacheQuickFilter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"excludeChildrenWhenTreeDataFiltering\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"enableCharts\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"chartThemes\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"customChartThemes\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"chartThemeOverrides\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"loadingCellRenderer\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"loadingCellRendererFramework\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"loadingCellRendererParams\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"loadingCellRendererSelector\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"localeText\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"masterDetail\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"keepDetailRows\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"keepDetailRowsCount\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"detailCellRenderer\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"detailCellRendererFramework\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"detailCellRendererParams\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"detailRowHeight\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"detailRowAutoHeight\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"context\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"alignedGrids\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"tabIndex\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"rowBuffer\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"valueCache\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"valueCacheNeverExpires\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"enableCellExpressions\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressParentsInRowNodes\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressTouch\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressFocusAfterRefresh\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressAsyncEvents\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressBrowserResizeObserver\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressPropertyNamesCheck\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressChangeDetection\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"debug\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"overlayLoadingTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"loadingOverlayComponent\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"loadingOverlayComponentFramework\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"loadingOverlayComponentParams\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressLoadingOverlay\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"overlayNoRowsTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"noRowsOverlayComponent\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"noRowsOverlayComponentFramework\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"noRowsOverlayComponentParams\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressNoRowsOverlay\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"pagination\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"paginationPageSize\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"paginationAutoPageSize\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"paginateChildRows\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressPaginationPanel\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"pivotMode\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"pivotPanelShow\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"pivotColumnGroupTotals\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"pivotRowTotals\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"pivotSuppressAutoColumn\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressExpandablePivotGroups\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"functionsReadOnly\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"aggFuncs\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressAggFuncInHeader\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressAggAtRootLevel\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"aggregateOnlyChangedColumns\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressAggFilteredOnly\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"animateRows\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"enableCellChangeFlash\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"cellFlashDelay\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"cellFadeDelay\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"domLayout\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"ensureDomOrder\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"enableRtl\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressColumnVirtualisation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressMaxRenderedRowRestriction\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressRowVirtualisation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"rowDragManaged\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressRowDrag\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressMoveWhenRowDragging\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"rowDragEntireRow\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"rowDragMultiRow\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"fullWidthCellRenderer\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"fullWidthCellRendererFramework\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"fullWidthCellRendererParams\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"embedFullWidthRows\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"deprecatedEmbedFullWidthRows\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"groupDisplayType\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"groupDefaultExpanded\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"autoGroupColumnDef\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"groupMaintainOrder\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"groupSelectsChildren\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"groupIncludeFooter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"groupIncludeTotalFooter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"groupSuppressBlankHeader\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"groupSelectsFiltered\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"showOpenedGroup\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"groupRemoveSingleChildren\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"groupRemoveLowestSingleChildren\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"groupHideOpenParents\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"rowGroupPanelShow\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"groupRowRenderer\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"groupRowRendererFramework\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"groupRowRendererParams\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressMakeColumnVisibleAfterUnGroup\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"treeData\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"groupRowInnerRenderer\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"groupRowInnerRendererFramework\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"groupMultiAutoColumn\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"groupUseEntireRow\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"groupSuppressAutoColumn\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"rememberGroupStateWhenNewData\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"pinnedTopRowData\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"pinnedBottomRowData\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"rowModelType\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"rowData\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"immutableData\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"asyncTransactionWaitMillis\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressModelUpdateAfterUpdateTransaction\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"deltaRowDataMode\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"batchUpdateWaitMillis\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"datasource\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"cacheOverflowSize\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"infiniteInitialRowCount\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"serverSideStoreType\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"cacheBlockSize\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"maxBlocksInCache\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"maxConcurrentDatasourceRequests\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"blockLoadDebounceMillis\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"purgeClosedRowNodes\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"serverSideDatasource\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"serverSideSortingAlwaysResets\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"serverSideFilteringAlwaysResets\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressEnterpriseResetOnNewColumns\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"viewportDatasource\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"viewportRowModelPageSize\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"viewportRowModelBufferSize\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"alwaysShowHorizontalScroll\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"alwaysShowVerticalScroll\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"debounceVerticalScrollbar\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressHorizontalScroll\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressScrollOnNewData\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressScrollWhenPopupsAreOpen\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressAnimationFrame\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressMiddleClickScrolls\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressPreventDefaultOnMouseWheel\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"scrollbarWidth\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"rowSelection\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"rowMultiSelectWithClick\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressRowDeselection\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressRowClickSelection\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressCellSelection\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressCellFocus\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressMultiRangeSelection\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"enableCellTextSelection\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"enableRangeSelection\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"enableRangeHandle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"enableFillHandle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"fillHandleDirection\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressClearOnFillReduction\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"sortingOrder\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"accentedSort\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"unSortIcon\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressMultiSort\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"multiSortKey\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressMaintainUnsortedOrder\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"icons\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"rowHeight\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"rowStyle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"rowClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"rowClassRules\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressRowHoverHighlight\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressRowTransform\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"columnHoverHighlight\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"deltaSort\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"treeDataDisplayType\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"angularCompileRows\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"angularCompileFilters\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"functionsPassive\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"enableGroupEdit\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"getContextMenuItems\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"getMainMenuItems\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"postProcessPopup\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"processCellForClipboard\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"processHeaderForClipboard\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"processGroupHeaderForClipboard\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"processCellFromClipboard\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"sendToClipboard\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"processDataFromClipboard\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"isExternalFilterPresent\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"doesExternalFilterPass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"getChartToolbarItems\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"createChartContainer\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"navigateToNextHeader\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"tabToNextHeader\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"navigateToNextCell\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"tabToNextCell\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"suppressKeyboardEvent\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"localeTextFunc\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"getDocument\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"paginationNumberFormatter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"groupRowAggNodes\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"isGroupOpenByDefault\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"defaultGroupOrderComparator\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"processSecondaryColDef\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"processSecondaryColGroupDef\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"getDataPath\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"defaultGroupSortComparator\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"getChildCount\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"getServerSideStoreParams\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"isServerSideGroupOpenByDefault\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"isApplyServerSideTransaction\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"isServerSideGroup\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"getServerSideGroupKey\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"getBusinessKeyForNode\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"getRowNodeId\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"getRowId\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"processRowPostCreate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"isRowSelectable\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"isRowMaster\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"fillOperation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"postSort\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"getRowStyle\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"getRowClass\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"getRowHeight\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], AgGridAngular.prototype, \"isFullWidthCell\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"toolPanelVisibleChanged\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"pasteStart\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"pasteEnd\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"columnVisible\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"columnPinned\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"columnResized\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"columnMoved\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"columnValueChanged\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"columnPivotModeChanged\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"columnPivotChanged\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"columnGroupOpened\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"newColumnsLoaded\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"gridColumnsChanged\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"displayedColumnsChanged\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"virtualColumnsChanged\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"columnEverythingChanged\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"componentStateChanged\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"cellValueChanged\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"cellEditRequest\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"rowValueChanged\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"cellEditingStarted\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"cellEditingStopped\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"rowEditingStarted\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"rowEditingStopped\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"filterOpened\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"filterChanged\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"filterModified\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"chartCreated\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"chartRangeSelectionChanged\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"chartOptionsChanged\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"chartDestroyed\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"cellKeyDown\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"cellKeyPress\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"gridReady\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"firstDataRendered\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"gridSizeChanged\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"modelUpdated\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"virtualRowRemoved\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"viewportChanged\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"bodyScroll\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"bodyScrollEnd\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"dragStarted\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"dragStopped\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"paginationChanged\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"rowDragEnter\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"rowDragMove\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"rowDragLeave\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"rowDragEnd\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"columnRowGroupChanged\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"rowGroupOpened\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"expandOrCollapseAll\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"pinnedRowDataChanged\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"rowDataChanged\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"rowDataUpdated\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"asyncTransactionsFlushed\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"cellClicked\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"cellDoubleClicked\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"cellFocused\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"cellMouseOver\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"cellMouseOut\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"cellMouseDown\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"rowClicked\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"rowDoubleClicked\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"rowSelected\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"selectionChanged\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"cellContextMenu\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"rangeSelectionChanged\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"sortChanged\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"columnRowGroupChangeRequest\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"columnPivotChangeRequest\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"columnValueChangeRequest\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], AgGridAngular.prototype, \"columnAggFuncChangeRequest\", void 0);\nAgGridAngular = __decorate([ __metadata(\"design:paramtypes\", [ElementRef,\n ViewContainerRef,\n AngularFrameworkOverrides,\n AngularFrameworkComponentWrapper,\n ComponentFactoryResolver])\n], AgGridAngular);\n\nvar AgGridModule_1;\nlet AgGridModule = AgGridModule_1 = class AgGridModule {\n /**\n * If you are using Angular v9+, with Ivy enabled, you **do not** need to pass your components to the `AgGridModules` via this method.\n * They will automatically be resolved by Angular.\n */\n static withComponents(components) {\n return {\n ngModule: AgGridModule_1,\n providers: [\n { provide: ANALYZE_FOR_ENTRY_COMPONENTS, useValue: components, multi: true }\n ],\n };\n }\n /**\n * If you are using Angular v9+, with Ivy enabled, you **do not** need to pass your components to the `AgGridModules` via this method.\n * They will automatically be resolved by Angular.\n */\n static forRoot(components) {\n return {\n ngModule: AgGridModule_1,\n providers: [\n { provide: ANALYZE_FOR_ENTRY_COMPONENTS, useValue: components, multi: true }\n ],\n };\n }\n};\nAgGridModule.ɵfac = function AgGridModule_Factory(t) { return new (t || AgGridModule)(); };\nAgGridModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: AgGridModule });\nAgGridModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AgGridColumn, [{\n type: Component,\n args: [{\n selector: 'ag-grid-column',\n template: ''\n }]\n }], null, { childColumns: [{\n type: ContentChildren,\n args: [AgGridColumn_1]\n }], filterFramework: [{\n type: Input\n }], filterParams: [{\n type: Input\n }], floatingFilterComponent: [{\n type: Input\n }], floatingFilterComponentParams: [{\n type: Input\n }], floatingFilterComponentFramework: [{\n type: Input\n }], floatingFilterFramework: [{\n type: Input\n }], filter: [{\n type: Input\n }], headerName: [{\n type: Input\n }], headerValueGetter: [{\n type: Input\n }], headerTooltip: [{\n type: Input\n }], headerClass: [{\n type: Input\n }], suppressHeaderKeyboardEvent: [{\n type: Input\n }], columnGroupShow: [{\n type: Input\n }], toolPanelClass: [{\n type: Input\n }], suppressColumnsToolPanel: [{\n type: Input\n }], suppressFiltersToolPanel: [{\n type: Input\n }], tooltipComponent: [{\n type: Input\n }], tooltipComponentFramework: [{\n type: Input\n }], tooltipComponentParams: [{\n type: Input\n }], children: [{\n type: Input\n }], groupId: [{\n type: Input\n }], openByDefault: [{\n type: Input\n }], marryChildren: [{\n type: Input\n }], headerGroupComponent: [{\n type: Input\n }], headerGroupComponentFramework: [{\n type: Input\n }], headerGroupComponentParams: [{\n type: Input\n }], colId: [{\n type: Input\n }], field: [{\n type: Input\n }], type: [{\n type: Input\n }], valueGetter: [{\n type: Input\n }], valueFormatter: [{\n type: Input\n }], refData: [{\n type: Input\n }], keyCreator: [{\n type: Input\n }], equals: [{\n type: Input\n }], tooltipField: [{\n type: Input\n }], tooltipValueGetter: [{\n type: Input\n }], checkboxSelection: [{\n type: Input\n }], icons: [{\n type: Input\n }], suppressNavigable: [{\n type: Input\n }], suppressKeyboardEvent: [{\n type: Input\n }], suppressPaste: [{\n type: Input\n }], suppressFillHandle: [{\n type: Input\n }], hide: [{\n type: Input\n }], initialHide: [{\n type: Input\n }], lockVisible: [{\n type: Input\n }], lockPosition: [{\n type: Input\n }], suppressMovable: [{\n type: Input\n }], editable: [{\n type: Input\n }], valueSetter: [{\n type: Input\n }], valueParser: [{\n type: Input\n }], cellEditor: [{\n type: Input\n }], cellEditorFramework: [{\n type: Input\n }], cellEditorParams: [{\n type: Input\n }], cellEditorSelector: [{\n type: Input\n }], singleClickEdit: [{\n type: Input\n }], newValueHandler: [{\n type: Input\n }], cellEditorPopup: [{\n type: Input\n }], cellEditorPopupPosition: [{\n type: Input\n }], onCellValueChanged: [{\n type: Input\n }], onCellClicked: [{\n type: Input\n }], onCellDoubleClicked: [{\n type: Input\n }], onCellContextMenu: [{\n type: Input\n }], getQuickFilterText: [{\n type: Input\n }], filterValueGetter: [{\n type: Input\n }], floatingFilter: [{\n type: Input\n }], headerComponent: [{\n type: Input\n }], headerComponentFramework: [{\n type: Input\n }], headerComponentParams: [{\n type: Input\n }], menuTabs: [{\n type: Input\n }], columnsMenuParams: [{\n type: Input\n }], suppressMenu: [{\n type: Input\n }], headerCheckboxSelection: [{\n type: Input\n }], headerCheckboxSelectionFilteredOnly: [{\n type: Input\n }], chartDataType: [{\n type: Input\n }], pinned: [{\n type: Input\n }], initialPinned: [{\n type: Input\n }], lockPinned: [{\n type: Input\n }], pinnedRowCellRenderer: [{\n type: Input\n }], pinnedRowCellRendererFramework: [{\n type: Input\n }], pinnedRowCellRendererParams: [{\n type: Input\n }], pinnedRowValueFormatter: [{\n type: Input\n }], pivot: [{\n type: Input\n }], initialPivot: [{\n type: Input\n }], pivotIndex: [{\n type: Input\n }], initialPivotIndex: [{\n type: Input\n }], pivotComparator: [{\n type: Input\n }], enablePivot: [{\n type: Input\n }], cellStyle: [{\n type: Input\n }], cellClass: [{\n type: Input\n }], cellClassRules: [{\n type: Input\n }], cellRenderer: [{\n type: Input\n }], cellRendererFramework: [{\n type: Input\n }], cellRendererParams: [{\n type: Input\n }], cellRendererSelector: [{\n type: Input\n }], autoHeight: [{\n type: Input\n }], wrapText: [{\n type: Input\n }], enableCellChangeFlash: [{\n type: Input\n }], suppressCellFlash: [{\n type: Input\n }], rowDrag: [{\n type: Input\n }], rowDragText: [{\n type: Input\n }], dndSource: [{\n type: Input\n }], dndSourceOnRowDrag: [{\n type: Input\n }], rowGroup: [{\n type: Input\n }], initialRowGroup: [{\n type: Input\n }], rowGroupIndex: [{\n type: Input\n }], initialRowGroupIndex: [{\n type: Input\n }], enableRowGroup: [{\n type: Input\n }], enableValue: [{\n type: Input\n }], aggFunc: [{\n type: Input\n }], initialAggFunc: [{\n type: Input\n }], allowedAggFuncs: [{\n type: Input\n }], showRowGroup: [{\n type: Input\n }], sortable: [{\n type: Input\n }], sort: [{\n type: Input\n }], initialSort: [{\n type: Input\n }], sortIndex: [{\n type: Input\n }], initialSortIndex: [{\n type: Input\n }], sortingOrder: [{\n type: Input\n }], comparator: [{\n type: Input\n }], unSortIcon: [{\n type: Input\n }], sortedAt: [{\n type: Input\n }], colSpan: [{\n type: Input\n }], rowSpan: [{\n type: Input\n }], width: [{\n type: Input\n }], initialWidth: [{\n type: Input\n }], minWidth: [{\n type: Input\n }], maxWidth: [{\n type: Input\n }], flex: [{\n type: Input\n }], initialFlex: [{\n type: Input\n }], resizable: [{\n type: Input\n }], suppressSizeToFit: [{\n type: Input\n }], suppressAutoSize: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AngularFrameworkOverrides, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc0.NgZone }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AngularFrameworkComponentWrapper, [{\n type: Injectable\n }], null, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AgGridAngular, [{\n type: Component,\n args: [{\n selector: 'ag-grid-angular',\n template: '',\n providers: [\n AngularFrameworkOverrides,\n AngularFrameworkComponentWrapper\n ],\n // tell angular we don't want view encapsulation, we don't want a shadow root\n encapsulation: ViewEncapsulation.None\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.ViewContainerRef }, { type: AngularFrameworkOverrides }, { type: AngularFrameworkComponentWrapper }, { type: ɵngcc0.ComponentFactoryResolver }]; }, { statusBar: [{\n type: Input\n }], sideBar: [{\n type: Input\n }], suppressContextMenu: [{\n type: Input\n }], preventDefaultOnContextMenu: [{\n type: Input\n }], allowContextMenuWithControlKey: [{\n type: Input\n }], suppressMenuHide: [{\n type: Input\n }], enableBrowserTooltips: [{\n type: Input\n }], tooltipShowDelay: [{\n type: Input\n }], tooltipHideDelay: [{\n type: Input\n }], tooltipMouseTrack: [{\n type: Input\n }], popupParent: [{\n type: Input\n }], copyHeadersToClipboard: [{\n type: Input\n }], copyGroupHeadersToClipboard: [{\n type: Input\n }], clipboardDelimiter: [{\n type: Input\n }], suppressCopyRowsToClipboard: [{\n type: Input\n }], suppressLastEmptyLineOnPaste: [{\n type: Input\n }], suppressClipboardPaste: [{\n type: Input\n }], suppressClipboardApi: [{\n type: Input\n }], columnDefs: [{\n type: Input\n }], defaultColDef: [{\n type: Input\n }], defaultColGroupDef: [{\n type: Input\n }], columnTypes: [{\n type: Input\n }], maintainColumnOrder: [{\n type: Input\n }], suppressFieldDotNotation: [{\n type: Input\n }], deltaColumnMode: [{\n type: Input\n }], applyColumnDefOrder: [{\n type: Input\n }], immutableColumns: [{\n type: Input\n }], suppressSetColumnStateEvents: [{\n type: Input\n }], suppressColumnStateEvents: [{\n type: Input\n }], colWidth: [{\n type: Input\n }], minColWidth: [{\n type: Input\n }], maxColWidth: [{\n type: Input\n }], headerHeight: [{\n type: Input\n }], groupHeaderHeight: [{\n type: Input\n }], floatingFiltersHeight: [{\n type: Input\n }], pivotHeaderHeight: [{\n type: Input\n }], pivotGroupHeaderHeight: [{\n type: Input\n }], allowDragFromColumnsToolPanel: [{\n type: Input\n }], suppressMovableColumns: [{\n type: Input\n }], suppressColumnMoveAnimation: [{\n type: Input\n }], suppressDragLeaveHidesColumns: [{\n type: Input\n }], colResizeDefault: [{\n type: Input\n }], suppressAutoSize: [{\n type: Input\n }], autoSizePadding: [{\n type: Input\n }], skipHeaderOnAutoSize: [{\n type: Input\n }], components: [{\n type: Input\n }], frameworkComponents: [{\n type: Input\n }], reactUi: [{\n type: Input\n }], suppressReactUi: [{\n type: Input\n }], editType: [{\n type: Input\n }], singleClickEdit: [{\n type: Input\n }], suppressClickEdit: [{\n type: Input\n }], readOnlyEdit: [{\n type: Input\n }], stopEditingWhenCellsLoseFocus: [{\n type: Input\n }], enterMovesDown: [{\n type: Input\n }], enterMovesDownAfterEdit: [{\n type: Input\n }], undoRedoCellEditing: [{\n type: Input\n }], undoRedoCellEditingLimit: [{\n type: Input\n }], stopEditingWhenGridLosesFocus: [{\n type: Input\n }], defaultCsvExportParams: [{\n type: Input\n }], suppressCsvExport: [{\n type: Input\n }], defaultExcelExportParams: [{\n type: Input\n }], suppressExcelExport: [{\n type: Input\n }], excelStyles: [{\n type: Input\n }], defaultExportParams: [{\n type: Input\n }], quickFilterText: [{\n type: Input\n }], cacheQuickFilter: [{\n type: Input\n }], excludeChildrenWhenTreeDataFiltering: [{\n type: Input\n }], enableCharts: [{\n type: Input\n }], chartThemes: [{\n type: Input\n }], customChartThemes: [{\n type: Input\n }], chartThemeOverrides: [{\n type: Input\n }], loadingCellRenderer: [{\n type: Input\n }], loadingCellRendererFramework: [{\n type: Input\n }], loadingCellRendererParams: [{\n type: Input\n }], loadingCellRendererSelector: [{\n type: Input\n }], localeText: [{\n type: Input\n }], masterDetail: [{\n type: Input\n }], keepDetailRows: [{\n type: Input\n }], keepDetailRowsCount: [{\n type: Input\n }], detailCellRenderer: [{\n type: Input\n }], detailCellRendererFramework: [{\n type: Input\n }], detailCellRendererParams: [{\n type: Input\n }], detailRowHeight: [{\n type: Input\n }], detailRowAutoHeight: [{\n type: Input\n }], context: [{\n type: Input\n }], alignedGrids: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], rowBuffer: [{\n type: Input\n }], valueCache: [{\n type: Input\n }], valueCacheNeverExpires: [{\n type: Input\n }], enableCellExpressions: [{\n type: Input\n }], suppressParentsInRowNodes: [{\n type: Input\n }], suppressTouch: [{\n type: Input\n }], suppressFocusAfterRefresh: [{\n type: Input\n }], suppressAsyncEvents: [{\n type: Input\n }], suppressBrowserResizeObserver: [{\n type: Input\n }], suppressPropertyNamesCheck: [{\n type: Input\n }], suppressChangeDetection: [{\n type: Input\n }], debug: [{\n type: Input\n }], overlayLoadingTemplate: [{\n type: Input\n }], loadingOverlayComponent: [{\n type: Input\n }], loadingOverlayComponentFramework: [{\n type: Input\n }], loadingOverlayComponentParams: [{\n type: Input\n }], suppressLoadingOverlay: [{\n type: Input\n }], overlayNoRowsTemplate: [{\n type: Input\n }], noRowsOverlayComponent: [{\n type: Input\n }], noRowsOverlayComponentFramework: [{\n type: Input\n }], noRowsOverlayComponentParams: [{\n type: Input\n }], suppressNoRowsOverlay: [{\n type: Input\n }], pagination: [{\n type: Input\n }], paginationPageSize: [{\n type: Input\n }], paginationAutoPageSize: [{\n type: Input\n }], paginateChildRows: [{\n type: Input\n }], suppressPaginationPanel: [{\n type: Input\n }], pivotMode: [{\n type: Input\n }], pivotPanelShow: [{\n type: Input\n }], pivotColumnGroupTotals: [{\n type: Input\n }], pivotRowTotals: [{\n type: Input\n }], pivotSuppressAutoColumn: [{\n type: Input\n }], suppressExpandablePivotGroups: [{\n type: Input\n }], functionsReadOnly: [{\n type: Input\n }], aggFuncs: [{\n type: Input\n }], suppressAggFuncInHeader: [{\n type: Input\n }], suppressAggAtRootLevel: [{\n type: Input\n }], aggregateOnlyChangedColumns: [{\n type: Input\n }], suppressAggFilteredOnly: [{\n type: Input\n }], animateRows: [{\n type: Input\n }], enableCellChangeFlash: [{\n type: Input\n }], cellFlashDelay: [{\n type: Input\n }], cellFadeDelay: [{\n type: Input\n }], domLayout: [{\n type: Input\n }], ensureDomOrder: [{\n type: Input\n }], enableRtl: [{\n type: Input\n }], suppressColumnVirtualisation: [{\n type: Input\n }], suppressMaxRenderedRowRestriction: [{\n type: Input\n }], suppressRowVirtualisation: [{\n type: Input\n }], rowDragManaged: [{\n type: Input\n }], suppressRowDrag: [{\n type: Input\n }], suppressMoveWhenRowDragging: [{\n type: Input\n }], rowDragEntireRow: [{\n type: Input\n }], rowDragMultiRow: [{\n type: Input\n }], fullWidthCellRenderer: [{\n type: Input\n }], fullWidthCellRendererFramework: [{\n type: Input\n }], fullWidthCellRendererParams: [{\n type: Input\n }], embedFullWidthRows: [{\n type: Input\n }], deprecatedEmbedFullWidthRows: [{\n type: Input\n }], groupDisplayType: [{\n type: Input\n }], groupDefaultExpanded: [{\n type: Input\n }], autoGroupColumnDef: [{\n type: Input\n }], groupMaintainOrder: [{\n type: Input\n }], groupSelectsChildren: [{\n type: Input\n }], groupIncludeFooter: [{\n type: Input\n }], groupIncludeTotalFooter: [{\n type: Input\n }], groupSuppressBlankHeader: [{\n type: Input\n }], groupSelectsFiltered: [{\n type: Input\n }], showOpenedGroup: [{\n type: Input\n }], groupRemoveSingleChildren: [{\n type: Input\n }], groupRemoveLowestSingleChildren: [{\n type: Input\n }], groupHideOpenParents: [{\n type: Input\n }], rowGroupPanelShow: [{\n type: Input\n }], groupRowRenderer: [{\n type: Input\n }], groupRowRendererFramework: [{\n type: Input\n }], groupRowRendererParams: [{\n type: Input\n }], suppressMakeColumnVisibleAfterUnGroup: [{\n type: Input\n }], treeData: [{\n type: Input\n }], groupRowInnerRenderer: [{\n type: Input\n }], groupRowInnerRendererFramework: [{\n type: Input\n }], groupMultiAutoColumn: [{\n type: Input\n }], groupUseEntireRow: [{\n type: Input\n }], groupSuppressAutoColumn: [{\n type: Input\n }], rememberGroupStateWhenNewData: [{\n type: Input\n }], pinnedTopRowData: [{\n type: Input\n }], pinnedBottomRowData: [{\n type: Input\n }], rowModelType: [{\n type: Input\n }], rowData: [{\n type: Input\n }], immutableData: [{\n type: Input\n }], asyncTransactionWaitMillis: [{\n type: Input\n }], suppressModelUpdateAfterUpdateTransaction: [{\n type: Input\n }], deltaRowDataMode: [{\n type: Input\n }], batchUpdateWaitMillis: [{\n type: Input\n }], datasource: [{\n type: Input\n }], cacheOverflowSize: [{\n type: Input\n }], infiniteInitialRowCount: [{\n type: Input\n }], serverSideStoreType: [{\n type: Input\n }], cacheBlockSize: [{\n type: Input\n }], maxBlocksInCache: [{\n type: Input\n }], maxConcurrentDatasourceRequests: [{\n type: Input\n }], blockLoadDebounceMillis: [{\n type: Input\n }], purgeClosedRowNodes: [{\n type: Input\n }], serverSideDatasource: [{\n type: Input\n }], serverSideSortingAlwaysResets: [{\n type: Input\n }], serverSideFilteringAlwaysResets: [{\n type: Input\n }], suppressEnterpriseResetOnNewColumns: [{\n type: Input\n }], viewportDatasource: [{\n type: Input\n }], viewportRowModelPageSize: [{\n type: Input\n }], viewportRowModelBufferSize: [{\n type: Input\n }], alwaysShowHorizontalScroll: [{\n type: Input\n }], alwaysShowVerticalScroll: [{\n type: Input\n }], debounceVerticalScrollbar: [{\n type: Input\n }], suppressHorizontalScroll: [{\n type: Input\n }], suppressScrollOnNewData: [{\n type: Input\n }], suppressScrollWhenPopupsAreOpen: [{\n type: Input\n }], suppressAnimationFrame: [{\n type: Input\n }], suppressMiddleClickScrolls: [{\n type: Input\n }], suppressPreventDefaultOnMouseWheel: [{\n type: Input\n }], scrollbarWidth: [{\n type: Input\n }], rowSelection: [{\n type: Input\n }], rowMultiSelectWithClick: [{\n type: Input\n }], suppressRowDeselection: [{\n type: Input\n }], suppressRowClickSelection: [{\n type: Input\n }], suppressCellSelection: [{\n type: Input\n }], suppressCellFocus: [{\n type: Input\n }], suppressMultiRangeSelection: [{\n type: Input\n }], enableCellTextSelection: [{\n type: Input\n }], enableRangeSelection: [{\n type: Input\n }], enableRangeHandle: [{\n type: Input\n }], enableFillHandle: [{\n type: Input\n }], fillHandleDirection: [{\n type: Input\n }], suppressClearOnFillReduction: [{\n type: Input\n }], sortingOrder: [{\n type: Input\n }], accentedSort: [{\n type: Input\n }], unSortIcon: [{\n type: Input\n }], suppressMultiSort: [{\n type: Input\n }], multiSortKey: [{\n type: Input\n }], suppressMaintainUnsortedOrder: [{\n type: Input\n }], icons: [{\n type: Input\n }], rowHeight: [{\n type: Input\n }], rowStyle: [{\n type: Input\n }], rowClass: [{\n type: Input\n }], rowClassRules: [{\n type: Input\n }], suppressRowHoverHighlight: [{\n type: Input\n }], suppressRowTransform: [{\n type: Input\n }], columnHoverHighlight: [{\n type: Input\n }], deltaSort: [{\n type: Input\n }], treeDataDisplayType: [{\n type: Input\n }], angularCompileRows: [{\n type: Input\n }], angularCompileFilters: [{\n type: Input\n }], functionsPassive: [{\n type: Input\n }], enableGroupEdit: [{\n type: Input\n }], getContextMenuItems: [{\n type: Input\n }], getMainMenuItems: [{\n type: Input\n }], postProcessPopup: [{\n type: Input\n }], processCellForClipboard: [{\n type: Input\n }], processHeaderForClipboard: [{\n type: Input\n }], processGroupHeaderForClipboard: [{\n type: Input\n }], processCellFromClipboard: [{\n type: Input\n }], sendToClipboard: [{\n type: Input\n }], processDataFromClipboard: [{\n type: Input\n }], isExternalFilterPresent: [{\n type: Input\n }], doesExternalFilterPass: [{\n type: Input\n }], getChartToolbarItems: [{\n type: Input\n }], createChartContainer: [{\n type: Input\n }], navigateToNextHeader: [{\n type: Input\n }], tabToNextHeader: [{\n type: Input\n }], navigateToNextCell: [{\n type: Input\n }], tabToNextCell: [{\n type: Input\n }], suppressKeyboardEvent: [{\n type: Input\n }], localeTextFunc: [{\n type: Input\n }], getDocument: [{\n type: Input\n }], paginationNumberFormatter: [{\n type: Input\n }], groupRowAggNodes: [{\n type: Input\n }], isGroupOpenByDefault: [{\n type: Input\n }], defaultGroupOrderComparator: [{\n type: Input\n }], processSecondaryColDef: [{\n type: Input\n }], processSecondaryColGroupDef: [{\n type: Input\n }], getDataPath: [{\n type: Input\n }], defaultGroupSortComparator: [{\n type: Input\n }], getChildCount: [{\n type: Input\n }], getServerSideStoreParams: [{\n type: Input\n }], isServerSideGroupOpenByDefault: [{\n type: Input\n }], isApplyServerSideTransaction: [{\n type: Input\n }], isServerSideGroup: [{\n type: Input\n }], getServerSideGroupKey: [{\n type: Input\n }], getBusinessKeyForNode: [{\n type: Input\n }], getRowNodeId: [{\n type: Input\n }], getRowId: [{\n type: Input\n }], processRowPostCreate: [{\n type: Input\n }], isRowSelectable: [{\n type: Input\n }], isRowMaster: [{\n type: Input\n }], fillOperation: [{\n type: Input\n }], postSort: [{\n type: Input\n }], getRowStyle: [{\n type: Input\n }], getRowClass: [{\n type: Input\n }], getRowHeight: [{\n type: Input\n }], isFullWidthCell: [{\n type: Input\n }], toolPanelVisibleChanged: [{\n type: Output\n }], pasteStart: [{\n type: Output\n }], pasteEnd: [{\n type: Output\n }], columnVisible: [{\n type: Output\n }], columnPinned: [{\n type: Output\n }], columnResized: [{\n type: Output\n }], columnMoved: [{\n type: Output\n }], columnValueChanged: [{\n type: Output\n }], columnPivotModeChanged: [{\n type: Output\n }], columnPivotChanged: [{\n type: Output\n }], columnGroupOpened: [{\n type: Output\n }], newColumnsLoaded: [{\n type: Output\n }], gridColumnsChanged: [{\n type: Output\n }], displayedColumnsChanged: [{\n type: Output\n }], virtualColumnsChanged: [{\n type: Output\n }], columnEverythingChanged: [{\n type: Output\n }], componentStateChanged: [{\n type: Output\n }], cellValueChanged: [{\n type: Output\n }], cellEditRequest: [{\n type: Output\n }], rowValueChanged: [{\n type: Output\n }], cellEditingStarted: [{\n type: Output\n }], cellEditingStopped: [{\n type: Output\n }], rowEditingStarted: [{\n type: Output\n }], rowEditingStopped: [{\n type: Output\n }], filterOpened: [{\n type: Output\n }], filterChanged: [{\n type: Output\n }], filterModified: [{\n type: Output\n }], chartCreated: [{\n type: Output\n }], chartRangeSelectionChanged: [{\n type: Output\n }], chartOptionsChanged: [{\n type: Output\n }], chartDestroyed: [{\n type: Output\n }], cellKeyDown: [{\n type: Output\n }], cellKeyPress: [{\n type: Output\n }], gridReady: [{\n type: Output\n }], firstDataRendered: [{\n type: Output\n }], gridSizeChanged: [{\n type: Output\n }], modelUpdated: [{\n type: Output\n }], virtualRowRemoved: [{\n type: Output\n }], viewportChanged: [{\n type: Output\n }], bodyScroll: [{\n type: Output\n }], bodyScrollEnd: [{\n type: Output\n }], dragStarted: [{\n type: Output\n }], dragStopped: [{\n type: Output\n }], paginationChanged: [{\n type: Output\n }], rowDragEnter: [{\n type: Output\n }], rowDragMove: [{\n type: Output\n }], rowDragLeave: [{\n type: Output\n }], rowDragEnd: [{\n type: Output\n }], columnRowGroupChanged: [{\n type: Output\n }], rowGroupOpened: [{\n type: Output\n }], expandOrCollapseAll: [{\n type: Output\n }], pinnedRowDataChanged: [{\n type: Output\n }], rowDataChanged: [{\n type: Output\n }], rowDataUpdated: [{\n type: Output\n }], asyncTransactionsFlushed: [{\n type: Output\n }], cellClicked: [{\n type: Output\n }], cellDoubleClicked: [{\n type: Output\n }], cellFocused: [{\n type: Output\n }], cellMouseOver: [{\n type: Output\n }], cellMouseOut: [{\n type: Output\n }], cellMouseDown: [{\n type: Output\n }], rowClicked: [{\n type: Output\n }], rowDoubleClicked: [{\n type: Output\n }], rowSelected: [{\n type: Output\n }], selectionChanged: [{\n type: Output\n }], cellContextMenu: [{\n type: Output\n }], rangeSelectionChanged: [{\n type: Output\n }], sortChanged: [{\n type: Output\n }], columnRowGroupChangeRequest: [{\n type: Output\n }], columnPivotChangeRequest: [{\n type: Output\n }], columnValueChangeRequest: [{\n type: Output\n }], columnAggFuncChangeRequest: [{\n type: Output\n }], gridOptions: [{\n type: Input\n }], columns: [{\n type: ContentChildren,\n args: [AgGridColumn]\n }], modules: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AgGridModule, [{\n type: NgModule,\n args: [{\n declarations: [AgGridAngular, AgGridColumn],\n imports: [],\n exports: [AgGridAngular, AgGridColumn]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(AgGridModule, { declarations: [AgGridAngular, AgGridColumn], exports: [AgGridAngular, AgGridColumn] }); })();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AgGridAngular, AgGridColumn, AgGridModule, AngularFrameworkComponentWrapper, AngularFrameworkOverrides };\n\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n/**\n * If value is undefined, null or blank, returns null, otherwise returns the value\n * @param {T} value\n * @returns {T | null}\n */\nexport function makeNull(value) {\n if (value == null || value === '') {\n return null;\n }\n return value;\n}\nexport function exists(value, allowEmptyString) {\n if (allowEmptyString === void 0) { allowEmptyString = false; }\n return value != null && (value !== '' || allowEmptyString);\n}\nexport function missing(value) {\n return !exists(value);\n}\nexport function missingOrEmpty(value) {\n return value == null || value.length === 0;\n}\nexport function toStringOrNull(value) {\n return value != null && typeof value.toString === 'function' ? value.toString() : null;\n}\n// for parsing html attributes, where we want empty strings and missing attributes to be undefined\nexport function attrToNumber(value) {\n if (value === undefined) {\n // undefined or empty means ignore the value\n return;\n }\n if (value === null || value === '') {\n // null or blank means clear\n return null;\n }\n if (typeof value === 'number') {\n return isNaN(value) ? undefined : value;\n }\n var valueParsed = parseInt(value, 10);\n return isNaN(valueParsed) ? undefined : valueParsed;\n}\n// for parsing html attributes, where we want empty strings and missing attributes to be undefined\nexport function attrToBoolean(value) {\n if (value === undefined) {\n // undefined or empty means ignore the value\n return;\n }\n if (value === null || value === '') {\n // null means clear\n return false;\n }\n if (typeof value === 'boolean') {\n // if simple boolean, return the boolean\n return value;\n }\n // if equal to the string 'true' (ignoring case) then return true\n return (/true/i).test(value);\n}\n// for parsing html attributes, where we want empty strings and missing attributes to be undefined\nexport function attrToString(value) {\n if (value == null || value === '') {\n return;\n }\n return value;\n}\n/** @deprecated */\nexport function referenceCompare(left, right) {\n if (left == null && right == null) {\n return true;\n }\n if (left == null && right != null) {\n return false;\n }\n if (left != null && right == null) {\n return false;\n }\n return left === right;\n}\nexport function jsonEquals(val1, val2) {\n var val1Json = val1 ? JSON.stringify(val1) : null;\n var val2Json = val2 ? JSON.stringify(val2) : null;\n return val1Json === val2Json;\n}\nexport function defaultComparator(valueA, valueB, accentedCompare) {\n if (accentedCompare === void 0) { accentedCompare = false; }\n var valueAMissing = valueA == null;\n var valueBMissing = valueB == null;\n // this is for aggregations sum and avg, where the result can be a number that is wrapped.\n // if we didn't do this, then the toString() value would be used, which would result in\n // the strings getting used instead of the numbers.\n if (valueA && valueA.toNumber) {\n valueA = valueA.toNumber();\n }\n if (valueB && valueB.toNumber) {\n valueB = valueB.toNumber();\n }\n if (valueAMissing && valueBMissing) {\n return 0;\n }\n if (valueAMissing) {\n return -1;\n }\n if (valueBMissing) {\n return 1;\n }\n function doQuickCompare(a, b) {\n return (a > b ? 1 : (a < b ? -1 : 0));\n }\n if (typeof valueA !== 'string') {\n return doQuickCompare(valueA, valueB);\n }\n if (!accentedCompare) {\n return doQuickCompare(valueA, valueB);\n }\n try {\n // using local compare also allows chinese comparisons\n return valueA.localeCompare(valueB);\n }\n catch (e) {\n // if something wrong with localeCompare, eg not supported\n // by browser, then just continue with the quick one\n return doQuickCompare(valueA, valueB);\n }\n}\nexport function values(object) {\n if (object instanceof Set || object instanceof Map) {\n var arr_1 = [];\n object.forEach(function (value) { return arr_1.push(value); });\n return arr_1;\n }\n return Object.values(object);\n}\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n// class returns a unique id to use for the column. it checks the existing columns, and if the requested\n// id is already taken, it will start appending numbers until it gets a unique id.\n// eg, if the col field is 'name', it will try ids: {name, name_1, name_2...}\n// if no field or id provided in the col, it will try the ids of natural numbers\nimport { toStringOrNull } from \"../utils/generic\";\nvar ColumnKeyCreator = /** @class */ (function () {\n function ColumnKeyCreator() {\n this.existingKeys = {};\n }\n ColumnKeyCreator.prototype.addExistingKeys = function (keys) {\n for (var i = 0; i < keys.length; i++) {\n this.existingKeys[keys[i]] = true;\n }\n };\n ColumnKeyCreator.prototype.getUniqueKey = function (colId, colField) {\n // in case user passed in number for colId, convert to string\n colId = toStringOrNull(colId);\n var count = 0;\n while (true) {\n var idToTry = void 0;\n if (colId) {\n idToTry = colId;\n if (count !== 0) {\n idToTry += '_' + count;\n }\n }\n else if (colField) {\n idToTry = colField;\n if (count !== 0) {\n idToTry += '_' + count;\n }\n }\n else {\n idToTry = '' + count;\n }\n if (!this.existingKeys[idToTry]) {\n this.existingKeys[idToTry] = true;\n return idToTry;\n }\n count++;\n }\n };\n return ColumnKeyCreator;\n}());\nexport { ColumnKeyCreator };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nimport { missing, exists, values } from './generic';\nexport function iterateObject(object, callback) {\n if (object == null) {\n return;\n }\n if (Array.isArray(object)) {\n object.forEach(function (value, index) { return callback(\"\" + index, value); });\n }\n else {\n Object.keys(object).forEach(function (key) { return callback(key, object[key]); });\n }\n}\nexport function cloneObject(object) {\n var copy = {};\n var keys = Object.keys(object);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = object[key];\n copy[key] = value;\n }\n return copy;\n}\nexport function deepCloneObject(object) {\n return JSON.parse(JSON.stringify(object));\n}\n// returns copy of an object, doing a deep clone of any objects with that object.\n// this is used for eg creating copies of Column Definitions, where we want to\n// deep copy all objects, but do not want to deep copy functions (eg when user provides\n// a function or class for colDef.cellRenderer)\nexport function deepCloneDefinition(object, keysToSkip) {\n if (!object) {\n return;\n }\n var obj = object;\n var res = {};\n Object.keys(obj).forEach(function (key) {\n if (keysToSkip && keysToSkip.indexOf(key) >= 0) {\n return;\n }\n var value = obj[key];\n // 'simple object' means a bunch of key/value pairs, eg {filter: 'myFilter'}. it does\n // NOT include the following:\n // 1) arrays\n // 2) functions or classes (eg ColumnAPI instance)\n var sourceIsSimpleObject = isNonNullObject(value) && value.constructor === Object;\n if (sourceIsSimpleObject) {\n res[key] = deepCloneDefinition(value);\n }\n else {\n res[key] = value;\n }\n });\n return res;\n}\nexport function getProperty(object, key) {\n return object[key];\n}\nexport function setProperty(object, key, value) {\n object[key] = value;\n}\n/**\n * Will copy the specified properties from `source` into the equivalent properties on `target`, ignoring properties with\n * a value of `undefined`.\n */\nexport function copyPropertiesIfPresent(source, target) {\n var properties = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n properties[_i - 2] = arguments[_i];\n }\n properties.forEach(function (p) { return copyPropertyIfPresent(source, target, p); });\n}\n/**\n * Will copy the specified property from `source` into the equivalent property on `target`, unless the property has a\n * value of `undefined`. If a transformation is provided, it will be applied to the value before being set on `target`.\n */\nexport function copyPropertyIfPresent(source, target, property, transform) {\n var value = getProperty(source, property);\n if (value !== undefined) {\n setProperty(target, property, transform ? transform(value) : value);\n }\n}\nexport function getAllKeysInObjects(objects) {\n var allValues = {};\n objects.filter(function (obj) { return obj != null; }).forEach(function (obj) {\n Object.keys(obj).forEach(function (key) { return allValues[key] = null; });\n });\n return Object.keys(allValues);\n}\nexport function getAllValuesInObject(obj) {\n if (!obj) {\n return [];\n }\n var anyObject = Object;\n if (typeof anyObject.values === 'function') {\n return anyObject.values(obj);\n }\n var ret = [];\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && obj.propertyIsEnumerable(key)) {\n ret.push(obj[key]);\n }\n }\n return ret;\n}\nexport function mergeDeep(dest, source, copyUndefined, makeCopyOfSimpleObjects) {\n if (copyUndefined === void 0) { copyUndefined = true; }\n if (makeCopyOfSimpleObjects === void 0) { makeCopyOfSimpleObjects = false; }\n if (!exists(source)) {\n return;\n }\n iterateObject(source, function (key, sourceValue) {\n var destValue = dest[key];\n if (destValue === sourceValue) {\n return;\n }\n // when creating params, we don't want to just copy objects over. otherwise merging ColDefs (eg DefaultColDef\n // and Column Types) would result in params getting shared between objects.\n // by putting an empty value into destValue first, it means we end up copying over values from\n // the source object, rather than just copying in the source object in it's entirety.\n if (makeCopyOfSimpleObjects) {\n var objectIsDueToBeCopied = destValue == null && sourceValue != null;\n if (objectIsDueToBeCopied) {\n // 'simple object' means a bunch of key/value pairs, eg {filter: 'myFilter'}, as opposed\n // to a Class instance (such as ColumnAPI instance).\n var sourceIsSimpleObject = typeof sourceValue === 'object' && sourceValue.constructor === Object;\n var dontCopy = sourceIsSimpleObject;\n if (dontCopy) {\n destValue = {};\n dest[key] = destValue;\n }\n }\n }\n if (isNonNullObject(sourceValue) && isNonNullObject(destValue) && !Array.isArray(destValue)) {\n mergeDeep(destValue, sourceValue, copyUndefined, makeCopyOfSimpleObjects);\n }\n else if (copyUndefined || sourceValue !== undefined) {\n dest[key] = sourceValue;\n }\n });\n}\nexport function missingOrEmptyObject(value) {\n return missing(value) || Object.keys(value).length === 0;\n}\nexport function get(source, expression, defaultValue) {\n if (source == null) {\n return defaultValue;\n }\n var keys = expression.split('.');\n var objectToRead = source;\n while (keys.length > 1) {\n objectToRead = objectToRead[keys.shift()];\n if (objectToRead == null) {\n return defaultValue;\n }\n }\n var value = objectToRead[keys[0]];\n return value != null ? value : defaultValue;\n}\nexport function set(target, expression, value) {\n if (target == null) {\n return;\n }\n var keys = expression.split('.');\n var objectToUpdate = target;\n while (keys.length > 1) {\n objectToUpdate = objectToUpdate[keys.shift()];\n if (objectToUpdate == null) {\n return;\n }\n }\n objectToUpdate[keys[0]] = value;\n}\nexport function deepFreeze(object) {\n Object.freeze(object);\n values(object).forEach(function (v) {\n if (isNonNullObject(v) || typeof v === 'function') {\n deepFreeze(v);\n }\n });\n return object;\n}\nexport function getValueUsingField(data, field, fieldContainsDots) {\n if (!field || !data) {\n return;\n }\n // if no '.', then it's not a deep value\n if (!fieldContainsDots) {\n return data[field];\n }\n // otherwise it is a deep value, so need to dig for it\n var fields = field.split('.');\n var currentObject = data;\n for (var i = 0; i < fields.length; i++) {\n if (currentObject == null) {\n return undefined;\n }\n currentObject = currentObject[fields[i]];\n }\n return currentObject;\n}\n// used by ColumnAPI and GridAPI to remove all references, so keeping grid in memory resulting in a\n// memory leak if user is not disposing of the GridAPI or ColumnApi references\nexport function removeAllReferences(obj, objectName) {\n Object.keys(obj).forEach(function (key) {\n var value = obj[key];\n // we want to replace all the @autowired services, which are objects. any simple types (boolean, string etc)\n // we don't care about\n if (typeof value === 'object') {\n obj[key] = undefined;\n }\n });\n var proto = Object.getPrototypeOf(obj);\n var properties = {};\n Object.keys(proto).forEach(function (key) {\n var value = proto[key];\n // leave all basic types - this is needed for GridAPI to leave the \"destroyed: boolean\" attribute alone\n if (typeof value === 'function') {\n var func = function () {\n console.warn(\"AG Grid: \" + objectName + \" function \" + key + \"() cannot be called as the grid has been destroyed.\\n Please don't call grid API functions on destroyed grids - as a matter of fact you shouldn't\\n be keeping the API reference, your application has a memory leak! Remove the API reference\\n when the grid is destroyed.\");\n };\n properties[key] = { value: func, writable: true };\n }\n });\n Object.defineProperties(obj, properties);\n}\nexport function isNonNullObject(value) {\n return typeof value === 'object' && value !== null;\n}\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar FUNCTION_STRIP_COMMENTS = /((\\/\\/.*$)|(\\/\\*[\\s\\S]*?\\*\\/))/mg;\nvar FUNCTION_ARGUMENT_NAMES = /([^\\s,]+)/g;\nvar doOnceFlags = {};\n/**\n * If the key was passed before, then doesn't execute the func\n * @param {Function} func\n * @param {string} key\n */\nexport function doOnce(func, key) {\n if (doOnceFlags[key]) {\n return;\n }\n func();\n doOnceFlags[key] = true;\n}\nexport function getFunctionName(funcConstructor) {\n // for every other browser in the world\n if (funcConstructor.name) {\n return funcConstructor.name;\n }\n // for the pestilence that is ie11\n var matches = /function\\s+([^\\(]+)/.exec(funcConstructor.toString());\n return matches && matches.length === 2 ? matches[1].trim() : null;\n}\n/** @deprecated */\nexport function getFunctionParameters(func) {\n var fnStr = func.toString().replace(FUNCTION_STRIP_COMMENTS, '');\n return fnStr.slice(fnStr.indexOf('(') + 1, fnStr.indexOf(')')).match(FUNCTION_ARGUMENT_NAMES) || [];\n}\nexport function isFunction(val) {\n return !!(val && val.constructor && val.call && val.apply);\n}\nexport function executeInAWhile(funcs) {\n executeAfter(funcs, 400);\n}\nvar executeNextVMTurnFuncs = [];\nvar executeNextVMTurnPending = false;\nexport function executeNextVMTurn(func) {\n executeNextVMTurnFuncs.push(func);\n if (executeNextVMTurnPending) {\n return;\n }\n executeNextVMTurnPending = true;\n window.setTimeout(function () {\n var funcsCopy = executeNextVMTurnFuncs.slice();\n executeNextVMTurnFuncs.length = 0;\n executeNextVMTurnPending = false;\n funcsCopy.forEach(function (func) { return func(); });\n }, 0);\n}\nexport function executeAfter(funcs, milliseconds) {\n if (milliseconds === void 0) { milliseconds = 0; }\n if (funcs.length > 0) {\n window.setTimeout(function () { return funcs.forEach(function (func) { return func(); }); }, milliseconds);\n }\n}\n/**\n * from https://stackoverflow.com/questions/24004791/can-someone-explain-the-debounce-function-in-javascript\n * @param {Function} func The function to be debounced\n * @param {number} wait The time in ms to debounce\n * @param {boolean} immediate If it should run immediately or wait for the initial debounce delay\n * @return {Function} The debounced function\n */\nexport function debounce(func, wait, immediate) {\n if (immediate === void 0) { immediate = false; }\n // 'private' variable for instance\n // The returned function will be able to reference this due to closure.\n // Each call to the returned function will share this common timer.\n var timeout;\n // Calling debounce returns a new anonymous function\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n // reference the context and args for the setTimeout function\n var context = this;\n // Should the function be called now? If immediate is true\n // and not already in a timeout then the answer is: Yes\n var callNow = immediate && !timeout;\n // This is the basic debounce behaviour where you can call this\n // function several times, but it will only execute once\n // [before or after imposing a delay].\n // Each time the returned function is called, the timer starts over.\n window.clearTimeout(timeout);\n // Set the new timeout\n timeout = window.setTimeout(function () {\n // Inside the timeout function, clear the timeout variable\n // which will let the next execution run when in 'immediate' mode\n timeout = null;\n // Check if the function already ran with the immediate flag\n if (!immediate) {\n // Call the original function with apply\n // apply lets you define the 'this' object as well as the arguments\n // (both captured before setTimeout)\n func.apply(context, args);\n }\n }, wait);\n // Immediate mode and no wait timer? Execute the function..\n if (callNow) {\n func.apply(context, args);\n }\n };\n}\nexport function waitUntil(condition, callback, timeout, timeoutMessage) {\n if (timeout === void 0) { timeout = 100; }\n var timeStamp = new Date().getTime();\n var interval = null;\n var executed = false;\n var internalCallback = function () {\n var reachedTimeout = ((new Date().getTime()) - timeStamp) > timeout;\n if (condition() || reachedTimeout) {\n callback();\n executed = true;\n if (interval != null) {\n window.clearInterval(interval);\n interval = null;\n }\n if (reachedTimeout && timeoutMessage) {\n console.warn(timeoutMessage);\n }\n }\n };\n internalCallback();\n if (!executed) {\n interval = window.setInterval(internalCallback, 10);\n }\n}\nexport function compose() {\n var fns = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n fns[_i] = arguments[_i];\n }\n return function (arg) { return fns.reduce(function (composed, f) { return f(composed); }, arg); };\n}\nexport function callIfPresent(func) {\n if (func) {\n func();\n }\n}\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nimport { exists, values } from \"../utils/generic\";\nimport { iterateObject } from \"../utils/object\";\nimport { getFunctionName } from \"../utils/function\";\nvar Context = /** @class */ (function () {\n function Context(params, logger) {\n this.beanWrappers = {};\n this.destroyed = false;\n if (!params || !params.beanClasses) {\n return;\n }\n this.contextParams = params;\n this.logger = logger;\n this.logger.log(\">> creating ag-Application Context\");\n this.createBeans();\n var beanInstances = this.getBeanInstances();\n this.wireBeans(beanInstances);\n this.logger.log(\">> ag-Application Context ready - component is alive\");\n }\n Context.prototype.getBeanInstances = function () {\n return values(this.beanWrappers).map(function (beanEntry) { return beanEntry.beanInstance; });\n };\n Context.prototype.createBean = function (bean, afterPreCreateCallback) {\n if (!bean) {\n throw Error(\"Can't wire to bean since it is null\");\n }\n this.wireBeans([bean], afterPreCreateCallback);\n return bean;\n };\n Context.prototype.wireBeans = function (beanInstances, afterPreCreateCallback) {\n this.autoWireBeans(beanInstances);\n this.methodWireBeans(beanInstances);\n this.callLifeCycleMethods(beanInstances, 'preConstructMethods');\n // the callback sets the attributes, so the component has access to attributes\n // before postConstruct methods in the component are executed\n if (exists(afterPreCreateCallback)) {\n beanInstances.forEach(afterPreCreateCallback);\n }\n this.callLifeCycleMethods(beanInstances, 'postConstructMethods');\n };\n Context.prototype.createBeans = function () {\n var _this = this;\n // register all normal beans\n this.contextParams.beanClasses.forEach(this.createBeanWrapper.bind(this));\n // register override beans, these will overwrite beans above of same name\n // instantiate all beans - overridden beans will be left out\n iterateObject(this.beanWrappers, function (key, beanEntry) {\n var constructorParamsMeta;\n if (beanEntry.bean.__agBeanMetaData && beanEntry.bean.__agBeanMetaData.autowireMethods && beanEntry.bean.__agBeanMetaData.autowireMethods.agConstructor) {\n constructorParamsMeta = beanEntry.bean.__agBeanMetaData.autowireMethods.agConstructor;\n }\n var constructorParams = _this.getBeansForParameters(constructorParamsMeta, beanEntry.bean.name);\n var newInstance = applyToConstructor(beanEntry.bean, constructorParams);\n beanEntry.beanInstance = newInstance;\n });\n var createdBeanNames = Object.keys(this.beanWrappers).join(', ');\n this.logger.log(\"created beans: \" + createdBeanNames);\n };\n // tslint:disable-next-line\n Context.prototype.createBeanWrapper = function (BeanClass) {\n var metaData = BeanClass.__agBeanMetaData;\n if (!metaData) {\n var beanName = void 0;\n if (BeanClass.prototype.constructor) {\n beanName = getFunctionName(BeanClass.prototype.constructor);\n }\n else {\n beanName = \"\" + BeanClass;\n }\n console.error(\"Context item \" + beanName + \" is not a bean\");\n return;\n }\n var beanEntry = {\n bean: BeanClass,\n beanInstance: null,\n beanName: metaData.beanName\n };\n this.beanWrappers[metaData.beanName] = beanEntry;\n };\n Context.prototype.autoWireBeans = function (beanInstances) {\n var _this = this;\n beanInstances.forEach(function (beanInstance) {\n _this.forEachMetaDataInHierarchy(beanInstance, function (metaData, beanName) {\n var attributes = metaData.agClassAttributes;\n if (!attributes) {\n return;\n }\n attributes.forEach(function (attribute) {\n var otherBean = _this.lookupBeanInstance(beanName, attribute.beanName, attribute.optional);\n beanInstance[attribute.attributeName] = otherBean;\n });\n });\n });\n };\n Context.prototype.methodWireBeans = function (beanInstances) {\n var _this = this;\n beanInstances.forEach(function (beanInstance) {\n _this.forEachMetaDataInHierarchy(beanInstance, function (metaData, beanName) {\n iterateObject(metaData.autowireMethods, function (methodName, wireParams) {\n // skip constructor, as this is dealt with elsewhere\n if (methodName === \"agConstructor\") {\n return;\n }\n var initParams = _this.getBeansForParameters(wireParams, beanName);\n beanInstance[methodName].apply(beanInstance, initParams);\n });\n });\n });\n };\n Context.prototype.forEachMetaDataInHierarchy = function (beanInstance, callback) {\n var prototype = Object.getPrototypeOf(beanInstance);\n while (prototype != null) {\n var constructor = prototype.constructor;\n if (constructor.hasOwnProperty('__agBeanMetaData')) {\n var metaData = constructor.__agBeanMetaData;\n var beanName = this.getBeanName(constructor);\n callback(metaData, beanName);\n }\n prototype = Object.getPrototypeOf(prototype);\n }\n };\n Context.prototype.getBeanName = function (constructor) {\n if (constructor.__agBeanMetaData && constructor.__agBeanMetaData.beanName) {\n return constructor.__agBeanMetaData.beanName;\n }\n var constructorString = constructor.toString();\n var beanName = constructorString.substring(9, constructorString.indexOf(\"(\"));\n return beanName;\n };\n Context.prototype.getBeansForParameters = function (parameters, beanName) {\n var _this = this;\n var beansList = [];\n if (parameters) {\n iterateObject(parameters, function (paramIndex, otherBeanName) {\n var otherBean = _this.lookupBeanInstance(beanName, otherBeanName);\n beansList[Number(paramIndex)] = otherBean;\n });\n }\n return beansList;\n };\n Context.prototype.lookupBeanInstance = function (wiringBean, beanName, optional) {\n if (optional === void 0) { optional = false; }\n if (beanName === \"context\") {\n return this;\n }\n if (this.contextParams.providedBeanInstances && this.contextParams.providedBeanInstances.hasOwnProperty(beanName)) {\n return this.contextParams.providedBeanInstances[beanName];\n }\n var beanEntry = this.beanWrappers[beanName];\n if (beanEntry) {\n return beanEntry.beanInstance;\n }\n if (!optional) {\n console.error(\"AG Grid: unable to find bean reference \" + beanName + \" while initialising \" + wiringBean);\n }\n return null;\n };\n Context.prototype.callLifeCycleMethods = function (beanInstances, lifeCycleMethod) {\n var _this = this;\n beanInstances.forEach(function (beanInstance) { return _this.callLifeCycleMethodsOnBean(beanInstance, lifeCycleMethod); });\n };\n Context.prototype.callLifeCycleMethodsOnBean = function (beanInstance, lifeCycleMethod, methodToIgnore) {\n // putting all methods into a map removes duplicates\n var allMethods = {};\n // dump methods from each level of the metadata hierarchy\n this.forEachMetaDataInHierarchy(beanInstance, function (metaData) {\n var methods = metaData[lifeCycleMethod];\n if (methods) {\n methods.forEach(function (methodName) {\n if (methodName != methodToIgnore) {\n allMethods[methodName] = true;\n }\n });\n }\n });\n var allMethodsList = Object.keys(allMethods);\n allMethodsList.forEach(function (methodName) { return beanInstance[methodName](); });\n };\n Context.prototype.getBean = function (name) {\n return this.lookupBeanInstance(\"getBean\", name, true);\n };\n Context.prototype.destroy = function () {\n if (this.destroyed) {\n return;\n }\n this.logger.log(\">> Shutting down ag-Application Context\");\n var beanInstances = this.getBeanInstances();\n this.destroyBeans(beanInstances);\n this.contextParams.providedBeanInstances = null;\n this.destroyed = true;\n this.logger.log(\">> ag-Application Context shut down - component is dead\");\n };\n Context.prototype.destroyBean = function (bean) {\n if (!bean) {\n return;\n }\n this.destroyBeans([bean]);\n };\n Context.prototype.destroyBeans = function (beans) {\n var _this = this;\n if (!beans) {\n return [];\n }\n beans.forEach(function (bean) {\n _this.callLifeCycleMethodsOnBean(bean, 'preDestroyMethods', 'destroy');\n // call destroy() explicitly if it exists\n var beanAny = bean;\n if (typeof beanAny.destroy === 'function') {\n beanAny.destroy();\n }\n });\n return [];\n };\n return Context;\n}());\nexport { Context };\n// taken from: http://stackoverflow.com/questions/3362471/how-can-i-call-a-javascript-constructor-using-call-or-apply\n// allows calling 'apply' on a constructor\nfunction applyToConstructor(constructor, argArray) {\n var args = [null].concat(argArray);\n var factoryFunction = constructor.bind.apply(constructor, args);\n return new factoryFunction();\n}\nexport function PreConstruct(target, methodName, descriptor) {\n var props = getOrCreateProps(target.constructor);\n if (!props.preConstructMethods) {\n props.preConstructMethods = [];\n }\n props.preConstructMethods.push(methodName);\n}\nexport function PostConstruct(target, methodName, descriptor) {\n var props = getOrCreateProps(target.constructor);\n if (!props.postConstructMethods) {\n props.postConstructMethods = [];\n }\n props.postConstructMethods.push(methodName);\n}\nexport function PreDestroy(target, methodName, descriptor) {\n var props = getOrCreateProps(target.constructor);\n if (!props.preDestroyMethods) {\n props.preDestroyMethods = [];\n }\n props.preDestroyMethods.push(methodName);\n}\nexport function Bean(beanName) {\n return function (classConstructor) {\n var props = getOrCreateProps(classConstructor);\n props.beanName = beanName;\n };\n}\nexport function Autowired(name) {\n return function (target, propertyKey, descriptor) {\n autowiredFunc(target, name, false, target, propertyKey, null);\n };\n}\nexport function Optional(name) {\n return function (target, propertyKey, descriptor) {\n autowiredFunc(target, name, true, target, propertyKey, null);\n };\n}\nfunction autowiredFunc(target, name, optional, classPrototype, methodOrAttributeName, index) {\n if (name === null) {\n console.error(\"AG Grid: Autowired name should not be null\");\n return;\n }\n if (typeof index === \"number\") {\n console.error(\"AG Grid: Autowired should be on an attribute\");\n return;\n }\n // it's an attribute on the class\n var props = getOrCreateProps(target.constructor);\n if (!props.agClassAttributes) {\n props.agClassAttributes = [];\n }\n props.agClassAttributes.push({\n attributeName: methodOrAttributeName,\n beanName: name,\n optional: optional\n });\n}\nexport function Qualifier(name) {\n return function (classPrototype, methodOrAttributeName, index) {\n var constructor = typeof classPrototype == \"function\" ? classPrototype : classPrototype.constructor;\n var props;\n if (typeof index === \"number\") {\n // it's a parameter on a method\n var methodName = void 0;\n if (methodOrAttributeName) {\n props = getOrCreateProps(constructor);\n methodName = methodOrAttributeName;\n }\n else {\n props = getOrCreateProps(constructor);\n methodName = \"agConstructor\";\n }\n if (!props.autowireMethods) {\n props.autowireMethods = {};\n }\n if (!props.autowireMethods[methodName]) {\n props.autowireMethods[methodName] = {};\n }\n props.autowireMethods[methodName][index] = name;\n }\n };\n}\nfunction getOrCreateProps(target) {\n if (!target.hasOwnProperty(\"__agBeanMetaData\")) {\n target.__agBeanMetaData = {};\n }\n return target.__agBeanMetaData;\n}\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { Bean, Qualifier } from \"./context/context\";\nvar EventService = /** @class */ (function () {\n function EventService() {\n this.allSyncListeners = new Map();\n this.allAsyncListeners = new Map();\n this.globalSyncListeners = new Set();\n this.globalAsyncListeners = new Set();\n this.asyncFunctionsQueue = [];\n this.scheduled = false;\n // using an object performs better than a Set for the number of different events we have\n this.firedEvents = {};\n }\n // because this class is used both inside the context and outside the context, we do not\n // use autowired attributes, as that would be confusing, as sometimes the attributes\n // would be wired, and sometimes not.\n //\n // the global event servers used by AG Grid is autowired by the context once, and this\n // setBeans method gets called once.\n //\n // the times when this class is used outside of the context (eg RowNode has an instance of this\n // class) then it is not a bean, and this setBeans method is not called.\n EventService.prototype.setBeans = function (loggerFactory, gridOptionsWrapper, frameworkOverrides, globalEventListener) {\n if (globalEventListener === void 0) { globalEventListener = null; }\n this.frameworkOverrides = frameworkOverrides;\n if (globalEventListener) {\n var async = gridOptionsWrapper.useAsyncEvents();\n this.addGlobalListener(globalEventListener, async);\n }\n };\n EventService.prototype.getListeners = function (eventType, async, autoCreateListenerCollection) {\n var listenerMap = async ? this.allAsyncListeners : this.allSyncListeners;\n var listeners = listenerMap.get(eventType);\n // Note: 'autoCreateListenerCollection' should only be 'true' if a listener is about to be added. For instance\n // getListeners() is also called during event dispatch even though no listeners are added. This measure protects\n // against 'memory bloat' as empty collections will prevent the RowNode's event service from being removed after\n // the RowComp is destroyed, see noRegisteredListenersExist() below.\n if (!listeners && autoCreateListenerCollection) {\n listeners = new Set();\n listenerMap.set(eventType, listeners);\n }\n return listeners;\n };\n EventService.prototype.noRegisteredListenersExist = function () {\n return this.allSyncListeners.size === 0 && this.allAsyncListeners.size === 0 &&\n this.globalSyncListeners.size === 0 && this.globalAsyncListeners.size === 0;\n };\n EventService.prototype.addEventListener = function (eventType, listener, async) {\n if (async === void 0) { async = false; }\n this.getListeners(eventType, async, true).add(listener);\n };\n EventService.prototype.removeEventListener = function (eventType, listener, async) {\n if (async === void 0) { async = false; }\n var listeners = this.getListeners(eventType, async, false);\n if (!listeners) {\n return;\n }\n listeners.delete(listener);\n if (listeners.size === 0) {\n var listenerMap = async ? this.allAsyncListeners : this.allSyncListeners;\n listenerMap.delete(eventType);\n }\n };\n EventService.prototype.addGlobalListener = function (listener, async) {\n if (async === void 0) { async = false; }\n (async ? this.globalAsyncListeners : this.globalSyncListeners).add(listener);\n };\n EventService.prototype.removeGlobalListener = function (listener, async) {\n if (async === void 0) { async = false; }\n (async ? this.globalAsyncListeners : this.globalSyncListeners).delete(listener);\n };\n EventService.prototype.dispatchEvent = function (event) {\n this.dispatchToListeners(event, true);\n this.dispatchToListeners(event, false);\n this.firedEvents[event.type] = true;\n };\n EventService.prototype.dispatchEventOnce = function (event) {\n if (!this.firedEvents[event.type]) {\n this.dispatchEvent(event);\n }\n };\n EventService.prototype.dispatchToListeners = function (event, async) {\n var _this = this;\n var eventType = event.type;\n var processEventListeners = function (listeners) { return listeners.forEach(function (listener) {\n if (async) {\n _this.dispatchAsync(function () { return listener(event); });\n }\n else {\n listener(event);\n }\n }); };\n var listeners = this.getListeners(eventType, async, false);\n if (listeners) {\n processEventListeners(listeners);\n }\n var globalListeners = async ? this.globalAsyncListeners : this.globalSyncListeners;\n globalListeners.forEach(function (listener) {\n if (async) {\n _this.dispatchAsync(function () { return _this.frameworkOverrides.dispatchEvent(eventType, function () { return listener(eventType, event); }, true); });\n }\n else {\n _this.frameworkOverrides.dispatchEvent(eventType, function () { return listener(eventType, event); }, true);\n }\n });\n };\n // this gets called inside the grid's thread, for each event that it\n // wants to set async. the grid then batches the events into one setTimeout()\n // because setTimeout() is an expensive operation. ideally we would have\n // each event in it's own setTimeout(), but we batch for performance.\n EventService.prototype.dispatchAsync = function (func) {\n // add to the queue for executing later in the next VM turn\n this.asyncFunctionsQueue.push(func);\n // check if timeout is already scheduled. the first time the grid calls\n // this within it's thread turn, this should be false, so it will schedule\n // the 'flush queue' method the first time it comes here. then the flag is\n // set to 'true' so it will know it's already scheduled for subsequent calls.\n if (!this.scheduled) {\n // if not scheduled, schedule one\n window.setTimeout(this.flushAsyncQueue.bind(this), 0);\n // mark that it is scheduled\n this.scheduled = true;\n }\n };\n // this happens in the next VM turn only, and empties the queue of events\n EventService.prototype.flushAsyncQueue = function () {\n this.scheduled = false;\n // we take a copy, because the event listener could be using\n // the grid, which would cause more events, which would be potentially\n // added to the queue, so safe to take a copy, the new events will\n // get executed in a later VM turn rather than risk updating the\n // queue as we are flushing it.\n var queueCopy = this.asyncFunctionsQueue.slice();\n this.asyncFunctionsQueue = [];\n // execute the queue\n queueCopy.forEach(function (func) { return func(); });\n };\n __decorate([\n __param(0, Qualifier('loggerFactory')),\n __param(1, Qualifier('gridOptionsWrapper')),\n __param(2, Qualifier('frameworkOverrides')),\n __param(3, Qualifier('globalEventListener'))\n ], EventService.prototype, \"setBeans\", null);\n EventService = __decorate([\n Bean('eventService')\n ], EventService);\n return EventService;\n}());\nexport { EventService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar Constants = /** @class */ (function () {\n function Constants() {\n }\n Constants.ROW_BUFFER_SIZE = 10;\n Constants.LAYOUT_INTERVAL = 500;\n Constants.BATCH_WAIT_MILLIS = 50;\n Constants.EXPORT_TYPE_DRAG_COPY = 'dragCopy';\n Constants.EXPORT_TYPE_CLIPBOARD = 'clipboard';\n Constants.EXPORT_TYPE_EXCEL = 'excel';\n Constants.EXPORT_TYPE_CSV = 'csv';\n Constants.ROW_MODEL_TYPE_INFINITE = 'infinite';\n Constants.ROW_MODEL_TYPE_VIEWPORT = 'viewport';\n Constants.ROW_MODEL_TYPE_CLIENT_SIDE = 'clientSide';\n Constants.ROW_MODEL_TYPE_SERVER_SIDE = 'serverSide';\n Constants.ALWAYS = 'always';\n Constants.ONLY_WHEN_GROUPING = 'onlyWhenGrouping';\n Constants.PINNED_TOP = 'top';\n Constants.PINNED_BOTTOM = 'bottom';\n Constants.DOM_LAYOUT_NORMAL = 'normal';\n Constants.DOM_LAYOUT_PRINT = 'print';\n Constants.DOM_LAYOUT_AUTO_HEIGHT = 'autoHeight';\n Constants.GROUP_AUTO_COLUMN_ID = 'ag-Grid-AutoColumn';\n Constants.SOURCE_PASTE = 'paste';\n Constants.PINNED_RIGHT = 'right';\n Constants.PINNED_LEFT = 'left';\n Constants.SORT_ASC = 'asc';\n Constants.SORT_DESC = 'desc';\n Constants.INPUT_SELECTOR = 'input, select, button, textarea';\n Constants.FOCUSABLE_SELECTOR = '[tabindex], input, select, button, textarea';\n Constants.FOCUSABLE_EXCLUDE = '.ag-hidden, .ag-hidden *, [disabled], .ag-disabled, .ag-disabled *';\n return Constants;\n}());\nexport { Constants };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nexport var ModuleNames;\n(function (ModuleNames) {\n // when using modules, user references this\n ModuleNames[\"CommunityCoreModule\"] = \"@ag-grid-community/core\";\n // when not using modules, user references this\n ModuleNames[\"CommunityAllModules\"] = \"@ag-grid-community/all\";\n // community modules\n ModuleNames[\"InfiniteRowModelModule\"] = \"@ag-grid-community/infinite-row-model\";\n ModuleNames[\"ClientSideRowModelModule\"] = \"@ag-grid-community/client-side-row-model\";\n ModuleNames[\"CsvExportModule\"] = \"@ag-grid-community/csv-export\";\n // enterprise core - users never import on this, but other enterprise modules do\n ModuleNames[\"EnterpriseCoreModule\"] = \"@ag-grid-enterprise/core\";\n // when not using modules, user references this\n ModuleNames[\"EnterpriseAllModules\"] = \"@ag-grid-enterprise/all\";\n // enterprise modules\n ModuleNames[\"RowGroupingModule\"] = \"@ag-grid-enterprise/row-grouping\";\n ModuleNames[\"ColumnToolPanelModule\"] = \"@ag-grid-enterprise/column-tool-panel\";\n ModuleNames[\"FiltersToolPanelModule\"] = \"@ag-grid-enterprise/filter-tool-panel\";\n ModuleNames[\"MenuModule\"] = \"@ag-grid-enterprise/menu\";\n ModuleNames[\"SetFilterModule\"] = \"@ag-grid-enterprise/set-filter\";\n ModuleNames[\"MultiFilterModule\"] = \"@ag-grid-enterprise/multi-filter\";\n ModuleNames[\"StatusBarModule\"] = \"@ag-grid-enterprise/status-bar\";\n ModuleNames[\"SideBarModule\"] = \"@ag-grid-enterprise/side-bar\";\n ModuleNames[\"RangeSelectionModule\"] = \"@ag-grid-enterprise/range-selection\";\n ModuleNames[\"MasterDetailModule\"] = \"@ag-grid-enterprise/master-detail\";\n ModuleNames[\"RichSelectModule\"] = \"@ag-grid-enterprise/rich-select\";\n ModuleNames[\"GridChartsModule\"] = \"@ag-grid-enterprise/charts\";\n ModuleNames[\"ViewportRowModelModule\"] = \"@ag-grid-enterprise/viewport-row-model\";\n ModuleNames[\"ServerSideRowModelModule\"] = \"@ag-grid-enterprise/server-side-row-model\";\n ModuleNames[\"ExcelExportModule\"] = \"@ag-grid-enterprise/excel-export\";\n ModuleNames[\"ClipboardModule\"] = \"@ag-grid-enterprise/clipboard\";\n ModuleNames[\"SparklinesModule\"] = \"@ag-grid-enterprise/sparklines\";\n // framework wrappers currently don't provide beans, comps etc, so no need to be modules,\n // however i argue they should be as in theory they 'could' provide beans etc\n ModuleNames[\"AngularModule\"] = \"@ag-grid-community/angular\";\n ModuleNames[\"ReactModule\"] = \"@ag-grid-community/react\";\n ModuleNames[\"VueModule\"] = \"@ag-grid-community/vue\";\n ModuleNames[\"PolymerModule\"] = \"@ag-grid-community/polymer\";\n // and then this, which is definitely not a grid module, as it should not have any dependency\n // on the grid (ie shouldn't even reference the Module interface)\n // ChartsModule = \"@ag-grid-community/charts-core\",\n})(ModuleNames || (ModuleNames = {}));\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nimport { doOnce } from \"../utils/function\";\nimport { values } from \"../utils/generic\";\nvar ModuleRegistry = /** @class */ (function () {\n function ModuleRegistry() {\n }\n ModuleRegistry.register = function (module, moduleBased) {\n if (moduleBased === void 0) { moduleBased = true; }\n ModuleRegistry.modulesMap[module.moduleName] = module;\n if (ModuleRegistry.moduleBased === undefined) {\n ModuleRegistry.moduleBased = moduleBased;\n }\n else {\n if (ModuleRegistry.moduleBased !== moduleBased) {\n doOnce(function () {\n console.warn(\"AG Grid: You are mixing modules (i.e. @ag-grid-community/core) and packages (ag-grid-community) - you can only use one or the other of these mechanisms.\");\n console.warn('Please see https://www.ag-grid.com/javascript-grid/packages-modules/ for more information.');\n }, 'ModulePackageCheck');\n }\n }\n };\n // noinspection JSUnusedGlobalSymbols\n ModuleRegistry.registerModules = function (modules, moduleBased) {\n if (moduleBased === void 0) { moduleBased = true; }\n if (!modules) {\n return;\n }\n modules.forEach(function (module) { return ModuleRegistry.register(module, moduleBased); });\n };\n ModuleRegistry.assertRegistered = function (moduleName, reason) {\n if (this.isRegistered(moduleName)) {\n return true;\n }\n var warningKey = reason + moduleName;\n var warningMessage;\n if (ModuleRegistry.moduleBased) {\n warningMessage = \"AG Grid: unable to use \" + reason + \" as module \" + moduleName + \" is not present. Please see: https://www.ag-grid.com/javascript-grid/modules/\";\n }\n else {\n warningMessage = \"AG Grid: unable to use \" + reason + \" as package 'ag-grid-enterprise' is not present. Please see: https://www.ag-grid.com/javascript-grid/packages/\";\n }\n doOnce(function () {\n console.warn(warningMessage);\n }, warningKey);\n return false;\n };\n ModuleRegistry.isRegistered = function (moduleName) {\n return !!ModuleRegistry.modulesMap[moduleName];\n };\n ModuleRegistry.getRegisteredModules = function () {\n return values(ModuleRegistry.modulesMap);\n };\n ModuleRegistry.isPackageBased = function () {\n return !ModuleRegistry.moduleBased;\n };\n // having in a map a) removes duplicates and b) allows fast lookup\n ModuleRegistry.modulesMap = {};\n return ModuleRegistry;\n}());\nexport { ModuleRegistry };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { EventService } from \"../eventService\";\nimport { Autowired, PostConstruct } from \"../context/context\";\nimport { Constants } from \"../constants/constants\";\nimport { ModuleNames } from \"../modules/moduleNames\";\nimport { ModuleRegistry } from \"../modules/moduleRegistry\";\nimport { attrToNumber, attrToBoolean, exists, missing } from \"../utils/generic\";\nimport { doOnce } from \"../utils/function\";\nimport { mergeDeep } from \"../utils/object\";\nvar instanceIdSequence = 0;\n// Wrapper around a user provide column definition. The grid treats the column definition as ready only.\n// This class contains all the runtime information about a column, plus some logic (the definition has no logic).\n// This class implements both interfaces ColumnGroupChild and ProvidedColumnGroupChild as the class can\n// appear as a child of either the original tree or the displayed tree. However the relevant group classes\n// for each type only implements one, as each group can only appear in it's associated tree (eg ProvidedColumnGroup\n// can only appear in OriginalColumn tree).\nvar Column = /** @class */ (function () {\n function Column(colDef, userProvidedColDef, colId, primary) {\n // used by React (and possibly other frameworks) as key for rendering\n this.instanceId = instanceIdSequence++;\n this.moving = false;\n this.menuVisible = false;\n this.filterActive = false;\n this.eventService = new EventService();\n this.rowGroupActive = false;\n this.pivotActive = false;\n this.aggregationActive = false;\n this.colDef = colDef;\n this.userProvidedColDef = userProvidedColDef;\n this.colId = colId;\n this.primary = primary;\n this.setState(colDef);\n }\n Column.prototype.getInstanceId = function () {\n return this.instanceId;\n };\n Column.prototype.setState = function (colDef) {\n // sort\n if (colDef.sort !== undefined) {\n if (colDef.sort === Constants.SORT_ASC || colDef.sort === Constants.SORT_DESC) {\n this.sort = colDef.sort;\n }\n }\n else {\n if (colDef.initialSort === Constants.SORT_ASC || colDef.initialSort === Constants.SORT_DESC) {\n this.sort = colDef.initialSort;\n }\n }\n // sortIndex\n var sortIndex = attrToNumber(colDef.sortIndex);\n var initialSortIndex = attrToNumber(colDef.initialSortIndex);\n if (sortIndex !== undefined) {\n if (sortIndex !== null) {\n this.sortIndex = sortIndex;\n }\n }\n else {\n if (initialSortIndex !== null) {\n this.sortIndex = initialSortIndex;\n }\n }\n // hide\n var hide = attrToBoolean(colDef.hide);\n var initialHide = attrToBoolean(colDef.initialHide);\n if (hide !== undefined) {\n this.visible = !hide;\n }\n else {\n this.visible = !initialHide;\n }\n // pinned\n if (colDef.pinned !== undefined) {\n this.setPinned(colDef.pinned);\n }\n else {\n this.setPinned(colDef.initialPinned);\n }\n // flex\n var flex = attrToNumber(colDef.flex);\n var initialFlex = attrToNumber(colDef.initialFlex);\n if (flex !== undefined) {\n this.flex = flex;\n }\n else if (initialFlex !== undefined) {\n this.flex = initialFlex;\n }\n };\n // gets called when user provides an alternative colDef, eg\n Column.prototype.setColDef = function (colDef, userProvidedColDef) {\n this.colDef = colDef;\n this.userProvidedColDef = userProvidedColDef;\n this.initMinAndMaxWidths();\n this.initDotNotation();\n };\n /**\n * Returns the column definition provided by the application.\n * This may not be correct, as items can be superseded by default column options.\n * However it's useful for comparison, eg to know which application column definition matches that column.\n */\n Column.prototype.getUserProvidedColDef = function () {\n return this.userProvidedColDef;\n };\n Column.prototype.setParent = function (parent) {\n this.parent = parent;\n };\n /** Returns the parent column group, if column grouping is active. */\n Column.prototype.getParent = function () {\n return this.parent;\n };\n Column.prototype.setOriginalParent = function (originalParent) {\n this.originalParent = originalParent;\n };\n Column.prototype.getOriginalParent = function () {\n return this.originalParent;\n };\n // this is done after constructor as it uses gridOptionsWrapper\n Column.prototype.initialise = function () {\n this.initMinAndMaxWidths();\n this.resetActualWidth('gridInitializing');\n this.initDotNotation();\n this.validate();\n };\n Column.prototype.initDotNotation = function () {\n var suppressDotNotation = this.gridOptionsWrapper.isSuppressFieldDotNotation();\n this.fieldContainsDots = exists(this.colDef.field) && this.colDef.field.indexOf('.') >= 0 && !suppressDotNotation;\n this.tooltipFieldContainsDots = exists(this.colDef.tooltipField) && this.colDef.tooltipField.indexOf('.') >= 0 && !suppressDotNotation;\n };\n Column.prototype.initMinAndMaxWidths = function () {\n var colDef = this.colDef;\n this.minWidth = this.columnUtils.calculateColMinWidth(colDef);\n this.maxWidth = this.columnUtils.calculateColMaxWidth(colDef);\n };\n Column.prototype.resetActualWidth = function (source) {\n if (source === void 0) { source = 'api'; }\n var initialWidth = this.columnUtils.calculateColInitialWidth(this.colDef);\n this.setActualWidth(initialWidth, source, true);\n };\n Column.prototype.isEmptyGroup = function () {\n return false;\n };\n Column.prototype.isRowGroupDisplayed = function (colId) {\n if (missing(this.colDef) || missing(this.colDef.showRowGroup)) {\n return false;\n }\n var showingAllGroups = this.colDef.showRowGroup === true;\n var showingThisGroup = this.colDef.showRowGroup === colId;\n return showingAllGroups || showingThisGroup;\n };\n /** Returns `true` if column is a primary column, `false` if secondary. Secondary columns are used for pivoting. */\n Column.prototype.isPrimary = function () {\n return this.primary;\n };\n /** Returns `true` if column filtering is allowed. */\n Column.prototype.isFilterAllowed = function () {\n // filter defined means it's a string, class or true.\n // if its false, null or undefined then it's false.\n var filterDefined = !!this.colDef.filter || !!this.colDef.filterFramework;\n return this.primary && filterDefined;\n };\n Column.prototype.isFieldContainsDots = function () {\n return this.fieldContainsDots;\n };\n Column.prototype.isTooltipFieldContainsDots = function () {\n return this.tooltipFieldContainsDots;\n };\n Column.prototype.validate = function () {\n var colDefAny = this.colDef;\n function warnOnce(msg, key, obj) {\n doOnce(function () {\n if (obj) {\n console.warn(msg, obj);\n }\n else {\n doOnce(function () { return console.warn(msg); }, key);\n }\n }, key);\n }\n var usingCSRM = this.gridOptionsWrapper.isRowModelDefault();\n if (usingCSRM && !ModuleRegistry.isRegistered(ModuleNames.RowGroupingModule)) {\n var rowGroupingItems = ['enableRowGroup', 'rowGroup', 'rowGroupIndex', 'enablePivot', 'enableValue', 'pivot', 'pivotIndex', 'aggFunc'];\n rowGroupingItems.forEach(function (item) {\n if (exists(colDefAny[item])) {\n if (ModuleRegistry.isPackageBased()) {\n warnOnce(\"AG Grid: \" + item + \" is only valid in ag-grid-enterprise, your column definition should not have \" + item, 'ColumnRowGroupingMissing' + item);\n }\n else {\n warnOnce(\"AG Grid: \" + item + \" is only valid with AG Grid Enterprise Module \" + ModuleNames.RowGroupingModule + \" - your column definition should not have \" + item, 'ColumnRowGroupingMissing' + item);\n }\n }\n });\n }\n if (!ModuleRegistry.isRegistered(ModuleNames.RichSelectModule)) {\n if (this.colDef.cellEditor === 'agRichSelect') {\n if (ModuleRegistry.isPackageBased()) {\n warnOnce(\"AG Grid: \" + this.colDef.cellEditor + \" can only be used with ag-grid-enterprise\", 'ColumnRichSelectMissing');\n }\n else {\n warnOnce(\"AG Grid: \" + this.colDef.cellEditor + \" can only be used with AG Grid Enterprise Module \" + ModuleNames.RichSelectModule, 'ColumnRichSelectMissing');\n }\n }\n }\n if (this.gridOptionsWrapper.isTreeData()) {\n var itemsNotAllowedWithTreeData = ['rowGroup', 'rowGroupIndex', 'pivot', 'pivotIndex'];\n itemsNotAllowedWithTreeData.forEach(function (item) {\n if (exists(colDefAny[item])) {\n warnOnce(\"AG Grid: \" + item + \" is not possible when doing tree data, your column definition should not have \" + item, 'TreeDataCannotRowGroup');\n }\n });\n }\n if (exists(this.colDef.width) && typeof this.colDef.width !== 'number') {\n warnOnce('AG Grid: colDef.width should be a number, not ' + typeof this.colDef.width, 'ColumnCheck_asdfawef');\n }\n if (colDefAny.pinnedRowCellRenderer) {\n warnOnce('AG Grid: pinnedRowCellRenderer no longer exists, use cellRendererSelector if you want a different Cell Renderer for pinned rows. Check params.node.rowPinned. This was an unfortunate (but necessary) change we had to do to allow future plans we have of re-skinng the data grid in frameworks such as React, Angular and Vue. See https://www.ag-grid.com/javascript-grid/cell-rendering/#many-renderers-one-column', 'colDef.pinnedRowCellRenderer-deprecated');\n }\n if (colDefAny.pinnedRowCellRendererParams) {\n warnOnce('AG Grid: pinnedRowCellRenderer no longer exists, use cellRendererSelector if you want a different Cell Renderer for pinned rows. Check params.node.rowPinned. This was an unfortunate (but necessary) change we had to do to allow future plans we have of re-skinng the data grid in frameworks such as React, Angular and Vue. See https://www.ag-grid.com/javascript-grid/cell-rendering/#many-renderers-one-column', 'colDef.pinnedRowCellRenderer-deprecated');\n }\n if (colDefAny.pinnedRowCellRendererFramework) {\n warnOnce('AG Grid: pinnedRowCellRenderer no longer exists, use cellRendererSelector if you want a different Cell Renderer for pinned rows. Check params.node.rowPinned. This was an unfortunate (but necessary) change we had to do to allow future plans we have of re-skinng the data grid in frameworks such as React, Angular and Vue. See https://www.ag-grid.com/javascript-grid/cell-rendering/#many-renderers-one-column', 'colDef.pinnedRowCellRenderer-deprecated');\n }\n if (colDefAny.pinnedRowValueGetter) {\n warnOnce('AG Grid: pinnedRowCellRenderer is deprecated, use cellRendererSelector if you want a different Cell Renderer for pinned rows. Check params.node.rowPinned. This was an unfortunate (but necessary) change we had to do to allow future plans we have of re-skinng the data grid in frameworks such as React, Angular and Vue.', 'colDef.pinnedRowCellRenderer-deprecated');\n }\n };\n /** Add an event listener to the column. */\n Column.prototype.addEventListener = function (eventType, listener) {\n this.eventService.addEventListener(eventType, listener);\n };\n /** Remove event listener from the column. */\n Column.prototype.removeEventListener = function (eventType, listener) {\n this.eventService.removeEventListener(eventType, listener);\n };\n Column.prototype.createColumnFunctionCallbackParams = function (rowNode) {\n return {\n node: rowNode,\n data: rowNode.data,\n column: this,\n colDef: this.colDef,\n context: this.gridOptionsWrapper.getContext(),\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi()\n };\n };\n Column.prototype.isSuppressNavigable = function (rowNode) {\n // if boolean set, then just use it\n if (typeof this.colDef.suppressNavigable === 'boolean') {\n return this.colDef.suppressNavigable;\n }\n // if function, then call the function to find out\n if (typeof this.colDef.suppressNavigable === 'function') {\n var params = this.createColumnFunctionCallbackParams(rowNode);\n var userFunc = this.colDef.suppressNavigable;\n return userFunc(params);\n }\n return false;\n };\n Column.prototype.isCellEditable = function (rowNode) {\n // only allow editing of groups if the user has this option enabled\n if (rowNode.group && !this.gridOptionsWrapper.isEnableGroupEdit()) {\n return false;\n }\n return this.isColumnFunc(rowNode, this.colDef.editable);\n };\n Column.prototype.isSuppressFillHandle = function () {\n return !!attrToBoolean(this.colDef.suppressFillHandle);\n };\n Column.prototype.isAutoHeight = function () {\n return !!attrToBoolean(this.colDef.autoHeight);\n };\n Column.prototype.isRowDrag = function (rowNode) {\n return this.isColumnFunc(rowNode, this.colDef.rowDrag);\n };\n Column.prototype.isDndSource = function (rowNode) {\n return this.isColumnFunc(rowNode, this.colDef.dndSource);\n };\n Column.prototype.isCellCheckboxSelection = function (rowNode) {\n return this.isColumnFunc(rowNode, this.colDef.checkboxSelection);\n };\n Column.prototype.isSuppressPaste = function (rowNode) {\n return this.isColumnFunc(rowNode, this.colDef ? this.colDef.suppressPaste : null);\n };\n Column.prototype.isResizable = function () {\n return !!attrToBoolean(this.colDef.resizable);\n };\n Column.prototype.isColumnFunc = function (rowNode, value) {\n // if boolean set, then just use it\n if (typeof value === 'boolean') {\n return value;\n }\n // if function, then call the function to find out\n if (typeof value === 'function') {\n var params = this.createColumnFunctionCallbackParams(rowNode);\n var editableFunc = value;\n return editableFunc(params);\n }\n return false;\n };\n Column.prototype.setMoving = function (moving, source) {\n if (source === void 0) { source = \"api\"; }\n this.moving = moving;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_MOVING_CHANGED, source));\n };\n Column.prototype.createColumnEvent = function (type, source) {\n return {\n api: this.gridApi,\n columnApi: this.columnApi,\n type: type,\n column: this,\n columns: [this],\n source: source\n };\n };\n Column.prototype.isMoving = function () {\n return this.moving;\n };\n /** If sorting is active, returns the sort direction e.g. `'asc'` or `'desc'`. */\n Column.prototype.getSort = function () {\n return this.sort;\n };\n Column.prototype.setSort = function (sort, source) {\n if (source === void 0) { source = \"api\"; }\n if (this.sort !== sort) {\n this.sort = sort;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_SORT_CHANGED, source));\n }\n };\n Column.prototype.setMenuVisible = function (visible, source) {\n if (source === void 0) { source = \"api\"; }\n if (this.menuVisible !== visible) {\n this.menuVisible = visible;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_MENU_VISIBLE_CHANGED, source));\n }\n };\n Column.prototype.isMenuVisible = function () {\n return this.menuVisible;\n };\n Column.prototype.isSortAscending = function () {\n return this.sort === Constants.SORT_ASC;\n };\n Column.prototype.isSortDescending = function () {\n return this.sort === Constants.SORT_DESC;\n };\n Column.prototype.isSortNone = function () {\n return missing(this.sort);\n };\n Column.prototype.isSorting = function () {\n return exists(this.sort);\n };\n Column.prototype.getSortIndex = function () {\n return this.sortIndex;\n };\n Column.prototype.setSortIndex = function (sortOrder) {\n this.sortIndex = sortOrder;\n };\n Column.prototype.setAggFunc = function (aggFunc) {\n this.aggFunc = aggFunc;\n };\n /** If aggregation is set for the column, returns the aggregation function. */\n Column.prototype.getAggFunc = function () {\n return this.aggFunc;\n };\n Column.prototype.getLeft = function () {\n return this.left;\n };\n Column.prototype.getOldLeft = function () {\n return this.oldLeft;\n };\n Column.prototype.getRight = function () {\n return this.left + this.actualWidth;\n };\n Column.prototype.setLeft = function (left, source) {\n if (source === void 0) { source = \"api\"; }\n this.oldLeft = this.left;\n if (this.left !== left) {\n this.left = left;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_LEFT_CHANGED, source));\n }\n };\n /** Returns `true` if filter is active on the column. */\n Column.prototype.isFilterActive = function () {\n return this.filterActive;\n };\n // additionalEventAttributes is used by provided simple floating filter, so it can add 'floatingFilter=true' to the event\n Column.prototype.setFilterActive = function (active, source, additionalEventAttributes) {\n if (source === void 0) { source = \"api\"; }\n if (this.filterActive !== active) {\n this.filterActive = active;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_FILTER_ACTIVE_CHANGED, source));\n }\n var filterChangedEvent = this.createColumnEvent(Column.EVENT_FILTER_CHANGED, source);\n if (additionalEventAttributes) {\n mergeDeep(filterChangedEvent, additionalEventAttributes);\n }\n this.eventService.dispatchEvent(filterChangedEvent);\n };\n Column.prototype.setPinned = function (pinned) {\n if (pinned === true || pinned === Constants.PINNED_LEFT) {\n this.pinned = Constants.PINNED_LEFT;\n }\n else if (pinned === Constants.PINNED_RIGHT) {\n this.pinned = Constants.PINNED_RIGHT;\n }\n else {\n this.pinned = null;\n }\n };\n Column.prototype.setFirstRightPinned = function (firstRightPinned, source) {\n if (source === void 0) { source = \"api\"; }\n if (this.firstRightPinned !== firstRightPinned) {\n this.firstRightPinned = firstRightPinned;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_FIRST_RIGHT_PINNED_CHANGED, source));\n }\n };\n Column.prototype.setLastLeftPinned = function (lastLeftPinned, source) {\n if (source === void 0) { source = \"api\"; }\n if (this.lastLeftPinned !== lastLeftPinned) {\n this.lastLeftPinned = lastLeftPinned;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_LAST_LEFT_PINNED_CHANGED, source));\n }\n };\n Column.prototype.isFirstRightPinned = function () {\n return this.firstRightPinned;\n };\n Column.prototype.isLastLeftPinned = function () {\n return this.lastLeftPinned;\n };\n Column.prototype.isPinned = function () {\n return this.pinned === Constants.PINNED_LEFT || this.pinned === Constants.PINNED_RIGHT;\n };\n Column.prototype.isPinnedLeft = function () {\n return this.pinned === Constants.PINNED_LEFT;\n };\n Column.prototype.isPinnedRight = function () {\n return this.pinned === Constants.PINNED_RIGHT;\n };\n Column.prototype.getPinned = function () {\n return this.pinned;\n };\n Column.prototype.setVisible = function (visible, source) {\n if (source === void 0) { source = \"api\"; }\n var newValue = visible === true;\n if (this.visible !== newValue) {\n this.visible = newValue;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_VISIBLE_CHANGED, source));\n }\n };\n Column.prototype.isVisible = function () {\n return this.visible;\n };\n /** Returns the column definition for this column.\n * The column definition will be the result of merging the application provided column definition with any provided defaults\n * (e.g. `defaultColDef` grid option, or column types.\n *\n * Equivalent: `getDefinition` */\n Column.prototype.getColDef = function () {\n return this.colDef;\n };\n Column.prototype.getColumnGroupShow = function () {\n return this.colDef.columnGroupShow;\n };\n /**\n * Returns the unique ID for the column.\n *\n * Equivalent: `getId`, `getUniqueId` */\n Column.prototype.getColId = function () {\n return this.colId;\n };\n /**\n * Returns the unique ID for the column.\n *\n * Equivalent: `getColId`, `getUniqueId` */\n Column.prototype.getId = function () {\n return this.getColId();\n };\n /**\n * Returns the unique ID for the column.\n *\n * Equivalent: `getColId`, `getId` */\n Column.prototype.getUniqueId = function () {\n return this.getId();\n };\n Column.prototype.getDefinition = function () {\n return this.colDef;\n };\n /** Returns the current width of the column. If the column is resized, the actual width is the new size. */\n Column.prototype.getActualWidth = function () {\n return this.actualWidth;\n };\n Column.prototype.createBaseColDefParams = function (rowNode) {\n var params = {\n node: rowNode,\n data: rowNode.data,\n colDef: this.colDef,\n column: this,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext()\n };\n return params;\n };\n Column.prototype.getColSpan = function (rowNode) {\n if (missing(this.colDef.colSpan)) {\n return 1;\n }\n var params = this.createBaseColDefParams(rowNode);\n var colSpan = this.colDef.colSpan(params);\n // colSpan must be number equal to or greater than 1\n return Math.max(colSpan, 1);\n };\n Column.prototype.getRowSpan = function (rowNode) {\n if (missing(this.colDef.rowSpan)) {\n return 1;\n }\n var params = this.createBaseColDefParams(rowNode);\n var rowSpan = this.colDef.rowSpan(params);\n // rowSpan must be number equal to or greater than 1\n return Math.max(rowSpan, 1);\n };\n Column.prototype.setActualWidth = function (actualWidth, source, silent) {\n if (source === void 0) { source = \"api\"; }\n if (silent === void 0) { silent = false; }\n if (this.minWidth != null) {\n actualWidth = Math.max(actualWidth, this.minWidth);\n }\n if (this.maxWidth != null) {\n actualWidth = Math.min(actualWidth, this.maxWidth);\n }\n if (this.actualWidth !== actualWidth) {\n // disable flex for this column if it was manually resized.\n this.actualWidth = actualWidth;\n if (this.flex && source !== 'flex' && source !== 'gridInitializing') {\n this.flex = null;\n }\n if (!silent) {\n this.fireColumnWidthChangedEvent(source);\n }\n }\n };\n Column.prototype.fireColumnWidthChangedEvent = function (source) {\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_WIDTH_CHANGED, source));\n };\n Column.prototype.isGreaterThanMax = function (width) {\n if (this.maxWidth != null) {\n return width > this.maxWidth;\n }\n return false;\n };\n Column.prototype.getMinWidth = function () {\n return this.minWidth;\n };\n Column.prototype.getMaxWidth = function () {\n return this.maxWidth;\n };\n Column.prototype.getFlex = function () {\n return this.flex || 0;\n };\n // this method should only be used by the columnModel to\n // change flex when required by the setColumnState method.\n Column.prototype.setFlex = function (flex) {\n if (this.flex !== flex) {\n this.flex = flex;\n }\n };\n Column.prototype.setMinimum = function (source) {\n if (source === void 0) { source = \"api\"; }\n if (exists(this.minWidth)) {\n this.setActualWidth(this.minWidth, source);\n }\n };\n Column.prototype.setRowGroupActive = function (rowGroup, source) {\n if (source === void 0) { source = \"api\"; }\n if (this.rowGroupActive !== rowGroup) {\n this.rowGroupActive = rowGroup;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_ROW_GROUP_CHANGED, source));\n }\n };\n /** Returns `true` if row group is currently active for this column. */\n Column.prototype.isRowGroupActive = function () {\n return this.rowGroupActive;\n };\n Column.prototype.setPivotActive = function (pivot, source) {\n if (source === void 0) { source = \"api\"; }\n if (this.pivotActive !== pivot) {\n this.pivotActive = pivot;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_PIVOT_CHANGED, source));\n }\n };\n /** Returns `true` if pivot is currently active for this column. */\n Column.prototype.isPivotActive = function () {\n return this.pivotActive;\n };\n Column.prototype.isAnyFunctionActive = function () {\n return this.isPivotActive() || this.isRowGroupActive() || this.isValueActive();\n };\n Column.prototype.isAnyFunctionAllowed = function () {\n return this.isAllowPivot() || this.isAllowRowGroup() || this.isAllowValue();\n };\n Column.prototype.setValueActive = function (value, source) {\n if (source === void 0) { source = \"api\"; }\n if (this.aggregationActive !== value) {\n this.aggregationActive = value;\n this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_VALUE_CHANGED, source));\n }\n };\n /** Returns `true` if value (aggregation) is currently active for this column. */\n Column.prototype.isValueActive = function () {\n return this.aggregationActive;\n };\n Column.prototype.isAllowPivot = function () {\n return this.colDef.enablePivot === true;\n };\n Column.prototype.isAllowValue = function () {\n return this.colDef.enableValue === true;\n };\n Column.prototype.isAllowRowGroup = function () {\n return this.colDef.enableRowGroup === true;\n };\n Column.prototype.getMenuTabs = function (defaultValues) {\n var menuTabs = this.getColDef().menuTabs;\n if (menuTabs == null) {\n menuTabs = defaultValues;\n }\n return menuTabs;\n };\n // this used to be needed, as previous version of ag-grid had lockPosition as column state,\n // so couldn't depend on colDef version.\n Column.prototype.isLockPosition = function () {\n console.warn('AG Grid: since v21, col.isLockPosition() should not be used, please use col.getColDef().lockPosition instead.');\n return this.colDef ? !!this.colDef.lockPosition : false;\n };\n // this used to be needed, as previous version of ag-grid had lockVisible as column state,\n // so couldn't depend on colDef version.\n Column.prototype.isLockVisible = function () {\n console.warn('AG Grid: since v21, col.isLockVisible() should not be used, please use col.getColDef().lockVisible instead.');\n return this.colDef ? !!this.colDef.lockVisible : false;\n };\n // this used to be needed, as previous version of ag-grid had lockPinned as column state,\n // so couldn't depend on colDef version.\n Column.prototype.isLockPinned = function () {\n console.warn('AG Grid: since v21, col.isLockPinned() should not be used, please use col.getColDef().lockPinned instead.');\n return this.colDef ? !!this.colDef.lockPinned : false;\n };\n // + renderedHeaderCell - for making header cell transparent when moving\n Column.EVENT_MOVING_CHANGED = 'movingChanged';\n // + renderedCell - changing left position\n Column.EVENT_LEFT_CHANGED = 'leftChanged';\n // + renderedCell - changing width\n Column.EVENT_WIDTH_CHANGED = 'widthChanged';\n // + renderedCell - for changing pinned classes\n Column.EVENT_LAST_LEFT_PINNED_CHANGED = 'lastLeftPinnedChanged';\n Column.EVENT_FIRST_RIGHT_PINNED_CHANGED = 'firstRightPinnedChanged';\n // + renderedColumn - for changing visibility icon\n Column.EVENT_VISIBLE_CHANGED = 'visibleChanged';\n // + every time the filter changes, used in the floating filters\n Column.EVENT_FILTER_CHANGED = 'filterChanged';\n // + renderedHeaderCell - marks the header with filter icon\n Column.EVENT_FILTER_ACTIVE_CHANGED = 'filterActiveChanged';\n // + renderedHeaderCell - marks the header with sort icon\n Column.EVENT_SORT_CHANGED = 'sortChanged';\n Column.EVENT_MENU_VISIBLE_CHANGED = 'menuVisibleChanged';\n // + toolpanel, for gui updates\n Column.EVENT_ROW_GROUP_CHANGED = 'columnRowGroupChanged';\n // + toolpanel, for gui updates\n Column.EVENT_PIVOT_CHANGED = 'columnPivotChanged';\n // + toolpanel, for gui updates\n Column.EVENT_VALUE_CHANGED = 'columnValueChanged';\n __decorate([\n Autowired('gridOptionsWrapper')\n ], Column.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('columnUtils')\n ], Column.prototype, \"columnUtils\", void 0);\n __decorate([\n Autowired('columnApi')\n ], Column.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], Column.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('context')\n ], Column.prototype, \"context\", void 0);\n __decorate([\n PostConstruct\n ], Column.prototype, \"initialise\", null);\n return Column;\n}());\nexport { Column };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nimport { exists, toStringOrNull } from './generic';\nexport function firstExistingValue() {\n var values = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n values[_i] = arguments[_i];\n }\n for (var i = 0; i < values.length; i++) {\n var value = values[i];\n if (exists(value)) {\n return value;\n }\n }\n return null;\n}\nexport function existsAndNotEmpty(value) {\n return value != null && value.length > 0;\n}\nexport function last(arr) {\n if (!arr || !arr.length) {\n return;\n }\n return arr[arr.length - 1];\n}\nexport function areEqual(a, b, comparator) {\n if (a == null && b == null) {\n return true;\n }\n return a != null &&\n b != null &&\n a.length === b.length &&\n a.every(function (value, index) { return comparator ? comparator(value, b[index]) : b[index] === value; });\n}\n/** @deprecated */\nexport function compareArrays(array1, array2) {\n return areEqual(array1, array2);\n}\n/** @deprecated */\nexport function shallowCompare(arr1, arr2) {\n return areEqual(arr1, arr2);\n}\nexport function sortNumerically(array) {\n return array.sort(function (a, b) { return a - b; });\n}\nexport function removeRepeatsFromArray(array, object) {\n if (!array) {\n return;\n }\n for (var index = array.length - 2; index >= 0; index--) {\n var thisOneMatches = array[index] === object;\n var nextOneMatches = array[index + 1] === object;\n if (thisOneMatches && nextOneMatches) {\n array.splice(index + 1, 1);\n }\n }\n}\nexport function removeFromArray(array, object) {\n var index = array.indexOf(object);\n if (index >= 0) {\n array.splice(index, 1);\n }\n}\nexport function removeAllFromArray(array, toRemove) {\n toRemove.forEach(function (item) { return removeFromArray(array, item); });\n}\nexport function insertIntoArray(array, object, toIndex) {\n array.splice(toIndex, 0, object);\n}\nexport function insertArrayIntoArray(dest, src, toIndex) {\n if (dest == null || src == null) {\n return;\n }\n // put items in backwards, otherwise inserted items end up in reverse order\n for (var i = src.length - 1; i >= 0; i--) {\n var item = src[i];\n insertIntoArray(dest, item, toIndex);\n }\n}\nexport function moveInArray(array, objectsToMove, toIndex) {\n // first take out items from the array\n removeAllFromArray(array, objectsToMove);\n // now add the objects, in same order as provided to us, that means we start at the end\n // as the objects will be pushed to the right as they are inserted\n objectsToMove.slice().reverse().forEach(function (obj) { return insertIntoArray(array, obj, toIndex); });\n}\nexport function includes(array, value) {\n return array.indexOf(value) > -1;\n}\nexport function flatten(arrayOfArrays) {\n return [].concat.apply([], arrayOfArrays);\n}\nexport function pushAll(target, source) {\n if (source == null || target == null) {\n return;\n }\n source.forEach(function (value) { return target.push(value); });\n}\nexport function toStrings(array) {\n return array.map(toStringOrNull);\n}\nexport function forEachReverse(list, action) {\n if (list == null) {\n return;\n }\n for (var i = list.length - 1; i >= 0; i--) {\n action(list[i], i);\n }\n}\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Column } from \"./column\";\nimport { EventService } from \"../eventService\";\nimport { Autowired } from \"../context/context\";\nimport { last } from \"../utils/array\";\nvar ColumnGroup = /** @class */ (function () {\n function ColumnGroup(providedColumnGroup, groupId, instanceId, pinned) {\n // depends on the open/closed state of the group, only displaying columns are stored here\n this.displayedChildren = [];\n this.localEventService = new EventService();\n this.groupId = groupId;\n this.instanceId = instanceId;\n this.providedColumnGroup = providedColumnGroup;\n this.pinned = pinned;\n }\n // this is static, a it is used outside of this class\n ColumnGroup.createUniqueId = function (groupId, instanceId) {\n return groupId + '_' + instanceId;\n };\n // as the user is adding and removing columns, the groups are recalculated.\n // this reset clears out all children, ready for children to be added again\n ColumnGroup.prototype.reset = function () {\n this.parent = null;\n this.children = null;\n this.displayedChildren = null;\n };\n ColumnGroup.prototype.getParent = function () {\n return this.parent;\n };\n ColumnGroup.prototype.setParent = function (parent) {\n this.parent = parent;\n };\n ColumnGroup.prototype.getUniqueId = function () {\n return ColumnGroup.createUniqueId(this.groupId, this.instanceId);\n };\n ColumnGroup.prototype.isEmptyGroup = function () {\n return this.displayedChildren.length === 0;\n };\n ColumnGroup.prototype.isMoving = function () {\n var allLeafColumns = this.getProvidedColumnGroup().getLeafColumns();\n if (!allLeafColumns || allLeafColumns.length === 0) {\n return false;\n }\n return allLeafColumns.every(function (col) { return col.isMoving(); });\n };\n ColumnGroup.prototype.checkLeft = function () {\n // first get all children to setLeft, as it impacts our decision below\n this.displayedChildren.forEach(function (child) {\n if (child instanceof ColumnGroup) {\n child.checkLeft();\n }\n });\n // set our left based on first displayed column\n if (this.displayedChildren.length > 0) {\n if (this.gridOptionsWrapper.isEnableRtl()) {\n var lastChild = last(this.displayedChildren);\n var lastChildLeft = lastChild.getLeft();\n this.setLeft(lastChildLeft);\n }\n else {\n var firstChildLeft = this.displayedChildren[0].getLeft();\n this.setLeft(firstChildLeft);\n }\n }\n else {\n // this should never happen, as if we have no displayed columns, then\n // this groups should not even exist.\n this.setLeft(null);\n }\n };\n ColumnGroup.prototype.getLeft = function () {\n return this.left;\n };\n ColumnGroup.prototype.getOldLeft = function () {\n return this.oldLeft;\n };\n ColumnGroup.prototype.setLeft = function (left) {\n this.oldLeft = left;\n if (this.left !== left) {\n this.left = left;\n this.localEventService.dispatchEvent(this.createAgEvent(ColumnGroup.EVENT_LEFT_CHANGED));\n }\n };\n ColumnGroup.prototype.getPinned = function () {\n return this.pinned;\n };\n ColumnGroup.prototype.createAgEvent = function (type) {\n return { type: type };\n };\n ColumnGroup.prototype.addEventListener = function (eventType, listener) {\n this.localEventService.addEventListener(eventType, listener);\n };\n ColumnGroup.prototype.removeEventListener = function (eventType, listener) {\n this.localEventService.removeEventListener(eventType, listener);\n };\n ColumnGroup.prototype.getGroupId = function () {\n return this.groupId;\n };\n ColumnGroup.prototype.getInstanceId = function () {\n return this.instanceId;\n };\n ColumnGroup.prototype.isChildInThisGroupDeepSearch = function (wantedChild) {\n var result = false;\n this.children.forEach(function (foundChild) {\n if (wantedChild === foundChild) {\n result = true;\n }\n if (foundChild instanceof ColumnGroup) {\n if (foundChild.isChildInThisGroupDeepSearch(wantedChild)) {\n result = true;\n }\n }\n });\n return result;\n };\n ColumnGroup.prototype.getActualWidth = function () {\n var groupActualWidth = 0;\n if (this.displayedChildren) {\n this.displayedChildren.forEach(function (child) {\n groupActualWidth += child.getActualWidth();\n });\n }\n return groupActualWidth;\n };\n ColumnGroup.prototype.isResizable = function () {\n if (!this.displayedChildren) {\n return false;\n }\n // if at least one child is resizable, then the group is resizable\n var result = false;\n this.displayedChildren.forEach(function (child) {\n if (child.isResizable()) {\n result = true;\n }\n });\n return result;\n };\n ColumnGroup.prototype.getMinWidth = function () {\n var result = 0;\n this.displayedChildren.forEach(function (groupChild) {\n result += groupChild.getMinWidth() || 0;\n });\n return result;\n };\n ColumnGroup.prototype.addChild = function (child) {\n if (!this.children) {\n this.children = [];\n }\n this.children.push(child);\n };\n ColumnGroup.prototype.getDisplayedChildren = function () {\n return this.displayedChildren;\n };\n ColumnGroup.prototype.getLeafColumns = function () {\n var result = [];\n this.addLeafColumns(result);\n return result;\n };\n ColumnGroup.prototype.getDisplayedLeafColumns = function () {\n var result = [];\n this.addDisplayedLeafColumns(result);\n return result;\n };\n // why two methods here doing the same thing?\n ColumnGroup.prototype.getDefinition = function () {\n return this.providedColumnGroup.getColGroupDef();\n };\n ColumnGroup.prototype.getColGroupDef = function () {\n return this.providedColumnGroup.getColGroupDef();\n };\n ColumnGroup.prototype.isPadding = function () {\n return this.providedColumnGroup.isPadding();\n };\n ColumnGroup.prototype.isExpandable = function () {\n return this.providedColumnGroup.isExpandable();\n };\n ColumnGroup.prototype.isExpanded = function () {\n return this.providedColumnGroup.isExpanded();\n };\n ColumnGroup.prototype.setExpanded = function (expanded) {\n this.providedColumnGroup.setExpanded(expanded);\n };\n ColumnGroup.prototype.addDisplayedLeafColumns = function (leafColumns) {\n this.displayedChildren.forEach(function (child) {\n if (child instanceof Column) {\n leafColumns.push(child);\n }\n else if (child instanceof ColumnGroup) {\n child.addDisplayedLeafColumns(leafColumns);\n }\n });\n };\n ColumnGroup.prototype.addLeafColumns = function (leafColumns) {\n this.children.forEach(function (child) {\n if (child instanceof Column) {\n leafColumns.push(child);\n }\n else if (child instanceof ColumnGroup) {\n child.addLeafColumns(leafColumns);\n }\n });\n };\n ColumnGroup.prototype.getChildren = function () {\n return this.children;\n };\n ColumnGroup.prototype.getColumnGroupShow = function () {\n return this.providedColumnGroup.getColumnGroupShow();\n };\n ColumnGroup.prototype.getProvidedColumnGroup = function () {\n return this.providedColumnGroup;\n };\n /** @deprecated getOriginalColumnGroup is deprecated, use getOriginalColumnGroup. */\n ColumnGroup.prototype.getOriginalColumnGroup = function () {\n console.warn('AG Grid: columnGroup.getOriginalColumnGroup() is deprecated due to a method rename, use columnGroup.getProvidedColumnGroup() instead');\n return this.getProvidedColumnGroup();\n };\n ColumnGroup.prototype.getPaddingLevel = function () {\n var parent = this.getParent();\n if (!this.isPadding() || !parent || !parent.isPadding()) {\n return 0;\n }\n return 1 + parent.getPaddingLevel();\n };\n ColumnGroup.prototype.calculateDisplayedColumns = function () {\n var _this = this;\n // clear out last time we calculated\n this.displayedChildren = [];\n // find the column group that is controlling expandable. this is relevant when we have padding (empty)\n // groups, where the expandable is actually the first parent that is not a padding group.\n var parentWithExpansion = this;\n while (parentWithExpansion != null && parentWithExpansion.isPadding()) {\n parentWithExpansion = parentWithExpansion.getParent();\n }\n var isExpandable = parentWithExpansion ? parentWithExpansion.providedColumnGroup.isExpandable() : false;\n // it not expandable, everything is visible\n if (!isExpandable) {\n this.displayedChildren = this.children;\n this.localEventService.dispatchEvent(this.createAgEvent(ColumnGroup.EVENT_DISPLAYED_CHILDREN_CHANGED));\n return;\n }\n // Add cols based on columnGroupShow\n // Note - the below also adds padding groups, these are always added because they never have\n // colDef.columnGroupShow set.\n this.children.forEach(function (child) {\n // never add empty groups\n var emptyGroup = child instanceof ColumnGroup && (!child.displayedChildren || !child.displayedChildren.length);\n if (emptyGroup) {\n return;\n }\n var headerGroupShow = child.getColumnGroupShow();\n switch (headerGroupShow) {\n case ColumnGroup.HEADER_GROUP_SHOW_OPEN:\n // when set to open, only show col if group is open\n if (parentWithExpansion.providedColumnGroup.isExpanded()) {\n _this.displayedChildren.push(child);\n }\n break;\n case ColumnGroup.HEADER_GROUP_SHOW_CLOSED:\n // when set to open, only show col if group is open\n if (!parentWithExpansion.providedColumnGroup.isExpanded()) {\n _this.displayedChildren.push(child);\n }\n break;\n default:\n _this.displayedChildren.push(child);\n break;\n }\n });\n this.localEventService.dispatchEvent(this.createAgEvent(ColumnGroup.EVENT_DISPLAYED_CHILDREN_CHANGED));\n };\n ColumnGroup.HEADER_GROUP_SHOW_OPEN = 'open';\n ColumnGroup.HEADER_GROUP_SHOW_CLOSED = 'closed';\n ColumnGroup.EVENT_LEFT_CHANGED = 'leftChanged';\n ColumnGroup.EVENT_DISPLAYED_CHILDREN_CHANGED = 'displayedChildrenChanged';\n __decorate([\n Autowired('gridOptionsWrapper')\n ], ColumnGroup.prototype, \"gridOptionsWrapper\", void 0);\n return ColumnGroup;\n}());\nexport { ColumnGroup };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nimport { ColumnGroup } from \"./columnGroup\";\nimport { Column } from \"./column\";\nimport { EventService } from \"../eventService\";\nvar ProvidedColumnGroup = /** @class */ (function () {\n function ProvidedColumnGroup(colGroupDef, groupId, padding, level) {\n this.localEventService = new EventService();\n this.expandable = false;\n this.colGroupDef = colGroupDef;\n this.groupId = groupId;\n this.expanded = !!colGroupDef && !!colGroupDef.openByDefault;\n this.padding = padding;\n this.level = level;\n }\n ProvidedColumnGroup.prototype.setOriginalParent = function (originalParent) {\n this.originalParent = originalParent;\n };\n ProvidedColumnGroup.prototype.getOriginalParent = function () {\n return this.originalParent;\n };\n ProvidedColumnGroup.prototype.getLevel = function () {\n return this.level;\n };\n ProvidedColumnGroup.prototype.isVisible = function () {\n // return true if at least one child is visible\n if (this.children) {\n return this.children.some(function (child) { return child.isVisible(); });\n }\n return false;\n };\n ProvidedColumnGroup.prototype.isPadding = function () {\n return this.padding;\n };\n ProvidedColumnGroup.prototype.setExpanded = function (expanded) {\n this.expanded = expanded === undefined ? false : expanded;\n var event = {\n type: ProvidedColumnGroup.EVENT_EXPANDED_CHANGED\n };\n this.localEventService.dispatchEvent(event);\n };\n ProvidedColumnGroup.prototype.isExpandable = function () {\n return this.expandable;\n };\n ProvidedColumnGroup.prototype.isExpanded = function () {\n return this.expanded;\n };\n ProvidedColumnGroup.prototype.getGroupId = function () {\n return this.groupId;\n };\n ProvidedColumnGroup.prototype.getId = function () {\n return this.getGroupId();\n };\n ProvidedColumnGroup.prototype.setChildren = function (children) {\n this.children = children;\n };\n ProvidedColumnGroup.prototype.getChildren = function () {\n return this.children;\n };\n ProvidedColumnGroup.prototype.getColGroupDef = function () {\n return this.colGroupDef;\n };\n ProvidedColumnGroup.prototype.getLeafColumns = function () {\n var result = [];\n this.addLeafColumns(result);\n return result;\n };\n ProvidedColumnGroup.prototype.addLeafColumns = function (leafColumns) {\n if (!this.children) {\n return;\n }\n this.children.forEach(function (child) {\n if (child instanceof Column) {\n leafColumns.push(child);\n }\n else if (child instanceof ProvidedColumnGroup) {\n child.addLeafColumns(leafColumns);\n }\n });\n };\n ProvidedColumnGroup.prototype.getColumnGroupShow = function () {\n var colGroupDef = this.colGroupDef;\n if (!colGroupDef) {\n return;\n }\n return colGroupDef.columnGroupShow;\n };\n // need to check that this group has at least one col showing when both expanded and contracted.\n // if not, then we don't allow expanding and contracting on this group\n ProvidedColumnGroup.prototype.setupExpandable = function () {\n var _this = this;\n this.setExpandable();\n // note - we should be removing this event listener\n this.getLeafColumns().forEach(function (col) { return col.addEventListener(Column.EVENT_VISIBLE_CHANGED, _this.onColumnVisibilityChanged.bind(_this)); });\n };\n ProvidedColumnGroup.prototype.setExpandable = function () {\n if (this.isPadding()) {\n return;\n }\n // want to make sure the group doesn't disappear when it's open\n var atLeastOneShowingWhenOpen = false;\n // want to make sure the group doesn't disappear when it's closed\n var atLeastOneShowingWhenClosed = false;\n // want to make sure the group has something to show / hide\n var atLeastOneChangeable = false;\n var children = this.findChildrenRemovingPadding();\n for (var i = 0, j = children.length; i < j; i++) {\n var abstractColumn = children[i];\n if (!abstractColumn.isVisible()) {\n continue;\n }\n // if the abstractColumn is a grid generated group, there will be no colDef\n var headerGroupShow = abstractColumn.getColumnGroupShow();\n if (headerGroupShow === ColumnGroup.HEADER_GROUP_SHOW_OPEN) {\n atLeastOneShowingWhenOpen = true;\n atLeastOneChangeable = true;\n }\n else if (headerGroupShow === ColumnGroup.HEADER_GROUP_SHOW_CLOSED) {\n atLeastOneShowingWhenClosed = true;\n atLeastOneChangeable = true;\n }\n else {\n atLeastOneShowingWhenOpen = true;\n atLeastOneShowingWhenClosed = true;\n }\n }\n var expandable = atLeastOneShowingWhenOpen && atLeastOneShowingWhenClosed && atLeastOneChangeable;\n if (this.expandable !== expandable) {\n this.expandable = expandable;\n var event_1 = {\n type: ProvidedColumnGroup.EVENT_EXPANDABLE_CHANGED\n };\n this.localEventService.dispatchEvent(event_1);\n }\n };\n ProvidedColumnGroup.prototype.findChildrenRemovingPadding = function () {\n var res = [];\n var process = function (items) {\n items.forEach(function (item) {\n // if padding, we add this children instead of the padding\n var skipBecausePadding = item instanceof ProvidedColumnGroup && item.isPadding();\n if (skipBecausePadding) {\n process(item.children);\n }\n else {\n res.push(item);\n }\n });\n };\n process(this.children);\n return res;\n };\n ProvidedColumnGroup.prototype.onColumnVisibilityChanged = function () {\n this.setExpandable();\n };\n ProvidedColumnGroup.prototype.addEventListener = function (eventType, listener) {\n this.localEventService.addEventListener(eventType, listener);\n };\n ProvidedColumnGroup.prototype.removeEventListener = function (eventType, listener) {\n this.localEventService.removeEventListener(eventType, listener);\n };\n ProvidedColumnGroup.EVENT_EXPANDED_CHANGED = 'expandedChanged';\n ProvidedColumnGroup.EVENT_EXPANDABLE_CHANGED = 'expandableChanged';\n return ProvidedColumnGroup;\n}());\nexport { ProvidedColumnGroup };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nexport var DefaultColumnTypes = {\n numericColumn: {\n headerClass: 'ag-right-aligned-header',\n cellClass: 'ag-right-aligned-cell'\n },\n rightAligned: {\n headerClass: 'ag-right-aligned-header',\n cellClass: 'ag-right-aligned-cell'\n }\n};\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nimport { includes } from './array';\nvar AG_GRID_STOP_PROPAGATION = '__ag_Grid_Stop_Propagation';\nvar PASSIVE_EVENTS = ['touchstart', 'touchend', 'touchmove', 'touchcancel'];\nvar supports = {};\n/**\n * a user once raised an issue - they said that when you opened a popup (eg context menu)\n * and then clicked on a selection checkbox, the popup wasn't closed. this is because the\n * popup listens for clicks on the body, however ag-grid WAS stopping propagation on the\n * checkbox clicks (so the rows didn't pick them up as row selection selection clicks).\n * to get around this, we have a pattern to stop propagation for the purposes of AG Grid,\n * but we still let the event pass back to the body.\n * @param {Event} event\n */\nexport function stopPropagationForAgGrid(event) {\n event[AG_GRID_STOP_PROPAGATION] = true;\n}\nexport function isStopPropagationForAgGrid(event) {\n return event[AG_GRID_STOP_PROPAGATION] === true;\n}\nexport var isEventSupported = (function () {\n var tags = {\n select: 'input',\n change: 'input',\n submit: 'form',\n reset: 'form',\n error: 'img',\n load: 'img',\n abort: 'img'\n };\n var eventChecker = function (eventName) {\n if (typeof supports[eventName] === 'boolean') {\n return supports[eventName];\n }\n var el = document.createElement(tags[eventName] || 'div');\n eventName = 'on' + eventName;\n return supports[eventName] = (eventName in el);\n };\n return eventChecker;\n})();\nexport function getCtrlForEvent(gridOptionsWrapper, event, type) {\n var sourceElement = event.target;\n while (sourceElement) {\n var renderedComp = gridOptionsWrapper.getDomData(sourceElement, type);\n if (renderedComp) {\n return renderedComp;\n }\n sourceElement = sourceElement.parentElement;\n }\n return null;\n}\n/**\n * @deprecated\n * Adds all type of change listeners to an element, intended to be a text field\n * @param {HTMLElement} element\n * @param {EventListener} listener\n */\nexport function addChangeListener(element, listener) {\n element.addEventListener('changed', listener);\n element.addEventListener('paste', listener);\n element.addEventListener('input', listener);\n}\nexport function isElementInEventPath(element, event) {\n if (!event || !element) {\n return false;\n }\n return getEventPath(event).indexOf(element) >= 0;\n}\nexport function createEventPath(event) {\n var res = [];\n var pointer = event.target;\n while (pointer) {\n res.push(pointer);\n pointer = pointer.parentElement;\n }\n return res;\n}\n/**\n * firefox doesn't have event.path set, or any alternative to it, so we hack\n * it in. this is needed as it's to late to work out the path when the item is\n * removed from the dom. used by MouseEventService, where it works out if a click\n * was from the current grid, or a detail grid (master / detail).\n * @param {Event} event\n */\nexport function addAgGridEventPath(event) {\n event.__agGridEventPath = getEventPath(event);\n}\n/**\n * Gets the path for an Event.\n * https://stackoverflow.com/questions/39245488/event-path-undefined-with-firefox-and-vue-js\n * https://developer.mozilla.org/en-US/docs/Web/API/Event\n * @param {Event} event\n * @returns {EventTarget[]}\n */\nexport function getEventPath(event) {\n var eventNoType = event;\n if (eventNoType.path) {\n // Chrome supports path\n return eventNoType.path;\n }\n if (eventNoType.composedPath) {\n // Firefox supports composePath\n return eventNoType.composedPath();\n }\n if (eventNoType.__agGridEventPath) {\n // Firefox supports composePath\n return eventNoType.__agGridEventPath;\n }\n // and finally, if none of the above worked,\n // we create the path ourselves\n return createEventPath(event);\n}\nexport function addSafePassiveEventListener(frameworkOverrides, eElement, event, listener) {\n var isPassive = includes(PASSIVE_EVENTS, event);\n var options = isPassive ? { passive: true } : undefined;\n // this check is here for certain scenarios where I believe the user must be destroying\n // the grid somehow but continuing for it to be used\n if (frameworkOverrides && frameworkOverrides.addEventListener) {\n frameworkOverrides.addEventListener(eElement, event, listener, options);\n }\n}\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { EventService } from \"../eventService\";\nimport { Autowired, PreDestroy } from \"./context\";\nimport { addSafePassiveEventListener } from \"../utils/event\";\nvar BeanStub = /** @class */ (function () {\n function BeanStub() {\n var _this = this;\n this.destroyFunctions = [];\n this.destroyed = false;\n // for vue 3 - prevents Vue from trying to make this (and obviously any sub classes) from being reactive\n // prevents vue from creating proxies for created objects and prevents identity related issues\n this.__v_skip = true;\n this.isAlive = function () { return !_this.destroyed; };\n }\n // this was a test constructor niall built, when active, it prints after 5 seconds all beans/components that are\n // not destroyed. to use, create a new grid, then api.destroy() before 5 seconds. then anything that gets printed\n // points to a bean or component that was not properly disposed of.\n // constructor() {\n // setTimeout(()=> {\n // if (this.isAlive()) {\n // let prototype: any = Object.getPrototypeOf(this);\n // const constructor: any = prototype.constructor;\n // const constructorString = constructor.toString();\n // const beanName = constructorString.substring(9, constructorString.indexOf(\"(\"));\n // console.log('is alive ' + beanName);\n // }\n // }, 5000);\n // }\n // CellComp and GridComp and override this because they get the FrameworkOverrides from the Beans bean\n BeanStub.prototype.getFrameworkOverrides = function () {\n return this.frameworkOverrides;\n };\n BeanStub.prototype.getContext = function () {\n return this.context;\n };\n BeanStub.prototype.destroy = function () {\n // let prototype: any = Object.getPrototypeOf(this);\n // const constructor: any = prototype.constructor;\n // const constructorString = constructor.toString();\n // const beanName = constructorString.substring(9, constructorString.indexOf(\"(\"));\n this.destroyFunctions.forEach(function (func) { return func(); });\n this.destroyFunctions.length = 0;\n this.destroyed = true;\n this.dispatchEvent({ type: BeanStub.EVENT_DESTROYED });\n };\n BeanStub.prototype.addEventListener = function (eventType, listener) {\n if (!this.localEventService) {\n this.localEventService = new EventService();\n }\n this.localEventService.addEventListener(eventType, listener);\n };\n BeanStub.prototype.removeEventListener = function (eventType, listener) {\n if (this.localEventService) {\n this.localEventService.removeEventListener(eventType, listener);\n }\n };\n BeanStub.prototype.dispatchEventAsync = function (event) {\n var _this = this;\n window.setTimeout(function () { return _this.dispatchEvent(event); }, 0);\n };\n BeanStub.prototype.dispatchEvent = function (event) {\n if (this.localEventService) {\n this.localEventService.dispatchEvent(event);\n }\n };\n BeanStub.prototype.addManagedListener = function (object, event, listener) {\n var _this = this;\n if (this.destroyed) {\n return;\n }\n if (object instanceof HTMLElement) {\n addSafePassiveEventListener(this.getFrameworkOverrides(), object, event, listener);\n }\n else {\n object.addEventListener(event, listener);\n }\n var destroyFunc = function () {\n object.removeEventListener(event, listener);\n _this.destroyFunctions = _this.destroyFunctions.filter(function (fn) { return fn !== destroyFunc; });\n return null;\n };\n this.destroyFunctions.push(destroyFunc);\n return destroyFunc;\n };\n BeanStub.prototype.addDestroyFunc = function (func) {\n // if we are already destroyed, we execute the func now\n if (this.isAlive()) {\n this.destroyFunctions.push(func);\n }\n else {\n func();\n }\n };\n BeanStub.prototype.createManagedBean = function (bean, context) {\n var res = this.createBean(bean, context);\n this.addDestroyFunc(this.destroyBean.bind(this, bean, context));\n return res;\n };\n BeanStub.prototype.createBean = function (bean, context, afterPreCreateCallback) {\n return (context || this.getContext()).createBean(bean, afterPreCreateCallback);\n };\n BeanStub.prototype.destroyBean = function (bean, context) {\n return (context || this.getContext()).destroyBean(bean);\n };\n BeanStub.prototype.destroyBeans = function (beans, context) {\n var _this = this;\n if (beans) {\n beans.forEach(function (bean) { return _this.destroyBean(bean, context); });\n }\n return [];\n };\n BeanStub.EVENT_DESTROYED = 'destroyed';\n __decorate([\n Autowired('frameworkOverrides')\n ], BeanStub.prototype, \"frameworkOverrides\", void 0);\n __decorate([\n Autowired('context')\n ], BeanStub.prototype, \"context\", void 0);\n __decorate([\n Autowired('eventService')\n ], BeanStub.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], BeanStub.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n PreDestroy\n ], BeanStub.prototype, \"destroy\", null);\n return BeanStub;\n}());\nexport { BeanStub };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { ColumnKeyCreator } from \"./columnKeyCreator\";\nimport { ProvidedColumnGroup } from \"../entities/providedColumnGroup\";\nimport { Column } from \"../entities/column\";\nimport { Autowired, Bean, Qualifier } from \"../context/context\";\nimport { DefaultColumnTypes } from \"../entities/defaultColumnTypes\";\nimport { BeanStub } from \"../context/beanStub\";\nimport { Constants } from \"../constants/constants\";\nimport { iterateObject, mergeDeep } from '../utils/object';\nimport { attrToNumber, attrToBoolean } from '../utils/generic';\nimport { removeFromArray } from '../utils/array';\n// takes ColDefs and ColGroupDefs and turns them into Columns and OriginalGroups\nvar ColumnFactory = /** @class */ (function (_super) {\n __extends(ColumnFactory, _super);\n function ColumnFactory() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ColumnFactory.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('ColumnFactory');\n };\n ColumnFactory.prototype.createColumnTree = function (defs, primaryColumns, existingTree) {\n // column key creator dishes out unique column id's in a deterministic way,\n // so if we have two grids (that could be master/slave) with same column definitions,\n // then this ensures the two grids use identical id's.\n var columnKeyCreator = new ColumnKeyCreator();\n var _a = this.extractExistingTreeData(existingTree), existingCols = _a.existingCols, existingGroups = _a.existingGroups, existingColKeys = _a.existingColKeys;\n columnKeyCreator.addExistingKeys(existingColKeys);\n // create am unbalanced tree that maps the provided definitions\n var unbalancedTree = this.recursivelyCreateColumns(defs, 0, primaryColumns, existingCols, columnKeyCreator, existingGroups);\n var treeDept = this.findMaxDept(unbalancedTree, 0);\n this.logger.log('Number of levels for grouped columns is ' + treeDept);\n var columnTree = this.balanceColumnTree(unbalancedTree, 0, treeDept, columnKeyCreator);\n var deptFirstCallback = function (child, parent) {\n if (child instanceof ProvidedColumnGroup) {\n child.setupExpandable();\n }\n // we set the original parents at the end, rather than when we go along, as balancing the tree\n // adds extra levels into the tree. so we can only set parents when balancing is done.\n child.setOriginalParent(parent);\n };\n this.columnUtils.depthFirstOriginalTreeSearch(null, columnTree, deptFirstCallback);\n return {\n columnTree: columnTree,\n treeDept: treeDept\n };\n };\n ColumnFactory.prototype.extractExistingTreeData = function (existingTree) {\n var existingCols = [];\n var existingGroups = [];\n var existingColKeys = [];\n if (existingTree) {\n this.columnUtils.depthFirstOriginalTreeSearch(null, existingTree, function (item) {\n if (item instanceof ProvidedColumnGroup) {\n var group = item;\n existingGroups.push(group);\n }\n else {\n var col = item;\n existingColKeys.push(col.getId());\n existingCols.push(col);\n }\n });\n }\n return { existingCols: existingCols, existingGroups: existingGroups, existingColKeys: existingColKeys };\n };\n ColumnFactory.prototype.createForAutoGroups = function (autoGroupCols, gridBalancedTree) {\n var _this = this;\n var autoColBalancedTree = [];\n autoGroupCols.forEach(function (col) {\n var fakeTreeItem = _this.createAutoGroupTreeItem(gridBalancedTree, col);\n autoColBalancedTree.push(fakeTreeItem);\n });\n return autoColBalancedTree;\n };\n ColumnFactory.prototype.createAutoGroupTreeItem = function (balancedColumnTree, column) {\n var dept = this.findDepth(balancedColumnTree);\n // at the end, this will be the top of the tree item.\n var nextChild = column;\n for (var i = dept - 1; i >= 0; i--) {\n var autoGroup = new ProvidedColumnGroup(null, \"FAKE_PATH_\" + column.getId() + \"}_\" + i, true, i);\n this.context.createBean(autoGroup);\n autoGroup.setChildren([nextChild]);\n nextChild.setOriginalParent(autoGroup);\n nextChild = autoGroup;\n }\n // at this point, the nextChild is the top most item in the tree\n return nextChild;\n };\n ColumnFactory.prototype.findDepth = function (balancedColumnTree) {\n var dept = 0;\n var pointer = balancedColumnTree;\n while (pointer && pointer[0] && pointer[0] instanceof ProvidedColumnGroup) {\n dept++;\n pointer = pointer[0].getChildren();\n }\n return dept;\n };\n ColumnFactory.prototype.balanceColumnTree = function (unbalancedTree, currentDept, columnDept, columnKeyCreator) {\n var result = [];\n // go through each child, for groups, recurse a level deeper,\n // for columns we need to pad\n for (var i = 0; i < unbalancedTree.length; i++) {\n var child = unbalancedTree[i];\n if (child instanceof ProvidedColumnGroup) {\n // child is a group, all we do is go to the next level of recursion\n var originalGroup = child;\n var newChildren = this.balanceColumnTree(originalGroup.getChildren(), currentDept + 1, columnDept, columnKeyCreator);\n originalGroup.setChildren(newChildren);\n result.push(originalGroup);\n }\n else {\n // child is a column - so here we add in the padded column groups if needed\n var firstPaddedGroup = void 0;\n var currentPaddedGroup = void 0;\n // this for loop will NOT run any loops if no padded column groups are needed\n for (var j = columnDept - 1; j >= currentDept; j--) {\n var newColId = columnKeyCreator.getUniqueKey(null, null);\n var colGroupDefMerged = this.createMergedColGroupDef(null);\n var paddedGroup = new ProvidedColumnGroup(colGroupDefMerged, newColId, true, currentDept);\n this.context.createBean(paddedGroup);\n if (currentPaddedGroup) {\n currentPaddedGroup.setChildren([paddedGroup]);\n }\n currentPaddedGroup = paddedGroup;\n if (!firstPaddedGroup) {\n firstPaddedGroup = currentPaddedGroup;\n }\n }\n // likewise this if statement will not run if no padded groups\n if (firstPaddedGroup && currentPaddedGroup) {\n result.push(firstPaddedGroup);\n var hasGroups = unbalancedTree.some(function (leaf) { return leaf instanceof ProvidedColumnGroup; });\n if (hasGroups) {\n currentPaddedGroup.setChildren([child]);\n continue;\n }\n else {\n currentPaddedGroup.setChildren(unbalancedTree);\n break;\n }\n }\n result.push(child);\n }\n }\n return result;\n };\n ColumnFactory.prototype.findMaxDept = function (treeChildren, dept) {\n var maxDeptThisLevel = dept;\n for (var i = 0; i < treeChildren.length; i++) {\n var abstractColumn = treeChildren[i];\n if (abstractColumn instanceof ProvidedColumnGroup) {\n var originalGroup = abstractColumn;\n var newDept = this.findMaxDept(originalGroup.getChildren(), dept + 1);\n if (maxDeptThisLevel < newDept) {\n maxDeptThisLevel = newDept;\n }\n }\n }\n return maxDeptThisLevel;\n };\n ColumnFactory.prototype.recursivelyCreateColumns = function (defs, level, primaryColumns, existingColsCopy, columnKeyCreator, existingGroups) {\n var _this = this;\n var result = [];\n if (!defs) {\n return result;\n }\n defs.forEach(function (def) {\n var newGroupOrColumn;\n if (_this.isColumnGroup(def)) {\n newGroupOrColumn = _this.createColumnGroup(primaryColumns, def, level, existingColsCopy, columnKeyCreator, existingGroups);\n }\n else {\n newGroupOrColumn = _this.createColumn(primaryColumns, def, existingColsCopy, columnKeyCreator);\n }\n result.push(newGroupOrColumn);\n });\n return result;\n };\n ColumnFactory.prototype.createColumnGroup = function (primaryColumns, colGroupDef, level, existingColumns, columnKeyCreator, existingGroups) {\n var colGroupDefMerged = this.createMergedColGroupDef(colGroupDef);\n var groupId = columnKeyCreator.getUniqueKey(colGroupDefMerged.groupId || null, null);\n var originalGroup = new ProvidedColumnGroup(colGroupDefMerged, groupId, false, level);\n this.context.createBean(originalGroup);\n var existingGroup = this.findExistingGroup(colGroupDef, existingGroups);\n if (existingGroup && existingGroup.isExpanded()) {\n originalGroup.setExpanded(true);\n }\n var children = this.recursivelyCreateColumns(colGroupDefMerged.children, level + 1, primaryColumns, existingColumns, columnKeyCreator, existingGroups);\n originalGroup.setChildren(children);\n return originalGroup;\n };\n ColumnFactory.prototype.createMergedColGroupDef = function (colGroupDef) {\n var colGroupDefMerged = {};\n Object.assign(colGroupDefMerged, this.gridOptionsWrapper.getDefaultColGroupDef());\n Object.assign(colGroupDefMerged, colGroupDef);\n this.checkForDeprecatedItems(colGroupDefMerged);\n return colGroupDefMerged;\n };\n ColumnFactory.prototype.createColumn = function (primaryColumns, colDef, existingColsCopy, columnKeyCreator) {\n var colDefMerged = this.mergeColDefs(colDef);\n this.checkForDeprecatedItems(colDefMerged);\n // see if column already exists\n var column = this.findExistingColumn(colDef, existingColsCopy);\n if (!column) {\n // no existing column, need to create one\n var colId = columnKeyCreator.getUniqueKey(colDefMerged.colId, colDefMerged.field);\n column = new Column(colDefMerged, colDef, colId, primaryColumns);\n this.context.createBean(column);\n }\n else {\n column.setColDef(colDefMerged, colDef);\n this.applyColumnState(column, colDefMerged);\n }\n return column;\n };\n ColumnFactory.prototype.applyColumnState = function (column, colDef) {\n // flex\n var flex = attrToNumber(colDef.flex);\n if (flex !== undefined) {\n column.setFlex(flex);\n }\n // width - we only set width if column is not flexing\n var noFlexThisCol = column.getFlex() <= 0;\n if (noFlexThisCol) {\n // both null and undefined means we skip, as it's not possible to 'clear' width (a column must have a width)\n var width = attrToNumber(colDef.width);\n if (width != null) {\n column.setActualWidth(width);\n }\n else {\n // otherwise set the width again, in case min or max width has changed,\n // and width needs to be adjusted.\n var widthBeforeUpdate = column.getActualWidth();\n column.setActualWidth(widthBeforeUpdate);\n }\n }\n // sort - anything but undefined will set sort, thus null or empty string will clear the sort\n if (colDef.sort !== undefined) {\n if (colDef.sort == Constants.SORT_ASC || colDef.sort == Constants.SORT_DESC) {\n column.setSort(colDef.sort);\n }\n else {\n column.setSort(undefined);\n }\n }\n // sorted at - anything but undefined, thus null will clear the sortIndex\n var sortIndex = attrToNumber(colDef.sortIndex);\n if (sortIndex !== undefined) {\n column.setSortIndex(sortIndex);\n }\n // hide - anything but undefined, thus null will clear the hide\n var hide = attrToBoolean(colDef.hide);\n if (hide !== undefined) {\n column.setVisible(!hide);\n }\n // pinned - anything but undefined, thus null or empty string will remove pinned\n if (colDef.pinned !== undefined) {\n column.setPinned(colDef.pinned);\n }\n };\n ColumnFactory.prototype.findExistingColumn = function (newColDef, existingColsCopy) {\n var res = (existingColsCopy || []).find(function (existingCol) {\n var existingColDef = existingCol.getUserProvidedColDef();\n if (!existingColDef) {\n return false;\n }\n var newHasId = newColDef.colId != null;\n var newHasField = newColDef.field != null;\n if (newHasId) {\n return existingCol.getId() === newColDef.colId;\n }\n if (newHasField) {\n return existingColDef.field === newColDef.field;\n }\n // if no id or field present, then try object equivalence.\n if (existingColDef === newColDef) {\n return true;\n }\n return false;\n });\n // make sure we remove, so if user provided duplicate id, then we don't have more than\n // one column instance for colDef with common id\n if (existingColsCopy && res) {\n removeFromArray(existingColsCopy, res);\n }\n return res || null;\n };\n ColumnFactory.prototype.findExistingGroup = function (newGroupDef, existingGroups) {\n var res = existingGroups.find(function (existingGroup) {\n var existingDef = existingGroup.getColGroupDef();\n if (!existingDef) {\n return false;\n }\n var newHasId = newGroupDef.groupId != null;\n if (newHasId) {\n return existingGroup.getId() === newGroupDef.groupId;\n }\n return false;\n });\n // make sure we remove, so if user provided duplicate id, then we don't have more than\n // one column instance for colDef with common id\n if (res) {\n removeFromArray(existingGroups, res);\n }\n return res || null;\n };\n ColumnFactory.prototype.mergeColDefs = function (colDef) {\n // start with empty merged definition\n var colDefMerged = {};\n // merge properties from default column definitions\n var defaultColDef = this.gridOptionsWrapper.getDefaultColDef();\n mergeDeep(colDefMerged, defaultColDef, false, true);\n // merge properties from column type properties\n var columnType = colDef.type;\n if (!columnType) {\n columnType = defaultColDef && defaultColDef.type;\n }\n // if type of both colDef and defaultColDef, then colDef gets preference\n if (columnType) {\n this.assignColumnTypes(columnType, colDefMerged);\n }\n // merge properties from column definitions\n mergeDeep(colDefMerged, colDef, false, true);\n return colDefMerged;\n };\n ColumnFactory.prototype.assignColumnTypes = function (type, colDefMerged) {\n var typeKeys = [];\n if (type instanceof Array) {\n var invalidArray = type.some(function (a) { return typeof a !== 'string'; });\n if (invalidArray) {\n console.warn(\"AG Grid: if colDef.type is supplied an array it should be of type 'string[]'\");\n }\n else {\n typeKeys = type;\n }\n }\n else if (typeof type === 'string') {\n typeKeys = type.split(',');\n }\n else {\n console.warn(\"AG Grid: colDef.type should be of type 'string' | 'string[]'\");\n return;\n }\n // merge user defined with default column types\n var allColumnTypes = Object.assign({}, DefaultColumnTypes);\n var userTypes = this.gridOptionsWrapper.getColumnTypes() || {};\n iterateObject(userTypes, function (key, value) {\n if (key in allColumnTypes) {\n console.warn(\"AG Grid: the column type '\" + key + \"' is a default column type and cannot be overridden.\");\n }\n else {\n allColumnTypes[key] = value;\n }\n });\n typeKeys.forEach(function (t) {\n var typeColDef = allColumnTypes[t.trim()];\n if (typeColDef) {\n mergeDeep(colDefMerged, typeColDef, false, true);\n }\n else {\n console.warn(\"AG Grid: colDef.type '\" + t + \"' does not correspond to defined gridOptions.columnTypes\");\n }\n });\n };\n ColumnFactory.prototype.checkForDeprecatedItems = function (colDef) {\n if (colDef) {\n var colDefNoType = colDef; // take out the type, so we can access attributes not defined in the type\n if (colDefNoType.group !== undefined) {\n console.warn('AG Grid: colDef.group is invalid, please check documentation on how to do grouping as it changed in version 3');\n }\n if (colDefNoType.headerGroup !== undefined) {\n console.warn('AG Grid: colDef.headerGroup is invalid, please check documentation on how to do grouping as it changed in version 3');\n }\n if (colDefNoType.headerGroupShow !== undefined) {\n console.warn('AG Grid: colDef.headerGroupShow is invalid, should be columnGroupShow, please check documentation on how to do grouping as it changed in version 3');\n }\n if (colDefNoType.suppressRowGroup !== undefined) {\n console.warn('AG Grid: colDef.suppressRowGroup is deprecated, please use colDef.type instead');\n }\n if (colDefNoType.suppressAggregation !== undefined) {\n console.warn('AG Grid: colDef.suppressAggregation is deprecated, please use colDef.type instead');\n }\n if (colDefNoType.suppressRowGroup || colDefNoType.suppressAggregation) {\n console.warn('AG Grid: colDef.suppressAggregation and colDef.suppressRowGroup are deprecated, use allowRowGroup, allowPivot and allowValue instead');\n }\n if (colDefNoType.displayName) {\n console.warn(\"AG Grid: Found displayName \" + colDefNoType.displayName + \", please use headerName instead, displayName is deprecated.\");\n colDefNoType.headerName = colDefNoType.displayName;\n }\n }\n };\n // if object has children, we assume it's a group\n ColumnFactory.prototype.isColumnGroup = function (abstractColDef) {\n return abstractColDef.children !== undefined;\n };\n __decorate([\n Autowired('columnUtils')\n ], ColumnFactory.prototype, \"columnUtils\", void 0);\n __decorate([\n __param(0, Qualifier('loggerFactory'))\n ], ColumnFactory.prototype, \"setBeans\", null);\n ColumnFactory = __decorate([\n Bean('columnFactory')\n ], ColumnFactory);\n return ColumnFactory;\n}(BeanStub));\nexport { ColumnFactory };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar Events = /** @class */ (function () {\n function Events() {\n }\n /** Everything has changed with the columns. Either complete new set of columns set, or user called setState() */\n /** @deprecated - grid no longer uses this, and setSate() also fires individual events */\n Events.EVENT_COLUMN_EVERYTHING_CHANGED = 'columnEverythingChanged';\n /** User has set in new columns. */\n Events.EVENT_NEW_COLUMNS_LOADED = 'newColumnsLoaded';\n /** The pivot mode flag was changed */\n Events.EVENT_COLUMN_PIVOT_MODE_CHANGED = 'columnPivotModeChanged';\n /** A row group column was added, removed or order changed. */\n Events.EVENT_COLUMN_ROW_GROUP_CHANGED = 'columnRowGroupChanged';\n /** expandAll / collapseAll was called from the api. */\n Events.EVENT_EXPAND_COLLAPSE_ALL = 'expandOrCollapseAll';\n /** A pivot column was added, removed or order changed. */\n Events.EVENT_COLUMN_PIVOT_CHANGED = 'columnPivotChanged';\n /** The list of grid columns has changed. */\n Events.EVENT_GRID_COLUMNS_CHANGED = 'gridColumnsChanged';\n /** A value column was added, removed or agg function was changed. */\n Events.EVENT_COLUMN_VALUE_CHANGED = 'columnValueChanged';\n /** A column was moved */\n Events.EVENT_COLUMN_MOVED = 'columnMoved';\n /** One or more columns was shown / hidden */\n Events.EVENT_COLUMN_VISIBLE = 'columnVisible';\n /** One or more columns was pinned / unpinned*/\n Events.EVENT_COLUMN_PINNED = 'columnPinned';\n /** A column group was opened / closed */\n Events.EVENT_COLUMN_GROUP_OPENED = 'columnGroupOpened';\n /** One or more columns was resized. If just one, the column in the event is set. */\n Events.EVENT_COLUMN_RESIZED = 'columnResized';\n /** The list of displayed columns has changed, can result from columns open / close, column move, pivot, group, etc */\n Events.EVENT_DISPLAYED_COLUMNS_CHANGED = 'displayedColumnsChanged';\n /** The list of virtual columns has changed, results from viewport changing */\n Events.EVENT_VIRTUAL_COLUMNS_CHANGED = 'virtualColumnsChanged';\n /** Async Transactions Executed */\n Events.EVENT_ASYNC_TRANSACTIONS_FLUSHED = 'asyncTransactionsFlushed';\n /** A row group was opened / closed */\n Events.EVENT_ROW_GROUP_OPENED = 'rowGroupOpened';\n /** The client has set new data into the grid */\n Events.EVENT_ROW_DATA_CHANGED = 'rowDataChanged';\n /** The client has updated data for the grid */\n Events.EVENT_ROW_DATA_UPDATED = 'rowDataUpdated';\n /** The client has set new floating data into the grid */\n Events.EVENT_PINNED_ROW_DATA_CHANGED = 'pinnedRowDataChanged';\n /** Range selection has changed */\n Events.EVENT_RANGE_SELECTION_CHANGED = 'rangeSelectionChanged';\n /** Chart was created */\n Events.EVENT_CHART_CREATED = 'chartCreated';\n /** Chart Range selection has changed */\n Events.EVENT_CHART_RANGE_SELECTION_CHANGED = 'chartRangeSelectionChanged';\n /** Chart Options have changed */\n Events.EVENT_CHART_OPTIONS_CHANGED = 'chartOptionsChanged';\n /** Chart was destroyed */\n Events.EVENT_CHART_DESTROYED = 'chartDestroyed';\n /** For when the tool panel is shown / hidden */\n Events.EVENT_TOOL_PANEL_VISIBLE_CHANGED = 'toolPanelVisibleChanged';\n Events.EVENT_COLUMN_PANEL_ITEM_DRAG_START = 'columnPanelItemDragStart';\n Events.EVENT_COLUMN_PANEL_ITEM_DRAG_END = 'columnPanelItemDragEnd';\n /** Model was updated - grid updates the drawn rows when this happens */\n Events.EVENT_MODEL_UPDATED = 'modelUpdated';\n Events.EVENT_PASTE_START = 'pasteStart';\n Events.EVENT_PASTE_END = 'pasteEnd';\n Events.EVENT_FILL_START = 'fillStart';\n Events.EVENT_FILL_END = 'fillEnd';\n Events.EVENT_CELL_CLICKED = 'cellClicked';\n Events.EVENT_CELL_DOUBLE_CLICKED = 'cellDoubleClicked';\n Events.EVENT_CELL_MOUSE_DOWN = 'cellMouseDown';\n Events.EVENT_CELL_CONTEXT_MENU = 'cellContextMenu';\n Events.EVENT_CELL_VALUE_CHANGED = 'cellValueChanged';\n Events.EVENT_CELL_EDIT_REQUEST = 'cellEditRequest';\n Events.EVENT_ROW_VALUE_CHANGED = 'rowValueChanged';\n Events.EVENT_CELL_FOCUSED = 'cellFocused';\n Events.EVENT_ROW_SELECTED = 'rowSelected';\n Events.EVENT_SELECTION_CHANGED = 'selectionChanged';\n Events.EVENT_CELL_KEY_DOWN = 'cellKeyDown';\n Events.EVENT_CELL_KEY_PRESS = 'cellKeyPress';\n Events.EVENT_CELL_MOUSE_OVER = 'cellMouseOver';\n Events.EVENT_CELL_MOUSE_OUT = 'cellMouseOut';\n /** 2 events for filtering. The grid LISTENS for filterChanged and afterFilterChanged */\n Events.EVENT_FILTER_CHANGED = 'filterChanged';\n /** Filter was change but not applied. Only useful if apply buttons are used in filters. */\n Events.EVENT_FILTER_MODIFIED = 'filterModified';\n Events.EVENT_FILTER_OPENED = 'filterOpened';\n Events.EVENT_SORT_CHANGED = 'sortChanged';\n /** A row was removed from the dom, for any reason. Use to clean up resources (if any) used by the row. */\n Events.EVENT_VIRTUAL_ROW_REMOVED = 'virtualRowRemoved';\n Events.EVENT_ROW_CLICKED = 'rowClicked';\n Events.EVENT_ROW_DOUBLE_CLICKED = 'rowDoubleClicked';\n /** Gets called once after the grid has finished initialising. */\n Events.EVENT_GRID_READY = 'gridReady';\n /** Width of height of the main grid div has changed. Grid listens for this and does layout of grid if it's\n * changed, so always filling the space it was given. */\n Events.EVENT_GRID_SIZE_CHANGED = 'gridSizeChanged';\n /** The indexes of the rows rendered has changed, eg user has scrolled to a new vertical position. */\n Events.EVENT_VIEWPORT_CHANGED = 'viewportChanged';\n /* The width of the scrollbar has been calculated */\n Events.EVENT_SCROLLBAR_WIDTH_CHANGED = 'scrollbarWidthChanged';\n /** Rows were rendered for the first time (ie on async data load). */\n Events.EVENT_FIRST_DATA_RENDERED = 'firstDataRendered';\n /** A column drag has started, either resizing a column or moving a column. */\n Events.EVENT_DRAG_STARTED = 'dragStarted';\n /** A column drag has stopped */\n Events.EVENT_DRAG_STOPPED = 'dragStopped';\n Events.EVENT_CHECKBOX_CHANGED = 'checkboxChanged';\n Events.EVENT_ROW_EDITING_STARTED = 'rowEditingStarted';\n Events.EVENT_ROW_EDITING_STOPPED = 'rowEditingStopped';\n Events.EVENT_CELL_EDITING_STARTED = 'cellEditingStarted';\n Events.EVENT_CELL_EDITING_STOPPED = 'cellEditingStopped';\n /** Main body of grid has scrolled, either horizontally or vertically */\n Events.EVENT_BODY_SCROLL = 'bodyScroll';\n /** Main body of the grid has stopped scrolling, either horizontally or vertically */\n Events.EVENT_BODY_SCROLL_END = 'bodyScrollEnd';\n Events.EVENT_HEIGHT_SCALE_CHANGED = 'heightScaleChanged';\n /** The displayed page for pagination has changed. For example the data was filtered or sorted,\n * or the user has moved to a different page. */\n Events.EVENT_PAGINATION_CHANGED = 'paginationChanged';\n /** Only used by React, Angular, Web Components and VueJS AG Grid components\n * (not used if doing plain JavaScript). If the grid receives changes due\n * to bound properties, this event fires after the grid has finished processing the change. */\n Events.EVENT_COMPONENT_STATE_CHANGED = 'componentStateChanged';\n /***************************** INTERNAL EVENTS: START ******************************************* */\n /** Please remember to add to ComponentUtil.EXCLUDED_INTERNAL_EVENTS to not have these events exposed to framework components. */\n /** All items from here down are used internally by the grid, not intended for external use. */\n // not documented, either experimental, or we just don't want users using an depending on them\n Events.EVENT_BODY_HEIGHT_CHANGED = 'bodyHeightChanged';\n Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED = 'displayedColumnsWidthChanged';\n Events.EVENT_SCROLL_VISIBILITY_CHANGED = 'scrollVisibilityChanged';\n Events.EVENT_COLUMN_HOVER_CHANGED = 'columnHoverChanged';\n Events.EVENT_FLASH_CELLS = 'flashCells';\n Events.EVENT_PAGINATION_PIXEL_OFFSET_CHANGED = 'paginationPixelOffsetChanged';\n Events.EVENT_DISPLAYED_ROWS_CHANGED = 'displayedRowsChanged';\n Events.EVENT_LEFT_PINNED_WIDTH_CHANGED = 'leftPinnedWidthChanged';\n Events.EVENT_RIGHT_PINNED_WIDTH_CHANGED = 'rightPinnedWidthChanged';\n Events.EVENT_ROW_CONTAINER_HEIGHT_CHANGED = 'rowContainerHeightChanged';\n Events.EVENT_ROW_DRAG_ENTER = 'rowDragEnter';\n Events.EVENT_ROW_DRAG_MOVE = 'rowDragMove';\n Events.EVENT_ROW_DRAG_LEAVE = 'rowDragLeave';\n Events.EVENT_ROW_DRAG_END = 'rowDragEnd';\n // primarily for charts\n Events.EVENT_POPUP_TO_FRONT = 'popupToFront';\n // these are used for server side group and agg - only used by CS with Viewport Row Model - intention is\n // to design these better around server side functions and then release to general public when fully working with\n // all the row models.\n Events.EVENT_COLUMN_ROW_GROUP_CHANGE_REQUEST = 'columnRowGroupChangeRequest';\n Events.EVENT_COLUMN_PIVOT_CHANGE_REQUEST = 'columnPivotChangeRequest';\n Events.EVENT_COLUMN_VALUE_CHANGE_REQUEST = 'columnValueChangeRequest';\n Events.EVENT_COLUMN_AGG_FUNC_CHANGE_REQUEST = 'columnAggFuncChangeRequest';\n Events.EVENT_KEYBOARD_FOCUS = 'keyboardFocus';\n Events.EVENT_MOUSE_FOCUS = 'mouseFocus';\n Events.EVENT_STORE_UPDATED = 'storeUpdated';\n return Events;\n}());\nexport { Events };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n// class returns unique instance id's for columns.\n// eg, the following calls (in this order) will result in:\n//\n// getInstanceIdForKey('country') => 0\n// getInstanceIdForKey('country') => 1\n// getInstanceIdForKey('country') => 2\n// getInstanceIdForKey('country') => 3\n// getInstanceIdForKey('age') => 0\n// getInstanceIdForKey('age') => 1\n// getInstanceIdForKey('country') => 4\nvar GroupInstanceIdCreator = /** @class */ (function () {\n function GroupInstanceIdCreator() {\n // this map contains keys to numbers, so we remember what the last call was\n this.existingIds = {};\n }\n GroupInstanceIdCreator.prototype.getInstanceIdForKey = function (key) {\n var lastResult = this.existingIds[key];\n var result;\n if (typeof lastResult !== 'number') {\n // first time this key\n result = 0;\n }\n else {\n result = lastResult + 1;\n }\n this.existingIds[key] = result;\n return result;\n };\n return GroupInstanceIdCreator;\n}());\nexport { GroupInstanceIdCreator };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar reUnescapedHtml = /[&<>\"']/g;\n/**\n * HTML Escapes.\n */\nvar HTML_ESCAPES = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\n/**\n * It encodes any string in UTF-8 format\n * taken from https://github.com/mathiasbynens/utf8.js\n * @param {string} s\n * @returns {string}\n */\nexport function utf8_encode(s) {\n var stringFromCharCode = String.fromCharCode;\n function ucs2decode(string) {\n var output = [];\n if (!string) {\n return [];\n }\n var len = string.length;\n var counter = 0;\n var value;\n var extra;\n while (counter < len) {\n value = string.charCodeAt(counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < len) {\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 }\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 }\n else {\n output.push(value);\n }\n }\n return output;\n }\n function checkScalarValue(point) {\n if (point >= 0xD800 && point <= 0xDFFF) {\n throw Error('Lone surrogate U+' + point.toString(16).toUpperCase() +\n ' is not a scalar value');\n }\n }\n function createByte(point, shift) {\n return stringFromCharCode(((point >> shift) & 0x3F) | 0x80);\n }\n function encodeCodePoint(point) {\n if ((point >= 0 && point <= 31 && point !== 10)) {\n var convertedCode = point.toString(16).toUpperCase();\n var paddedCode = convertedCode.padStart(4, '0');\n return \"_x\" + paddedCode + \"_\";\n }\n if ((point & 0xFFFFFF80) == 0) { // 1-byte sequence\n return stringFromCharCode(point);\n }\n var symbol = '';\n if ((point & 0xFFFFF800) == 0) { // 2-byte sequence\n symbol = stringFromCharCode(((point >> 6) & 0x1F) | 0xC0);\n }\n else if ((point & 0xFFFF0000) == 0) { // 3-byte sequence\n checkScalarValue(point);\n symbol = stringFromCharCode(((point >> 12) & 0x0F) | 0xE0);\n symbol += createByte(point, 6);\n }\n else if ((point & 0xFFE00000) == 0) { // 4-byte sequence\n symbol = stringFromCharCode(((point >> 18) & 0x07) | 0xF0);\n symbol += createByte(point, 12);\n symbol += createByte(point, 6);\n }\n symbol += stringFromCharCode((point & 0x3F) | 0x80);\n return symbol;\n }\n var codePoints = ucs2decode(s);\n var length = codePoints.length;\n var index = -1;\n var codePoint;\n var byteString = '';\n while (++index < length) {\n codePoint = codePoints[index];\n byteString += encodeCodePoint(codePoint);\n }\n return byteString;\n}\n/**\n * Converts a camelCase string into hyphenated string\n * from https://gist.github.com/youssman/745578062609e8acac9f\n * @param {string} str\n * @return {string}\n */\nexport function camelCaseToHyphen(str) {\n if (str === null || str === undefined) {\n return null;\n }\n return str.replace(/([A-Z])/g, function (g) { return '-' + g[0].toLowerCase(); });\n}\n/**\n * Converts a hyphenated string into camelCase string\n * from https://stackoverflow.com/questions/6660977/convert-hyphens-to-camel-case-camelcase\n * @param {string} str\n * @return {string}\n */\nexport function hyphenToCamelCase(str) {\n if (str === null || str === undefined) {\n return null;\n }\n return str.replace(/-([a-z])/g, function (g) { return g[1].toUpperCase(); });\n}\nexport function capitalise(str) {\n return str[0].toUpperCase() + str.substr(1).toLowerCase();\n}\nexport function escapeString(toEscape) {\n // we call toString() twice, in case value is an object, where user provides\n // a toString() method, and first call to toString() returns back something other\n // than a string (eg a number to render)\n return toEscape == null ? null : toEscape.toString().toString().replace(reUnescapedHtml, function (chr) { return HTML_ESCAPES[chr]; });\n}\n/**\n * Converts a camelCase string into regular text\n * from: https://stackoverflow.com/questions/15369566/putting-space-in-camel-case-string-using-regular-expression\n * @param {string} camelCase\n * @return {string}\n */\nexport function camelCaseToHumanText(camelCase) {\n if (!camelCase || camelCase == null) {\n return null;\n }\n var rex = /([A-Z])([A-Z])([a-z])|([a-z])([A-Z])/g;\n var words = camelCase.replace(rex, '$1$4 $2$3$5').replace('.', ' ').split(' ');\n return words.map(function (word) { return word.substring(0, 1).toUpperCase() + ((word.length > 1) ? word.substring(1, word.length) : ''); }).join(' ');\n}\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nexport function convertToMap(arr) {\n var map = new Map();\n arr.forEach(function (pair) { return map.set(pair[0], pair[1]); });\n return map;\n}\n// handy for organising a list into a map, where each item is mapped by an attribute, eg mapping Columns by ID\nexport function mapById(arr, callback) {\n var map = new Map();\n arr.forEach(function (item) { return map.set(callback(item), item); });\n return map;\n}\nexport function keys(map) {\n var arr = [];\n map.forEach(function (_, key) { return arr.push(key); });\n return arr;\n}\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nimport { ColumnGroup } from '../entities/columnGroup';\nimport { Column } from '../entities/column';\nimport { Events } from '../events';\nimport { BeanStub } from \"../context/beanStub\";\nimport { ProvidedColumnGroup } from '../entities/providedColumnGroup';\nimport { GroupInstanceIdCreator } from './groupInstanceIdCreator';\nimport { Autowired, Bean, Optional, PostConstruct, Qualifier } from '../context/context';\nimport { Constants } from '../constants/constants';\nimport { areEqual, last, removeFromArray, moveInArray, includes, insertIntoArray, removeAllFromArray } from '../utils/array';\nimport { missingOrEmpty, exists, missing, attrToBoolean, attrToNumber } from '../utils/generic';\nimport { camelCaseToHumanText } from '../utils/string';\nimport { convertToMap } from '../utils/map';\nimport { doOnce } from '../utils/function';\nvar ColumnModel = /** @class */ (function (_super) {\n __extends(ColumnModel, _super);\n function ColumnModel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // header row count, based on user provided columns\n _this.primaryHeaderRowCount = 0;\n _this.secondaryHeaderRowCount = 0;\n _this.secondaryColumnsPresent = false;\n // header row count, either above, or based on pivoting if we are pivoting\n _this.gridHeaderRowCount = 0;\n // leave level columns of the displayed trees\n _this.displayedColumnsLeft = [];\n _this.displayedColumnsRight = [];\n _this.displayedColumnsCenter = [];\n // all three lists above combined\n _this.displayedColumns = [];\n // for fast lookup, to see if a column or group is still displayed\n _this.displayedColumnsAndGroupsMap = {};\n // all columns to be rendered\n _this.viewportColumns = [];\n // all columns to be rendered in the centre\n _this.viewportColumnsCenter = [];\n _this.autoHeightActiveAtLeastOnce = false;\n _this.rowGroupColumns = [];\n _this.valueColumns = [];\n _this.pivotColumns = [];\n _this.ready = false;\n _this.autoGroupsNeedBuilding = false;\n _this.forceRecreateAutoGroups = false;\n _this.pivotMode = false;\n _this.bodyWidth = 0;\n _this.leftWidth = 0;\n _this.rightWidth = 0;\n _this.bodyWidthDirty = true;\n _this.colDefVersion = 0;\n _this.flexColsCalculatedAtLestOnce = false;\n return _this;\n }\n ColumnModel.prototype.init = function () {\n var _this = this;\n this.suppressColumnVirtualisation = this.gridOptionsWrapper.isSuppressColumnVirtualisation();\n var pivotMode = this.gridOptionsWrapper.isPivotMode();\n if (this.isPivotSettingAllowed(pivotMode)) {\n this.pivotMode = pivotMode;\n }\n this.usingTreeData = this.gridOptionsWrapper.isTreeData();\n this.addManagedListener(this.gridOptionsWrapper, 'autoGroupColumnDef', function () { return _this.onAutoGroupColumnDefChanged(); });\n this.addManagedListener(this.gridOptionsWrapper, 'defaultColDef', function () { return _this.onDefaultColDefChanged(); });\n };\n ColumnModel.prototype.onAutoGroupColumnDefChanged = function () {\n this.autoGroupsNeedBuilding = true;\n this.forceRecreateAutoGroups = true;\n this.updateGridColumns();\n this.updateDisplayedColumns('gridOptionsChanged');\n };\n ColumnModel.prototype.onDefaultColDefChanged = function () {\n // col def's should get revisited, even if specific column hasn't changed,\n // as the defaultColDef impacts all columns, so each column should assume it's Col Def has changed.\n this.colDefVersion++;\n // likewise for autoGroupCol, the default col def impacts this\n this.forceRecreateAutoGroups = true;\n this.createColumnsFromColumnDefs(true);\n };\n ColumnModel.prototype.getColDefVersion = function () {\n return this.colDefVersion;\n };\n ColumnModel.prototype.setColumnDefs = function (columnDefs, source) {\n if (source === void 0) { source = 'api'; }\n var colsPreviouslyExisted = !!this.columnDefs;\n this.colDefVersion++;\n this.columnDefs = columnDefs;\n this.createColumnsFromColumnDefs(colsPreviouslyExisted, source);\n };\n ColumnModel.prototype.createColumnsFromColumnDefs = function (colsPreviouslyExisted, source) {\n var _this = this;\n if (source === void 0) { source = 'api'; }\n // only need to raise before/after events if updating columns, never if setting columns for first time\n var raiseEventsFunc = colsPreviouslyExisted ? this.compareColumnStatesAndRaiseEvents(source) : undefined;\n // always invalidate cache on changing columns, as the column id's for the new columns\n // could overlap with the old id's, so the cache would return old values for new columns.\n this.valueCache.expire();\n // NOTE ==================\n // we should be destroying the existing columns and groups if they exist, for example, the original column\n // group adds a listener to the columns, it should be also removing the listeners\n this.autoGroupsNeedBuilding = true;\n var oldPrimaryColumns = this.primaryColumns;\n var oldPrimaryTree = this.primaryColumnTree;\n var balancedTreeResult = this.columnFactory.createColumnTree(this.columnDefs, true, oldPrimaryTree);\n this.primaryColumnTree = balancedTreeResult.columnTree;\n this.primaryHeaderRowCount = balancedTreeResult.treeDept + 1;\n this.primaryColumns = this.getColumnsFromTree(this.primaryColumnTree);\n this.primaryColumnsMap = {};\n this.primaryColumns.forEach(function (col) { return _this.primaryColumnsMap[col.getId()] = col; });\n this.extractRowGroupColumns(source, oldPrimaryColumns);\n this.extractPivotColumns(source, oldPrimaryColumns);\n this.extractValueColumns(source, oldPrimaryColumns);\n this.ready = true;\n // if we are showing secondary columns, then no need to update grid columns\n // at this point, as it's the pivot service responsibility to change these\n // if we are no longer pivoting (ie and need to revert back to primary, otherwise\n // we shouldn't be touching the primary).\n var gridColsNotProcessed = this.gridColsArePrimary === undefined;\n var processGridCols = this.gridColsArePrimary || gridColsNotProcessed;\n if (processGridCols) {\n this.updateGridColumns();\n if (colsPreviouslyExisted && !this.gridOptionsWrapper.isMaintainColumnOrder()) {\n this.orderGridColumnsLikePrimary();\n }\n this.updateDisplayedColumns(source);\n this.checkViewportColumns();\n }\n // this event is not used by AG Grid, but left here for backwards compatibility,\n // in case applications use it\n this.dispatchEverythingChanged(source);\n raiseEventsFunc && raiseEventsFunc();\n this.dispatchNewColumnsLoaded();\n };\n ColumnModel.prototype.dispatchNewColumnsLoaded = function () {\n var newColumnsLoadedEvent = {\n type: Events.EVENT_NEW_COLUMNS_LOADED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(newColumnsLoadedEvent);\n };\n // this event is legacy, no grid code listens to it. instead the grid listens to New Columns Loaded\n ColumnModel.prototype.dispatchEverythingChanged = function (source) {\n if (source === void 0) { source = 'api'; }\n var eventEverythingChanged = {\n type: Events.EVENT_COLUMN_EVERYTHING_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi,\n source: source\n };\n this.eventService.dispatchEvent(eventEverythingChanged);\n };\n ColumnModel.prototype.orderGridColumnsLikePrimary = function () {\n var _this = this;\n var primaryColumns = this.primaryColumns;\n if (!primaryColumns) {\n return;\n }\n this.gridColumns.sort(function (colA, colB) {\n var primaryIndexA = primaryColumns.indexOf(colA);\n var primaryIndexB = primaryColumns.indexOf(colB);\n // if both cols are present in primary, then we just return the position,\n // so position is maintained.\n var indexAPresent = primaryIndexA >= 0;\n var indexBPresent = primaryIndexB >= 0;\n if (indexAPresent && indexBPresent) {\n return primaryIndexA - primaryIndexB;\n }\n if (indexAPresent) {\n // B is auto group column, so put B first\n return 1;\n }\n if (indexBPresent) {\n // A is auto group column, so put A first\n return -1;\n }\n // otherwise both A and B are auto-group columns. so we just keep the order\n // as they were already in.\n var gridIndexA = _this.gridColumns.indexOf(colA);\n var gridIndexB = _this.gridColumns.indexOf(colB);\n return gridIndexA - gridIndexB;\n });\n };\n ColumnModel.prototype.getAllDisplayedAutoHeightCols = function () {\n return this.displayedAutoHeightCols;\n };\n ColumnModel.prototype.setViewport = function () {\n if (this.gridOptionsWrapper.isEnableRtl()) {\n this.viewportLeft = this.bodyWidth - this.scrollPosition - this.scrollWidth;\n this.viewportRight = this.bodyWidth - this.scrollPosition;\n }\n else {\n this.viewportLeft = this.scrollPosition;\n this.viewportRight = this.scrollWidth + this.scrollPosition;\n }\n };\n // used by clipboard service, to know what columns to paste into\n ColumnModel.prototype.getDisplayedColumnsStartingAt = function (column) {\n var currentColumn = column;\n var columns = [];\n while (currentColumn != null) {\n columns.push(currentColumn);\n currentColumn = this.getDisplayedColAfter(currentColumn);\n }\n return columns;\n };\n // checks what columns are currently displayed due to column virtualisation. fires an event\n // if the list of columns has changed.\n // + setColumnWidth(), setViewportPosition(), setColumnDefs(), sizeColumnsToFit()\n ColumnModel.prototype.checkViewportColumns = function () {\n // check displayCenterColumnTree exists first, as it won't exist when grid is initialising\n if (this.displayedColumnsCenter == null) {\n return;\n }\n var hashBefore = this.viewportColumns.map(function (column) { return column.getId(); }).join('#');\n this.extractViewport();\n var hashAfter = this.viewportColumns.map(function (column) { return column.getId(); }).join('#');\n if (hashBefore !== hashAfter) {\n var event_1 = {\n type: Events.EVENT_VIRTUAL_COLUMNS_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event_1);\n }\n };\n ColumnModel.prototype.setViewportPosition = function (scrollWidth, scrollPosition) {\n if (scrollWidth !== this.scrollWidth || scrollPosition !== this.scrollPosition || this.bodyWidthDirty) {\n this.scrollWidth = scrollWidth;\n this.scrollPosition = scrollPosition;\n // we need to call setVirtualViewportLeftAndRight() at least once after the body width changes,\n // as the viewport can stay the same, but in RTL, if body width changes, we need to work out the\n // virtual columns again\n this.bodyWidthDirty = true;\n this.setViewport();\n if (this.ready) {\n this.checkViewportColumns();\n }\n }\n };\n ColumnModel.prototype.isPivotMode = function () {\n return this.pivotMode;\n };\n ColumnModel.prototype.isPivotSettingAllowed = function (pivot) {\n if (pivot && this.gridOptionsWrapper.isTreeData()) {\n console.warn(\"AG Grid: Pivot mode not available in conjunction Tree Data i.e. 'gridOptions.treeData: true'\");\n return false;\n }\n return true;\n };\n ColumnModel.prototype.setPivotMode = function (pivotMode, source) {\n if (source === void 0) { source = 'api'; }\n if (pivotMode === this.pivotMode || !this.isPivotSettingAllowed(this.pivotMode)) {\n return;\n }\n this.pivotMode = pivotMode;\n // we need to update grid columns to cover the scenario where user has groupSuppressAutoColumn=true, as\n // this means we don't use auto group column UNLESS we are in pivot mode (it's mandatory in pivot mode),\n // so need to updateGridColumn() to check it autoGroupCol needs to be added / removed\n this.autoGroupsNeedBuilding = true;\n this.updateGridColumns();\n this.updateDisplayedColumns(source);\n var event = {\n type: Events.EVENT_COLUMN_PIVOT_MODE_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnModel.prototype.getSecondaryPivotColumn = function (pivotKeys, valueColKey) {\n if (!this.secondaryColumnsPresent || !this.secondaryColumns) {\n return null;\n }\n var valueColumnToFind = this.getPrimaryColumn(valueColKey);\n var foundColumn = null;\n this.secondaryColumns.forEach(function (column) {\n var thisPivotKeys = column.getColDef().pivotKeys;\n var pivotValueColumn = column.getColDef().pivotValueColumn;\n var pivotKeyMatches = areEqual(thisPivotKeys, pivotKeys);\n var pivotValueMatches = pivotValueColumn === valueColumnToFind;\n if (pivotKeyMatches && pivotValueMatches) {\n foundColumn = column;\n }\n });\n return foundColumn;\n };\n ColumnModel.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('columnModel');\n };\n ColumnModel.prototype.setFirstRightAndLastLeftPinned = function (source) {\n var lastLeft;\n var firstRight;\n if (this.gridOptionsWrapper.isEnableRtl()) {\n lastLeft = this.displayedColumnsLeft ? this.displayedColumnsLeft[0] : null;\n firstRight = this.displayedColumnsRight ? last(this.displayedColumnsRight) : null;\n }\n else {\n lastLeft = this.displayedColumnsLeft ? last(this.displayedColumnsLeft) : null;\n firstRight = this.displayedColumnsRight ? this.displayedColumnsRight[0] : null;\n }\n this.gridColumns.forEach(function (column) {\n column.setLastLeftPinned(column === lastLeft, source);\n column.setFirstRightPinned(column === firstRight, source);\n });\n };\n ColumnModel.prototype.autoSizeColumns = function (params) {\n var _this = this;\n var columns = params.columns, skipHeader = params.skipHeader, skipHeaderGroups = params.skipHeaderGroups, stopAtGroup = params.stopAtGroup, _a = params.source, source = _a === void 0 ? 'api' : _a;\n // because of column virtualisation, we can only do this function on columns that are\n // actually rendered, as non-rendered columns (outside the viewport and not rendered\n // due to column virtualisation) are not present. this can result in all rendered columns\n // getting narrowed, which in turn introduces more rendered columns on the RHS which\n // did not get autosized in the original run, leaving the visible grid with columns on\n // the LHS sized, but RHS no. so we keep looping through the visible columns until\n // no more cols are available (rendered) to be resized\n // we autosize after animation frames finish in case any cell renderers need to complete first. this can\n // happen eg if client code is calling api.autoSizeAllColumns() straight after grid is initialised, but grid\n // hasn't fully drawn out all the cells yet (due to cell renderers in animation frames).\n this.animationFrameService.flushAllFrames();\n // keep track of which cols we have resized in here\n var columnsAutosized = [];\n // initialise with anything except 0 so that while loop executes at least once\n var changesThisTimeAround = -1;\n var shouldSkipHeader = skipHeader != null ? skipHeader : this.gridOptionsWrapper.isSkipHeaderOnAutoSize();\n var shouldSkipHeaderGroups = skipHeaderGroups != null ? skipHeaderGroups : shouldSkipHeader;\n while (changesThisTimeAround !== 0) {\n changesThisTimeAround = 0;\n this.actionOnGridColumns(columns, function (column) {\n // if already autosized, skip it\n if (columnsAutosized.indexOf(column) >= 0) {\n return false;\n }\n // get how wide this col should be\n var preferredWidth = _this.autoWidthCalculator.getPreferredWidthForColumn(column, shouldSkipHeader);\n // preferredWidth = -1 if this col is not on the screen\n if (preferredWidth > 0) {\n var newWidth = _this.normaliseColumnWidth(column, preferredWidth);\n column.setActualWidth(newWidth, source);\n columnsAutosized.push(column);\n changesThisTimeAround++;\n }\n return true;\n }, source);\n }\n if (!shouldSkipHeaderGroups) {\n this.autoSizeColumnGroupsByColumns(columns, stopAtGroup);\n }\n this.fireColumnResizedEvent(columnsAutosized, true, 'autosizeColumns');\n };\n ColumnModel.prototype.fireColumnResizedEvent = function (columns, finished, source, flexColumns) {\n if (flexColumns === void 0) { flexColumns = null; }\n if (columns && columns.length) {\n var event_2 = {\n type: Events.EVENT_COLUMN_RESIZED,\n columns: columns,\n column: columns.length === 1 ? columns[0] : null,\n flexColumns: flexColumns,\n finished: finished,\n api: this.gridApi,\n columnApi: this.columnApi,\n source: source\n };\n this.eventService.dispatchEvent(event_2);\n }\n };\n ColumnModel.prototype.autoSizeColumn = function (key, skipHeader, source) {\n if (source === void 0) { source = \"api\"; }\n if (key) {\n this.autoSizeColumns({ columns: [key], skipHeader: skipHeader, skipHeaderGroups: true, source: source });\n }\n };\n ColumnModel.prototype.autoSizeColumnGroupsByColumns = function (keys, stopAtGroup) {\n var e_1, _a, e_2, _b;\n var columnGroups = new Set();\n var columns = this.getGridColumns(keys);\n columns.forEach(function (col) {\n var parent = col.getParent();\n while (parent && parent != stopAtGroup) {\n if (!parent.isPadding()) {\n columnGroups.add(parent);\n }\n parent = parent.getParent();\n }\n });\n var headerGroupCtrl;\n var resizedColumns = [];\n try {\n for (var columnGroups_1 = __values(columnGroups), columnGroups_1_1 = columnGroups_1.next(); !columnGroups_1_1.done; columnGroups_1_1 = columnGroups_1.next()) {\n var columnGroup = columnGroups_1_1.value;\n try {\n for (var _c = (e_2 = void 0, __values(this.ctrlsService.getHeaderRowContainerCtrls())), _d = _c.next(); !_d.done; _d = _c.next()) {\n var headerContainerCtrl = _d.value;\n headerGroupCtrl = headerContainerCtrl.getHeaderCtrlForColumn(columnGroup);\n if (headerGroupCtrl) {\n break;\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_b = _c.return)) _b.call(_c);\n }\n finally { if (e_2) throw e_2.error; }\n }\n if (headerGroupCtrl) {\n headerGroupCtrl.resizeLeafColumnsToFit();\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (columnGroups_1_1 && !columnGroups_1_1.done && (_a = columnGroups_1.return)) _a.call(columnGroups_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return resizedColumns;\n };\n ColumnModel.prototype.autoSizeAllColumns = function (skipHeader, source) {\n if (source === void 0) { source = \"api\"; }\n var allDisplayedColumns = this.getAllDisplayedColumns();\n this.autoSizeColumns({ columns: allDisplayedColumns, skipHeader: skipHeader, source: source });\n };\n ColumnModel.prototype.getColumnsFromTree = function (rootColumns) {\n var result = [];\n var recursiveFindColumns = function (childColumns) {\n for (var i = 0; i < childColumns.length; i++) {\n var child = childColumns[i];\n if (child instanceof Column) {\n result.push(child);\n }\n else if (child instanceof ProvidedColumnGroup) {\n recursiveFindColumns(child.getChildren());\n }\n }\n };\n recursiveFindColumns(rootColumns);\n return result;\n };\n ColumnModel.prototype.getAllDisplayedTrees = function () {\n if (this.displayedTreeLeft && this.displayedTreeRight && this.displayedTreeCentre) {\n return this.displayedTreeLeft\n .concat(this.displayedTreeCentre)\n .concat(this.displayedTreeRight);\n }\n return null;\n };\n // + columnSelectPanel\n ColumnModel.prototype.getPrimaryColumnTree = function () {\n return this.primaryColumnTree;\n };\n // + gridPanel -> for resizing the body and setting top margin\n ColumnModel.prototype.getHeaderRowCount = function () {\n return this.gridHeaderRowCount;\n };\n // + headerRenderer -> setting pinned body width\n ColumnModel.prototype.getDisplayedTreeLeft = function () {\n return this.displayedTreeLeft;\n };\n // + headerRenderer -> setting pinned body width\n ColumnModel.prototype.getDisplayedTreeRight = function () {\n return this.displayedTreeRight;\n };\n // + headerRenderer -> setting pinned body width\n ColumnModel.prototype.getDisplayedTreeCentre = function () {\n return this.displayedTreeCentre;\n };\n // gridPanel -> ensureColumnVisible\n ColumnModel.prototype.isColumnDisplayed = function (column) {\n return this.getAllDisplayedColumns().indexOf(column) >= 0;\n };\n // + csvCreator\n ColumnModel.prototype.getAllDisplayedColumns = function () {\n return this.displayedColumns;\n };\n ColumnModel.prototype.getViewportColumns = function () {\n return this.viewportColumns;\n };\n ColumnModel.prototype.getDisplayedLeftColumnsForRow = function (rowNode) {\n if (!this.colSpanActive) {\n return this.displayedColumnsLeft;\n }\n return this.getDisplayedColumnsForRow(rowNode, this.displayedColumnsLeft);\n };\n ColumnModel.prototype.getDisplayedRightColumnsForRow = function (rowNode) {\n if (!this.colSpanActive) {\n return this.displayedColumnsRight;\n }\n return this.getDisplayedColumnsForRow(rowNode, this.displayedColumnsRight);\n };\n ColumnModel.prototype.getDisplayedColumnsForRow = function (rowNode, displayedColumns, filterCallback, emptySpaceBeforeColumn) {\n var result = [];\n var lastConsideredCol = null;\n var _loop_1 = function (i) {\n var col = displayedColumns[i];\n var maxAllowedColSpan = displayedColumns.length - i;\n var colSpan = Math.min(col.getColSpan(rowNode), maxAllowedColSpan);\n var columnsToCheckFilter = [col];\n if (colSpan > 1) {\n var colsToRemove = colSpan - 1;\n for (var j = 1; j <= colsToRemove; j++) {\n columnsToCheckFilter.push(displayedColumns[i + j]);\n }\n i += colsToRemove;\n }\n // see which cols we should take out for column virtualisation\n var filterPasses;\n if (filterCallback) {\n // if user provided a callback, means some columns may not be in the viewport.\n // the user will NOT provide a callback if we are talking about pinned areas,\n // as pinned areas have no horizontal scroll and do not virtualise the columns.\n // if lots of columns, that means column spanning, and we set filterPasses = true\n // if one or more of the columns spanned pass the filter.\n filterPasses = false;\n columnsToCheckFilter.forEach(function (colForFilter) {\n if (filterCallback(colForFilter)) {\n filterPasses = true;\n }\n });\n }\n else {\n filterPasses = true;\n }\n if (filterPasses) {\n if (result.length === 0 && lastConsideredCol) {\n var gapBeforeColumn = emptySpaceBeforeColumn ? emptySpaceBeforeColumn(col) : false;\n if (gapBeforeColumn) {\n result.push(lastConsideredCol);\n }\n }\n result.push(col);\n }\n lastConsideredCol = col;\n out_i_1 = i;\n };\n var out_i_1;\n for (var i = 0; i < displayedColumns.length; i++) {\n _loop_1(i);\n i = out_i_1;\n }\n return result;\n };\n // + rowRenderer\n // if we are not column spanning, this just returns back the virtual centre columns,\n // however if we are column spanning, then different rows can have different virtual\n // columns, so we have to work out the list for each individual row.\n ColumnModel.prototype.getViewportCenterColumnsForRow = function (rowNode) {\n var _this = this;\n if (!this.colSpanActive) {\n return this.viewportColumnsCenter;\n }\n var emptySpaceBeforeColumn = function (col) {\n var left = col.getLeft();\n return exists(left) && left > _this.viewportLeft;\n };\n // if doing column virtualisation, then we filter based on the viewport.\n var filterCallback = this.suppressColumnVirtualisation ? null : this.isColumnInViewport.bind(this);\n return this.getDisplayedColumnsForRow(rowNode, this.displayedColumnsCenter, filterCallback, emptySpaceBeforeColumn);\n };\n ColumnModel.prototype.getAriaColumnIndex = function (col) {\n return this.getAllGridColumns().indexOf(col) + 1;\n };\n ColumnModel.prototype.isColumnInViewport = function (col) {\n // we never filter out autoHeight columns, as we need them in the DOM for calculating Auto Height\n if (col.isAutoHeight()) {\n return true;\n }\n var columnLeft = col.getLeft() || 0;\n var columnRight = columnLeft + col.getActualWidth();\n // adding 200 for buffer size, so some cols off viewport are rendered.\n // this helps horizontal scrolling so user rarely sees white space (unless\n // they scroll horizontally fast). however we are conservative, as the more\n // buffer the slower the vertical redraw speed\n var leftBounds = this.viewportLeft - 200;\n var rightBounds = this.viewportRight + 200;\n var columnToMuchLeft = columnLeft < leftBounds && columnRight < leftBounds;\n var columnToMuchRight = columnLeft > rightBounds && columnRight > rightBounds;\n return !columnToMuchLeft && !columnToMuchRight;\n };\n // used by:\n // + angularGrid -> setting pinned body width\n // note: this should be cached\n ColumnModel.prototype.getDisplayedColumnsLeftWidth = function () {\n return this.getWidthOfColsInList(this.displayedColumnsLeft);\n };\n // note: this should be cached\n ColumnModel.prototype.getDisplayedColumnsRightWidth = function () {\n return this.getWidthOfColsInList(this.displayedColumnsRight);\n };\n ColumnModel.prototype.updatePrimaryColumnList = function (keys, masterList, actionIsAdd, columnCallback, eventType, source) {\n var _this = this;\n if (source === void 0) { source = \"api\"; }\n if (!keys || missingOrEmpty(keys)) {\n return;\n }\n var atLeastOne = false;\n keys.forEach(function (key) {\n var columnToAdd = _this.getPrimaryColumn(key);\n if (!columnToAdd) {\n return;\n }\n if (actionIsAdd) {\n if (masterList.indexOf(columnToAdd) >= 0) {\n return;\n }\n masterList.push(columnToAdd);\n }\n else {\n if (masterList.indexOf(columnToAdd) < 0) {\n return;\n }\n removeFromArray(masterList, columnToAdd);\n }\n columnCallback(columnToAdd);\n atLeastOne = true;\n });\n if (!atLeastOne) {\n return;\n }\n if (this.autoGroupsNeedBuilding) {\n this.updateGridColumns();\n }\n this.updateDisplayedColumns(source);\n var event = {\n type: eventType,\n columns: masterList,\n column: masterList.length === 1 ? masterList[0] : null,\n api: this.gridApi,\n columnApi: this.columnApi,\n source: source\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnModel.prototype.setRowGroupColumns = function (colKeys, source) {\n if (source === void 0) { source = \"api\"; }\n this.autoGroupsNeedBuilding = true;\n this.setPrimaryColumnList(colKeys, this.rowGroupColumns, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.setRowGroupActive.bind(this), source);\n };\n ColumnModel.prototype.setRowGroupActive = function (active, column, source) {\n if (active === column.isRowGroupActive()) {\n return;\n }\n column.setRowGroupActive(active, source);\n if (!active && !this.gridOptionsWrapper.isSuppressMakeColumnVisibleAfterUnGroup()) {\n column.setVisible(true, source);\n }\n };\n ColumnModel.prototype.addRowGroupColumn = function (key, source) {\n if (source === void 0) { source = \"api\"; }\n if (key) {\n this.addRowGroupColumns([key], source);\n }\n };\n ColumnModel.prototype.addRowGroupColumns = function (keys, source) {\n if (source === void 0) { source = \"api\"; }\n this.autoGroupsNeedBuilding = true;\n this.updatePrimaryColumnList(keys, this.rowGroupColumns, true, this.setRowGroupActive.bind(this, true), Events.EVENT_COLUMN_ROW_GROUP_CHANGED, source);\n };\n ColumnModel.prototype.removeRowGroupColumns = function (keys, source) {\n if (source === void 0) { source = \"api\"; }\n this.autoGroupsNeedBuilding = true;\n this.updatePrimaryColumnList(keys, this.rowGroupColumns, false, this.setRowGroupActive.bind(this, false), Events.EVENT_COLUMN_ROW_GROUP_CHANGED, source);\n };\n ColumnModel.prototype.removeRowGroupColumn = function (key, source) {\n if (source === void 0) { source = \"api\"; }\n if (key) {\n this.removeRowGroupColumns([key], source);\n }\n };\n ColumnModel.prototype.addPivotColumns = function (keys, source) {\n if (source === void 0) { source = \"api\"; }\n this.updatePrimaryColumnList(keys, this.pivotColumns, true, function (column) { return column.setPivotActive(true, source); }, Events.EVENT_COLUMN_PIVOT_CHANGED, source);\n };\n ColumnModel.prototype.setPivotColumns = function (colKeys, source) {\n if (source === void 0) { source = \"api\"; }\n this.setPrimaryColumnList(colKeys, this.pivotColumns, Events.EVENT_COLUMN_PIVOT_CHANGED, function (added, column) {\n column.setPivotActive(added, source);\n }, source);\n };\n ColumnModel.prototype.addPivotColumn = function (key, source) {\n if (source === void 0) { source = \"api\"; }\n this.addPivotColumns([key], source);\n };\n ColumnModel.prototype.removePivotColumns = function (keys, source) {\n if (source === void 0) { source = \"api\"; }\n this.updatePrimaryColumnList(keys, this.pivotColumns, false, function (column) { return column.setPivotActive(false, source); }, Events.EVENT_COLUMN_PIVOT_CHANGED, source);\n };\n ColumnModel.prototype.removePivotColumn = function (key, source) {\n if (source === void 0) { source = \"api\"; }\n this.removePivotColumns([key], source);\n };\n ColumnModel.prototype.setPrimaryColumnList = function (colKeys, masterList, eventName, columnCallback, source) {\n var _this = this;\n masterList.length = 0;\n if (exists(colKeys)) {\n colKeys.forEach(function (key) {\n var column = _this.getPrimaryColumn(key);\n if (column) {\n masterList.push(column);\n }\n });\n }\n (this.primaryColumns || []).forEach(function (column) {\n var added = masterList.indexOf(column) >= 0;\n columnCallback(added, column);\n });\n if (this.autoGroupsNeedBuilding) {\n this.updateGridColumns();\n }\n this.updateDisplayedColumns(source);\n this.fireColumnEvent(eventName, masterList, source);\n };\n ColumnModel.prototype.setValueColumns = function (colKeys, source) {\n if (source === void 0) { source = \"api\"; }\n this.setPrimaryColumnList(colKeys, this.valueColumns, Events.EVENT_COLUMN_VALUE_CHANGED, this.setValueActive.bind(this), source);\n };\n ColumnModel.prototype.setValueActive = function (active, column, source) {\n if (active === column.isValueActive()) {\n return;\n }\n column.setValueActive(active, source);\n if (active && !column.getAggFunc()) {\n var initialAggFunc = this.aggFuncService.getDefaultAggFunc(column);\n column.setAggFunc(initialAggFunc);\n }\n };\n ColumnModel.prototype.addValueColumns = function (keys, source) {\n if (source === void 0) { source = \"api\"; }\n this.updatePrimaryColumnList(keys, this.valueColumns, true, this.setValueActive.bind(this, true), Events.EVENT_COLUMN_VALUE_CHANGED, source);\n };\n ColumnModel.prototype.addValueColumn = function (colKey, source) {\n if (source === void 0) { source = \"api\"; }\n if (colKey) {\n this.addValueColumns([colKey], source);\n }\n };\n ColumnModel.prototype.removeValueColumn = function (colKey, source) {\n if (source === void 0) { source = \"api\"; }\n this.removeValueColumns([colKey], source);\n };\n ColumnModel.prototype.removeValueColumns = function (keys, source) {\n if (source === void 0) { source = \"api\"; }\n this.updatePrimaryColumnList(keys, this.valueColumns, false, this.setValueActive.bind(this, false), Events.EVENT_COLUMN_VALUE_CHANGED, source);\n };\n // returns the width we can set to this col, taking into consideration min and max widths\n ColumnModel.prototype.normaliseColumnWidth = function (column, newWidth) {\n var minWidth = column.getMinWidth();\n if (exists(minWidth) && newWidth < minWidth) {\n newWidth = minWidth;\n }\n var maxWidth = column.getMaxWidth();\n if (exists(maxWidth) && column.isGreaterThanMax(newWidth)) {\n newWidth = maxWidth;\n }\n return newWidth;\n };\n ColumnModel.prototype.getPrimaryOrGridColumn = function (key) {\n var column = this.getPrimaryColumn(key);\n return column || this.getGridColumn(key);\n };\n ColumnModel.prototype.setColumnWidths = function (columnWidths, shiftKey, // @takeFromAdjacent - if user has 'shift' pressed, then pixels are taken from adjacent column\n finished, // @finished - ends up in the event, tells the user if more events are to come\n source) {\n var _this = this;\n if (source === void 0) { source = \"api\"; }\n var sets = [];\n columnWidths.forEach(function (columnWidth) {\n var col = _this.getPrimaryOrGridColumn(columnWidth.key);\n if (!col) {\n return;\n }\n sets.push({\n width: columnWidth.newWidth,\n ratios: [1],\n columns: [col]\n });\n // if user wants to do shift resize by default, then we invert the shift operation\n var defaultIsShift = _this.gridOptionsWrapper.getColResizeDefault() === 'shift';\n if (defaultIsShift) {\n shiftKey = !shiftKey;\n }\n if (shiftKey) {\n var otherCol = _this.getDisplayedColAfter(col);\n if (!otherCol) {\n return;\n }\n var widthDiff = col.getActualWidth() - columnWidth.newWidth;\n var otherColWidth = otherCol.getActualWidth() + widthDiff;\n sets.push({\n width: otherColWidth,\n ratios: [1],\n columns: [otherCol]\n });\n }\n });\n if (sets.length === 0) {\n return;\n }\n this.resizeColumnSets({\n resizeSets: sets,\n finished: finished,\n source: source\n });\n };\n ColumnModel.prototype.checkMinAndMaxWidthsForSet = function (columnResizeSet) {\n var columns = columnResizeSet.columns, width = columnResizeSet.width;\n // every col has a min width, so sum them all up and see if we have enough room\n // for all the min widths\n var minWidthAccumulated = 0;\n var maxWidthAccumulated = 0;\n var maxWidthActive = true;\n columns.forEach(function (col) {\n var minWidth = col.getMinWidth();\n minWidthAccumulated += minWidth || 0;\n var maxWidth = col.getMaxWidth();\n if (exists(maxWidth) && maxWidth > 0) {\n maxWidthAccumulated += maxWidth;\n }\n else {\n // if at least one columns has no max width, it means the group of columns\n // then has no max width, as at least one column can take as much width as possible\n maxWidthActive = false;\n }\n });\n var minWidthPasses = width >= minWidthAccumulated;\n var maxWidthPasses = !maxWidthActive || (width <= maxWidthAccumulated);\n return minWidthPasses && maxWidthPasses;\n };\n // method takes sets of columns and resizes them. either all sets will be resized, or nothing\n // be resized. this is used for example when user tries to resize a group and holds shift key,\n // then both the current group (grows), and the adjacent group (shrinks), will get resized,\n // so that's two sets for this method.\n ColumnModel.prototype.resizeColumnSets = function (params) {\n var _this = this;\n var resizeSets = params.resizeSets, finished = params.finished, source = params.source;\n var passMinMaxCheck = !resizeSets || resizeSets.every(function (columnResizeSet) { return _this.checkMinAndMaxWidthsForSet(columnResizeSet); });\n if (!passMinMaxCheck) {\n // even though we are not going to resize beyond min/max size, we still need to raise event when finished\n if (finished) {\n var columns = resizeSets && resizeSets.length > 0 ? resizeSets[0].columns : null;\n this.fireColumnResizedEvent(columns, finished, source);\n }\n return; // don't resize!\n }\n var changedCols = [];\n var allResizedCols = [];\n resizeSets.forEach(function (set) {\n var width = set.width, columns = set.columns, ratios = set.ratios;\n // keep track of pixels used, and last column gets the remaining,\n // to cater for rounding errors, and min width adjustments\n var newWidths = {};\n var finishedCols = {};\n columns.forEach(function (col) { return allResizedCols.push(col); });\n // the loop below goes through each col. if a col exceeds it's min/max width,\n // it then gets set to its min/max width and the column is removed marked as 'finished'\n // and the calculation is done again leaving this column out. take for example columns\n // {A, width: 50, maxWidth: 100}\n // {B, width: 50}\n // {C, width: 50}\n // and then the set is set to width 600 - on the first pass the grid tries to set each column\n // to 200. it checks A and sees 200 > 100 and so sets the width to 100. col A is then marked\n // as 'finished' and the calculation is done again with the remaining cols B and C, which end up\n // splitting the remaining 500 pixels.\n var finishedColsGrew = true;\n var loopCount = 0;\n var _loop_2 = function () {\n loopCount++;\n if (loopCount > 1000) {\n // this should never happen, but in the future, someone might introduce a bug here,\n // so we stop the browser from hanging and report bug properly\n console.error('AG Grid: infinite loop in resizeColumnSets');\n return \"break\";\n }\n finishedColsGrew = false;\n var subsetCols = [];\n var subsetRatioTotal = 0;\n var pixelsToDistribute = width;\n columns.forEach(function (col, index) {\n var thisColFinished = finishedCols[col.getId()];\n if (thisColFinished) {\n pixelsToDistribute -= newWidths[col.getId()];\n }\n else {\n subsetCols.push(col);\n var ratioThisCol = ratios[index];\n subsetRatioTotal += ratioThisCol;\n }\n });\n // because we are not using all of the ratios (cols can be missing),\n // we scale the ratio. if all columns are included, then subsetRatioTotal=1,\n // and so the ratioScale will be 1.\n var ratioScale = 1 / subsetRatioTotal;\n subsetCols.forEach(function (col, index) {\n var lastCol = index === (subsetCols.length - 1);\n var colNewWidth;\n if (lastCol) {\n colNewWidth = pixelsToDistribute;\n }\n else {\n colNewWidth = Math.round(ratios[index] * width * ratioScale);\n pixelsToDistribute -= colNewWidth;\n }\n var minWidth = col.getMinWidth();\n var maxWidth = col.getMaxWidth();\n if (exists(minWidth) && colNewWidth < minWidth) {\n colNewWidth = minWidth;\n finishedCols[col.getId()] = true;\n finishedColsGrew = true;\n }\n else if (exists(maxWidth) && maxWidth > 0 && colNewWidth > maxWidth) {\n colNewWidth = maxWidth;\n finishedCols[col.getId()] = true;\n finishedColsGrew = true;\n }\n newWidths[col.getId()] = colNewWidth;\n });\n };\n while (finishedColsGrew) {\n var state_1 = _loop_2();\n if (state_1 === \"break\")\n break;\n }\n columns.forEach(function (col) {\n var newWidth = newWidths[col.getId()];\n var actualWidth = col.getActualWidth();\n if (actualWidth !== newWidth) {\n col.setActualWidth(newWidth, source);\n changedCols.push(col);\n }\n });\n });\n // if no cols changed, then no need to update more or send event.\n var atLeastOneColChanged = changedCols.length > 0;\n var flexedCols = this.refreshFlexedColumns({ resizingCols: allResizedCols, skipSetLeft: true });\n if (atLeastOneColChanged) {\n this.setLeftValues(source);\n this.updateBodyWidths();\n this.checkViewportColumns();\n }\n // check for change first, to avoid unnecessary firing of events\n // however we always fire 'finished' events. this is important\n // when groups are resized, as if the group is changing slowly,\n // eg 1 pixel at a time, then each change will fire change events\n // in all the columns in the group, but only one with get the pixel.\n var colsForEvent = allResizedCols.concat(flexedCols);\n if (atLeastOneColChanged || finished) {\n this.fireColumnResizedEvent(colsForEvent, finished, source, flexedCols);\n }\n };\n ColumnModel.prototype.setColumnAggFunc = function (key, aggFunc, source) {\n if (source === void 0) { source = \"api\"; }\n if (!key) {\n return;\n }\n var column = this.getPrimaryColumn(key);\n if (!column) {\n return;\n }\n column.setAggFunc(aggFunc);\n this.fireColumnEvent(Events.EVENT_COLUMN_VALUE_CHANGED, [column], source);\n };\n ColumnModel.prototype.fireColumnEvent = function (type, columns, source) {\n var event = {\n type: type,\n columns: columns,\n column: (columns && columns.length == 1) ? columns[0] : null,\n api: this.gridApi,\n columnApi: this.columnApi,\n source: source\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnModel.prototype.moveRowGroupColumn = function (fromIndex, toIndex, source) {\n if (source === void 0) { source = \"api\"; }\n var column = this.rowGroupColumns[fromIndex];\n this.rowGroupColumns.splice(fromIndex, 1);\n this.rowGroupColumns.splice(toIndex, 0, column);\n var event = {\n type: Events.EVENT_COLUMN_ROW_GROUP_CHANGED,\n columns: this.rowGroupColumns,\n column: this.rowGroupColumns.length === 1 ? this.rowGroupColumns[0] : null,\n api: this.gridApi,\n columnApi: this.columnApi,\n source: source\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnModel.prototype.moveColumns = function (columnsToMoveKeys, toIndex, source) {\n if (source === void 0) { source = \"api\"; }\n this.columnAnimationService.start();\n if (toIndex > this.gridColumns.length - columnsToMoveKeys.length) {\n console.warn('AG Grid: tried to insert columns in invalid location, toIndex = ' + toIndex);\n console.warn('AG Grid: remember that you should not count the moving columns when calculating the new index');\n return;\n }\n // we want to pull all the columns out first and put them into an ordered list\n var columnsToMove = this.getGridColumns(columnsToMoveKeys);\n var failedRules = !this.doesMovePassRules(columnsToMove, toIndex);\n if (failedRules) {\n return;\n }\n moveInArray(this.gridColumns, columnsToMove, toIndex);\n this.updateDisplayedColumns(source);\n var event = {\n type: Events.EVENT_COLUMN_MOVED,\n columns: columnsToMove,\n column: columnsToMove.length === 1 ? columnsToMove[0] : null,\n toIndex: toIndex,\n api: this.gridApi,\n columnApi: this.columnApi,\n source: source\n };\n this.eventService.dispatchEvent(event);\n this.columnAnimationService.finish();\n };\n ColumnModel.prototype.doesMovePassRules = function (columnsToMove, toIndex) {\n // make a copy of what the grid columns would look like after the move\n var proposedColumnOrder = this.gridColumns.slice();\n moveInArray(proposedColumnOrder, columnsToMove, toIndex);\n // then check that the new proposed order of the columns passes all rules\n if (!this.doesMovePassMarryChildren(proposedColumnOrder)) {\n return false;\n }\n if (!this.doesMovePassLockedPositions(proposedColumnOrder)) {\n return false;\n }\n return true;\n };\n // returns the provided cols sorted in same order as they appear in grid columns. eg if grid columns\n // contains [a,b,c,d,e] and col passed is [e,a] then the passed cols are sorted into [a,e]\n ColumnModel.prototype.sortColumnsLikeGridColumns = function (cols) {\n var _this = this;\n if (!cols || cols.length <= 1) {\n return;\n }\n var notAllColsInGridColumns = cols.filter(function (c) { return _this.gridColumns.indexOf(c) < 0; }).length > 0;\n if (notAllColsInGridColumns) {\n return;\n }\n cols.sort(function (a, b) {\n var indexA = _this.gridColumns.indexOf(a);\n var indexB = _this.gridColumns.indexOf(b);\n return indexA - indexB;\n });\n };\n ColumnModel.prototype.doesMovePassLockedPositions = function (proposedColumnOrder) {\n var foundNonLocked = false;\n var rulePassed = true;\n // go though the cols, see if any non-locked appear before any locked\n proposedColumnOrder.forEach(function (col) {\n if (col.getColDef().lockPosition) {\n if (foundNonLocked) {\n rulePassed = false;\n }\n }\n else {\n foundNonLocked = true;\n }\n });\n return rulePassed;\n };\n ColumnModel.prototype.doesMovePassMarryChildren = function (allColumnsCopy) {\n var rulePassed = true;\n this.columnUtils.depthFirstOriginalTreeSearch(null, this.gridBalancedTree, function (child) {\n if (!(child instanceof ProvidedColumnGroup)) {\n return;\n }\n var columnGroup = child;\n var colGroupDef = columnGroup.getColGroupDef();\n var marryChildren = colGroupDef && colGroupDef.marryChildren;\n if (!marryChildren) {\n return;\n }\n var newIndexes = [];\n columnGroup.getLeafColumns().forEach(function (col) {\n var newColIndex = allColumnsCopy.indexOf(col);\n newIndexes.push(newColIndex);\n });\n var maxIndex = Math.max.apply(Math, newIndexes);\n var minIndex = Math.min.apply(Math, newIndexes);\n // spread is how far the first column in this group is away from the last column\n var spread = maxIndex - minIndex;\n var maxSpread = columnGroup.getLeafColumns().length - 1;\n // if the columns\n if (spread > maxSpread) {\n rulePassed = false;\n }\n // console.log(`maxIndex = ${maxIndex}, minIndex = ${minIndex}, spread = ${spread}, maxSpread = ${maxSpread}, fail = ${spread > (count-1)}`)\n // console.log(allColumnsCopy.map( col => col.getColDef().field).join(','));\n });\n return rulePassed;\n };\n ColumnModel.prototype.moveColumn = function (key, toIndex, source) {\n if (source === void 0) { source = \"api\"; }\n this.moveColumns([key], toIndex, source);\n };\n ColumnModel.prototype.moveColumnByIndex = function (fromIndex, toIndex, source) {\n if (source === void 0) { source = \"api\"; }\n var column = this.gridColumns[fromIndex];\n this.moveColumn(column, toIndex, source);\n };\n ColumnModel.prototype.getColumnDefs = function () {\n var _this = this;\n if (!this.primaryColumns) {\n return;\n }\n var cols = this.primaryColumns.slice();\n if (this.gridColsArePrimary) {\n cols.sort(function (a, b) { return _this.gridColumns.indexOf(a) - _this.gridColumns.indexOf(b); });\n }\n else if (this.lastPrimaryOrder) {\n cols.sort(function (a, b) { return _this.lastPrimaryOrder.indexOf(a) - _this.lastPrimaryOrder.indexOf(b); });\n }\n return this.columnDefFactory.buildColumnDefs(cols, this.rowGroupColumns, this.pivotColumns);\n };\n // used by:\n // + angularGrid -> for setting body width\n // + rowController -> setting main row widths (when inserting and resizing)\n // need to cache this\n ColumnModel.prototype.getBodyContainerWidth = function () {\n return this.bodyWidth;\n };\n ColumnModel.prototype.getContainerWidth = function (pinned) {\n switch (pinned) {\n case Constants.PINNED_LEFT:\n return this.leftWidth;\n case Constants.PINNED_RIGHT:\n return this.rightWidth;\n default:\n return this.bodyWidth;\n }\n };\n // after setColumnWidth or updateGroupsAndDisplayedColumns\n ColumnModel.prototype.updateBodyWidths = function () {\n var newBodyWidth = this.getWidthOfColsInList(this.displayedColumnsCenter);\n var newLeftWidth = this.getWidthOfColsInList(this.displayedColumnsLeft);\n var newRightWidth = this.getWidthOfColsInList(this.displayedColumnsRight);\n // this is used by virtual col calculation, for RTL only, as a change to body width can impact displayed\n // columns, due to RTL inverting the y coordinates\n this.bodyWidthDirty = this.bodyWidth !== newBodyWidth;\n var atLeastOneChanged = this.bodyWidth !== newBodyWidth || this.leftWidth !== newLeftWidth || this.rightWidth !== newRightWidth;\n if (atLeastOneChanged) {\n this.bodyWidth = newBodyWidth;\n this.leftWidth = newLeftWidth;\n this.rightWidth = newRightWidth;\n // when this fires, it is picked up by the gridPanel, which ends up in\n // gridPanel calling setWidthAndScrollPosition(), which in turn calls setViewportPosition()\n var event_3 = {\n type: Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event_3);\n }\n };\n // + rowController\n ColumnModel.prototype.getValueColumns = function () {\n return this.valueColumns ? this.valueColumns : [];\n };\n // + rowController\n ColumnModel.prototype.getPivotColumns = function () {\n return this.pivotColumns ? this.pivotColumns : [];\n };\n // + clientSideRowModel\n ColumnModel.prototype.isPivotActive = function () {\n return this.pivotColumns && this.pivotColumns.length > 0 && this.pivotMode;\n };\n // + toolPanel\n ColumnModel.prototype.getRowGroupColumns = function () {\n return this.rowGroupColumns ? this.rowGroupColumns : [];\n };\n // + rowController -> while inserting rows\n ColumnModel.prototype.getDisplayedCenterColumns = function () {\n return this.displayedColumnsCenter;\n };\n // + rowController -> while inserting rows\n ColumnModel.prototype.getDisplayedLeftColumns = function () {\n return this.displayedColumnsLeft;\n };\n ColumnModel.prototype.getDisplayedRightColumns = function () {\n return this.displayedColumnsRight;\n };\n ColumnModel.prototype.getDisplayedColumns = function (type) {\n switch (type) {\n case Constants.PINNED_LEFT:\n return this.getDisplayedLeftColumns();\n case Constants.PINNED_RIGHT:\n return this.getDisplayedRightColumns();\n default:\n return this.getDisplayedCenterColumns();\n }\n };\n // used by:\n // + clientSideRowController -> sorting, building quick filter text\n // + headerRenderer -> sorting (clearing icon)\n ColumnModel.prototype.getAllPrimaryColumns = function () {\n return this.primaryColumns ? this.primaryColumns.slice() : null;\n };\n ColumnModel.prototype.getSecondaryColumns = function () {\n return this.secondaryColumns ? this.secondaryColumns.slice() : null;\n };\n ColumnModel.prototype.getAllColumnsForQuickFilter = function () {\n return this.columnsForQuickFilter;\n };\n // + moveColumnController\n ColumnModel.prototype.getAllGridColumns = function () {\n return this.gridColumns;\n };\n ColumnModel.prototype.isEmpty = function () {\n return missingOrEmpty(this.gridColumns);\n };\n ColumnModel.prototype.isRowGroupEmpty = function () {\n return missingOrEmpty(this.rowGroupColumns);\n };\n ColumnModel.prototype.setColumnVisible = function (key, visible, source) {\n if (source === void 0) { source = \"api\"; }\n this.setColumnsVisible([key], visible, source);\n };\n ColumnModel.prototype.setColumnsVisible = function (keys, visible, source) {\n var _this = this;\n if (visible === void 0) { visible = false; }\n if (source === void 0) { source = \"api\"; }\n this.columnAnimationService.start();\n this.actionOnGridColumns(keys, function (column) {\n if (column.isVisible() !== visible) {\n column.setVisible(visible, source);\n return true;\n }\n return false;\n }, source, function () {\n var event = {\n type: Events.EVENT_COLUMN_VISIBLE,\n visible: visible,\n column: null,\n columns: null,\n api: _this.gridApi,\n columnApi: _this.columnApi,\n source: source\n };\n return event;\n });\n this.columnAnimationService.finish();\n };\n ColumnModel.prototype.setColumnPinned = function (key, pinned, source) {\n if (source === void 0) { source = \"api\"; }\n if (key) {\n this.setColumnsPinned([key], pinned, source);\n }\n };\n ColumnModel.prototype.setColumnsPinned = function (keys, pinned, source) {\n var _this = this;\n if (source === void 0) { source = \"api\"; }\n if (this.gridOptionsWrapper.getDomLayout() === 'print') {\n console.warn(\"Changing the column pinning status is not allowed with domLayout='print'\");\n return;\n }\n this.columnAnimationService.start();\n var actualPinned;\n if (pinned === true || pinned === Constants.PINNED_LEFT) {\n actualPinned = Constants.PINNED_LEFT;\n }\n else if (pinned === Constants.PINNED_RIGHT) {\n actualPinned = Constants.PINNED_RIGHT;\n }\n else {\n actualPinned = null;\n }\n this.actionOnGridColumns(keys, function (col) {\n if (col.getPinned() !== actualPinned) {\n col.setPinned(actualPinned);\n return true;\n }\n return false;\n }, source, function () {\n var event = {\n type: Events.EVENT_COLUMN_PINNED,\n pinned: actualPinned,\n column: null,\n columns: null,\n api: _this.gridApi,\n columnApi: _this.columnApi,\n source: source\n };\n return event;\n });\n this.columnAnimationService.finish();\n };\n // does an action on a set of columns. provides common functionality for looking up the\n // columns based on key, getting a list of effected columns, and then updated the event\n // with either one column (if it was just one col) or a list of columns\n // used by: autoResize, setVisible, setPinned\n ColumnModel.prototype.actionOnGridColumns = function (// the column keys this action will be on\n keys, \n // the action to do - if this returns false, the column was skipped\n // and won't be included in the event\n action, \n // should return back a column event of the right type\n source, createEvent) {\n var _this = this;\n if (missingOrEmpty(keys)) {\n return;\n }\n var updatedColumns = [];\n keys.forEach(function (key) {\n var column = _this.getGridColumn(key);\n if (!column) {\n return;\n }\n // need to check for false with type (ie !== instead of !=)\n // as not returning anything (undefined) would also be false\n var resultOfAction = action(column);\n if (resultOfAction !== false) {\n updatedColumns.push(column);\n }\n });\n if (!updatedColumns.length) {\n return;\n }\n this.updateDisplayedColumns(source);\n if (exists(createEvent) && createEvent) {\n var event_4 = createEvent();\n event_4.columns = updatedColumns;\n event_4.column = updatedColumns.length === 1 ? updatedColumns[0] : null;\n this.eventService.dispatchEvent(event_4);\n }\n };\n ColumnModel.prototype.getDisplayedColBefore = function (col) {\n var allDisplayedColumns = this.getAllDisplayedColumns();\n var oldIndex = allDisplayedColumns.indexOf(col);\n if (oldIndex > 0) {\n return allDisplayedColumns[oldIndex - 1];\n }\n return null;\n };\n // used by:\n // + rowRenderer -> for navigation\n ColumnModel.prototype.getDisplayedColAfter = function (col) {\n var allDisplayedColumns = this.getAllDisplayedColumns();\n var oldIndex = allDisplayedColumns.indexOf(col);\n if (oldIndex < (allDisplayedColumns.length - 1)) {\n return allDisplayedColumns[oldIndex + 1];\n }\n return null;\n };\n ColumnModel.prototype.getDisplayedGroupAfter = function (columnGroup) {\n return this.getDisplayedGroupAtDirection(columnGroup, 'After');\n };\n ColumnModel.prototype.getDisplayedGroupBefore = function (columnGroup) {\n return this.getDisplayedGroupAtDirection(columnGroup, 'Before');\n };\n ColumnModel.prototype.getDisplayedGroupAtDirection = function (columnGroup, direction) {\n // pick the last displayed column in this group\n var requiredLevel = columnGroup.getProvidedColumnGroup().getLevel() + columnGroup.getPaddingLevel();\n var colGroupLeafColumns = columnGroup.getDisplayedLeafColumns();\n var col = direction === 'After' ? last(colGroupLeafColumns) : colGroupLeafColumns[0];\n var getDisplayColMethod = \"getDisplayedCol\" + direction;\n while (true) {\n // keep moving to the next col, until we get to another group\n var column = this[getDisplayColMethod](col);\n if (!column) {\n return null;\n }\n var groupPointer = this.getColumnGroupAtLevel(column, requiredLevel);\n if (groupPointer !== columnGroup) {\n return groupPointer;\n }\n }\n };\n ColumnModel.prototype.getColumnGroupAtLevel = function (column, level) {\n // get group at same level as the one we are looking for\n var groupPointer = column.getParent();\n var originalGroupLevel;\n var groupPointerLevel;\n while (true) {\n var groupPointerProvidedColumnGroup = groupPointer.getProvidedColumnGroup();\n originalGroupLevel = groupPointerProvidedColumnGroup.getLevel();\n groupPointerLevel = groupPointer.getPaddingLevel();\n if (originalGroupLevel + groupPointerLevel <= level) {\n break;\n }\n groupPointer = groupPointer.getParent();\n }\n return groupPointer;\n };\n ColumnModel.prototype.isPinningLeft = function () {\n return this.displayedColumnsLeft.length > 0;\n };\n ColumnModel.prototype.isPinningRight = function () {\n return this.displayedColumnsRight.length > 0;\n };\n ColumnModel.prototype.getPrimaryAndSecondaryAndAutoColumns = function () {\n var result = this.primaryColumns ? this.primaryColumns.slice(0) : [];\n if (this.groupAutoColumns && exists(this.groupAutoColumns)) {\n this.groupAutoColumns.forEach(function (col) { return result.push(col); });\n }\n if (this.secondaryColumnsPresent && this.secondaryColumns) {\n this.secondaryColumns.forEach(function (column) { return result.push(column); });\n }\n return result;\n };\n ColumnModel.prototype.createStateItemFromColumn = function (column) {\n var rowGroupIndex = column.isRowGroupActive() ? this.rowGroupColumns.indexOf(column) : null;\n var pivotIndex = column.isPivotActive() ? this.pivotColumns.indexOf(column) : null;\n var aggFunc = column.isValueActive() ? column.getAggFunc() : null;\n var sort = column.getSort() != null ? column.getSort() : null;\n var sortIndex = column.getSortIndex() != null ? column.getSortIndex() : null;\n var flex = column.getFlex() != null && column.getFlex() > 0 ? column.getFlex() : null;\n var res = {\n colId: column.getColId(),\n width: column.getActualWidth(),\n hide: !column.isVisible(),\n pinned: column.getPinned(),\n sort: sort,\n sortIndex: sortIndex,\n aggFunc: aggFunc,\n rowGroup: column.isRowGroupActive(),\n rowGroupIndex: rowGroupIndex,\n pivot: column.isPivotActive(),\n pivotIndex: pivotIndex,\n flex: flex\n };\n return res;\n };\n ColumnModel.prototype.getColumnState = function () {\n if (missing(this.primaryColumns) || !this.isAlive()) {\n return [];\n }\n var colsForState = this.getPrimaryAndSecondaryAndAutoColumns();\n var res = colsForState.map(this.createStateItemFromColumn.bind(this));\n if (!this.pivotMode) {\n this.orderColumnStateList(res);\n }\n return res;\n };\n ColumnModel.prototype.getPrimaryAndAutoGroupCols = function () {\n if (!this.groupAutoColumns) {\n return this.primaryColumns;\n }\n return __spread((this.primaryColumns || []), this.groupAutoColumns);\n };\n ColumnModel.prototype.orderColumnStateList = function (columnStateList) {\n // for fast looking, store the index of each column\n var gridColumnIdMap = convertToMap(this.gridColumns.map(function (col, index) { return [col.getColId(), index]; }));\n columnStateList.sort(function (itemA, itemB) {\n var posA = gridColumnIdMap.has(itemA.colId) ? gridColumnIdMap.get(itemA.colId) : -1;\n var posB = gridColumnIdMap.has(itemB.colId) ? gridColumnIdMap.get(itemB.colId) : -1;\n return posA - posB;\n });\n };\n ColumnModel.prototype.resetColumnState = function (source) {\n // NOTE = there is one bug here that no customer has noticed - if a column has colDef.lockPosition,\n // this is ignored below when ordering the cols. to work, we should always put lockPosition cols first.\n // As a work around, developers should just put lockPosition columns first in their colDef list.\n if (source === void 0) { source = \"api\"; }\n // we can't use 'allColumns' as the order might of messed up, so get the primary ordered list\n var primaryColumns = this.getColumnsFromTree(this.primaryColumnTree);\n var columnStates = [];\n // we start at 1000, so if user has mix of rowGroup and group specified, it will work with both.\n // eg IF user has ColA.rowGroupIndex=0, ColB.rowGroupIndex=1, ColC.rowGroup=true,\n // THEN result will be ColA.rowGroupIndex=0, ColB.rowGroupIndex=1, ColC.rowGroup=1000\n var letRowGroupIndex = 1000;\n var letPivotIndex = 1000;\n var colsToProcess = [];\n if (this.groupAutoColumns) {\n colsToProcess = colsToProcess.concat(this.groupAutoColumns);\n }\n if (primaryColumns) {\n colsToProcess = colsToProcess.concat(primaryColumns);\n }\n colsToProcess.forEach(function (column) {\n var getValueOrNull = function (a, b) { return a != null ? a : b != null ? b : null; };\n var colDef = column.getColDef();\n var sort = getValueOrNull(colDef.sort, colDef.initialSort);\n var sortIndex = getValueOrNull(colDef.sortIndex, colDef.initialSortIndex);\n var hide = getValueOrNull(colDef.hide, colDef.initialHide);\n var pinned = getValueOrNull(colDef.pinned, colDef.initialPinned);\n var width = getValueOrNull(colDef.width, colDef.initialWidth);\n var flex = getValueOrNull(colDef.flex, colDef.initialFlex);\n var rowGroupIndex = getValueOrNull(colDef.rowGroupIndex, colDef.initialRowGroupIndex);\n var rowGroup = getValueOrNull(colDef.rowGroup, colDef.initialRowGroup);\n if (rowGroupIndex == null && (rowGroup == null || rowGroup == false)) {\n rowGroupIndex = null;\n rowGroup = null;\n }\n var pivotIndex = getValueOrNull(colDef.pivotIndex, colDef.initialPivotIndex);\n var pivot = getValueOrNull(colDef.pivot, colDef.initialPivot);\n if (pivotIndex == null && (pivot == null || pivot == false)) {\n pivotIndex = null;\n pivot = null;\n }\n var aggFunc = getValueOrNull(colDef.aggFunc, colDef.initialAggFunc);\n var stateItem = {\n colId: column.getColId(),\n sort: sort,\n sortIndex: sortIndex,\n hide: hide,\n pinned: pinned,\n width: width,\n flex: flex,\n rowGroup: rowGroup,\n rowGroupIndex: rowGroupIndex,\n pivot: pivot,\n pivotIndex: pivotIndex,\n aggFunc: aggFunc,\n };\n if (missing(rowGroupIndex) && rowGroup) {\n stateItem.rowGroupIndex = letRowGroupIndex++;\n }\n if (missing(pivotIndex) && pivot) {\n stateItem.pivotIndex = letPivotIndex++;\n }\n columnStates.push(stateItem);\n });\n this.applyColumnState({ state: columnStates, applyOrder: true }, source);\n };\n ColumnModel.prototype.applyColumnState = function (params, source) {\n var _this = this;\n if (source === void 0) { source = \"api\"; }\n if (missingOrEmpty(this.primaryColumns)) {\n return false;\n }\n if (params && params.state && !params.state.forEach) {\n console.warn('AG Grid: applyColumnState() - the state attribute should be an array, however an array was not found. Please provide an array of items (one for each col you want to change) for state.');\n return false;\n }\n this.columnAnimationService.start();\n var raiseEventsFunc = this.compareColumnStatesAndRaiseEvents(source);\n this.autoGroupsNeedBuilding = true;\n // at the end below, this list will have all columns we got no state for\n var columnsWithNoState = this.primaryColumns.slice();\n var success = true;\n var rowGroupIndexes = {};\n var pivotIndexes = {};\n var autoGroupColumnStates = [];\n var previousRowGroupCols = this.rowGroupColumns.slice();\n var previousPivotCols = this.pivotColumns.slice();\n if (params.state) {\n params.state.forEach(function (state) {\n var groupAutoColumnId = Constants.GROUP_AUTO_COLUMN_ID;\n var colId = state.colId || '';\n // auto group columns are re-created so deferring syncing with ColumnState\n var isAutoGroupColumn = colId.startsWith(groupAutoColumnId);\n if (isAutoGroupColumn) {\n autoGroupColumnStates.push(state);\n return;\n }\n var column = _this.getPrimaryColumn(colId);\n if (!column) {\n // we don't log the failure, as it's possible the user is applying that has extra\n // cols in it. for example they could of save while row-grouping (so state includes\n // auto-group column) and then applied state when not grouping (so the auto-group\n // column would be in the state but no used).\n success = false;\n }\n else {\n _this.syncColumnWithStateItem(column, state, params.defaultState, rowGroupIndexes, pivotIndexes, false, source);\n removeFromArray(columnsWithNoState, column);\n }\n });\n }\n // anything left over, we got no data for, so add in the column as non-value, non-rowGroup and hidden\n var applyDefaultsFunc = function (col) {\n return _this.syncColumnWithStateItem(col, null, params.defaultState, rowGroupIndexes, pivotIndexes, false, source);\n };\n columnsWithNoState.forEach(applyDefaultsFunc);\n // sort the lists according to the indexes that were provided\n var comparator = function (indexes, oldList, colA, colB) {\n var indexA = indexes[colA.getId()];\n var indexB = indexes[colB.getId()];\n var aHasIndex = indexA != null;\n var bHasIndex = indexB != null;\n if (aHasIndex && bHasIndex) {\n // both a and b are new cols with index, so sort on index\n return indexA - indexB;\n }\n if (aHasIndex) {\n // a has an index, so it should be before a\n return -1;\n }\n if (bHasIndex) {\n // b has an index, so it should be before a\n return 1;\n }\n var oldIndexA = oldList.indexOf(colA);\n var oldIndexB = oldList.indexOf(colB);\n var aHasOldIndex = oldIndexA >= 0;\n var bHasOldIndex = oldIndexB >= 0;\n if (aHasOldIndex && bHasOldIndex) {\n // both a and b are old cols, so sort based on last order\n return oldIndexA - oldIndexB;\n }\n if (aHasOldIndex) {\n // a is old, b is new, so b is first\n return -1;\n }\n // this bit does matter, means both are new cols\n // but without index or that b is old and a is new\n return 1;\n };\n this.rowGroupColumns.sort(comparator.bind(this, rowGroupIndexes, previousRowGroupCols));\n this.pivotColumns.sort(comparator.bind(this, pivotIndexes, previousPivotCols));\n this.updateGridColumns();\n // sync newly created auto group columns with ColumnState\n var autoGroupColsCopy = this.groupAutoColumns ? this.groupAutoColumns.slice() : [];\n autoGroupColumnStates.forEach(function (stateItem) {\n var autoCol = _this.getAutoColumn(stateItem.colId);\n removeFromArray(autoGroupColsCopy, autoCol);\n _this.syncColumnWithStateItem(autoCol, stateItem, params.defaultState, null, null, true, source);\n });\n // autogroup cols with nothing else, apply the default\n autoGroupColsCopy.forEach(applyDefaultsFunc);\n this.applyOrderAfterApplyState(params);\n this.updateDisplayedColumns(source);\n this.dispatchEverythingChanged(source);\n raiseEventsFunc();\n this.columnAnimationService.finish();\n return success;\n };\n ColumnModel.prototype.applyOrderAfterApplyState = function (params) {\n if (!this.gridColsArePrimary || !params.applyOrder || !params.state) {\n return;\n }\n var newOrder = [];\n var processedColIds = {};\n var gridColumnsMap = {};\n this.gridColumns.forEach(function (col) { return gridColumnsMap[col.getId()] = col; });\n params.state.forEach(function (item) {\n if (!item.colId || processedColIds[item.colId]) {\n return;\n }\n var col = gridColumnsMap[item.colId];\n if (col) {\n newOrder.push(col);\n processedColIds[item.colId] = true;\n }\n });\n // add in all other columns\n var autoGroupInsertIndex = 0;\n this.gridColumns.forEach(function (col) {\n var colId = col.getColId();\n var alreadyProcessed = processedColIds[colId] != null;\n if (alreadyProcessed) {\n return;\n }\n var isAutoGroupCol = colId.startsWith(Constants.GROUP_AUTO_COLUMN_ID);\n if (isAutoGroupCol) {\n // auto group columns, if missing from state list, are added to the start.\n // it's common to have autoGroup missing, as grouping could be on by default\n // on a column, but the user could of since removed the grouping via the UI.\n // if we don't inc the insert index, autoGroups will be inserted in reverse order\n insertIntoArray(newOrder, col, autoGroupInsertIndex++);\n }\n else {\n // normal columns, if missing from state list, are added at the end\n newOrder.push(col);\n }\n });\n // this is already done in updateGridColumns, however we changed the order above (to match the order of the state\n // columns) so we need to do it again. we could of put logic into the order above to take into account fixed\n // columns, however if we did then we would have logic for updating fixed columns twice. reusing the logic here\n // is less sexy for the code here, but it keeps consistency.\n newOrder = this.putFixedColumnsFirst(newOrder);\n if (!this.doesMovePassMarryChildren(newOrder)) {\n console.warn('AG Grid: Applying column order broke a group where columns should be married together. Applying new order has been discarded.');\n return;\n }\n this.gridColumns = newOrder;\n };\n ColumnModel.prototype.compareColumnStatesAndRaiseEvents = function (source) {\n var _this = this;\n var startState = {\n rowGroupColumns: this.rowGroupColumns.slice(),\n pivotColumns: this.pivotColumns.slice(),\n valueColumns: this.valueColumns.slice()\n };\n var columnStateBefore = this.getColumnState();\n var columnStateBeforeMap = {};\n columnStateBefore.forEach(function (col) {\n columnStateBeforeMap[col.colId] = col;\n });\n return function () {\n if (_this.gridOptionsWrapper.isSuppressColumnStateEvents()) {\n return;\n }\n var colsForState = _this.getPrimaryAndAutoGroupCols();\n // raises generic ColumnEvents where all columns are returned rather than what has changed\n var raiseWhenListsDifferent = function (eventType, colsBefore, colsAfter, idMapper) {\n var beforeList = colsBefore.map(idMapper);\n var afterList = colsAfter.map(idMapper);\n var unchanged = areEqual(beforeList, afterList);\n if (unchanged) {\n return;\n }\n // returning all columns rather than what has changed!\n var event = {\n type: eventType,\n columns: colsAfter,\n column: colsAfter.length === 1 ? colsAfter[0] : null,\n api: _this.gridApi,\n columnApi: _this.columnApi,\n source: source\n };\n _this.eventService.dispatchEvent(event);\n };\n // determines which columns have changed according to supplied predicate\n var getChangedColumns = function (changedPredicate) {\n var changedColumns = [];\n (colsForState || []).forEach(function (column) {\n var colStateBefore = columnStateBeforeMap[column.getColId()];\n if (colStateBefore && changedPredicate(colStateBefore, column)) {\n changedColumns.push(column);\n }\n });\n return changedColumns;\n };\n var columnIdMapper = function (c) { return c.getColId(); };\n raiseWhenListsDifferent(Events.EVENT_COLUMN_ROW_GROUP_CHANGED, startState.rowGroupColumns, _this.rowGroupColumns, columnIdMapper);\n raiseWhenListsDifferent(Events.EVENT_COLUMN_PIVOT_CHANGED, startState.pivotColumns, _this.pivotColumns, columnIdMapper);\n var valueChangePredicate = function (cs, c) {\n var oldActive = cs.aggFunc != null;\n var activeChanged = oldActive != c.isValueActive();\n // we only check aggFunc if the agg is active\n var aggFuncChanged = oldActive && cs.aggFunc != c.getAggFunc();\n return activeChanged || aggFuncChanged;\n };\n var changedValues = getChangedColumns(valueChangePredicate);\n if (changedValues.length > 0) {\n // we pass all value columns, now the ones that changed. this is the same\n // as pivot and rowGroup cols, but different to all other properties below.\n // this is more for backwards compatibility, as it's always been this way.\n // really it should be the other way, as the order of the cols makes no difference\n // for valueColumns (apart from displaying them in the tool panel).\n _this.fireColumnEvent(Events.EVENT_COLUMN_VALUE_CHANGED, _this.valueColumns, source);\n }\n var resizeChangePredicate = function (cs, c) { return cs.width != c.getActualWidth(); };\n _this.fireColumnResizedEvent(getChangedColumns(resizeChangePredicate), true, source);\n var pinnedChangePredicate = function (cs, c) { return cs.pinned != c.getPinned(); };\n _this.raiseColumnPinnedEvent(getChangedColumns(pinnedChangePredicate), source);\n var visibilityChangePredicate = function (cs, c) { return cs.hide == c.isVisible(); };\n _this.raiseColumnVisibleEvent(getChangedColumns(visibilityChangePredicate), source);\n var sortChangePredicate = function (cs, c) { return cs.sort != c.getSort() || cs.sortIndex != c.getSortIndex(); };\n if (getChangedColumns(sortChangePredicate).length > 0) {\n _this.sortController.dispatchSortChangedEvents();\n }\n // special handling for moved column events\n _this.raiseColumnMovedEvent(columnStateBefore, source);\n };\n };\n ColumnModel.prototype.raiseColumnPinnedEvent = function (changedColumns, source) {\n if (!changedColumns.length) {\n return;\n }\n // if just one column, we use this, otherwise we don't include the col\n var column = changedColumns.length === 1 ? changedColumns[0] : null;\n // only include visible if it's common in all columns\n var pinned = this.getCommonValue(changedColumns, function (col) { return col.getPinned(); });\n var event = {\n type: Events.EVENT_COLUMN_PINNED,\n // mistake in typing, 'undefined' should be allowed, as 'null' means 'not pinned'\n pinned: pinned != null ? pinned : null,\n columns: changedColumns,\n column: column,\n api: this.gridApi,\n columnApi: this.columnApi,\n source: source\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnModel.prototype.getCommonValue = function (cols, valueGetter) {\n if (!cols || cols.length == 0) {\n return undefined;\n }\n // compare each value to the first value. if nothing differs, then value is common so return it.\n var firstValue = valueGetter(cols[0]);\n for (var i = 1; i < cols.length; i++) {\n if (firstValue !== valueGetter(cols[i])) {\n // values differ, no common value\n return undefined;\n }\n }\n return firstValue;\n };\n ColumnModel.prototype.raiseColumnVisibleEvent = function (changedColumns, source) {\n if (!changedColumns.length) {\n return;\n }\n // if just one column, we use this, otherwise we don't include the col\n var column = changedColumns.length === 1 ? changedColumns[0] : null;\n // only include visible if it's common in all columns\n var visible = this.getCommonValue(changedColumns, function (col) { return col.isVisible(); });\n var event = {\n type: Events.EVENT_COLUMN_VISIBLE,\n visible: visible,\n columns: changedColumns,\n column: column,\n api: this.gridApi,\n columnApi: this.columnApi,\n source: source\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnModel.prototype.raiseColumnMovedEvent = function (colStateBefore, source) {\n // we are only interested in columns that were both present and visible before and after\n var _this = this;\n var colStateAfter = this.getColumnState();\n var colStateAfterMapped = {};\n colStateAfter.forEach(function (s) { return colStateAfterMapped[s.colId] = s; });\n // get id's of cols in both before and after lists\n var colsIntersectIds = {};\n colStateBefore.forEach(function (s) {\n if (colStateAfterMapped[s.colId]) {\n colsIntersectIds[s.colId] = true;\n }\n });\n // filter state lists, so we only have cols that were present before and after\n var beforeFiltered = colStateBefore.filter(function (c) { return colsIntersectIds[c.colId]; });\n var afterFiltered = colStateAfter.filter(function (c) { return colsIntersectIds[c.colId]; });\n // see if any cols are in a different location\n var movedColumns = [];\n afterFiltered.forEach(function (csAfter, index) {\n var csBefore = beforeFiltered && beforeFiltered[index];\n if (csBefore && csBefore.colId !== csAfter.colId) {\n var gridCol = _this.getGridColumn(csBefore.colId);\n if (gridCol) {\n movedColumns.push(gridCol);\n }\n }\n });\n if (!movedColumns.length) {\n return;\n }\n var event = {\n type: Events.EVENT_COLUMN_MOVED,\n columns: movedColumns,\n column: null,\n api: this.gridApi,\n columnApi: this.columnApi,\n source: source\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnModel.prototype.syncColumnWithStateItem = function (column, stateItem, defaultState, rowGroupIndexes, pivotIndexes, autoCol, source) {\n if (!column) {\n return;\n }\n var getValue = function (key1, key2) {\n var obj = { value1: undefined, value2: undefined };\n var calculated = false;\n if (stateItem) {\n if (stateItem[key1] !== undefined) {\n obj.value1 = stateItem[key1];\n calculated = true;\n }\n if (exists(key2) && stateItem[key2] !== undefined) {\n obj.value2 = stateItem[key2];\n calculated = true;\n }\n }\n if (!calculated && defaultState) {\n if (defaultState[key1] !== undefined) {\n obj.value1 = defaultState[key1];\n }\n if (exists(key2) && defaultState[key2] !== undefined) {\n obj.value2 = defaultState[key2];\n }\n }\n return obj;\n };\n // following ensures we are left with boolean true or false, eg converts (null, undefined, 0) all to true\n var hide = getValue('hide').value1;\n if (hide !== undefined) {\n column.setVisible(!hide, source);\n }\n // sets pinned to 'left' or 'right'\n var pinned = getValue('pinned').value1;\n if (pinned !== undefined) {\n column.setPinned(pinned);\n }\n // if width provided and valid, use it, otherwise stick with the old width\n var minColWidth = this.columnUtils.calculateColMinWidth(column.getColDef());\n // flex\n var flex = getValue('flex').value1;\n if (flex !== undefined) {\n column.setFlex(flex);\n }\n // width - we only set width if column is not flexing\n var noFlexThisCol = column.getFlex() <= 0;\n if (noFlexThisCol) {\n // both null and undefined means we skip, as it's not possible to 'clear' width (a column must have a width)\n var width = getValue('width').value1;\n if (width != null) {\n if (minColWidth != null && width >= minColWidth) {\n column.setActualWidth(width, source);\n }\n }\n }\n var sort = getValue('sort').value1;\n if (sort !== undefined) {\n if (sort === Constants.SORT_DESC || sort === Constants.SORT_ASC) {\n column.setSort(sort);\n }\n else {\n column.setSort(undefined);\n }\n }\n var sortIndex = getValue('sortIndex').value1;\n if (sortIndex !== undefined) {\n column.setSortIndex(sortIndex);\n }\n // we do not do aggFunc, rowGroup or pivot for auto cols, as you can't do these with auto col\n if (autoCol) {\n return;\n }\n var aggFunc = getValue('aggFunc').value1;\n if (aggFunc !== undefined) {\n if (typeof aggFunc === 'string') {\n column.setAggFunc(aggFunc);\n if (!column.isValueActive()) {\n column.setValueActive(true, source);\n this.valueColumns.push(column);\n }\n }\n else {\n if (exists(aggFunc)) {\n console.warn('AG Grid: stateItem.aggFunc must be a string. if using your own aggregation ' +\n 'functions, register the functions first before using them in get/set state. This is because it is ' +\n 'intended for the column state to be stored and retrieved as simple JSON.');\n }\n // Note: we do not call column.setAggFunc(null), so that next time we aggregate\n // by this column (eg drag the column to the agg section int he toolpanel) it will\n // default to the last aggregation function.\n if (column.isValueActive()) {\n column.setValueActive(false, source);\n removeFromArray(this.valueColumns, column);\n }\n }\n }\n var _a = getValue('rowGroup', 'rowGroupIndex'), rowGroup = _a.value1, rowGroupIndex = _a.value2;\n if (rowGroup !== undefined || rowGroupIndex !== undefined) {\n if (typeof rowGroupIndex === 'number' || rowGroup) {\n if (!column.isRowGroupActive()) {\n column.setRowGroupActive(true, source);\n this.rowGroupColumns.push(column);\n }\n if (rowGroupIndexes && typeof rowGroupIndex === 'number') {\n rowGroupIndexes[column.getId()] = rowGroupIndex;\n }\n }\n else {\n if (column.isRowGroupActive()) {\n column.setRowGroupActive(false, source);\n removeFromArray(this.rowGroupColumns, column);\n }\n }\n }\n var _b = getValue('pivot', 'pivotIndex'), pivot = _b.value1, pivotIndex = _b.value2;\n if (pivot !== undefined || pivotIndex !== undefined) {\n if (typeof pivotIndex === 'number' || pivot) {\n if (!column.isPivotActive()) {\n column.setPivotActive(true, source);\n this.pivotColumns.push(column);\n }\n if (pivotIndexes && typeof pivotIndex === 'number') {\n pivotIndexes[column.getId()] = pivotIndex;\n }\n }\n else {\n if (column.isPivotActive()) {\n column.setPivotActive(false, source);\n removeFromArray(this.pivotColumns, column);\n }\n }\n }\n };\n ColumnModel.prototype.getGridColumns = function (keys) {\n return this.getColumns(keys, this.getGridColumn.bind(this));\n };\n ColumnModel.prototype.getColumns = function (keys, columnLookupCallback) {\n var foundColumns = [];\n if (keys) {\n keys.forEach(function (key) {\n var column = columnLookupCallback(key);\n if (column) {\n foundColumns.push(column);\n }\n });\n }\n return foundColumns;\n };\n // used by growGroupPanel\n ColumnModel.prototype.getColumnWithValidation = function (key) {\n if (key == null) {\n return null;\n }\n var column = this.getGridColumn(key);\n if (!column) {\n console.warn('AG Grid: could not find column ' + key);\n }\n return column;\n };\n ColumnModel.prototype.getPrimaryColumn = function (key) {\n if (!this.primaryColumns) {\n return null;\n }\n return this.getColumn(key, this.primaryColumns, this.primaryColumnsMap);\n };\n ColumnModel.prototype.getGridColumn = function (key) {\n return this.getColumn(key, this.gridColumns, this.gridColumnsMap);\n };\n ColumnModel.prototype.getColumn = function (key, columnList, columnMap) {\n if (!key) {\n return null;\n }\n // most of the time this method gets called the key is a string, so we put this shortcut in\n // for performance reasons, to see if we can match for ID (it doesn't do auto columns, that's done below)\n if (typeof key == 'string' && columnMap[key]) {\n return columnMap[key];\n }\n for (var i = 0; i < columnList.length; i++) {\n if (this.columnsMatch(columnList[i], key)) {\n return columnList[i];\n }\n }\n return this.getAutoColumn(key);\n };\n ColumnModel.prototype.getAutoColumn = function (key) {\n var _this = this;\n if (!this.groupAutoColumns ||\n !exists(this.groupAutoColumns) ||\n missing(this.groupAutoColumns)) {\n return null;\n }\n return this.groupAutoColumns.find(function (groupCol) { return _this.columnsMatch(groupCol, key); }) || null;\n };\n ColumnModel.prototype.columnsMatch = function (column, key) {\n var columnMatches = column === key;\n var colDefMatches = column.getColDef() === key;\n var idMatches = column.getColId() == key;\n return columnMatches || colDefMatches || idMatches;\n };\n ColumnModel.prototype.getDisplayNameForColumn = function (column, location, includeAggFunc) {\n if (includeAggFunc === void 0) { includeAggFunc = false; }\n if (!column) {\n return null;\n }\n var headerName = this.getHeaderName(column.getColDef(), column, null, null, location);\n if (includeAggFunc) {\n return this.wrapHeaderNameWithAggFunc(column, headerName);\n }\n return headerName;\n };\n ColumnModel.prototype.getDisplayNameForProvidedColumnGroup = function (columnGroup, providedColumnGroup, location) {\n var colGroupDef = providedColumnGroup ? providedColumnGroup.getColGroupDef() : null;\n if (colGroupDef) {\n return this.getHeaderName(colGroupDef, null, columnGroup, providedColumnGroup, location);\n }\n return null;\n };\n ColumnModel.prototype.getDisplayNameForColumnGroup = function (columnGroup, location) {\n return this.getDisplayNameForProvidedColumnGroup(columnGroup, columnGroup.getProvidedColumnGroup(), location);\n };\n // location is where the column is going to appear, ie who is calling us\n ColumnModel.prototype.getHeaderName = function (colDef, column, columnGroup, providedColumnGroup, location) {\n var headerValueGetter = colDef.headerValueGetter;\n if (headerValueGetter) {\n var params = {\n colDef: colDef,\n column: column,\n columnGroup: columnGroup,\n providedColumnGroup: providedColumnGroup,\n location: location,\n api: this.gridOptionsWrapper.getApi(),\n context: this.gridOptionsWrapper.getContext()\n };\n if (typeof headerValueGetter === 'function') {\n // valueGetter is a function, so just call it\n return headerValueGetter(params);\n }\n else if (typeof headerValueGetter === 'string') {\n // valueGetter is an expression, so execute the expression\n return this.expressionService.evaluate(headerValueGetter, params);\n }\n console.warn('ag-grid: headerValueGetter must be a function or a string');\n return '';\n }\n else if (colDef.headerName != null) {\n return colDef.headerName;\n }\n else if (colDef.field) {\n return camelCaseToHumanText(colDef.field);\n }\n return '';\n };\n ColumnModel.prototype.wrapHeaderNameWithAggFunc = function (column, headerName) {\n if (this.gridOptionsWrapper.isSuppressAggFuncInHeader()) {\n return headerName;\n }\n // only columns with aggregation active can have aggregations\n var pivotValueColumn = column.getColDef().pivotValueColumn;\n var pivotActiveOnThisColumn = exists(pivotValueColumn);\n var aggFunc = null;\n var aggFuncFound;\n // otherwise we have a measure that is active, and we are doing aggregation on it\n if (pivotActiveOnThisColumn) {\n aggFunc = pivotValueColumn ? pivotValueColumn.getAggFunc() : null;\n aggFuncFound = true;\n }\n else {\n var measureActive = column.isValueActive();\n var aggregationPresent = this.pivotMode || !this.isRowGroupEmpty();\n if (measureActive && aggregationPresent) {\n aggFunc = column.getAggFunc();\n aggFuncFound = true;\n }\n else {\n aggFuncFound = false;\n }\n }\n if (aggFuncFound) {\n var aggFuncString = (typeof aggFunc === 'string') ? aggFunc : 'func';\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var aggFuncStringTranslated = localeTextFunc(aggFuncString, aggFuncString);\n return aggFuncStringTranslated + \"(\" + headerName + \")\";\n }\n return headerName;\n };\n // returns the group with matching colId and instanceId. If instanceId is missing,\n // matches only on the colId.\n ColumnModel.prototype.getColumnGroup = function (colId, instanceId) {\n if (!colId) {\n return null;\n }\n if (colId instanceof ColumnGroup) {\n return colId;\n }\n var allColumnGroups = this.getAllDisplayedTrees();\n var checkInstanceId = typeof instanceId === 'number';\n var result = null;\n this.columnUtils.depthFirstAllColumnTreeSearch(allColumnGroups, function (child) {\n if (child instanceof ColumnGroup) {\n var columnGroup = child;\n var matched = void 0;\n if (checkInstanceId) {\n matched = colId === columnGroup.getGroupId() && instanceId === columnGroup.getInstanceId();\n }\n else {\n matched = colId === columnGroup.getGroupId();\n }\n if (matched) {\n result = columnGroup;\n }\n }\n });\n return result;\n };\n ColumnModel.prototype.isReady = function () {\n return this.ready;\n };\n ColumnModel.prototype.extractValueColumns = function (source, oldPrimaryColumns) {\n this.valueColumns = this.extractColumns(oldPrimaryColumns, this.valueColumns, function (col, flag) { return col.setValueActive(flag, source); }, \n // aggFunc doesn't have index variant, cos order of value cols doesn't matter, so always return null\n function () { return undefined; }, function () { return undefined; }, \n // aggFunc is a string, so return it's existence\n function (colDef) {\n var aggFunc = colDef.aggFunc;\n // null or empty string means clear\n if (aggFunc === null || aggFunc === '') {\n return null;\n }\n if (aggFunc === undefined) {\n return;\n }\n return !!aggFunc;\n }, function (colDef) {\n // return false if any of the following: null, undefined, empty string\n return colDef.initialAggFunc != null && colDef.initialAggFunc != '';\n });\n // all new columns added will have aggFunc missing, so set it to what is in the colDef\n this.valueColumns.forEach(function (col) {\n var colDef = col.getColDef();\n // if aggFunc provided, we always override, as reactive property\n if (colDef.aggFunc != null && colDef.aggFunc != '') {\n col.setAggFunc(colDef.aggFunc);\n }\n else {\n // otherwise we use initialAggFunc only if no agg func set - which happens when new column only\n if (!col.getAggFunc()) {\n col.setAggFunc(colDef.initialAggFunc);\n }\n }\n });\n };\n ColumnModel.prototype.extractRowGroupColumns = function (source, oldPrimaryColumns) {\n this.rowGroupColumns = this.extractColumns(oldPrimaryColumns, this.rowGroupColumns, function (col, flag) { return col.setRowGroupActive(flag, source); }, function (colDef) { return colDef.rowGroupIndex; }, function (colDef) { return colDef.initialRowGroupIndex; }, function (colDef) { return colDef.rowGroup; }, function (colDef) { return colDef.initialRowGroup; });\n };\n ColumnModel.prototype.extractColumns = function (oldPrimaryColumns, previousCols, setFlagFunc, getIndexFunc, getInitialIndexFunc, getValueFunc, getInitialValueFunc) {\n if (oldPrimaryColumns === void 0) { oldPrimaryColumns = []; }\n if (previousCols === void 0) { previousCols = []; }\n var colsWithIndex = [];\n var colsWithValue = [];\n // go though all cols.\n // if value, change\n // if default only, change only if new\n (this.primaryColumns || []).forEach(function (col) {\n var colIsNew = oldPrimaryColumns.indexOf(col) < 0;\n var colDef = col.getColDef();\n var value = attrToBoolean(getValueFunc(colDef));\n var initialValue = attrToBoolean(getInitialValueFunc(colDef));\n var index = attrToNumber(getIndexFunc(colDef));\n var initialIndex = attrToNumber(getInitialIndexFunc(colDef));\n var include;\n var valuePresent = value !== undefined;\n var indexPresent = index !== undefined;\n var initialValuePresent = initialValue !== undefined;\n var initialIndexPresent = initialIndex !== undefined;\n if (valuePresent) {\n include = value; // boolean value is guaranteed as attrToBoolean() is used above\n }\n else if (indexPresent) {\n if (index === null) {\n // if col is new we don't want to use the default / initial if index is set to null. Similarly,\n // we don't want to include the property for existing columns, i.e. we want to 'clear' it.\n include = false;\n }\n else {\n // note that 'null >= 0' evaluates to true which means 'rowGroupIndex = null' would enable row\n // grouping if the null check didn't exist above.\n include = index >= 0;\n }\n }\n else {\n if (colIsNew) {\n // as no value or index is 'present' we use the default / initial when col is new\n if (initialValuePresent) {\n include = initialValue;\n }\n else if (initialIndexPresent) {\n include = initialIndex != null && initialIndex >= 0;\n }\n else {\n include = false;\n }\n }\n else {\n // otherwise include it if included last time, e.g. if we are extracting row group cols and this col\n // is an existing row group col (i.e. it exists in 'previousCols') then we should include it.\n include = previousCols.indexOf(col) >= 0;\n }\n }\n if (include) {\n var useIndex = colIsNew ? (index != null || initialIndex != null) : index != null;\n useIndex ? colsWithIndex.push(col) : colsWithValue.push(col);\n }\n });\n var getIndexForCol = function (col) {\n var index = getIndexFunc(col.getColDef());\n var defaultIndex = getInitialIndexFunc(col.getColDef());\n return index != null ? index : defaultIndex;\n };\n // sort cols with index, and add these first\n colsWithIndex.sort(function (colA, colB) {\n var indexA = getIndexForCol(colA);\n var indexB = getIndexForCol(colB);\n if (indexA === indexB) {\n return 0;\n }\n if (indexA < indexB) {\n return -1;\n }\n return 1;\n });\n var res = [].concat(colsWithIndex);\n // second add columns that were there before and in the same order as they were before,\n // so we are preserving order of current grouping of columns that simply have rowGroup=true\n previousCols.forEach(function (col) {\n if (colsWithValue.indexOf(col) >= 0) {\n res.push(col);\n }\n });\n // lastly put in all remaining cols\n colsWithValue.forEach(function (col) {\n if (res.indexOf(col) < 0) {\n res.push(col);\n }\n });\n // set flag=false for removed cols\n previousCols.forEach(function (col) {\n if (res.indexOf(col) < 0) {\n setFlagFunc(col, false);\n }\n });\n // set flag=true for newly added cols\n res.forEach(function (col) {\n if (previousCols.indexOf(col) < 0) {\n setFlagFunc(col, true);\n }\n });\n return res;\n };\n ColumnModel.prototype.extractPivotColumns = function (source, oldPrimaryColumns) {\n this.pivotColumns = this.extractColumns(oldPrimaryColumns, this.pivotColumns, function (col, flag) { return col.setPivotActive(flag, source); }, function (colDef) { return colDef.pivotIndex; }, function (colDef) { return colDef.initialPivotIndex; }, function (colDef) { return colDef.pivot; }, function (colDef) { return colDef.initialPivot; });\n };\n ColumnModel.prototype.resetColumnGroupState = function (source) {\n if (source === void 0) { source = \"api\"; }\n var stateItems = [];\n this.columnUtils.depthFirstOriginalTreeSearch(null, this.primaryColumnTree, function (child) {\n if (child instanceof ProvidedColumnGroup) {\n var colGroupDef = child.getColGroupDef();\n var groupState = {\n groupId: child.getGroupId(),\n open: !colGroupDef ? undefined : colGroupDef.openByDefault\n };\n stateItems.push(groupState);\n }\n });\n this.setColumnGroupState(stateItems, source);\n };\n ColumnModel.prototype.getColumnGroupState = function () {\n var columnGroupState = [];\n this.columnUtils.depthFirstOriginalTreeSearch(null, this.gridBalancedTree, function (node) {\n if (node instanceof ProvidedColumnGroup) {\n var providedColumnGroup = node;\n columnGroupState.push({\n groupId: providedColumnGroup.getGroupId(),\n open: providedColumnGroup.isExpanded()\n });\n }\n });\n return columnGroupState;\n };\n ColumnModel.prototype.setColumnGroupState = function (stateItems, source) {\n var _this = this;\n if (source === void 0) { source = \"api\"; }\n this.columnAnimationService.start();\n var impactedGroups = [];\n stateItems.forEach(function (stateItem) {\n var groupKey = stateItem.groupId;\n var newValue = stateItem.open;\n var providedColumnGroup = _this.getProvidedColumnGroup(groupKey);\n if (!providedColumnGroup) {\n return;\n }\n if (providedColumnGroup.isExpanded() === newValue) {\n return;\n }\n _this.logger.log('columnGroupOpened(' + providedColumnGroup.getGroupId() + ',' + newValue + ')');\n providedColumnGroup.setExpanded(newValue);\n impactedGroups.push(providedColumnGroup);\n });\n this.updateGroupsAndDisplayedColumns(source);\n this.setFirstRightAndLastLeftPinned(source);\n impactedGroups.forEach(function (providedColumnGroup) {\n var event = {\n type: Events.EVENT_COLUMN_GROUP_OPENED,\n columnGroup: providedColumnGroup,\n api: _this.gridApi,\n columnApi: _this.columnApi\n };\n _this.eventService.dispatchEvent(event);\n });\n this.columnAnimationService.finish();\n };\n // called by headerRenderer - when a header is opened or closed\n ColumnModel.prototype.setColumnGroupOpened = function (key, newValue, source) {\n if (source === void 0) { source = \"api\"; }\n var keyAsString;\n if (key instanceof ProvidedColumnGroup) {\n keyAsString = key.getId();\n }\n else {\n keyAsString = key || '';\n }\n this.setColumnGroupState([{ groupId: keyAsString, open: newValue }], source);\n };\n ColumnModel.prototype.getProvidedColumnGroup = function (key) {\n // if (key instanceof ProvidedColumnGroup) { return key; }\n if (typeof key !== 'string') {\n console.error('AG Grid: group key must be a string');\n }\n // otherwise, search for the column group by id\n var res = null;\n this.columnUtils.depthFirstOriginalTreeSearch(null, this.gridBalancedTree, function (node) {\n if (node instanceof ProvidedColumnGroup) {\n var providedColumnGroup = node;\n if (providedColumnGroup.getId() === key) {\n res = providedColumnGroup;\n }\n }\n });\n return res;\n };\n ColumnModel.prototype.calculateColumnsForDisplay = function () {\n var _this = this;\n var columnsForDisplay;\n if (this.pivotMode && !this.secondaryColumnsPresent) {\n // pivot mode is on, but we are not pivoting, so we only\n // show columns we are aggregating on\n columnsForDisplay = this.gridColumns.filter(function (column) {\n var isAutoGroupCol = _this.groupAutoColumns && includes(_this.groupAutoColumns, column);\n var isValueCol = _this.valueColumns && includes(_this.valueColumns, column);\n return isAutoGroupCol || isValueCol;\n });\n }\n else {\n // otherwise continue as normal. this can be working on the primary\n // or secondary columns, whatever the gridColumns are set to\n columnsForDisplay = this.gridColumns.filter(function (column) {\n // keep col if a) it's auto-group or b) it's visible\n var isAutoGroupCol = _this.groupAutoColumns && includes(_this.groupAutoColumns, column);\n return isAutoGroupCol || column.isVisible();\n });\n }\n return columnsForDisplay;\n };\n ColumnModel.prototype.checkColSpanActiveInCols = function (columns) {\n var result = false;\n columns.forEach(function (col) {\n if (exists(col.getColDef().colSpan)) {\n result = true;\n }\n });\n return result;\n };\n ColumnModel.prototype.calculateColumnsForGroupDisplay = function () {\n var _this = this;\n this.groupDisplayColumns = [];\n var checkFunc = function (col) {\n var colDef = col.getColDef();\n if (colDef && exists(colDef.showRowGroup)) {\n _this.groupDisplayColumns.push(col);\n }\n };\n this.gridColumns.forEach(checkFunc);\n if (this.groupAutoColumns) {\n this.groupAutoColumns.forEach(checkFunc);\n }\n };\n ColumnModel.prototype.getGroupDisplayColumns = function () {\n return this.groupDisplayColumns;\n };\n ColumnModel.prototype.updateDisplayedColumns = function (source) {\n var columnsForDisplay = this.calculateColumnsForDisplay();\n this.buildDisplayedTrees(columnsForDisplay);\n this.calculateColumnsForGroupDisplay();\n // also called when group opened/closed\n this.updateGroupsAndDisplayedColumns(source);\n // also called when group opened/closed\n this.setFirstRightAndLastLeftPinned(source);\n };\n ColumnModel.prototype.isSecondaryColumnsPresent = function () {\n return this.secondaryColumnsPresent;\n };\n ColumnModel.prototype.setSecondaryColumns = function (colDefs, source) {\n if (source === void 0) { source = \"api\"; }\n var newColsPresent = colDefs && colDefs.length > 0;\n // if not cols passed, and we had to cols anyway, then do nothing\n if (!newColsPresent && !this.secondaryColumnsPresent) {\n return;\n }\n if (newColsPresent) {\n this.processSecondaryColumnDefinitions(colDefs);\n var balancedTreeResult = this.columnFactory.createColumnTree(colDefs, false);\n this.secondaryBalancedTree = balancedTreeResult.columnTree;\n this.secondaryHeaderRowCount = balancedTreeResult.treeDept + 1;\n this.secondaryColumns = this.getColumnsFromTree(this.secondaryBalancedTree);\n this.secondaryColumnsPresent = true;\n }\n else {\n this.secondaryBalancedTree = null;\n this.secondaryHeaderRowCount = -1;\n this.secondaryColumns = null;\n this.secondaryColumnsPresent = false;\n }\n this.updateGridColumns();\n this.updateDisplayedColumns(source);\n };\n ColumnModel.prototype.processSecondaryColumnDefinitions = function (colDefs) {\n var columnCallback = this.gridOptionsWrapper.getProcessSecondaryColDefFunc();\n var groupCallback = this.gridOptionsWrapper.getProcessSecondaryColGroupDefFunc();\n if (!columnCallback && !groupCallback) {\n return undefined;\n }\n var searchForColDefs = function (colDefs2) {\n colDefs2.forEach(function (abstractColDef) {\n var isGroup = exists(abstractColDef.children);\n if (isGroup) {\n var colGroupDef = abstractColDef;\n if (groupCallback) {\n groupCallback(colGroupDef);\n }\n searchForColDefs(colGroupDef.children);\n }\n else {\n var colDef = abstractColDef;\n if (columnCallback) {\n columnCallback(colDef);\n }\n }\n });\n };\n if (colDefs) {\n searchForColDefs(colDefs);\n }\n };\n // called from: setColumnState, setColumnDefs, setSecondaryColumns\n ColumnModel.prototype.updateGridColumns = function () {\n var _this = this;\n if (this.gridColsArePrimary) {\n this.lastPrimaryOrder = this.gridColumns;\n }\n if (this.secondaryColumns && this.secondaryBalancedTree) {\n this.gridBalancedTree = this.secondaryBalancedTree.slice();\n this.gridHeaderRowCount = this.secondaryHeaderRowCount;\n this.gridColumns = this.secondaryColumns.slice();\n this.gridColsArePrimary = false;\n }\n else if (this.primaryColumns) {\n this.gridBalancedTree = this.primaryColumnTree.slice();\n this.gridHeaderRowCount = this.primaryHeaderRowCount;\n this.gridColumns = this.primaryColumns.slice();\n this.gridColsArePrimary = true;\n // updateGridColumns gets called after user adds a row group. we want to maintain the order of the columns\n // when this happens (eg if user moved a column) rather than revert back to the original column order.\n // likewise if changing in/out of pivot mode, we want to maintain the order of the primary cols\n this.orderGridColsLikeLastPrimary();\n }\n this.addAutoGroupToGridColumns();\n this.gridColumns = this.putFixedColumnsFirst(this.gridColumns);\n this.setupQuickFilterColumns();\n this.clearDisplayedAndViewportColumns();\n this.colSpanActive = this.checkColSpanActiveInCols(this.gridColumns);\n this.gridColumnsMap = {};\n this.gridColumns.forEach(function (col) { return _this.gridColumnsMap[col.getId()] = col; });\n this.setAutoHeightActive();\n var event = {\n type: Events.EVENT_GRID_COLUMNS_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnModel.prototype.setAutoHeightActive = function () {\n this.autoHeightActive = this.gridColumns.filter(function (col) { return col.isAutoHeight(); }).length > 0;\n if (this.autoHeightActive) {\n this.autoHeightActiveAtLeastOnce = true;\n var rowModelType = this.rowModel.getType();\n var supportedRowModel = rowModelType === Constants.ROW_MODEL_TYPE_CLIENT_SIDE || rowModelType === Constants.ROW_MODEL_TYPE_SERVER_SIDE;\n if (!supportedRowModel) {\n var message_1 = 'AG Grid - autoHeight columns only work with Client Side Row Model and Server Side Row Model.';\n doOnce(function () { return console.warn(message_1); }, 'autoHeightActive.wrongRowModel');\n }\n }\n };\n ColumnModel.prototype.orderGridColsLikeLastPrimary = function () {\n if (missing(this.lastPrimaryOrder)) {\n return;\n }\n var lastPrimaryOrderMapped = convertToMap(this.lastPrimaryOrder.map(function (col, index) { return [col, index]; }));\n // only do the sort if at least one column is accounted for. columns will be not accounted for\n // if changing from secondary to primary columns\n var noColsFound = true;\n this.gridColumns.forEach(function (col) {\n if (lastPrimaryOrderMapped.has(col)) {\n noColsFound = false;\n }\n });\n if (noColsFound) {\n return;\n }\n // order cols in the same order as before. we need to make sure that all\n // cols still exists, so filter out any that no longer exist.\n var gridColsMap = convertToMap(this.gridColumns.map(function (col) { return [col, true]; }));\n var oldColsOrdered = this.lastPrimaryOrder.filter(function (col) { return gridColsMap.has(col); });\n var oldColsMap = convertToMap(oldColsOrdered.map(function (col) { return [col, true]; }));\n var newColsOrdered = this.gridColumns.filter(function (col) { return !oldColsMap.has(col); });\n // add in the new columns, at the end (if no group), or at the end of the group (if a group)\n var newGridColumns = oldColsOrdered.slice();\n newColsOrdered.forEach(function (newCol) {\n var parent = newCol.getOriginalParent();\n // if no parent, means we are not grouping, so just add the column to the end\n if (!parent) {\n newGridColumns.push(newCol);\n return;\n }\n // find the group the column belongs to. if no siblings at the current level (eg col in group on it's\n // own) then go up one level and look for siblings there.\n var siblings = [];\n while (!siblings.length && parent) {\n var leafCols = parent.getLeafColumns();\n leafCols.forEach(function (leafCol) {\n var presentInNewGriColumns = newGridColumns.indexOf(leafCol) >= 0;\n var noYetInSiblings = siblings.indexOf(leafCol) < 0;\n if (presentInNewGriColumns && noYetInSiblings) {\n siblings.push(leafCol);\n }\n });\n parent = parent.getOriginalParent();\n }\n // if no siblings exist at any level, this means the col is in a group (or parent groups) on it's own\n if (!siblings.length) {\n newGridColumns.push(newCol);\n return;\n }\n // find index of last column in the group\n var indexes = siblings.map(function (col) { return newGridColumns.indexOf(col); });\n var lastIndex = Math.max.apply(Math, __spread(indexes));\n insertIntoArray(newGridColumns, newCol, lastIndex + 1);\n });\n this.gridColumns = newGridColumns;\n };\n ColumnModel.prototype.isPrimaryColumnGroupsPresent = function () {\n return this.primaryHeaderRowCount > 1;\n };\n // if we are using autoGroupCols, then they should be included for quick filter. this covers the\n // following scenarios:\n // a) user provides 'field' into autoGroupCol of normal grid, so now because a valid col to filter leafs on\n // b) using tree data and user depends on autoGroupCol for first col, and we also want to filter on this\n // (tree data is a bit different, as parent rows can be filtered on, unlike row grouping)\n ColumnModel.prototype.setupQuickFilterColumns = function () {\n if (this.groupAutoColumns) {\n this.columnsForQuickFilter = (this.primaryColumns || []).concat(this.groupAutoColumns);\n }\n else if (this.primaryColumns) {\n this.columnsForQuickFilter = this.primaryColumns;\n }\n };\n ColumnModel.prototype.putFixedColumnsFirst = function (cols) {\n var locked = cols.filter(function (c) { return c.getColDef().lockPosition; });\n var unlocked = cols.filter(function (c) { return !c.getColDef().lockPosition; });\n return locked.concat(unlocked);\n };\n ColumnModel.prototype.addAutoGroupToGridColumns = function () {\n // add in auto-group here\n this.createGroupAutoColumnsIfNeeded();\n if (missing(this.groupAutoColumns)) {\n return;\n }\n this.gridColumns = this.groupAutoColumns ? this.groupAutoColumns.concat(this.gridColumns) : this.gridColumns;\n var autoColBalancedTree = this.columnFactory.createForAutoGroups(this.groupAutoColumns, this.gridBalancedTree);\n this.gridBalancedTree = autoColBalancedTree.concat(this.gridBalancedTree);\n };\n // gets called after we copy down grid columns, to make sure any part of the gui\n // that tries to draw, eg the header, it will get empty lists of columns rather\n // than stale columns. for example, the header will received gridColumnsChanged\n // event, so will try and draw, but it will draw successfully when it acts on the\n // virtualColumnsChanged event\n ColumnModel.prototype.clearDisplayedAndViewportColumns = function () {\n this.displayedTreeLeft = [];\n this.displayedTreeRight = [];\n this.displayedTreeCentre = [];\n this.viewportRowLeft = {};\n this.viewportRowRight = {};\n this.viewportRowCenter = {};\n this.displayedColumnsLeft = [];\n this.displayedColumnsRight = [];\n this.displayedColumnsCenter = [];\n this.displayedColumns = [];\n this.viewportColumns = [];\n };\n ColumnModel.prototype.updateGroupsAndDisplayedColumns = function (source) {\n this.updateOpenClosedVisibilityInColumnGroups();\n this.deriveDisplayedColumns(source);\n this.refreshFlexedColumns();\n this.extractViewport();\n this.updateBodyWidths();\n // this event is picked up by the gui, headerRenderer and rowRenderer, to recalculate what columns to display\n var event = {\n type: Events.EVENT_DISPLAYED_COLUMNS_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnModel.prototype.deriveDisplayedColumns = function (source) {\n this.derivedDisplayedColumnsFromDisplayedTree(this.displayedTreeLeft, this.displayedColumnsLeft);\n this.derivedDisplayedColumnsFromDisplayedTree(this.displayedTreeCentre, this.displayedColumnsCenter);\n this.derivedDisplayedColumnsFromDisplayedTree(this.displayedTreeRight, this.displayedColumnsRight);\n this.joinDisplayedColumns();\n this.setLeftValues(source);\n this.displayedAutoHeightCols = this.displayedColumns.filter(function (col) { return col.isAutoHeight(); });\n };\n ColumnModel.prototype.isAutoRowHeightActive = function () {\n return this.autoHeightActive;\n };\n ColumnModel.prototype.wasAutoRowHeightEverActive = function () {\n return this.autoHeightActiveAtLeastOnce;\n };\n ColumnModel.prototype.joinDisplayedColumns = function () {\n if (this.gridOptionsWrapper.isEnableRtl()) {\n this.displayedColumns = this.displayedColumnsRight\n .concat(this.displayedColumnsCenter)\n .concat(this.displayedColumnsLeft);\n }\n else {\n this.displayedColumns = this.displayedColumnsLeft\n .concat(this.displayedColumnsCenter)\n .concat(this.displayedColumnsRight);\n }\n };\n // sets the left pixel position of each column\n ColumnModel.prototype.setLeftValues = function (source) {\n this.setLeftValuesOfColumns(source);\n this.setLeftValuesOfGroups();\n };\n ColumnModel.prototype.setLeftValuesOfColumns = function (source) {\n var _this = this;\n if (!this.primaryColumns) {\n return;\n }\n // go through each list of displayed columns\n var allColumns = this.primaryColumns.slice(0);\n // let totalColumnWidth = this.getWidthOfColsInList()\n var doingRtl = this.gridOptionsWrapper.isEnableRtl();\n [\n this.displayedColumnsLeft,\n this.displayedColumnsRight,\n this.displayedColumnsCenter\n ].forEach(function (columns) {\n if (doingRtl) {\n // when doing RTL, we start at the top most pixel (ie RHS) and work backwards\n var left_1 = _this.getWidthOfColsInList(columns);\n columns.forEach(function (column) {\n left_1 -= column.getActualWidth();\n column.setLeft(left_1, source);\n });\n }\n else {\n // otherwise normal LTR, we start at zero\n var left_2 = 0;\n columns.forEach(function (column) {\n column.setLeft(left_2, source);\n left_2 += column.getActualWidth();\n });\n }\n removeAllFromArray(allColumns, columns);\n });\n // items left in allColumns are columns not displayed, so remove the left position. this is\n // important for the rows, as if a col is made visible, then taken out, then made visible again,\n // we don't want the animation of the cell floating in from the old position, whatever that was.\n allColumns.forEach(function (column) {\n column.setLeft(null, source);\n });\n };\n ColumnModel.prototype.setLeftValuesOfGroups = function () {\n // a groups left value is the lest left value of it's children\n [\n this.displayedTreeLeft,\n this.displayedTreeRight,\n this.displayedTreeCentre\n ].forEach(function (columns) {\n columns.forEach(function (column) {\n if (column instanceof ColumnGroup) {\n var columnGroup = column;\n columnGroup.checkLeft();\n }\n });\n });\n };\n ColumnModel.prototype.derivedDisplayedColumnsFromDisplayedTree = function (tree, columns) {\n columns.length = 0;\n this.columnUtils.depthFirstDisplayedColumnTreeSearch(tree, function (child) {\n if (child instanceof Column) {\n columns.push(child);\n }\n });\n };\n ColumnModel.prototype.extractViewportColumns = function () {\n if (this.suppressColumnVirtualisation) {\n // no virtualisation, so don't filter\n this.viewportColumnsCenter = this.displayedColumnsCenter;\n }\n else {\n // filter out what should be visible\n this.viewportColumnsCenter = this.filterOutColumnsWithinViewport();\n }\n this.viewportColumns = this.viewportColumnsCenter\n .concat(this.displayedColumnsLeft)\n .concat(this.displayedColumnsRight);\n };\n ColumnModel.prototype.getVirtualHeaderGroupRow = function (type, dept) {\n var result;\n switch (type) {\n case Constants.PINNED_LEFT:\n result = this.viewportRowLeft[dept];\n break;\n case Constants.PINNED_RIGHT:\n result = this.viewportRowRight[dept];\n break;\n default:\n result = this.viewportRowCenter[dept];\n break;\n }\n if (missing(result)) {\n result = [];\n }\n return result;\n };\n ColumnModel.prototype.extractViewportRows = function () {\n // go through each group, see if any of it's cols are displayed, and if yes,\n // then this group is included\n this.viewportRowLeft = {};\n this.viewportRowRight = {};\n this.viewportRowCenter = {};\n // for easy lookup when building the groups.\n var virtualColIds = {};\n this.viewportColumns.forEach(function (col) { return virtualColIds[col.getId()] = true; });\n var testGroup = function (children, result, dept) {\n var returnValue = false;\n for (var i = 0; i < children.length; i++) {\n // see if this item is within viewport\n var child = children[i];\n var addThisItem = false;\n if (child instanceof Column) {\n // for column, test if column is included\n addThisItem = virtualColIds[child.getId()] === true;\n }\n else {\n // if group, base decision on children\n var columnGroup = child;\n var displayedChildren = columnGroup.getDisplayedChildren();\n if (displayedChildren) {\n addThisItem = testGroup(displayedChildren, result, dept + 1);\n }\n }\n if (addThisItem) {\n returnValue = true;\n if (!result[dept]) {\n result[dept] = [];\n }\n result[dept].push(child);\n }\n }\n return returnValue;\n };\n testGroup(this.displayedTreeLeft, this.viewportRowLeft, 0);\n testGroup(this.displayedTreeRight, this.viewportRowRight, 0);\n testGroup(this.displayedTreeCentre, this.viewportRowCenter, 0);\n };\n ColumnModel.prototype.extractViewport = function () {\n this.extractViewportColumns();\n this.extractViewportRows();\n };\n ColumnModel.prototype.filterOutColumnsWithinViewport = function () {\n return this.displayedColumnsCenter.filter(this.isColumnInViewport.bind(this));\n };\n ColumnModel.prototype.refreshFlexedColumns = function (params) {\n var _this = this;\n if (params === void 0) { params = {}; }\n var source = params.source ? params.source : 'flex';\n if (params.viewportWidth != null) {\n this.flexViewportWidth = params.viewportWidth;\n }\n if (!this.flexViewportWidth) {\n return [];\n }\n // If the grid has left-over space, divide it between flexing columns in proportion to their flex value.\n // A \"flexing column\" is one that has a 'flex' value set and is not currently being constrained by its\n // minWidth or maxWidth rules.\n var flexAfterDisplayIndex = -1;\n if (params.resizingCols) {\n params.resizingCols.forEach(function (col) {\n var indexOfCol = _this.displayedColumnsCenter.indexOf(col);\n if (flexAfterDisplayIndex < indexOfCol) {\n flexAfterDisplayIndex = indexOfCol;\n }\n });\n }\n var isColFlex = function (col) {\n var afterResizingCols = _this.displayedColumnsCenter.indexOf(col) > flexAfterDisplayIndex;\n return col.getFlex() && afterResizingCols;\n };\n var knownWidthColumns = this.displayedColumnsCenter.filter(function (col) { return !isColFlex(col); });\n var flexingColumns = this.displayedColumnsCenter.filter(function (col) { return isColFlex(col); });\n var changedColumns = [];\n if (!flexingColumns.length) {\n return [];\n }\n var flexingColumnSizes = [];\n var spaceForFlexingColumns;\n outer: while (true) {\n var totalFlex = flexingColumns.reduce(function (count, col) { return count + col.getFlex(); }, 0);\n spaceForFlexingColumns = this.flexViewportWidth - this.getWidthOfColsInList(knownWidthColumns);\n for (var i = 0; i < flexingColumns.length; i++) {\n var col = flexingColumns[i];\n var widthByFlexRule = spaceForFlexingColumns * col.getFlex() / totalFlex;\n var constrainedWidth = 0;\n var minWidth = col.getMinWidth();\n var maxWidth = col.getMaxWidth();\n if (exists(minWidth) && widthByFlexRule < minWidth) {\n constrainedWidth = minWidth;\n }\n else if (exists(maxWidth) && widthByFlexRule > maxWidth) {\n constrainedWidth = maxWidth;\n }\n if (constrainedWidth) {\n // This column is not in fact flexing as it is being constrained to a specific size\n // so remove it from the list of flexing columns and start again\n col.setActualWidth(constrainedWidth, source);\n removeFromArray(flexingColumns, col);\n changedColumns.push(col);\n knownWidthColumns.push(col);\n continue outer;\n }\n flexingColumnSizes[i] = Math.round(widthByFlexRule);\n }\n break;\n }\n var remainingSpace = spaceForFlexingColumns;\n flexingColumns.forEach(function (col, i) {\n col.setActualWidth(Math.min(flexingColumnSizes[i], remainingSpace), source);\n changedColumns.push(col);\n remainingSpace -= flexingColumnSizes[i];\n });\n if (!params.skipSetLeft) {\n this.setLeftValues(source);\n }\n if (params.updateBodyWidths) {\n this.updateBodyWidths();\n }\n if (params.fireResizedEvent) {\n this.fireColumnResizedEvent(changedColumns, true, source, flexingColumns);\n }\n // if the user sets rowData directly into GridOptions, then the row data is set before\n // grid is attached to the DOM. this means the columns are not flexed, and then the rows\n // have the wrong height (as they depend on column widths). so once the columns have\n // been flexed for the first time (only happens once grid is attached to DOM, as dependency\n // on getting the grid width, which only happens after attached after ResizeObserver fires)\n // we get get rows to re-calc their heights.\n if (!this.flexColsCalculatedAtLestOnce) {\n if (this.gridOptionsWrapper.isRowModelDefault()) {\n this.rowModel.resetRowHeights();\n }\n this.flexColsCalculatedAtLestOnce = true;\n }\n return flexingColumns;\n };\n // called from api\n ColumnModel.prototype.sizeColumnsToFit = function (gridWidth, source, silent) {\n if (source === void 0) { source = \"sizeColumnsToFit\"; }\n // avoid divide by zero\n var allDisplayedColumns = this.getAllDisplayedColumns();\n if (gridWidth <= 0 || !allDisplayedColumns.length) {\n return;\n }\n var colsToSpread = [];\n var colsToNotSpread = [];\n allDisplayedColumns.forEach(function (column) {\n if (column.getColDef().suppressSizeToFit === true) {\n colsToNotSpread.push(column);\n }\n else {\n colsToSpread.push(column);\n }\n });\n // make a copy of the cols that are going to be resized\n var colsToFireEventFor = colsToSpread.slice(0);\n var finishedResizing = false;\n var moveToNotSpread = function (column) {\n removeFromArray(colsToSpread, column);\n colsToNotSpread.push(column);\n };\n // resetting cols to their original width makes the sizeColumnsToFit more deterministic,\n // rather than depending on the current size of the columns. most users call sizeColumnsToFit\n // immediately after grid is created, so will make no difference. however if application is calling\n // sizeColumnsToFit repeatedly (eg after column group is opened / closed repeatedly) we don't want\n // the columns to start shrinking / growing over time.\n //\n // NOTE: the process below will assign values to `this.actualWidth` of each column without firing events\n // for this reason we need to manually fire resize events after the resize has been done for each column.\n colsToSpread.forEach(function (column) { return column.resetActualWidth(source); });\n while (!finishedResizing) {\n finishedResizing = true;\n var availablePixels = gridWidth - this.getWidthOfColsInList(colsToNotSpread);\n if (availablePixels <= 0) {\n // no width, set everything to minimum\n colsToSpread.forEach(function (column) {\n column.setMinimum(source);\n });\n }\n else {\n var scale = availablePixels / this.getWidthOfColsInList(colsToSpread);\n // we set the pixels for the last col based on what's left, as otherwise\n // we could be a pixel or two short or extra because of rounding errors.\n var pixelsForLastCol = availablePixels;\n // backwards through loop, as we are removing items as we go\n for (var i = colsToSpread.length - 1; i >= 0; i--) {\n var column = colsToSpread[i];\n var minWidth = column.getMinWidth();\n var maxWidth = column.getMaxWidth();\n var newWidth = Math.round(column.getActualWidth() * scale);\n if (exists(minWidth) && newWidth < minWidth) {\n newWidth = minWidth;\n moveToNotSpread(column);\n finishedResizing = false;\n }\n else if (exists(maxWidth) && column.isGreaterThanMax(newWidth)) {\n newWidth = maxWidth;\n moveToNotSpread(column);\n finishedResizing = false;\n }\n else if (i === 0) { // if this is the last column\n newWidth = pixelsForLastCol;\n }\n column.setActualWidth(newWidth, source, true);\n pixelsForLastCol -= newWidth;\n }\n }\n }\n // see notes above\n colsToFireEventFor.forEach(function (col) {\n col.fireColumnWidthChangedEvent(source);\n });\n this.setLeftValues(source);\n this.updateBodyWidths();\n if (silent) {\n return;\n }\n this.fireColumnResizedEvent(colsToFireEventFor, true, source);\n };\n ColumnModel.prototype.buildDisplayedTrees = function (visibleColumns) {\n var leftVisibleColumns = [];\n var rightVisibleColumns = [];\n var centerVisibleColumns = [];\n visibleColumns.forEach(function (column) {\n switch (column.getPinned()) {\n case \"left\":\n leftVisibleColumns.push(column);\n break;\n case \"right\":\n rightVisibleColumns.push(column);\n break;\n default:\n centerVisibleColumns.push(column);\n break;\n }\n });\n var groupInstanceIdCreator = new GroupInstanceIdCreator();\n this.displayedTreeLeft = this.displayedGroupCreator.createDisplayedGroups(leftVisibleColumns, this.gridBalancedTree, groupInstanceIdCreator, Constants.PINNED_LEFT, this.displayedTreeLeft);\n this.displayedTreeRight = this.displayedGroupCreator.createDisplayedGroups(rightVisibleColumns, this.gridBalancedTree, groupInstanceIdCreator, Constants.PINNED_RIGHT, this.displayedTreeRight);\n this.displayedTreeCentre = this.displayedGroupCreator.createDisplayedGroups(centerVisibleColumns, this.gridBalancedTree, groupInstanceIdCreator, null, this.displayedTreeCentre);\n this.updateDisplayedMap();\n };\n ColumnModel.prototype.updateDisplayedMap = function () {\n var _this = this;\n this.displayedColumnsAndGroupsMap = {};\n var func = function (child) {\n _this.displayedColumnsAndGroupsMap[child.getUniqueId()] = child;\n };\n this.columnUtils.depthFirstAllColumnTreeSearch(this.displayedTreeCentre, func);\n this.columnUtils.depthFirstAllColumnTreeSearch(this.displayedTreeLeft, func);\n this.columnUtils.depthFirstAllColumnTreeSearch(this.displayedTreeRight, func);\n };\n ColumnModel.prototype.isDisplayed = function (item) {\n var fromMap = this.displayedColumnsAndGroupsMap[item.getUniqueId()];\n // check for reference, in case new column / group with same id is now present\n return fromMap === item;\n };\n ColumnModel.prototype.updateOpenClosedVisibilityInColumnGroups = function () {\n var allColumnGroups = this.getAllDisplayedTrees();\n this.columnUtils.depthFirstAllColumnTreeSearch(allColumnGroups, function (child) {\n if (child instanceof ColumnGroup) {\n var columnGroup = child;\n columnGroup.calculateDisplayedColumns();\n }\n });\n };\n ColumnModel.prototype.getGroupAutoColumns = function () {\n return this.groupAutoColumns;\n };\n ColumnModel.prototype.createGroupAutoColumnsIfNeeded = function () {\n if (!this.autoGroupsNeedBuilding) {\n return;\n }\n this.autoGroupsNeedBuilding = false;\n var groupFullWidthRow = this.gridOptionsWrapper.isGroupUseEntireRow(this.pivotMode);\n // we need to allow suppressing auto-column separately for group and pivot as the normal situation\n // is CSRM and user provides group column themselves for normal view, but when they go into pivot the\n // columns are generated by the grid so no opportunity for user to provide group column. so need a way\n // to suppress auto-col for grouping only, and not pivot.\n // however if using Viewport RM or SSRM and user is providing the columns, the user may wish full control\n // of the group column in this instance.\n var suppressAutoColumn = this.pivotMode ?\n this.gridOptionsWrapper.isPivotSuppressAutoColumn() : this.gridOptionsWrapper.isGroupSuppressAutoColumn();\n var groupingActive = this.rowGroupColumns.length > 0 || this.usingTreeData;\n var needAutoColumns = groupingActive && !suppressAutoColumn && !groupFullWidthRow;\n if (needAutoColumns) {\n var newAutoGroupCols = this.autoGroupColService.createAutoGroupColumns(this.rowGroupColumns);\n var autoColsDifferent = !this.autoColsEqual(newAutoGroupCols, this.groupAutoColumns);\n // we force recreate when suppressColumnStateEvents changes, so new group cols pick up the new\n // definitions. otherwise we could ignore the new cols because they appear to be the same.\n if (autoColsDifferent || this.forceRecreateAutoGroups) {\n this.groupAutoColumns = newAutoGroupCols;\n }\n }\n else {\n this.groupAutoColumns = null;\n }\n };\n ColumnModel.prototype.autoColsEqual = function (colsA, colsB) {\n return areEqual(colsA, colsB, function (a, b) { return a.getColId() === b.getColId(); });\n };\n ColumnModel.prototype.getWidthOfColsInList = function (columnList) {\n return columnList.reduce(function (width, col) { return width + col.getActualWidth(); }, 0);\n };\n ColumnModel.prototype.getGridBalancedTree = function () {\n return this.gridBalancedTree;\n };\n ColumnModel.prototype.hasFloatingFilters = function () {\n if (!this.gridColumns) {\n return false;\n }\n var res = this.gridColumns.some(function (col) { return col.getColDef().floatingFilter; });\n return res;\n };\n ColumnModel.prototype.getFirstDisplayedColumn = function () {\n var isRtl = this.gridOptionsWrapper.isEnableRtl();\n var queryOrder = [\n 'getDisplayedLeftColumns',\n 'getDisplayedCenterColumns',\n 'getDisplayedRightColumns'\n ];\n if (isRtl) {\n queryOrder.reverse();\n }\n for (var i = 0; i < queryOrder.length; i++) {\n var container = this[queryOrder[i]]();\n if (container.length) {\n return isRtl ? last(container) : container[0];\n }\n }\n return null;\n };\n __decorate([\n Autowired('expressionService')\n ], ColumnModel.prototype, \"expressionService\", void 0);\n __decorate([\n Autowired('columnFactory')\n ], ColumnModel.prototype, \"columnFactory\", void 0);\n __decorate([\n Autowired('displayedGroupCreator')\n ], ColumnModel.prototype, \"displayedGroupCreator\", void 0);\n __decorate([\n Autowired('ctrlsService')\n ], ColumnModel.prototype, \"ctrlsService\", void 0);\n __decorate([\n Autowired('autoWidthCalculator')\n ], ColumnModel.prototype, \"autoWidthCalculator\", void 0);\n __decorate([\n Autowired('columnUtils')\n ], ColumnModel.prototype, \"columnUtils\", void 0);\n __decorate([\n Autowired('columnAnimationService')\n ], ColumnModel.prototype, \"columnAnimationService\", void 0);\n __decorate([\n Autowired('autoGroupColService')\n ], ColumnModel.prototype, \"autoGroupColService\", void 0);\n __decorate([\n Optional('aggFuncService')\n ], ColumnModel.prototype, \"aggFuncService\", void 0);\n __decorate([\n Optional('valueCache')\n ], ColumnModel.prototype, \"valueCache\", void 0);\n __decorate([\n Optional('animationFrameService')\n ], ColumnModel.prototype, \"animationFrameService\", void 0);\n __decorate([\n Autowired('rowModel')\n ], ColumnModel.prototype, \"rowModel\", void 0);\n __decorate([\n Autowired('columnApi')\n ], ColumnModel.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], ColumnModel.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('sortController')\n ], ColumnModel.prototype, \"sortController\", void 0);\n __decorate([\n Autowired('columnDefFactory')\n ], ColumnModel.prototype, \"columnDefFactory\", void 0);\n __decorate([\n PostConstruct\n ], ColumnModel.prototype, \"init\", null);\n __decorate([\n __param(0, Qualifier('loggerFactory'))\n ], ColumnModel.prototype, \"setBeans\", null);\n ColumnModel = __decorate([\n Bean('columnModel')\n ], ColumnModel);\n return ColumnModel;\n}(BeanStub));\nexport { ColumnModel };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ColumnGroup } from \"../entities/columnGroup\";\nimport { ProvidedColumnGroup } from \"../entities/providedColumnGroup\";\nimport { Bean } from \"../context/context\";\nimport { BeanStub } from \"../context/beanStub\";\nimport { attrToNumber } from \"../utils/generic\";\n// takes in a list of columns, as specified by the column definitions, and returns column groups\nvar ColumnUtils = /** @class */ (function (_super) {\n __extends(ColumnUtils, _super);\n function ColumnUtils() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ColumnUtils.prototype.calculateColMinWidth = function (colDef) {\n return colDef.minWidth != null ? colDef.minWidth : this.gridOptionsWrapper.getMinColWidth();\n };\n ColumnUtils.prototype.calculateColMaxWidth = function (colDef) {\n return colDef.maxWidth != null ? colDef.maxWidth : (this.gridOptionsWrapper.getMaxColWidth() || Number.MAX_SAFE_INTEGER);\n };\n ColumnUtils.prototype.calculateColInitialWidth = function (colDef) {\n var minColWidth = this.calculateColMinWidth(colDef);\n var maxColWidth = this.calculateColMaxWidth(colDef);\n var width;\n var colDefWidth = attrToNumber(colDef.width);\n var colDefInitialWidth = attrToNumber(colDef.initialWidth);\n if (colDefWidth != null) {\n width = colDefWidth;\n }\n else if (colDefInitialWidth != null) {\n width = colDefInitialWidth;\n }\n else {\n width = this.gridOptionsWrapper.getColWidth();\n }\n return Math.max(Math.min(width, maxColWidth), minColWidth);\n };\n ColumnUtils.prototype.getOriginalPathForColumn = function (column, originalBalancedTree) {\n var result = [];\n var found = false;\n var recursePath = function (balancedColumnTree, dept) {\n for (var i = 0; i < balancedColumnTree.length; i++) {\n if (found) {\n return;\n }\n // quit the search, so 'result' is kept with the found result\n var node = balancedColumnTree[i];\n if (node instanceof ProvidedColumnGroup) {\n var nextNode = node;\n recursePath(nextNode.getChildren(), dept + 1);\n result[dept] = node;\n }\n else if (node === column) {\n found = true;\n }\n }\n };\n recursePath(originalBalancedTree, 0);\n // we should always find the path, but in case there is a bug somewhere, returning null\n // will make it fail rather than provide a 'hard to track down' bug\n return found ? result : null;\n };\n ColumnUtils.prototype.depthFirstOriginalTreeSearch = function (parent, tree, callback) {\n var _this = this;\n if (!tree) {\n return;\n }\n tree.forEach(function (child) {\n if (child instanceof ProvidedColumnGroup) {\n _this.depthFirstOriginalTreeSearch(child, child.getChildren(), callback);\n }\n callback(child, parent);\n });\n };\n ColumnUtils.prototype.depthFirstAllColumnTreeSearch = function (tree, callback) {\n var _this = this;\n if (!tree) {\n return;\n }\n tree.forEach(function (child) {\n if (child instanceof ColumnGroup) {\n _this.depthFirstAllColumnTreeSearch(child.getChildren(), callback);\n }\n callback(child);\n });\n };\n ColumnUtils.prototype.depthFirstDisplayedColumnTreeSearch = function (tree, callback) {\n var _this = this;\n if (!tree) {\n return;\n }\n tree.forEach(function (child) {\n if (child instanceof ColumnGroup) {\n _this.depthFirstDisplayedColumnTreeSearch(child.getDisplayedChildren(), callback);\n }\n callback(child);\n });\n };\n ColumnUtils = __decorate([\n Bean('columnUtils')\n ], ColumnUtils);\n return ColumnUtils;\n}(BeanStub));\nexport { ColumnUtils };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ColumnGroup } from \"../entities/columnGroup\";\nimport { ProvidedColumnGroup } from \"../entities/providedColumnGroup\";\nimport { Bean } from \"../context/context\";\nimport { BeanStub } from \"../context/beanStub\";\nimport { last } from \"../utils/array\";\nimport { exists } from \"../utils/generic\";\n// takes in a list of columns, as specified by the column definitions, and returns column groups\nvar DisplayedGroupCreator = /** @class */ (function (_super) {\n __extends(DisplayedGroupCreator, _super);\n function DisplayedGroupCreator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n DisplayedGroupCreator.prototype.createDisplayedGroups = function (\n // all displayed columns sorted - this is the columns the grid should show\n sortedVisibleColumns, \n // the tree of columns, as provided by the users, used to know what groups columns roll up into\n balancedColumnTree, \n // creates unique id's for the group\n groupInstanceIdCreator, \n // whether it's left, right or center col\n pinned, \n // we try to reuse old groups if we can, to allow gui to do animation\n oldDisplayedGroups) {\n var _this = this;\n var result = [];\n var previousRealPath;\n var previousOriginalPath;\n var oldColumnsMapped = this.mapOldGroupsById(oldDisplayedGroups);\n // go through each column, then do a bottom up comparison to the previous column, and start\n // to share groups if they converge at any point.\n sortedVisibleColumns.forEach(function (currentColumn) {\n var currentOriginalPath = _this.getOriginalPathForColumn(balancedColumnTree, currentColumn);\n var currentRealPath = [];\n var firstColumn = !previousOriginalPath;\n for (var i = 0; i < currentOriginalPath.length; i++) {\n if (firstColumn || currentOriginalPath[i] !== previousOriginalPath[i]) {\n // new group needed\n var newGroup = _this.createColumnGroup(currentOriginalPath[i], groupInstanceIdCreator, oldColumnsMapped, pinned);\n currentRealPath[i] = newGroup;\n // if top level, add to result, otherwise add to parent\n if (i == 0) {\n result.push(newGroup);\n }\n else {\n currentRealPath[i - 1].addChild(newGroup);\n }\n }\n else {\n // reuse old group\n currentRealPath[i] = previousRealPath[i];\n }\n }\n var noColumnGroups = currentRealPath.length === 0;\n if (noColumnGroups) {\n // if we are not grouping, then the result of the above is an empty\n // path (no groups), and we just add the column to the root list.\n result.push(currentColumn);\n }\n else {\n var leafGroup = last(currentRealPath);\n leafGroup.addChild(currentColumn);\n }\n previousRealPath = currentRealPath;\n previousOriginalPath = currentOriginalPath;\n });\n this.setupParentsIntoColumns(result, null);\n return result;\n };\n DisplayedGroupCreator.prototype.createColumnGroup = function (providedGroup, groupInstanceIdCreator, oldColumnsMapped, pinned) {\n var groupId = providedGroup.getGroupId();\n var instanceId = groupInstanceIdCreator.getInstanceIdForKey(groupId);\n var uniqueId = ColumnGroup.createUniqueId(groupId, instanceId);\n var columnGroup = oldColumnsMapped[uniqueId];\n // if the user is setting new colDefs, it is possible that the id's overlap, and we\n // would have a false match from above. so we double check we are talking about the\n // same original column group.\n if (columnGroup && columnGroup.getProvidedColumnGroup() !== providedGroup) {\n columnGroup = null;\n }\n if (exists(columnGroup)) {\n // clean out the old column group here, as we will be adding children into it again\n columnGroup.reset();\n }\n else {\n columnGroup = new ColumnGroup(providedGroup, groupId, instanceId, pinned);\n this.context.createBean(columnGroup);\n }\n return columnGroup;\n };\n // returns back a 2d map of ColumnGroup as follows: groupId -> instanceId -> ColumnGroup\n DisplayedGroupCreator.prototype.mapOldGroupsById = function (displayedGroups) {\n var result = {};\n var recursive = function (columnsOrGroups) {\n columnsOrGroups.forEach(function (columnOrGroup) {\n if (columnOrGroup instanceof ColumnGroup) {\n var columnGroup = columnOrGroup;\n result[columnOrGroup.getUniqueId()] = columnGroup;\n recursive(columnGroup.getChildren());\n }\n });\n };\n if (displayedGroups) {\n recursive(displayedGroups);\n }\n return result;\n };\n DisplayedGroupCreator.prototype.setupParentsIntoColumns = function (columnsOrGroups, parent) {\n var _this = this;\n columnsOrGroups.forEach(function (columnsOrGroup) {\n columnsOrGroup.setParent(parent);\n if (columnsOrGroup instanceof ColumnGroup) {\n var columnGroup = columnsOrGroup;\n _this.setupParentsIntoColumns(columnGroup.getChildren(), columnGroup);\n }\n });\n };\n DisplayedGroupCreator.prototype.getOriginalPathForColumn = function (balancedColumnTree, column) {\n var result = [];\n var found = false;\n var recursePath = function (columnTree, dept) {\n for (var i = 0; i < columnTree.length; i++) {\n // quit the search, so 'result' is kept with the found result\n if (found) {\n return;\n }\n var node = columnTree[i];\n if (node instanceof ProvidedColumnGroup) {\n var nextNode = node;\n recursePath(nextNode.getChildren(), dept + 1);\n result[dept] = node;\n }\n else if (node === column) {\n found = true;\n }\n }\n };\n recursePath(balancedColumnTree, 0);\n // it's possible we didn't find a path. this happens if the column is generated\n // by the grid (auto-group), in that the definition didn't come from the client. in this case,\n // we create a fake original path.\n if (found) {\n return result;\n }\n console.warn('AG Grid: could not get path');\n return null;\n };\n DisplayedGroupCreator = __decorate([\n Bean('displayedGroupCreator')\n ], DisplayedGroupCreator);\n return DisplayedGroupCreator;\n}(BeanStub));\nexport { DisplayedGroupCreator };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\n/**\n * These keys are used for validating properties supplied on a gridOptions object, and for code generation.\n * If you change the properties on the gridOptions interface, you *must* update this file as well to be consistent.\n */\nvar PropertyKeys = /** @class */ (function () {\n function PropertyKeys() {\n }\n PropertyKeys.STRING_PROPERTIES = [\n 'sortingOrder', 'rowClass', 'rowSelection', 'overlayLoadingTemplate', 'overlayNoRowsTemplate',\n 'quickFilterText', 'rowModelType', 'editType', 'domLayout', 'clipboardDelimiter', 'rowGroupPanelShow',\n 'multiSortKey', 'pivotColumnGroupTotals', 'pivotRowTotals', 'pivotPanelShow', 'fillHandleDirection',\n 'serverSideStoreType', 'groupDisplayType', 'treeDataDisplayType'\n ];\n PropertyKeys.OBJECT_PROPERTIES = [\n 'components', 'frameworkComponents', 'rowStyle', 'context', 'autoGroupColumnDef', 'localeText', 'icons',\n 'datasource', 'serverSideDatasource', 'viewportDatasource', 'groupRowRendererParams', 'aggFuncs', 'fullWidthCellRendererParams',\n 'defaultColGroupDef', 'defaultColDef', 'defaultExportParams', 'defaultCsvExportParams', 'defaultExcelExportParams', 'columnTypes',\n 'rowClassRules', 'detailCellRendererParams', 'loadingCellRendererParams', 'loadingOverlayComponentParams',\n 'noRowsOverlayComponentParams', 'popupParent', 'colResizeDefault', 'statusBar', 'sideBar', 'chartThemeOverrides',\n 'customChartThemes'\n ];\n PropertyKeys.ARRAY_PROPERTIES = [\n 'alignedGrids', 'rowData', 'columnDefs', 'excelStyles', 'pinnedTopRowData', 'pinnedBottomRowData', 'chartThemes'\n ];\n PropertyKeys.NUMBER_PROPERTIES = [\n 'rowHeight', 'detailRowHeight', 'rowBuffer', 'colWidth', 'headerHeight', 'groupHeaderHeight', 'floatingFiltersHeight',\n 'pivotHeaderHeight', 'pivotGroupHeaderHeight', 'groupDefaultExpanded', 'minColWidth', 'maxColWidth', 'viewportRowModelPageSize',\n 'viewportRowModelBufferSize', 'autoSizePadding', 'maxBlocksInCache', 'maxConcurrentDatasourceRequests', 'tooltipShowDelay',\n 'tooltipHideDelay', 'cacheOverflowSize', 'paginationPageSize', 'cacheBlockSize', 'infiniteInitialRowCount', 'scrollbarWidth',\n 'batchUpdateWaitMillis', 'asyncTransactionWaitMillis', 'blockLoadDebounceMillis', 'keepDetailRowsCount',\n 'undoRedoCellEditingLimit', 'cellFlashDelay', 'cellFadeDelay', 'tabIndex'\n ];\n PropertyKeys.BOOLEAN_PROPERTIES = [\n 'suppressMakeColumnVisibleAfterUnGroup', 'suppressRowClickSelection', 'suppressCellSelection', 'suppressCellFocus', 'suppressHorizontalScroll',\n 'alwaysShowHorizontalScroll', 'alwaysShowVerticalScroll', 'debug', 'enableBrowserTooltips', 'enableCellExpressions',\n 'angularCompileRows', 'angularCompileFilters', 'groupSuppressAutoColumn', 'groupSelectsChildren', 'groupIncludeFooter',\n 'groupIncludeTotalFooter', 'groupUseEntireRow', 'groupSuppressBlankHeader', 'suppressMenuHide', 'suppressRowDeselection',\n 'unSortIcon', 'suppressMultiSort', 'singleClickEdit', 'suppressLoadingOverlay', 'suppressNoRowsOverlay', 'suppressAutoSize',\n 'skipHeaderOnAutoSize', 'suppressParentsInRowNodes', 'suppressColumnMoveAnimation', 'suppressMovableColumns',\n 'suppressFieldDotNotation', 'enableRangeSelection', 'enableRangeHandle', 'enableFillHandle', 'suppressClearOnFillReduction',\n 'deltaSort', 'suppressTouch', 'suppressAsyncEvents', 'allowContextMenuWithControlKey', 'suppressContextMenu',\n 'rememberGroupStateWhenNewData', 'enableCellChangeFlash', 'suppressDragLeaveHidesColumns', 'suppressMiddleClickScrolls',\n 'suppressPreventDefaultOnMouseWheel', 'suppressCopyRowsToClipboard', 'copyHeadersToClipboard', 'copyGroupHeadersToClipboard',\n 'pivotMode', 'suppressAggFuncInHeader', 'suppressColumnVirtualisation', 'suppressAggAtRootLevel', 'suppressFocusAfterRefresh',\n 'functionsPassive', 'functionsReadOnly', 'animateRows', 'groupSelectsFiltered', 'groupRemoveSingleChildren',\n 'groupRemoveLowestSingleChildren', 'enableRtl', 'suppressClickEdit', 'rowDragEntireRow', 'rowDragManaged', 'suppressRowDrag',\n 'suppressMoveWhenRowDragging', 'rowDragMultiRow', 'enableGroupEdit', 'embedFullWidthRows', 'deprecatedEmbedFullWidthRows',\n 'suppressPaginationPanel', 'groupHideOpenParents', 'groupMultiAutoColumn', 'pagination',\n 'stopEditingWhenGridLosesFocus', 'paginationAutoPageSize', 'suppressScrollOnNewData', 'suppressScrollWhenPopupsAreOpen',\n 'purgeClosedRowNodes', 'cacheQuickFilter', 'deltaRowDataMode', 'ensureDomOrder', 'accentedSort', 'suppressChangeDetection',\n 'valueCache', 'valueCacheNeverExpires', 'aggregateOnlyChangedColumns', 'suppressAnimationFrame', 'suppressExcelExport',\n 'suppressCsvExport', 'treeData', 'masterDetail', 'suppressMultiRangeSelection', 'enterMovesDownAfterEdit', 'enterMovesDown',\n 'suppressPropertyNamesCheck', 'rowMultiSelectWithClick', 'suppressEnterpriseResetOnNewColumns',\n 'suppressRowHoverHighlight', 'suppressRowTransform', 'suppressClipboardPaste', 'suppressLastEmptyLineOnPaste',\n 'serverSideSortingAlwaysResets', 'suppressSetColumnStateEvents', 'suppressColumnStateEvents', 'enableCharts', 'deltaColumnMode',\n 'suppressMaintainUnsortedOrder', 'enableCellTextSelection', 'suppressBrowserResizeObserver', 'suppressMaxRenderedRowRestriction',\n 'excludeChildrenWhenTreeDataFiltering', 'tooltipMouseTrack', 'keepDetailRows', 'paginateChildRows', 'preventDefaultOnContextMenu',\n 'undoRedoCellEditing', 'allowDragFromColumnsToolPanel', 'immutableData', 'immutableColumns', 'pivotSuppressAutoColumn',\n 'suppressExpandablePivotGroups', 'applyColumnDefOrder', 'debounceVerticalScrollbar', 'detailRowAutoHeight',\n 'serverSideFilteringAlwaysResets', 'suppressAggFilteredOnly', 'showOpenedGroup', 'suppressClipboardApi',\n 'suppressModelUpdateAfterUpdateTransaction', 'stopEditingWhenCellsLoseFocus', 'maintainColumnOrder', 'groupMaintainOrder',\n 'columnHoverHighlight', 'reactUi', 'suppressReactUi', 'readOnlyEdit', 'suppressRowVirtualisation'\n ];\n /** You do not need to include event callbacks in this list, as they are generated automatically. */\n PropertyKeys.FUNCTION_PROPERTIES = [\n 'localeTextFunc', 'groupRowInnerRenderer', 'groupRowInnerRendererFramework',\n 'groupRowRenderer', 'groupRowRendererFramework', 'isExternalFilterPresent', 'getRowHeight', 'doesExternalFilterPass',\n 'getRowClass', 'getRowStyle', 'getContextMenuItems', 'getMainMenuItems', 'processRowPostCreate', 'processCellForClipboard',\n 'groupRowAggNodes', 'getRowNodeId', 'isFullWidthCell', 'fullWidthCellRenderer', 'fullWidthCellRendererFramework',\n 'processSecondaryColDef', 'processSecondaryColGroupDef', 'getBusinessKeyForNode', 'sendToClipboard', 'navigateToNextHeader',\n 'tabToNextHeader', 'navigateToNextCell', 'tabToNextCell', 'processCellFromClipboard', 'getDocument', 'postProcessPopup',\n 'getChildCount', 'getDataPath', 'loadingCellRenderer', 'loadingCellRendererFramework', 'loadingOverlayComponent',\n 'loadingOverlayComponentFramework', 'noRowsOverlayComponent', 'noRowsOverlayComponentFramework', 'detailCellRenderer',\n 'detailCellRendererFramework', 'isRowMaster', 'isRowSelectable', 'postSort', 'processHeaderForClipboard', 'processGroupHeaderForClipboard',\n 'paginationNumberFormatter', 'processDataFromClipboard', 'getServerSideGroupKey', 'isServerSideGroup', 'suppressKeyboardEvent',\n 'createChartContainer', 'getChartToolbarItems', 'fillOperation', 'isApplyServerSideTransaction', 'getServerSideStoreParams',\n 'isServerSideGroupOpenByDefault', 'isGroupOpenByDefault', 'defaultGroupSortComparator', 'defaultGroupOrderComparator',\n 'loadingCellRendererSelector', 'getRowId'\n ];\n PropertyKeys.ALL_PROPERTIES = __spread(PropertyKeys.ARRAY_PROPERTIES, PropertyKeys.OBJECT_PROPERTIES, PropertyKeys.STRING_PROPERTIES, PropertyKeys.NUMBER_PROPERTIES, PropertyKeys.FUNCTION_PROPERTIES, PropertyKeys.BOOLEAN_PROPERTIES);\n /**\n * Used when performing property checks. This avoids noise caused when using frameworks, which can add their own\n * framework-specific properties to colDefs, gridOptions etc.\n */\n PropertyKeys.FRAMEWORK_PROPERTIES = [\n '__ob__', '__v_skip', '__metadata__', 'mappedColumnProperties', 'hasChildColumns', 'toColDef', 'createColDefFromGridColumn'\n ];\n return PropertyKeys;\n}());\nexport { PropertyKeys };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __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};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nimport { Events } from '../events';\nimport { PropertyKeys } from '../propertyKeys';\nimport { iterateObject } from '../utils/object';\nimport { includes } from '../utils/array';\nimport { values } from '../utils/generic';\nvar ComponentUtil = /** @class */ (function () {\n function ComponentUtil() {\n }\n ComponentUtil.getEventCallbacks = function () {\n if (!ComponentUtil.EVENT_CALLBACKS) {\n ComponentUtil.EVENT_CALLBACKS = ComponentUtil.EVENTS.map(function (event) { return ComponentUtil.getCallbackForEvent(event); });\n }\n return ComponentUtil.EVENT_CALLBACKS;\n };\n ComponentUtil.copyAttributesToGridOptions = function (gridOptions, component, skipEventDeprecationCheck) {\n if (skipEventDeprecationCheck === void 0) { skipEventDeprecationCheck = false; }\n // create empty grid options if none were passed\n if (typeof gridOptions !== 'object') {\n gridOptions = {};\n }\n // to allow array style lookup in TypeScript, take type away from 'this' and 'gridOptions'\n var pGridOptions = gridOptions;\n var keyExists = function (key) { return typeof component[key] !== 'undefined'; };\n // add in all the simple properties\n __spread(ComponentUtil.ARRAY_PROPERTIES, ComponentUtil.STRING_PROPERTIES, ComponentUtil.OBJECT_PROPERTIES, ComponentUtil.FUNCTION_PROPERTIES, ComponentUtil.getEventCallbacks()).filter(keyExists)\n .forEach(function (key) { return pGridOptions[key] = component[key]; });\n ComponentUtil.BOOLEAN_PROPERTIES\n .filter(keyExists)\n .forEach(function (key) { return pGridOptions[key] = ComponentUtil.toBoolean(component[key]); });\n ComponentUtil.NUMBER_PROPERTIES\n .filter(keyExists)\n .forEach(function (key) { return pGridOptions[key] = ComponentUtil.toNumber(component[key]); });\n return gridOptions;\n };\n ComponentUtil.getCallbackForEvent = function (eventName) {\n if (!eventName || eventName.length < 2) {\n return eventName;\n }\n return 'on' + eventName[0].toUpperCase() + eventName.substr(1);\n };\n ComponentUtil.processOnChange = function (changes, gridOptions, api, columnApi) {\n if (!changes) {\n return;\n }\n var changesToApply = __assign({}, changes);\n // to allow array style lookup in TypeScript, take type away from 'this' and 'gridOptions'\n var pGridOptions = gridOptions;\n var keyExists = function (key) { return changesToApply[key]; };\n // check if any change for the simple types, and if so, then just copy in the new value\n __spread(ComponentUtil.ARRAY_PROPERTIES, ComponentUtil.OBJECT_PROPERTIES, ComponentUtil.STRING_PROPERTIES, ComponentUtil.getEventCallbacks()).filter(keyExists)\n .forEach(function (key) { return pGridOptions[key] = changesToApply[key].currentValue; });\n ComponentUtil.BOOLEAN_PROPERTIES\n .filter(keyExists)\n .forEach(function (key) { return pGridOptions[key] = ComponentUtil.toBoolean(changesToApply[key].currentValue); });\n ComponentUtil.NUMBER_PROPERTIES\n .filter(keyExists)\n .forEach(function (key) { return pGridOptions[key] = ComponentUtil.toNumber(changesToApply[key].currentValue); });\n if (changesToApply.enableCellTextSelection) {\n api.setEnableCellTextSelection(ComponentUtil.toBoolean(changesToApply.enableCellTextSelection.currentValue));\n delete changesToApply.enableCellTextSelection;\n }\n if (changesToApply.quickFilterText) {\n api.setQuickFilter(changesToApply.quickFilterText.currentValue);\n delete changesToApply.quickFilterText;\n }\n if (changesToApply.autoGroupColumnDef) {\n api.setAutoGroupColumnDef(changesToApply.autoGroupColumnDef.currentValue, \"gridOptionsChanged\");\n delete changesToApply.autoGroupColumnDef;\n }\n if (changesToApply.columnDefs) {\n api.setColumnDefs(changesToApply.columnDefs.currentValue, \"gridOptionsChanged\");\n delete changesToApply.columnDefs;\n }\n if (changesToApply.defaultColDef) {\n api.setDefaultColDef(changesToApply.defaultColDef.currentValue, \"gridOptionsChanged\");\n delete changesToApply.defaultColDef;\n }\n if (changesToApply.paginationPageSize) {\n api.paginationSetPageSize(ComponentUtil.toNumber(changesToApply.paginationPageSize.currentValue));\n delete changesToApply.paginationPageSize;\n }\n if (changesToApply.pivotMode) {\n columnApi.setPivotMode(ComponentUtil.toBoolean(changesToApply.pivotMode.currentValue));\n delete changesToApply.pivotMode;\n }\n if (changesToApply.groupRemoveSingleChildren) {\n api.setGroupRemoveSingleChildren(ComponentUtil.toBoolean(changesToApply.groupRemoveSingleChildren.currentValue));\n delete changesToApply.groupRemoveSingleChildren;\n }\n if (changesToApply.suppressRowDrag) {\n api.setSuppressRowDrag(ComponentUtil.toBoolean(changesToApply.suppressRowDrag.currentValue));\n delete changesToApply.suppressRowDrag;\n }\n if (changesToApply.suppressMoveWhenRowDragging) {\n api.setSuppressMoveWhenRowDragging(ComponentUtil.toBoolean(changesToApply.suppressMoveWhenRowDragging.currentValue));\n delete changesToApply.suppressMoveWhenRowDragging;\n }\n if (changesToApply.suppressRowClickSelection) {\n api.setSuppressRowClickSelection(ComponentUtil.toBoolean(changesToApply.suppressRowClickSelection.currentValue));\n delete changesToApply.suppressRowClickSelection;\n }\n if (changesToApply.suppressClipboardPaste) {\n api.setSuppressClipboardPaste(ComponentUtil.toBoolean(changesToApply.suppressClipboardPaste.currentValue));\n delete changesToApply.suppressClipboardPaste;\n }\n if (changesToApply.headerHeight) {\n api.setHeaderHeight(ComponentUtil.toNumber(changesToApply.headerHeight.currentValue));\n delete changesToApply.headerHeight;\n }\n // any remaining properties can be set in a generic way\n // ie the setter takes the form of setXXX and the argument requires no formatting/translation first\n var dynamicApi = api;\n Object.keys(changesToApply)\n .forEach(function (property) {\n var setterName = \"set\" + property.charAt(0).toUpperCase() + property.substring(1);\n if (dynamicApi[setterName]) {\n dynamicApi[setterName](changes[property].currentValue);\n }\n });\n // copy changes into an event for dispatch\n var event = {\n type: Events.EVENT_COMPONENT_STATE_CHANGED,\n api: gridOptions.api,\n columnApi: gridOptions.columnApi\n };\n iterateObject(changes, function (key, value) {\n event[key] = value;\n });\n api.dispatchEvent(event);\n };\n ComponentUtil.toBoolean = function (value) {\n if (typeof value === 'boolean') {\n return value;\n }\n if (typeof value === 'string') {\n // for boolean, compare to empty String to allow attributes appearing with\n // no value to be treated as 'true'\n return value.toUpperCase() === 'TRUE' || value == '';\n }\n return false;\n };\n ComponentUtil.toNumber = function (value) {\n if (typeof value === 'number') {\n return value;\n }\n if (typeof value === 'string') {\n return Number(value);\n }\n };\n // all the events are populated in here AFTER this class (at the bottom of the file).\n ComponentUtil.EVENTS = [];\n // events that are available for use by users of AG Grid and so should be documented\n ComponentUtil.PUBLIC_EVENTS = [];\n // events that are internal to AG Grid and should not be exposed to users via documentation or generated framework components\n ComponentUtil.EXCLUDED_INTERNAL_EVENTS = [];\n ComponentUtil.STRING_PROPERTIES = PropertyKeys.STRING_PROPERTIES;\n ComponentUtil.OBJECT_PROPERTIES = PropertyKeys.OBJECT_PROPERTIES;\n ComponentUtil.ARRAY_PROPERTIES = PropertyKeys.ARRAY_PROPERTIES;\n ComponentUtil.NUMBER_PROPERTIES = PropertyKeys.NUMBER_PROPERTIES;\n ComponentUtil.BOOLEAN_PROPERTIES = PropertyKeys.BOOLEAN_PROPERTIES;\n ComponentUtil.FUNCTION_PROPERTIES = PropertyKeys.FUNCTION_PROPERTIES;\n ComponentUtil.ALL_PROPERTIES = PropertyKeys.ALL_PROPERTIES;\n return ComponentUtil;\n}());\nexport { ComponentUtil };\nComponentUtil.EVENTS = values(Events);\n/** Exclude the following internal events from code generation to prevent exposing these events via framework components */\nComponentUtil.EXCLUDED_INTERNAL_EVENTS = [\n Events.EVENT_SCROLLBAR_WIDTH_CHANGED,\n Events.EVENT_CHECKBOX_CHANGED,\n Events.EVENT_HEIGHT_SCALE_CHANGED,\n Events.EVENT_BODY_HEIGHT_CHANGED,\n Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED,\n Events.EVENT_SCROLL_VISIBILITY_CHANGED,\n Events.EVENT_COLUMN_HOVER_CHANGED,\n Events.EVENT_FLASH_CELLS,\n Events.EVENT_PAGINATION_PIXEL_OFFSET_CHANGED,\n Events.EVENT_DISPLAYED_ROWS_CHANGED,\n Events.EVENT_LEFT_PINNED_WIDTH_CHANGED,\n Events.EVENT_RIGHT_PINNED_WIDTH_CHANGED,\n Events.EVENT_ROW_CONTAINER_HEIGHT_CHANGED,\n Events.EVENT_POPUP_TO_FRONT,\n Events.EVENT_KEYBOARD_FOCUS,\n Events.EVENT_MOUSE_FOCUS,\n Events.EVENT_STORE_UPDATED,\n Events.EVENT_COLUMN_PANEL_ITEM_DRAG_START,\n Events.EVENT_COLUMN_PANEL_ITEM_DRAG_END,\n Events.EVENT_FILL_START,\n Events.EVENT_FILL_END,\n];\n/** EVENTS that should be exposed via code generation for the framework components. */\nComponentUtil.PUBLIC_EVENTS = ComponentUtil.EVENTS.filter(function (e) { return !includes(ComponentUtil.EXCLUDED_INTERNAL_EVENTS, e); });\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Bean } from \"../context/context\";\nimport { BeanStub } from \"../context/beanStub\";\nvar AgStackComponentsRegistry = /** @class */ (function (_super) {\n __extends(AgStackComponentsRegistry, _super);\n function AgStackComponentsRegistry() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.componentsMappedByName = {};\n return _this;\n }\n AgStackComponentsRegistry.prototype.setupComponents = function (components) {\n var _this = this;\n if (components) {\n components.forEach(function (componentMeta) { return _this.addComponent(componentMeta); });\n }\n };\n AgStackComponentsRegistry.prototype.addComponent = function (componentMeta) {\n // get name of the class as a string\n // let className = getNameOfClass(ComponentClass);\n // insert a dash after every capital letter\n // let classEscaped = className.replace(/([A-Z])/g, \"-$1\").toLowerCase();\n var classEscaped = componentMeta.componentName.replace(/([a-z])([A-Z])/g, \"$1-$2\").toLowerCase();\n // put all to upper case\n var classUpperCase = classEscaped.toUpperCase();\n // finally store\n this.componentsMappedByName[classUpperCase] = componentMeta.componentClass;\n };\n AgStackComponentsRegistry.prototype.getComponentClass = function (htmlTag) {\n return this.componentsMappedByName[htmlTag];\n };\n AgStackComponentsRegistry = __decorate([\n Bean('agStackComponentsRegistry')\n ], AgStackComponentsRegistry);\n return AgStackComponentsRegistry;\n}(BeanStub));\nexport { AgStackComponentsRegistry };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\n/**\n * These variables are lazy loaded, as otherwise they try and get initialised when we are loading\n * unit tests and we don't have references to window or document in the unit tests\n * from http://stackoverflow.com/questions/9847580/how-to-detect-safari-chrome-ie-firefox-and-opera-browser\n */\nvar isSafari;\nvar isIE;\nvar isEdge;\nvar isChrome;\nvar isFirefox;\nvar isIOS;\nvar invisibleScrollbar;\nvar browserScrollbarWidth;\nfunction isBrowserIE() {\n if (isIE === undefined) {\n isIE = /*@cc_on!@*/ false || !!document.documentMode; // At least IE6\n }\n return isIE;\n}\nexport function isBrowserEdge() {\n if (isEdge === undefined) {\n isEdge = !isBrowserIE() && !!window.StyleMedia;\n }\n return isEdge;\n}\nexport function isBrowserSafari() {\n if (isSafari === undefined) {\n // taken from https://stackoverflow.com/a/23522755/1388233\n isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n }\n return isSafari;\n}\nexport function isBrowserChrome() {\n if (isChrome === undefined) {\n var win = window;\n isChrome = (!!win.chrome && (!!win.chrome.webstore || !!win.chrome.runtime)) ||\n (/Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor));\n }\n return isChrome;\n}\nexport function isBrowserFirefox() {\n if (isFirefox === undefined) {\n var win = window;\n isFirefox = typeof win.InstallTrigger !== 'undefined';\n }\n return isFirefox;\n}\nexport function isIOSUserAgent() {\n if (isIOS === undefined) {\n // taken from https://stackoverflow.com/a/58064481/1388233\n isIOS = (/iPad|iPhone|iPod/.test(navigator.platform) ||\n // eslint-disable-next-line\n (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1)) &&\n // @ts-ignore\n !window.MSStream;\n }\n return isIOS;\n}\nexport function getTabIndex(el) {\n if (!el) {\n return null;\n }\n var numberTabIndex = el.tabIndex;\n var tabIndex = el.getAttribute('tabIndex');\n if (numberTabIndex === -1 && (tabIndex === null || (tabIndex === '' && !isBrowserFirefox()))) {\n return null;\n }\n return numberTabIndex.toString();\n}\nexport function getMaxDivHeight() {\n if (!document.body) {\n return -1;\n }\n var res = 1000000;\n // FF reports the height back but still renders blank after ~6M px\n var testUpTo = navigator.userAgent.toLowerCase().match(/firefox/) ? 6000000 : 1000000000;\n var div = document.createElement('div');\n document.body.appendChild(div);\n while (true) {\n var test = res * 2;\n div.style.height = test + 'px';\n if (test > testUpTo || div.clientHeight !== test) {\n break;\n }\n else {\n res = test;\n }\n }\n document.body.removeChild(div);\n return res;\n}\nexport function getScrollbarWidth() {\n if (browserScrollbarWidth == null) {\n initScrollbarWidthAndVisibility();\n }\n return browserScrollbarWidth;\n}\nfunction initScrollbarWidthAndVisibility() {\n var body = document.body;\n var div = document.createElement('div');\n div.style.width = div.style.height = '100px';\n div.style.opacity = '0';\n div.style.overflow = 'scroll';\n div.style.msOverflowStyle = 'scrollbar'; // needed for WinJS apps\n div.style.position = 'absolute';\n body.appendChild(div);\n var width = div.offsetWidth - div.clientWidth;\n // if width is 0 and client width is 0, means the DOM isn't ready\n if (width === 0 && div.clientWidth === 0) {\n width = null;\n }\n // remove div\n if (div.parentNode) {\n div.parentNode.removeChild(div);\n }\n if (width != null) {\n browserScrollbarWidth = width;\n invisibleScrollbar = width === 0;\n }\n}\nexport function isInvisibleScrollbar() {\n if (invisibleScrollbar == null) {\n initScrollbarWidthAndVisibility();\n }\n return invisibleScrollbar;\n}\n/** @deprecated */\nexport function hasOverflowScrolling() {\n var e_1, _a;\n var prefixes = ['webkit', 'moz', 'o', 'ms'];\n var div = document.createElement('div');\n var body = document.getElementsByTagName('body')[0];\n var found = false;\n var p;\n body.appendChild(div);\n div.setAttribute('style', prefixes.map(function (prefix) { return \"-\" + prefix + \"-overflow-scrolling: touch\"; }).concat('overflow-scrolling: touch').join(';'));\n var computedStyle = window.getComputedStyle(div);\n if (computedStyle.overflowScrolling === 'touch') {\n found = true;\n }\n if (!found) {\n try {\n for (var prefixes_1 = __values(prefixes), prefixes_1_1 = prefixes_1.next(); !prefixes_1_1.done; prefixes_1_1 = prefixes_1.next()) {\n p = prefixes_1_1.value;\n if (computedStyle[p + \"OverflowScrolling\"] === 'touch') {\n found = true;\n break;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (prefixes_1_1 && !prefixes_1_1.done && (_a = prefixes_1.return)) _a.call(prefixes_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n if (div.parentNode) {\n div.parentNode.removeChild(div);\n }\n return found;\n}\n/**\n * Gets the document body width\n * from: http://stackoverflow.com/questions/1038727/how-to-get-browser-width-using-javascript-code\n * @returns {number}\n */\nexport function getBodyWidth() {\n if (document.body) {\n return document.body.clientWidth;\n }\n if (window.innerHeight) {\n return window.innerWidth;\n }\n if (document.documentElement && document.documentElement.clientWidth) {\n return document.documentElement.clientWidth;\n }\n return -1;\n}\n/**\n * Gets the body height\n * from: http://stackoverflow.com/questions/1038727/how-to-get-browser-width-using-javascript-code\n * @returns {number}\n */\nexport function getBodyHeight() {\n if (document.body) {\n return document.body.clientHeight;\n }\n if (window.innerHeight) {\n return window.innerHeight;\n }\n if (document.documentElement && document.documentElement.clientHeight) {\n return document.documentElement.clientHeight;\n }\n return -1;\n}\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nimport { isBrowserChrome, isBrowserSafari } from './browser';\nimport { exists } from './generic';\nimport { isNonNullObject } from './object';\nimport { hyphenToCamelCase } from './string';\nimport { Constants } from '../constants/constants';\nvar rtlNegativeScroll;\n/**\n * This method adds a class to an element and remove that class from all siblings.\n * Useful for toggling state.\n * @param {HTMLElement} element The element to receive the class\n * @param {string} elementClass The class to be assigned to the element\n * @param {boolean} otherElementClass The class to be assigned to siblings of the element, but not the element itself\n */\nexport function radioCssClass(element, elementClass, otherElementClass) {\n var parent = element.parentElement;\n var sibling = parent && parent.firstChild;\n while (sibling) {\n if (elementClass) {\n sibling.classList.toggle(elementClass, sibling === element);\n }\n if (otherElementClass) {\n sibling.classList.toggle(otherElementClass, sibling !== element);\n }\n sibling = sibling.nextSibling;\n }\n}\nexport function isFocusableFormField(element) {\n var matches = Element.prototype.matches || Element.prototype.msMatchesSelector;\n var isFocusable = matches.call(element, Constants.INPUT_SELECTOR);\n var isNotFocusable = matches.call(element, Constants.FOCUSABLE_EXCLUDE);\n var isElementVisible = isVisible(element);\n var focusable = isFocusable && !isNotFocusable && isElementVisible;\n return focusable;\n}\nexport function setDisplayed(element, displayed) {\n element.classList.toggle('ag-hidden', !displayed);\n}\nexport function setVisible(element, visible) {\n element.classList.toggle('ag-invisible', !visible);\n}\nexport function setDisabled(element, disabled) {\n var attributeName = 'disabled';\n var addOrRemoveDisabledAttribute = disabled ?\n function (e) { return e.setAttribute(attributeName, ''); } :\n function (e) { return e.removeAttribute(attributeName); };\n addOrRemoveDisabledAttribute(element);\n nodeListForEach(element.querySelectorAll('input'), function (input) { return addOrRemoveDisabledAttribute(input); });\n}\nexport function isElementChildOfClass(element, cls, maxNest) {\n var counter = 0;\n while (element) {\n if (element.classList.contains(cls)) {\n return true;\n }\n element = element.parentElement;\n if (maxNest && ++counter > maxNest) {\n break;\n }\n }\n return false;\n}\n// returns back sizes as doubles instead of strings. similar to\n// getBoundingClientRect, however getBoundingClientRect does not:\n// a) work with fractions (eg browser is zooming)\n// b) has CSS transitions applied (eg CSS scale, browser zoom), which we don't want, we want the un-transitioned values\nexport function getElementSize(el) {\n var _a = window.getComputedStyle(el), height = _a.height, width = _a.width, paddingTop = _a.paddingTop, paddingRight = _a.paddingRight, paddingBottom = _a.paddingBottom, paddingLeft = _a.paddingLeft, marginTop = _a.marginTop, marginRight = _a.marginRight, marginBottom = _a.marginBottom, marginLeft = _a.marginLeft, boxSizing = _a.boxSizing;\n return {\n height: parseFloat(height),\n width: parseFloat(width),\n paddingTop: parseFloat(paddingTop),\n paddingRight: parseFloat(paddingRight),\n paddingBottom: parseFloat(paddingBottom),\n paddingLeft: parseFloat(paddingLeft),\n marginTop: parseFloat(marginTop),\n marginRight: parseFloat(marginRight),\n marginBottom: parseFloat(marginBottom),\n marginLeft: parseFloat(marginLeft),\n boxSizing: boxSizing\n };\n}\nexport function getInnerHeight(el) {\n var size = getElementSize(el);\n if (size.boxSizing === 'border-box') {\n return size.height - size.paddingTop - size.paddingBottom;\n }\n return size.height;\n}\nexport function getInnerWidth(el) {\n var size = getElementSize(el);\n if (size.boxSizing === 'border-box') {\n return size.width - size.paddingLeft - size.paddingRight;\n }\n return size.width;\n}\nexport function getAbsoluteHeight(el) {\n var size = getElementSize(el);\n var marginRight = size.marginBottom + size.marginTop;\n return Math.ceil(el.offsetHeight + marginRight);\n}\nexport function getAbsoluteWidth(el) {\n var size = getElementSize(el);\n var marginWidth = size.marginLeft + size.marginRight;\n return Math.ceil(el.offsetWidth + marginWidth);\n}\nexport function isRtlNegativeScroll() {\n if (typeof rtlNegativeScroll === \"boolean\") {\n return rtlNegativeScroll;\n }\n var template = document.createElement('div');\n template.style.direction = 'rtl';\n template.style.width = '1px';\n template.style.height = '1px';\n template.style.position = 'fixed';\n template.style.top = '0px';\n template.style.overflow = 'hidden';\n template.dir = 'rtl';\n template.innerHTML = /* html */\n \"
    \\n \\n \\n
    \";\n document.body.appendChild(template);\n template.scrollLeft = 1;\n rtlNegativeScroll = Math.floor(template.scrollLeft) === 0;\n document.body.removeChild(template);\n return rtlNegativeScroll;\n}\nexport function getScrollLeft(element, rtl) {\n var scrollLeft = element.scrollLeft;\n if (rtl) {\n // Absolute value - for FF that reports RTL scrolls in negative numbers\n scrollLeft = Math.abs(scrollLeft);\n if (isBrowserChrome() && !isRtlNegativeScroll()) {\n scrollLeft = element.scrollWidth - element.clientWidth - scrollLeft;\n }\n }\n return scrollLeft;\n}\nexport function setScrollLeft(element, value, rtl) {\n if (rtl) {\n // Chrome and Safari when doing RTL have the END position of the scroll as zero, not the start\n if (isRtlNegativeScroll()) {\n value *= -1;\n }\n else if (isBrowserSafari() || isBrowserChrome()) {\n value = element.scrollWidth - element.clientWidth - value;\n }\n }\n element.scrollLeft = value;\n}\nexport function clearElement(el) {\n while (el && el.firstChild) {\n el.removeChild(el.firstChild);\n }\n}\n/** @deprecated */\nexport function removeElement(parent, cssSelector) {\n removeFromParent(parent.querySelector(cssSelector));\n}\nexport function removeFromParent(node) {\n if (node && node.parentNode) {\n node.parentNode.removeChild(node);\n }\n}\nexport function isVisible(element) {\n return element.offsetParent !== null;\n}\n/**\n * Loads the template and returns it as an element. makes up for no simple way in\n * the dom api to load html directly, eg we cannot do this: document.createElement(template)\n * @param {string} template\n * @returns {HTMLElement}\n */\nexport function loadTemplate(template) {\n // we try the DOMParser first, as SalesForce doesn't like using innerHTML on a div\n if (DOMParser !== null) {\n var parser = new DOMParser();\n var doc = parser.parseFromString(template, \"text/html\");\n return doc.body.firstChild;\n }\n var tempDiv = document.createElement('div');\n tempDiv.innerHTML = (template || '').trim();\n return tempDiv.firstChild;\n}\nexport function appendHtml(eContainer, htmlTemplate) {\n if (eContainer.lastChild) {\n // https://developer.mozilla.org/en-US/docs/Web/API/Element/insertAdjacentHTML\n // we put the items at the start, so new items appear underneath old items,\n // so when expanding/collapsing groups, the new rows don't go on top of the\n // rows below that are moving our of the way\n eContainer.insertAdjacentHTML('afterbegin', htmlTemplate);\n }\n else {\n eContainer.innerHTML = htmlTemplate;\n }\n}\n/** @deprecated */\nexport function getElementAttribute(element, attributeName) {\n if (element.attributes && element.attributes[attributeName]) {\n var attribute = element.attributes[attributeName];\n return attribute.value;\n }\n return null;\n}\nexport function offsetHeight(element) {\n return element && element.clientHeight ? element.clientHeight : 0;\n}\nexport function offsetWidth(element) {\n return element && element.clientWidth ? element.clientWidth : 0;\n}\nexport function ensureDomOrder(eContainer, eChild, eChildBefore) {\n // if already in right order, do nothing\n if (eChildBefore && eChildBefore.nextSibling === eChild) {\n return;\n }\n if (eChildBefore) {\n if (eChildBefore.nextSibling) {\n // insert between the eRowBefore and the row after it\n eContainer.insertBefore(eChild, eChildBefore.nextSibling);\n }\n else {\n // if nextSibling is missing, means other row is at end, so just append new row at the end\n eContainer.appendChild(eChild);\n }\n }\n else {\n // otherwise put at start\n if (eContainer.firstChild && eContainer.firstChild !== eChild) {\n // insert it at the first location\n eContainer.insertAdjacentElement('afterbegin', eChild);\n }\n }\n}\nexport function setDomChildOrder(eContainer, orderedChildren) {\n for (var i = 0; i < orderedChildren.length; i++) {\n var correctCellAtIndex = orderedChildren[i];\n var actualCellAtIndex = eContainer.children[i];\n if (actualCellAtIndex !== correctCellAtIndex) {\n eContainer.insertBefore(correctCellAtIndex, actualCellAtIndex);\n }\n }\n}\nexport function insertWithDomOrder(eContainer, eToInsert, eChildBefore) {\n if (eChildBefore) {\n // if previous element exists, just slot in after the previous element\n eChildBefore.insertAdjacentElement('afterend', eToInsert);\n }\n else {\n if (eContainer.firstChild) {\n // insert it at the first location\n eContainer.insertAdjacentElement('afterbegin', eToInsert);\n }\n else {\n // otherwise eContainer is empty, so just append it\n eContainer.appendChild(eToInsert);\n }\n }\n}\n/** @deprecated */\nexport function prependDC(parent, documentFragment) {\n if (exists(parent.firstChild)) {\n parent.insertBefore(documentFragment, parent.firstChild);\n }\n else {\n parent.appendChild(documentFragment);\n }\n}\nexport function addStylesToElement(eElement, styles) {\n if (!styles) {\n return;\n }\n Object.keys(styles).forEach(function (key) {\n var keyCamelCase = hyphenToCamelCase(key);\n if (keyCamelCase) {\n eElement.style[keyCamelCase] = styles[key];\n }\n });\n}\nexport function isHorizontalScrollShowing(element) {\n return element.clientWidth < element.scrollWidth;\n}\nexport function isVerticalScrollShowing(element) {\n return element.clientHeight < element.scrollHeight;\n}\nexport function setElementWidth(element, width) {\n if (width === 'flex') {\n element.style.removeProperty('width');\n element.style.removeProperty('minWidth');\n element.style.removeProperty('maxWidth');\n element.style.flex = '1 1 auto';\n }\n else {\n setFixedWidth(element, width);\n }\n}\nexport function setFixedWidth(element, width) {\n width = formatSize(width);\n element.style.width = width.toString();\n element.style.maxWidth = width.toString();\n element.style.minWidth = width.toString();\n}\nexport function setElementHeight(element, height) {\n if (height === 'flex') {\n element.style.removeProperty('height');\n element.style.removeProperty('minHeight');\n element.style.removeProperty('maxHeight');\n element.style.flex = '1 1 auto';\n }\n else {\n setFixedHeight(element, height);\n }\n}\nexport function setFixedHeight(element, height) {\n height = formatSize(height);\n element.style.height = height.toString();\n element.style.maxHeight = height.toString();\n element.style.minHeight = height.toString();\n}\nexport function formatSize(size) {\n if (typeof size === 'number') {\n return size + \"px\";\n }\n return size;\n}\n/**\n * Returns true if it is a DOM node\n * taken from: http://stackoverflow.com/questions/384286/javascript-isdom-how-do-you-check-if-a-javascript-object-is-a-dom-object\n * @param {any} o\n * @return {boolean}\n */\nexport function isNode(o) {\n return (typeof Node === 'function'\n ? o instanceof Node\n : o && typeof o === 'object' && typeof o.nodeType === 'number' && typeof o.nodeName === 'string');\n}\n//\n/**\n * Returns true if it is a DOM element\n * taken from: http://stackoverflow.com/questions/384286/javascript-isdom-how-do-you-check-if-a-javascript-object-is-a-dom-object\n * @param {any} o\n * @returns {boolean}\n */\nexport function isElement(o) {\n return (typeof HTMLElement === 'function'\n ? o instanceof HTMLElement //DOM2\n : o && isNonNullObject(o) && o.nodeType === 1 && typeof o.nodeName === 'string');\n}\nexport function isNodeOrElement(o) {\n return isNode(o) || isElement(o);\n}\n/**\n * Makes a copy of a node list into a list\n * @param {NodeList} nodeList\n * @returns {Node[]}\n */\nexport function copyNodeList(nodeList) {\n if (nodeList == null) {\n return [];\n }\n var result = [];\n nodeListForEach(nodeList, function (node) { return result.push(node); });\n return result;\n}\nexport function iterateNamedNodeMap(map, callback) {\n if (!map) {\n return;\n }\n for (var i = 0; i < map.length; i++) {\n var attr = map[i];\n callback(attr.name, attr.value);\n }\n}\n/** @deprecated */\nexport function setCheckboxState(eCheckbox, state) {\n if (typeof state === 'boolean') {\n eCheckbox.checked = state;\n eCheckbox.indeterminate = false;\n }\n else {\n // isNodeSelected returns back undefined if it's a group and the children\n // are a mix of selected and unselected\n eCheckbox.indeterminate = true;\n }\n}\nexport function addOrRemoveAttribute(element, name, value) {\n if (value == null) {\n element.removeAttribute(name);\n }\n else {\n element.setAttribute(name, value.toString());\n }\n}\nexport function nodeListForEach(nodeList, action) {\n if (nodeList == null) {\n return;\n }\n for (var i = 0; i < nodeList.length; i++) {\n action(nodeList[i]);\n }\n}\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nvar ColDefUtil = /** @class */ (function () {\n function ColDefUtil() {\n }\n ColDefUtil.STRING_PROPERTIES = [\n 'headerName',\n 'columnGroupShow',\n 'headerClass',\n 'toolPanelClass',\n 'headerValueGetter',\n 'pivotKeys',\n 'groupId',\n 'colId',\n 'sort',\n 'initialSort',\n 'field',\n 'type',\n 'tooltipComponent',\n 'tooltipField',\n 'headerTooltip',\n 'cellClass',\n 'showRowGroup',\n 'template',\n 'templateUrl',\n 'filter',\n 'initialAggFunc',\n 'aggFunc',\n 'pinned',\n 'initialPinned',\n 'chartDataType',\n 'cellEditorPopupPosition'\n ];\n ColDefUtil.OBJECT_PROPERTIES = [\n 'headerGroupComponent',\n 'headerGroupComponentFramework',\n 'headerGroupComponentParams',\n 'cellStyle',\n 'cellRenderer',\n 'cellRendererParams',\n 'cellRendererFramework',\n 'cellEditor',\n 'cellEditorFramework',\n 'cellEditorParams',\n 'pinnedRowCellRendererFramework',\n 'pinnedRowCellRendererParams',\n 'filterFramework',\n 'filterParams',\n 'pivotValueColumn',\n 'headerComponent',\n 'headerComponentFramework',\n 'headerComponentParams',\n 'floatingFilterComponent',\n 'floatingFilterComponentParams',\n 'floatingFilterComponentFramework',\n 'floatingFilterFramework',\n 'tooltipComponent',\n 'tooltipComponentParams',\n 'tooltipComponentFramework',\n 'refData',\n 'columnsMenuParams'\n ];\n ColDefUtil.ARRAY_PROPERTIES = [\n 'children',\n 'sortingOrder',\n 'allowedAggFuncs',\n 'menuTabs',\n 'pivotTotalColumnIds',\n 'cellClassRules',\n 'icons'\n ];\n ColDefUtil.NUMBER_PROPERTIES = [\n 'sortedAt',\n 'sortIndex',\n 'initialSortIndex',\n 'flex',\n 'initialFlex',\n 'width',\n 'initialWidth',\n 'minWidth',\n 'maxWidth',\n 'rowGroupIndex',\n 'initialRowGroupIndex',\n 'pivotIndex',\n 'initialPivotIndex'\n ];\n ColDefUtil.BOOLEAN_PROPERTIES = [\n 'suppressCellFlash',\n 'suppressColumnsToolPanel',\n 'suppressFiltersToolPanel',\n 'openByDefault',\n 'marryChildren',\n 'hide',\n 'initialHide',\n 'rowGroup',\n 'initialRowGroup',\n 'pivot',\n 'initialPivot',\n 'checkboxSelection',\n 'headerCheckboxSelection',\n 'headerCheckboxSelectionFilteredOnly',\n 'suppressMenu',\n 'suppressMovable',\n 'lockPosition',\n 'lockVisible',\n 'lockPinned',\n 'unSortIcon',\n 'suppressSizeToFit',\n 'suppressAutoSize',\n 'enableRowGroup',\n 'enablePivot',\n 'enableValue',\n 'editable',\n 'suppressPaste',\n 'suppressNavigable',\n 'enableCellChangeFlash',\n 'rowDrag',\n 'dndSource',\n 'autoHeight',\n 'wrapText',\n 'sortable',\n 'resizable',\n 'singleClickEdit',\n 'floatingFilter',\n 'cellEditorPopup',\n 'suppressFillHandle'\n ];\n ColDefUtil.FUNCTION_PROPERTIES = [\n 'dndSourceOnRowDrag',\n 'valueGetter',\n 'valueSetter',\n 'filterValueGetter',\n 'keyCreator',\n 'pinnedRowCellRenderer',\n 'valueFormatter',\n 'pinnedRowValueFormatter',\n 'valueParser',\n 'comparator',\n 'equals',\n 'pivotComparator',\n 'suppressKeyboardEvent',\n 'suppressHeaderKeyboardEvent',\n 'colSpan',\n 'rowSpan',\n 'getQuickFilterText',\n 'newValueHandler',\n 'onCellValueChanged',\n 'onCellClicked',\n 'onCellDoubleClicked',\n 'onCellContextMenu',\n 'rowDragText',\n 'tooltipValueGetter',\n 'tooltipComponent',\n 'tooltipComponentFramework',\n 'cellRendererSelector',\n 'cellEditorSelector'\n ];\n ColDefUtil.ALL_PROPERTIES = __spread(ColDefUtil.ARRAY_PROPERTIES, ColDefUtil.OBJECT_PROPERTIES, ColDefUtil.STRING_PROPERTIES, ColDefUtil.NUMBER_PROPERTIES, ColDefUtil.FUNCTION_PROPERTIES, ColDefUtil.BOOLEAN_PROPERTIES);\n // used when doing property checks - this causes noise when using frameworks which can add their own fw specific\n // properties to colDefs, gridOptions etc\n ColDefUtil.FRAMEWORK_PROPERTIES = [\n '__ob__',\n '__v_skip',\n '__metadata__',\n 'mappedColumnProperties',\n 'hasChildColumns',\n 'toColDef',\n 'createColDefFromGridColumn'\n ];\n return ColDefUtil;\n}());\nexport { ColDefUtil };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar Color = /** @class */ (function () {\n /**\n * Every color component should be in the [0, 1] range.\n * Some easing functions (such as elastic easing) can overshoot the target value by some amount.\n * So, when animating colors, if the source or target color components are already near\n * or at the edge of the allowed [0, 1] range, it is possible for the intermediate color\n * component value to end up outside of that range mid-animation. For this reason the constructor\n * performs range checking/constraining.\n * @param r Red component.\n * @param g Green component.\n * @param b Blue component.\n * @param a Alpha (opacity) component.\n */\n function Color(r, g, b, a) {\n if (a === void 0) { a = 1; }\n // NaN is treated as 0.\n this.r = Math.min(1, Math.max(0, r || 0));\n this.g = Math.min(1, Math.max(0, g || 0));\n this.b = Math.min(1, Math.max(0, b || 0));\n this.a = Math.min(1, Math.max(0, a || 0));\n }\n /**\n * The given string can be in one of the following formats:\n * - #rgb\n * - #rrggbb\n * - rgb(r, g, b)\n * - rgba(r, g, b, a)\n * - CSS color name such as 'white', 'orange', 'cyan', etc.\n * @param str\n */\n Color.fromString = function (str) {\n // hexadecimal notation\n if (str.indexOf('#') >= 0) { // there can be some leading whitespace\n return Color.fromHexString(str);\n }\n // color name\n var hex = Color.nameToHex[str];\n if (hex) {\n return Color.fromHexString(hex);\n }\n // rgb(a) notation\n if (str.indexOf('rgb') >= 0) {\n return Color.fromRgbaString(str);\n }\n throw new Error(\"Invalid color string: '\" + str + \"'\");\n };\n // See https://drafts.csswg.org/css-color/#hex-notation\n Color.parseHex = function (input) {\n input = input.replace(/ /g, '').slice(1);\n var parts;\n switch (input.length) {\n case 6:\n case 8:\n parts = [];\n for (var i = 0; i < input.length; i += 2) {\n parts.push(parseInt(\"\" + input[i] + input[i + 1], 16));\n }\n break;\n case 3:\n case 4:\n parts = input.split('').map(function (p) { return parseInt(p, 16); }).map(function (p) { return p + p * 16; });\n break;\n }\n if (parts.length >= 3) {\n if (parts.every(function (p) { return p >= 0; })) {\n if (parts.length === 3) {\n parts.push(255);\n }\n return parts;\n }\n }\n };\n Color.fromHexString = function (str) {\n var values = Color.parseHex(str);\n if (values) {\n var _a = __read(values, 4), r = _a[0], g = _a[1], b = _a[2], a = _a[3];\n return new Color(r / 255, g / 255, b / 255, a / 255);\n }\n throw new Error(\"Malformed hexadecimal color string: '\" + str + \"'\");\n };\n Color.stringToRgba = function (str) {\n // Find positions of opening and closing parentheses.\n var _a = __read([NaN, NaN], 2), po = _a[0], pc = _a[1];\n for (var i = 0; i < str.length; i++) {\n var c = str[i];\n if (!po && c === '(') {\n po = i;\n }\n else if (c === ')') {\n pc = i;\n break;\n }\n }\n var contents = po && pc && str.substring(po + 1, pc);\n if (!contents) {\n return;\n }\n var parts = contents.split(',');\n var rgba = [];\n for (var i = 0; i < parts.length; i++) {\n var part = parts[i];\n var value = parseFloat(part);\n if (isNaN(value)) {\n return;\n }\n if (part.indexOf('%') >= 0) { // percentage r, g, or b value\n value = Math.max(0, Math.min(100, value));\n value /= 100;\n }\n else {\n if (i === 3) { // alpha component\n value = Math.max(0, Math.min(1, value));\n }\n else { // absolute r, g, or b value\n value = Math.max(0, Math.min(255, value));\n value /= 255;\n }\n }\n rgba.push(value);\n }\n return rgba;\n };\n Color.fromRgbaString = function (str) {\n var rgba = Color.stringToRgba(str);\n if (rgba) {\n if (rgba.length === 3) {\n return new Color(rgba[0], rgba[1], rgba[2]);\n }\n else if (rgba.length === 4) {\n return new Color(rgba[0], rgba[1], rgba[2], rgba[3]);\n }\n }\n throw new Error(\"Malformed rgb/rgba color string: '\" + str + \"'\");\n };\n Color.fromArray = function (arr) {\n if (arr.length === 4) {\n return new Color(arr[0], arr[1], arr[2], arr[3]);\n }\n if (arr.length === 3) {\n return new Color(arr[0], arr[1], arr[2]);\n }\n throw new Error('The given array should contain 3 or 4 color components (numbers).');\n };\n Color.fromHSB = function (h, s, b, alpha) {\n if (alpha === void 0) { alpha = 1; }\n var rgb = Color.HSBtoRGB(h, s, b);\n return new Color(rgb[0], rgb[1], rgb[2], alpha);\n };\n Color.padHex = function (str) {\n // Can't use `padStart(2, '0')` here because of IE.\n return str.length === 1 ? '0' + str : str;\n };\n Color.prototype.toHexString = function () {\n var hex = '#'\n + Color.padHex(Math.round(this.r * 255).toString(16))\n + Color.padHex(Math.round(this.g * 255).toString(16))\n + Color.padHex(Math.round(this.b * 255).toString(16));\n if (this.a < 1) {\n hex += Color.padHex(Math.round(this.a * 255).toString(16));\n }\n return hex;\n };\n Color.prototype.toRgbaString = function (fractionDigits) {\n if (fractionDigits === void 0) { fractionDigits = 3; }\n var components = [\n Math.round(this.r * 255),\n Math.round(this.g * 255),\n Math.round(this.b * 255)\n ];\n var k = Math.pow(10, fractionDigits);\n if (this.a !== 1) {\n components.push(Math.round(this.a * k) / k);\n return \"rgba(\" + components.join(', ') + \")\";\n }\n return \"rgb(\" + components.join(', ') + \")\";\n };\n Color.prototype.toString = function () {\n if (this.a === 1) {\n return this.toHexString();\n }\n return this.toRgbaString();\n };\n Color.prototype.toHSB = function () {\n return Color.RGBtoHSB(this.r, this.g, this.b);\n };\n /**\n * Converts the given RGB triple to an array of HSB (HSV) components.\n * The hue component will be `NaN` for achromatic colors.\n */\n Color.RGBtoHSB = function (r, g, b) {\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n var S = max !== 0 ? (max - min) / max : 0;\n var H = NaN;\n // min == max, means all components are the same\n // and the color is a shade of gray with no hue (H is NaN)\n if (min !== max) {\n var delta = max - min;\n var rc = (max - r) / delta;\n var gc = (max - g) / delta;\n var bc = (max - b) / delta;\n if (r === max) {\n H = bc - gc;\n }\n else if (g === max) {\n H = 2.0 + rc - bc;\n }\n else {\n H = 4.0 + gc - rc;\n }\n H /= 6.0;\n if (H < 0) {\n H = H + 1.0;\n }\n }\n return [H * 360, S, max];\n };\n /**\n * Converts the given HSB (HSV) triple to an array of RGB components.\n */\n Color.HSBtoRGB = function (H, S, B) {\n if (isNaN(H)) {\n H = 0;\n }\n H = (((H % 360) + 360) % 360) / 360; // normalize hue to [0, 360] interval, then scale to [0, 1]\n var r = 0;\n var g = 0;\n var b = 0;\n if (S === 0) {\n r = g = b = B;\n }\n else {\n var h = (H - Math.floor(H)) * 6;\n var f = h - Math.floor(h);\n var p = B * (1 - S);\n var q = B * (1 - S * f);\n var t = B * (1 - (S * (1 - f)));\n switch (h >> 0) { // discard the floating point part of the number\n case 0:\n r = B;\n g = t;\n b = p;\n break;\n case 1:\n r = q;\n g = B;\n b = p;\n break;\n case 2:\n r = p;\n g = B;\n b = t;\n break;\n case 3:\n r = p;\n g = q;\n b = B;\n break;\n case 4:\n r = t;\n g = p;\n b = B;\n break;\n case 5:\n r = B;\n g = p;\n b = q;\n break;\n }\n }\n return [r, g, b];\n };\n Color.prototype.derive = function (hueShift, saturationFactor, brightnessFactor, opacityFactor) {\n var hsb = Color.RGBtoHSB(this.r, this.g, this.b);\n var b = hsb[2];\n if (b == 0 && brightnessFactor > 1.0) {\n b = 0.05;\n }\n var h = (((hsb[0] + hueShift) % 360) + 360) % 360;\n var s = Math.max(Math.min(hsb[1] * saturationFactor, 1.0), 0.0);\n b = Math.max(Math.min(b * brightnessFactor, 1.0), 0.0);\n var a = Math.max(Math.min(this.a * opacityFactor, 1.0), 0.0);\n var rgba = Color.HSBtoRGB(h, s, b);\n rgba.push(a);\n return Color.fromArray(rgba);\n };\n Color.prototype.brighter = function () {\n return this.derive(0, 1.0, 1.0 / 0.7, 1.0);\n };\n Color.prototype.darker = function () {\n return this.derive(0, 1.0, 0.7, 1.0);\n };\n /**\n * CSS Color Module Level 4:\n * https://drafts.csswg.org/css-color/#named-colors\n */\n Color.nameToHex = Object.freeze({\n aliceblue: '#F0F8FF',\n antiquewhite: '#FAEBD7',\n aqua: '#00FFFF',\n aquamarine: '#7FFFD4',\n azure: '#F0FFFF',\n beige: '#F5F5DC',\n bisque: '#FFE4C4',\n black: '#000000',\n blanchedalmond: '#FFEBCD',\n blue: '#0000FF',\n blueviolet: '#8A2BE2',\n brown: '#A52A2A',\n burlywood: '#DEB887',\n cadetblue: '#5F9EA0',\n chartreuse: '#7FFF00',\n chocolate: '#D2691E',\n coral: '#FF7F50',\n cornflowerblue: '#6495ED',\n cornsilk: '#FFF8DC',\n crimson: '#DC143C',\n cyan: '#00FFFF',\n darkblue: '#00008B',\n darkcyan: '#008B8B',\n darkgoldenrod: '#B8860B',\n darkgray: '#A9A9A9',\n darkgreen: '#006400',\n darkgrey: '#A9A9A9',\n darkkhaki: '#BDB76B',\n darkmagenta: '#8B008B',\n darkolivegreen: '#556B2F',\n darkorange: '#FF8C00',\n darkorchid: '#9932CC',\n darkred: '#8B0000',\n darksalmon: '#E9967A',\n darkseagreen: '#8FBC8F',\n darkslateblue: '#483D8B',\n darkslategray: '#2F4F4F',\n darkslategrey: '#2F4F4F',\n darkturquoise: '#00CED1',\n darkviolet: '#9400D3',\n deeppink: '#FF1493',\n deepskyblue: '#00BFFF',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1E90FF',\n firebrick: '#B22222',\n floralwhite: '#FFFAF0',\n forestgreen: '#228B22',\n fuchsia: '#FF00FF',\n gainsboro: '#DCDCDC',\n ghostwhite: '#F8F8FF',\n gold: '#FFD700',\n goldenrod: '#DAA520',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#ADFF2F',\n grey: '#808080',\n honeydew: '#F0FFF0',\n hotpink: '#FF69B4',\n indianred: '#CD5C5C',\n indigo: '#4B0082',\n ivory: '#FFFFF0',\n khaki: '#F0E68C',\n lavender: '#E6E6FA',\n lavenderblush: '#FFF0F5',\n lawngreen: '#7CFC00',\n lemonchiffon: '#FFFACD',\n lightblue: '#ADD8E6',\n lightcoral: '#F08080',\n lightcyan: '#E0FFFF',\n lightgoldenrodyellow: '#FAFAD2',\n lightgray: '#D3D3D3',\n lightgreen: '#90EE90',\n lightgrey: '#D3D3D3',\n lightpink: '#FFB6C1',\n lightsalmon: '#FFA07A',\n lightseagreen: '#20B2AA',\n lightskyblue: '#87CEFA',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#B0C4DE',\n lightyellow: '#FFFFE0',\n lime: '#00FF00',\n limegreen: '#32CD32',\n linen: '#FAF0E6',\n magenta: '#FF00FF',\n maroon: '#800000',\n mediumaquamarine: '#66CDAA',\n mediumblue: '#0000CD',\n mediumorchid: '#BA55D3',\n mediumpurple: '#9370DB',\n mediumseagreen: '#3CB371',\n mediumslateblue: '#7B68EE',\n mediumspringgreen: '#00FA9A',\n mediumturquoise: '#48D1CC',\n mediumvioletred: '#C71585',\n midnightblue: '#191970',\n mintcream: '#F5FFFA',\n mistyrose: '#FFE4E1',\n moccasin: '#FFE4B5',\n navajowhite: '#FFDEAD',\n navy: '#000080',\n oldlace: '#FDF5E6',\n olive: '#808000',\n olivedrab: '#6B8E23',\n orange: '#FFA500',\n orangered: '#FF4500',\n orchid: '#DA70D6',\n palegoldenrod: '#EEE8AA',\n palegreen: '#98FB98',\n paleturquoise: '#AFEEEE',\n palevioletred: '#DB7093',\n papayawhip: '#FFEFD5',\n peachpuff: '#FFDAB9',\n peru: '#CD853F',\n pink: '#FFC0CB',\n plum: '#DDA0DD',\n powderblue: '#B0E0E6',\n purple: '#800080',\n rebeccapurple: '#663399',\n red: '#FF0000',\n rosybrown: '#BC8F8F',\n royalblue: '#4169E1',\n saddlebrown: '#8B4513',\n salmon: '#FA8072',\n sandybrown: '#F4A460',\n seagreen: '#2E8B57',\n seashell: '#FFF5EE',\n sienna: '#A0522D',\n silver: '#C0C0C0',\n skyblue: '#87CEEB',\n slateblue: '#6A5ACD',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#FFFAFA',\n springgreen: '#00FF7F',\n steelblue: '#4682B4',\n tan: '#D2B48C',\n teal: '#008080',\n thistle: '#D8BFD8',\n tomato: '#FF6347',\n turquoise: '#40E0D0',\n violet: '#EE82EE',\n wheat: '#F5DEB3',\n white: '#FFFFFF',\n whitesmoke: '#F5F5F5',\n yellow: '#FFFF00',\n yellowgreen: '#9ACD32'\n });\n return Color;\n}());\nexport { Color };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nimport { loadTemplate } from './dom';\nimport { camelCaseToHyphen } from './string';\nimport { iterateObject } from './object';\n/** @deprecated */\nexport function getNameOfClass(theClass) {\n var funcNameRegex = /function (.{1,})\\(/;\n var funcAsString = theClass.toString();\n var results = funcNameRegex.exec(funcAsString);\n return results && results.length > 1 ? results[1] : \"\";\n}\nexport function findLineByLeastSquares(values) {\n var len = values.length;\n var maxDecimals = 0;\n if (len <= 1) {\n return values;\n }\n for (var i = 0; i < values.length; i++) {\n var value = values[i];\n var splitExponent = value.toString().split('e-');\n if (splitExponent.length > 1) {\n maxDecimals = Math.max(maxDecimals, parseInt(splitExponent[1], 10));\n continue;\n }\n if (Math.floor(value) === value) {\n continue;\n }\n maxDecimals = Math.max(maxDecimals, value.toString().split('.')[1].length);\n }\n var sum_x = 0;\n var sum_y = 0;\n var sum_xy = 0;\n var sum_xx = 0;\n var y = 0;\n for (var x = 0; x < len; x++) {\n y = values[x];\n sum_x += x;\n sum_y += y;\n sum_xx += x * x;\n sum_xy += x * y;\n }\n var m = (len * sum_xy - sum_x * sum_y) / (len * sum_xx - sum_x * sum_x);\n var b = (sum_y / len) - (m * sum_x) / len;\n var result = [];\n for (var x = 0; x <= len; x++) {\n result.push(parseFloat((x * m + b).toFixed(maxDecimals)));\n }\n return result;\n}\n/**\n * Converts a CSS object into string\n * @param {Object} stylesToUse an object eg: {color: 'black', top: '25px'}\n * @return {string} A string like \"color: black; top: 25px;\" for html\n */\nexport function cssStyleObjectToMarkup(stylesToUse) {\n if (!stylesToUse) {\n return '';\n }\n var resParts = [];\n iterateObject(stylesToUse, function (styleKey, styleValue) {\n var styleKeyDashed = camelCaseToHyphen(styleKey);\n resParts.push(styleKeyDashed + \": \" + styleValue + \";\");\n });\n return resParts.join(' ');\n}\n/**\n * Displays a message to the browser. this is useful in iPad, where you can't easily see the console.\n * so the javascript code can use this to give feedback. this is NOT intended to be called in production.\n * it is intended the AG Grid developer calls this to troubleshoot, but then takes out the calls before\n * checking in.\n * @param {string} msg\n */\nexport function message(msg) {\n var eMessage = document.createElement('div');\n var eBox = document.querySelector('#__ag__message');\n eMessage.innerHTML = msg;\n if (!eBox) {\n var template = \"
    \";\n eBox = loadTemplate(template);\n if (document.body) {\n document.body.appendChild(eBox);\n }\n }\n eBox.insertBefore(eMessage, eBox.children[0]);\n}\n/**\n * cell renderers are used in a few places. they bind to dom slightly differently to other cell renderes as they\n * can return back strings (instead of html elemnt) in the getGui() method. common code placed here to handle that.\n * @param {AgPromise} cellRendererPromise\n * @param {HTMLElement} eTarget\n */\nexport function bindCellRendererToHtmlElement(cellRendererPromise, eTarget) {\n cellRendererPromise.then(function (cellRenderer) {\n var gui = cellRenderer.getGui();\n if (gui != null) {\n if (typeof gui === 'object') {\n eTarget.appendChild(gui);\n }\n else {\n eTarget.innerHTML = gui;\n }\n }\n });\n}\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n// ARIA HELPER FUNCTIONS\nfunction setAriaAttribute(element, attribute, value) {\n element.setAttribute(ariaAttributeName(attribute), value.toString());\n}\nfunction removeAriaAttribute(element, attribute) {\n element.removeAttribute(ariaAttributeName(attribute));\n}\nfunction ariaAttributeName(attribute) {\n return \"aria-\" + attribute;\n}\nexport function setAriaRole(element, role) {\n if (role) {\n element.setAttribute('role', role);\n }\n else {\n element.removeAttribute('role');\n }\n}\nexport function getAriaSortState(column) {\n var sort;\n if (column.isSortAscending()) {\n sort = 'ascending';\n }\n else if (column.isSortDescending()) {\n sort = 'descending';\n }\n else {\n sort = 'none';\n }\n return sort;\n}\n// ARIA ATTRIBUTE GETTERS\nexport function getAriaLevel(element) {\n return parseInt(element.getAttribute('aria-level'), 10);\n}\nexport function getAriaPosInSet(element) {\n return parseInt(element.getAttribute('aria-posinset'), 10);\n}\nexport function getAriaDescribedBy(element) {\n return element.getAttribute('aria-describedby') || '';\n}\n// ARIA ATTRIBUTE SETTERS\nexport function setAriaLabel(element, label) {\n var key = 'label';\n if (label) {\n setAriaAttribute(element, key, label);\n }\n else {\n removeAriaAttribute(element, key);\n }\n}\nexport function setAriaLabelledBy(element, labelledBy) {\n var key = 'labelledby';\n if (labelledBy) {\n setAriaAttribute(element, key, labelledBy);\n }\n else {\n removeAriaAttribute(element, key);\n }\n}\nexport function setAriaDescribedBy(element, describedby) {\n var key = 'describedby';\n if (describedby) {\n setAriaAttribute(element, key, describedby);\n }\n else {\n removeAriaAttribute(element, key);\n }\n}\nexport function setAriaLevel(element, level) {\n setAriaAttribute(element, 'level', level);\n}\nexport function setAriaDisabled(element, disabled) {\n setAriaAttribute(element, 'disabled', disabled);\n}\nexport function setAriaExpanded(element, expanded) {\n setAriaAttribute(element, 'expanded', expanded);\n}\nexport function removeAriaExpanded(element) {\n removeAriaAttribute(element, 'expanded');\n}\nexport function setAriaSetSize(element, setsize) {\n setAriaAttribute(element, 'setsize', setsize);\n}\nexport function setAriaPosInSet(element, position) {\n setAriaAttribute(element, 'posinset', position);\n}\nexport function setAriaMultiSelectable(element, multiSelectable) {\n setAriaAttribute(element, 'multiselectable', multiSelectable);\n}\nexport function setAriaRowCount(element, rowCount) {\n setAriaAttribute(element, 'rowcount', rowCount);\n}\nexport function setAriaRowIndex(element, rowIndex) {\n setAriaAttribute(element, 'rowindex', rowIndex);\n}\nexport function setAriaColCount(element, colCount) {\n setAriaAttribute(element, 'colcount', colCount);\n}\nexport function setAriaColIndex(element, colIndex) {\n setAriaAttribute(element, 'colindex', colIndex);\n}\nexport function setAriaColSpan(element, colSpan) {\n setAriaAttribute(element, 'colspan', colSpan);\n}\nexport function setAriaSort(element, sort) {\n setAriaAttribute(element, 'sort', sort);\n}\nexport function removeAriaSort(element) {\n removeAriaAttribute(element, 'sort');\n}\nexport function setAriaSelected(element, selected) {\n var attributeName = 'selected';\n if (selected) {\n setAriaAttribute(element, attributeName, selected);\n }\n else {\n removeAriaAttribute(element, attributeName);\n }\n}\nexport function setAriaChecked(element, checked) {\n setAriaAttribute(element, 'checked', checked === undefined ? 'mixed' : checked);\n}\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n// Based on https://stackoverflow.com/a/14991797\n// This will parse a delimited string into an array of arrays.\nexport function stringToArray(strData, delimiter) {\n if (delimiter === void 0) { delimiter = ','; }\n var data = [];\n var isNewline = function (char) { return char === '\\r' || char === '\\n'; };\n var insideQuotedField = false;\n if (strData === '') {\n return [['']];\n }\n var _loop_1 = function (row, column, position) {\n var previousChar = strData[position - 1];\n var currentChar = strData[position];\n var nextChar = strData[position + 1];\n var ensureDataExists = function () {\n if (!data[row]) {\n // create row if it doesn't exist\n data[row] = [];\n }\n if (!data[row][column]) {\n // create column if it doesn't exist\n data[row][column] = '';\n }\n };\n ensureDataExists();\n if (currentChar === '\"') {\n if (insideQuotedField) {\n if (nextChar === '\"') {\n // unescape double quote\n data[row][column] += '\"';\n position++;\n }\n else {\n // exit quoted field\n insideQuotedField = false;\n }\n return out_row_1 = row, out_column_1 = column, out_position_1 = position, \"continue\";\n }\n else if (previousChar === undefined || previousChar === delimiter || isNewline(previousChar)) {\n // enter quoted field\n insideQuotedField = true;\n return out_row_1 = row, out_column_1 = column, out_position_1 = position, \"continue\";\n }\n }\n if (!insideQuotedField) {\n if (currentChar === delimiter) {\n // move to next column\n column++;\n ensureDataExists();\n return out_row_1 = row, out_column_1 = column, out_position_1 = position, \"continue\";\n }\n else if (isNewline(currentChar)) {\n // move to next row\n column = 0;\n row++;\n ensureDataExists();\n if (currentChar === '\\r' && nextChar === '\\n') {\n // skip over second newline character if it exists\n position++;\n }\n return out_row_1 = row, out_column_1 = column, out_position_1 = position, \"continue\";\n }\n }\n // add current character to current column\n data[row][column] += currentChar;\n out_row_1 = row;\n out_column_1 = column;\n out_position_1 = position;\n };\n var out_row_1, out_column_1, out_position_1;\n // iterate over each character, keep track of current row and column (of the returned array)\n for (var row = 0, column = 0, position = 0; position < strData.length; position++) {\n _loop_1(row, column, position);\n row = out_row_1;\n column = out_column_1;\n position = out_position_1;\n }\n return data;\n}\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nexport function padStartWidthZeros(value, totalStringSize) {\n return value.toString().padStart(totalStringSize, '0');\n}\nexport function createArrayOfNumbers(first, last) {\n var result = [];\n for (var i = first; i <= last; i++) {\n result.push(i);\n }\n return result;\n}\n/**\n * Check if a value is numeric\n * from http://stackoverflow.com/questions/9716468/is-there-any-function-like-isnumeric-in-javascript-to-validate-numbers\n * @param {any} value\n * @return {boolean}\n */\nexport function isNumeric(value) {\n return value !== '' && !isNaN(parseFloat(value)) && isFinite(value);\n}\nexport function cleanNumber(value) {\n if (typeof value === 'string') {\n value = parseInt(value, 10);\n }\n if (typeof value === 'number') {\n return Math.floor(value);\n }\n return null;\n}\nexport function decToHex(number, bytes) {\n var hex = '';\n for (var i = 0; i < bytes; i++) {\n hex += String.fromCharCode(number & 0xff);\n number >>>= 8;\n }\n return hex;\n}\nexport function formatNumberTwoDecimalPlacesAndCommas(value, thousandSeparator, decimalSeparator) {\n if (typeof value !== 'number') {\n return '';\n }\n return formatNumberCommas(Math.round(value * 100) / 100, thousandSeparator, decimalSeparator);\n}\n/**\n * the native method number.toLocaleString(undefined, {minimumFractionDigits: 0})\n * puts in decimal places in IE, so we use this method instead\n * from: http://blog.tompawlak.org/number-currency-formatting-javascript\n * @param {number} value\n * @returns {string}\n */\nexport function formatNumberCommas(value, thousandSeparator, decimalSeparator) {\n if (typeof value !== 'number') {\n return '';\n }\n return value.toString().replace('.', decimalSeparator).replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, \"$1\" + thousandSeparator);\n}\nexport function sum(values) {\n return values == null ? null : values.reduce(function (total, value) { return total + value; }, 0);\n}\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nimport { padStartWidthZeros } from './number';\n/**\n * Serialises a Date to a string of format `yyyy-MM-dd HH:mm:ss`.\n * An alternative separator can be provided to be used instead of hyphens.\n * @param date The date to serialise\n * @param includeTime Whether to include the time in the serialised string\n * @param separator The separator to use between date parts\n */\nexport function serialiseDate(date, includeTime, separator) {\n if (includeTime === void 0) { includeTime = true; }\n if (separator === void 0) { separator = '-'; }\n if (!date) {\n return null;\n }\n var serialised = [date.getFullYear(), date.getMonth() + 1, date.getDate()].map(function (part) { return padStartWidthZeros(part, 2); }).join(separator);\n if (includeTime) {\n serialised += ' ' + [date.getHours(), date.getMinutes(), date.getSeconds()].map(function (part) { return padStartWidthZeros(part, 2); }).join(':');\n }\n return serialised;\n}\n/**\n * Parses a date and time from a string in the format `yyyy-MM-dd HH:mm:ss`\n */\nexport function parseDateTimeFromString(value) {\n if (!value) {\n return null;\n }\n var _a = __read(value.split(' '), 2), dateStr = _a[0], timeStr = _a[1];\n if (!dateStr) {\n return null;\n }\n var fields = dateStr.split('-').map(function (f) { return parseInt(f, 10); });\n if (fields.filter(function (f) { return !isNaN(f); }).length !== 3) {\n return null;\n }\n var _b = __read(fields, 3), year = _b[0], month = _b[1], day = _b[2];\n var date = new Date(year, month - 1, day);\n if (date.getFullYear() !== year ||\n date.getMonth() !== month - 1 ||\n date.getDate() !== day) {\n // date was not parsed as expected so must have been invalid\n return null;\n }\n if (!timeStr || timeStr === '00:00:00') {\n return date;\n }\n var _c = __read(timeStr.split(':').map(function (part) { return parseInt(part, 10); }), 3), hours = _c[0], minutes = _c[1], seconds = _c[2];\n if (hours >= 0 && hours < 24) {\n date.setHours(hours);\n }\n if (minutes >= 0 && minutes < 60) {\n date.setMinutes(minutes);\n }\n if (seconds >= 0 && seconds < 60) {\n date.setSeconds(seconds);\n }\n return date;\n}\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nexport function fuzzyCheckStrings(inputValues, validValues, allSuggestions) {\n var fuzzyMatches = {};\n var invalidInputs = inputValues.filter(function (inputValue) {\n return !validValues.some(function (validValue) { return validValue === inputValue; });\n });\n if (invalidInputs.length > 0) {\n invalidInputs.forEach(function (invalidInput) {\n return fuzzyMatches[invalidInput] = fuzzySuggestions(invalidInput, allSuggestions);\n });\n }\n return fuzzyMatches;\n}\n/**\n *\n * @param {String} inputValue The value to be compared against a list of strings\n * @param allSuggestions The list of strings to be compared against\n * @param hideIrrelevant By default, fuzzy suggestions will just sort the allSuggestions list, set this to true\n * to filter out the irrelevant values\n * @param weighted Set this to true, to make letters matched in the order they were typed have priority in the results.\n */\nexport function fuzzySuggestions(inputValue, allSuggestions, hideIrrelevant, weighted) {\n var search = weighted ? string_weighted_distances : string_distances;\n var thisSuggestions = allSuggestions.map(function (text) { return ({\n value: text,\n relevance: search(inputValue.toLowerCase(), text.toLocaleLowerCase())\n }); });\n thisSuggestions.sort(function (a, b) { return b.relevance - a.relevance; });\n if (hideIrrelevant) {\n thisSuggestions = thisSuggestions.filter(function (suggestion) { return suggestion.relevance !== 0; });\n }\n return thisSuggestions.map(function (suggestion) { return suggestion.value; });\n}\n/**\n * Algorithm to do fuzzy search\n * from https://stackoverflow.com/questions/23305000/javascript-fuzzy-search-that-makes-sense\n * @param {string} from\n * @return {[]}\n */\nexport function get_bigrams(from) {\n var s = from.toLowerCase();\n var v = new Array(s.length - 1);\n var i;\n var j;\n var ref;\n for (i = j = 0, ref = v.length; j <= ref; i = j += 1) {\n v[i] = s.slice(i, i + 2);\n }\n return v;\n}\nexport function string_distances(str1, str2) {\n if (str1.length === 0 && str2.length === 0) {\n return 0;\n }\n var pairs1 = get_bigrams(str1);\n var pairs2 = get_bigrams(str2);\n var union = pairs1.length + pairs2.length;\n var hit_count = 0;\n var j;\n var len;\n for (j = 0, len = pairs1.length; j < len; j++) {\n var x = pairs1[j];\n var k = void 0;\n var len1 = void 0;\n for (k = 0, len1 = pairs2.length; k < len1; k++) {\n var y = pairs2[k];\n if (x === y) {\n hit_count++;\n }\n }\n }\n return hit_count > 0 ? (2 * hit_count) / union : 0;\n}\nexport function string_weighted_distances(str1, str2) {\n var a = str1.replace(/\\s/g, '');\n var b = str2.replace(/\\s/g, '');\n var weight = 0;\n var lastIndex = 0;\n for (var i = 0; i < a.length; i++) {\n var idx = b.indexOf(a[i], lastIndex);\n if (idx === -1) {\n continue;\n }\n lastIndex = idx;\n weight += (100 - (lastIndex * 100 / 10000) * 100);\n }\n return weight;\n}\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nimport { loadTemplate, isNodeOrElement } from './dom';\nimport { setAriaRole } from './aria';\n//\n// IMPORTANT NOTE!\n//\n// If you change the list below, copy/paste the new content into the docs page javascript-grid-icons\n//\nexport var iconNameClassMap = {\n // header column group shown when expanded (click to contract)\n columnGroupOpened: 'expanded',\n // header column group shown when contracted (click to expand)\n columnGroupClosed: 'contracted',\n // tool panel column group contracted (click to expand)\n columnSelectClosed: 'tree-closed',\n // tool panel column group expanded (click to contract)\n columnSelectOpen: 'tree-open',\n // column tool panel header expand/collapse all button, shown when some children are expanded and\n // others are collapsed\n columnSelectIndeterminate: 'tree-indeterminate',\n // shown on ghost icon while dragging column to the side of the grid to pin\n columnMovePin: 'pin',\n // shown on ghost icon while dragging over part of the page that is not a drop zone\n columnMoveHide: 'eye-slash',\n // shown on ghost icon while dragging columns to reorder\n columnMoveMove: 'arrows',\n // animating icon shown when dragging a column to the right of the grid causes horizontal scrolling\n columnMoveLeft: 'left',\n // animating icon shown when dragging a column to the left of the grid causes horizontal scrolling\n columnMoveRight: 'right',\n // shown on ghost icon while dragging over Row Groups drop zone\n columnMoveGroup: 'group',\n // shown on ghost icon while dragging over Values drop zone\n columnMoveValue: 'aggregation',\n // shown on ghost icon while dragging over pivot drop zone\n columnMovePivot: 'pivot',\n // shown on ghost icon while dragging over drop zone that doesn't support it, e.g.\n // string column over aggregation drop zone\n dropNotAllowed: 'not-allowed',\n // shown on row group when contracted (click to expand)\n groupContracted: 'tree-closed',\n // shown on row group when expanded (click to contract)\n groupExpanded: 'tree-open',\n // context menu chart item\n chart: 'chart',\n // chart window title bar\n close: 'cross',\n // X (remove) on column 'pill' after adding it to a drop zone list\n cancel: 'cancel',\n // indicates the currently active pin state in the \"Pin column\" sub-menu of the column menu\n check: 'tick',\n // \"go to first\" button in pagination controls\n first: 'first',\n // \"go to previous\" button in pagination controls\n previous: 'previous',\n // \"go to next\" button in pagination controls\n next: 'next',\n // \"go to last\" button in pagination controls\n last: 'last',\n // shown on top right of chart when chart is linked to range data (click to unlink)\n linked: 'linked',\n // shown on top right of chart when chart is not linked to range data (click to link)\n unlinked: 'unlinked',\n // \"Choose colour\" button on chart settings tab\n colorPicker: 'color-picker',\n // rotating spinner shown by the loading cell renderer\n groupLoading: 'loading',\n // button to launch enterprise column menu\n menu: 'menu',\n // filter tool panel tab\n filter: 'filter',\n // column tool panel tab\n columns: 'columns',\n // button in chart regular size window title bar (click to maximise)\n maximize: 'maximize',\n // button in chart maximised window title bar (click to make regular size)\n minimize: 'minimize',\n // \"Pin column\" item in column header menu\n menuPin: 'pin',\n // \"Value aggregation\" column menu item (shown on numeric columns when grouping is active)\"\n menuValue: 'aggregation',\n // \"Group by {column-name}\" item in column header menu\n menuAddRowGroup: 'group',\n // \"Un-Group by {column-name}\" item in column header menu\n menuRemoveRowGroup: 'group',\n // context menu copy item\n clipboardCopy: 'copy',\n // context menu paste item\n clipboardPaste: 'paste',\n // identifies the pivot drop zone\n pivotPanel: 'pivot',\n // \"Row groups\" drop zone in column tool panel\n rowGroupPanel: 'group',\n // columns tool panel Values drop zone\n valuePanel: 'aggregation',\n // drag handle used to pick up draggable columns\n columnDrag: 'grip',\n // drag handle used to pick up draggable rows\n rowDrag: 'grip',\n // context menu export item\n save: 'save',\n // csv export\n csvExport: 'csv',\n // excel export,\n excelExport: 'excel',\n // icon on dropdown editors\n smallDown: 'small-down',\n // version of small-right used in RTL mode\n smallLeft: 'small-left',\n // separater between column 'pills' when you add multiple columns to the header drop zone\n smallRight: 'small-right',\n smallUp: 'small-up',\n // show on column header when column is sorted ascending\n sortAscending: 'asc',\n // show on column header when column is sorted descending\n sortDescending: 'desc',\n // show on column header when column has no sort, only when enabled with gridOptions.unSortIcon=true\n sortUnSort: 'none'\n};\n/**\n * If icon provided, use this (either a string, or a function callback).\n * if not, then use the default icon from the theme\n * @param {string} iconName\n * @param {GridOptionsWrapper} gridOptionsWrapper\n * @param {Column | null} [column]\n * @returns {HTMLElement}\n */\nexport function createIcon(iconName, gridOptionsWrapper, column) {\n var iconContents = createIconNoSpan(iconName, gridOptionsWrapper, column);\n if (iconContents && iconContents.className.indexOf('ag-icon') > -1) {\n return iconContents;\n }\n var eResult = document.createElement('span');\n eResult.appendChild(iconContents);\n return eResult;\n}\nexport function createIconNoSpan(iconName, gridOptionsWrapper, column, forceCreate) {\n var userProvidedIcon = null;\n // check col for icon first\n var icons = column && column.getColDef().icons;\n if (icons) {\n userProvidedIcon = icons[iconName];\n }\n // if not in col, try grid options\n if (gridOptionsWrapper && !userProvidedIcon) {\n var optionsIcons = gridOptionsWrapper.getIcons();\n if (optionsIcons) {\n userProvidedIcon = optionsIcons[iconName];\n }\n }\n // now if user provided, use it\n if (userProvidedIcon) {\n var rendererResult = void 0;\n if (typeof userProvidedIcon === 'function') {\n rendererResult = userProvidedIcon();\n }\n else if (typeof userProvidedIcon === 'string') {\n rendererResult = userProvidedIcon;\n }\n else {\n throw new Error('icon from grid options needs to be a string or a function');\n }\n if (typeof rendererResult === 'string') {\n return loadTemplate(rendererResult);\n }\n if (isNodeOrElement(rendererResult)) {\n return rendererResult;\n }\n console.warn('AG Grid: iconRenderer should return back a string or a dom object');\n }\n else {\n var span = document.createElement('span');\n var cssClass = iconNameClassMap[iconName];\n if (!cssClass) {\n if (!forceCreate) {\n console.warn(\"AG Grid: Did not find icon \" + iconName);\n cssClass = '';\n }\n else {\n cssClass = iconName;\n }\n }\n span.setAttribute('class', \"ag-icon ag-icon-\" + cssClass);\n span.setAttribute('unselectable', 'on');\n setAriaRole(span, 'presentation');\n return span;\n }\n}\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nimport { isBrowserEdge } from './browser';\nimport { exists } from './generic';\nvar NUMPAD_DEL_NUMLOCK_ON_KEY = 'Del';\nvar NUMPAD_DEL_NUMLOCK_ON_CHARCODE = 46;\nexport function isEventFromPrintableCharacter(event) {\n // no allowed printable chars have alt or ctrl key combinations\n if (event.altKey || event.ctrlKey || event.metaKey) {\n return false;\n }\n // if key is length 1, eg if it is 'a' for the a key, or '2' for the '2' key.\n // non-printable characters have names, eg 'Enter' or 'Backspace'.\n var printableCharacter = event.key.length === 1;\n // IE11 & Edge treat the numpad del key differently - with numlock on we get \"Del\" for key,\n // so this addition checks if its IE11/Edge and handles that specific case the same was as all other browsers\n var numpadDelWithNumlockOnForEdgeOrIe = isNumpadDelWithNumLockOnForEdge(event);\n return printableCharacter || numpadDelWithNumlockOnForEdgeOrIe;\n}\n/**\n * Allows user to tell the grid to skip specific keyboard events\n * @param {GridOptionsWrapper} gridOptionsWrapper\n * @param {KeyboardEvent} keyboardEvent\n * @param {RowNode} rowNode\n * @param {Column} column\n * @param {boolean} editing\n * @returns {boolean}\n */\nexport function isUserSuppressingKeyboardEvent(gridOptionsWrapper, keyboardEvent, rowNode, column, editing) {\n var gridOptionsFunc = gridOptionsWrapper.getSuppressKeyboardEventFunc();\n var colDefFunc = column ? column.getColDef().suppressKeyboardEvent : undefined;\n // if no callbacks provided by user, then do nothing\n if (!gridOptionsFunc && !colDefFunc) {\n return false;\n }\n var params = {\n event: keyboardEvent,\n editing: editing,\n column: column,\n api: gridOptionsWrapper.getApi(),\n node: rowNode,\n data: rowNode.data,\n colDef: column.getColDef(),\n context: gridOptionsWrapper.getContext(),\n columnApi: gridOptionsWrapper.getColumnApi()\n };\n // colDef get first preference on suppressing events\n if (colDefFunc) {\n var colDefFuncResult = colDefFunc(params);\n // if colDef func suppressed, then return now, no need to call gridOption func\n if (colDefFuncResult) {\n return true;\n }\n }\n if (gridOptionsFunc) {\n // if gridOption func, return the result\n return gridOptionsFunc(params);\n }\n // otherwise return false, don't suppress, as colDef didn't suppress and no func on gridOptions\n return false;\n}\nexport function isUserSuppressingHeaderKeyboardEvent(gridOptionsWrapper, keyboardEvent, headerRowIndex, column) {\n var colDef = column.getDefinition();\n var colDefFunc = colDef && colDef.suppressHeaderKeyboardEvent;\n if (!exists(colDefFunc)) {\n return false;\n }\n var params = {\n api: gridOptionsWrapper.getApi(),\n columnApi: gridOptionsWrapper.getColumnApi(),\n context: gridOptionsWrapper.getContext(),\n colDef: colDef,\n column: column,\n headerRowIndex: headerRowIndex,\n event: keyboardEvent\n };\n return !!colDefFunc(params);\n}\nfunction isNumpadDelWithNumLockOnForEdge(event) {\n return (isBrowserEdge()) &&\n event.key === NUMPAD_DEL_NUMLOCK_ON_KEY &&\n event.charCode === NUMPAD_DEL_NUMLOCK_ON_CHARCODE;\n}\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n/**\n * `True` if the event is close to the original event by X pixels either vertically or horizontally.\n * we only start dragging after X pixels so this allows us to know if we should start dragging yet.\n * @param {MouseEvent | TouchEvent} e1\n * @param {MouseEvent | TouchEvent} e2\n * @param {number} pixelCount\n * @returns {boolean}\n */\nexport function areEventsNear(e1, e2, pixelCount) {\n // by default, we wait 4 pixels before starting the drag\n if (pixelCount === 0) {\n return false;\n }\n var diffX = Math.abs(e1.clientX - e2.clientX);\n var diffY = Math.abs(e1.clientY - e2.clientY);\n return Math.max(diffX, diffY) <= pixelCount;\n}\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n/**\n * Gets called by: a) ClientSideNodeManager and b) GroupStage to do sorting.\n * when in ClientSideNodeManager we always have indexes (as this sorts the items the\n * user provided) but when in GroupStage, the nodes can contain filler nodes that\n * don't have order id's\n * @param {RowNode[]} rowNodes\n * @param {Object} rowNodeOrder\n */\nexport function sortRowNodesByOrder(rowNodes, rowNodeOrder) {\n if (!rowNodes) {\n return;\n }\n var comparator = function (nodeA, nodeB) {\n var positionA = rowNodeOrder[nodeA.id];\n var positionB = rowNodeOrder[nodeB.id];\n var aHasIndex = positionA !== undefined;\n var bHasIndex = positionB !== undefined;\n var bothNodesAreUserNodes = aHasIndex && bHasIndex;\n var bothNodesAreFillerNodes = !aHasIndex && !bHasIndex;\n if (bothNodesAreUserNodes) {\n // when comparing two nodes the user has provided, they always\n // have indexes\n return positionA - positionB;\n }\n if (bothNodesAreFillerNodes) {\n // when comparing two filler nodes, we have no index to compare them\n // against, however we want this sorting to be deterministic, so that\n // the rows don't jump around as the user does delta updates. so we\n // want the same sort result. so we use the __objectId - which doesn't make sense\n // from a sorting point of view, but does give consistent behaviour between\n // calls. otherwise groups jump around as delta updates are done.\n // note: previously here we used nodeId, however this gave a strange order\n // as string ordering of numbers is wrong, so using id based on creation order\n // as least gives better looking order.\n return nodeA.__objectId - nodeB.__objectId;\n }\n if (aHasIndex) {\n return 1;\n }\n return -1;\n };\n // check if the list first needs sorting\n var rowNodeA;\n var rowNodeB;\n var atLeastOneOutOfOrder = false;\n for (var i = 0; i < rowNodes.length - 1; i++) {\n rowNodeA = rowNodes[i];\n rowNodeB = rowNodes[i + 1];\n if (comparator(rowNodeA, rowNodeB) > 0) {\n atLeastOneOutOfOrder = true;\n break;\n }\n }\n if (atLeastOneOutOfOrder) {\n rowNodes.sort(comparator);\n }\n}\nexport function traverseNodesWithKey(nodes, callback) {\n var keyParts = [];\n recursiveSearchNodes(nodes);\n function recursiveSearchNodes(currentNodes) {\n if (!currentNodes) {\n return;\n }\n currentNodes.forEach(function (node) {\n // also checking for children for tree data\n if (node.group || node.hasChildren()) {\n keyParts.push(node.key);\n var key = keyParts.join('|');\n callback(node, key);\n recursiveSearchNodes(node.childrenAfterGroup);\n keyParts.pop();\n }\n });\n }\n}\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nexport function convertToSet(list) {\n var set = new Set();\n list.forEach(function (x) { return set.add(x); });\n return set;\n}\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __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};\nimport * as GeneralUtils from './general';\nimport * as AriaUtils from './aria';\nimport * as ArrayUtils from './array';\nimport * as BrowserUtils from './browser';\nimport * as CsvUtils from './csv';\nimport * as DateUtils from './date';\nimport * as DomUtils from './dom';\nimport * as EventUtils from './event';\nimport * as FunctionUtils from './function';\nimport * as FuzzyMatchUtils from './fuzzyMatch';\nimport * as GenericUtils from './generic';\nimport * as IconUtils from './icon';\nimport * as KeyboardUtils from './keyboard';\nimport * as MapUtils from './map';\nimport * as MouseUtils from './mouse';\nimport * as NumberUtils from './number';\nimport * as ObjectUtils from './object';\nimport * as RowNodeUtils from './rowNode';\nimport * as SetUtils from './set';\nimport * as StringUtils from './string';\nvar utils = __assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign({}, GeneralUtils), AriaUtils), ArrayUtils), BrowserUtils), CsvUtils), DateUtils), DomUtils), EventUtils), FunctionUtils), FuzzyMatchUtils), GenericUtils), IconUtils), KeyboardUtils), MapUtils), MouseUtils), NumberUtils), ObjectUtils), RowNodeUtils), SetUtils), StringUtils);\nexport var _ = utils;\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar NumberSequence = /** @class */ (function () {\n function NumberSequence(initValue, step) {\n if (initValue === void 0) { initValue = 0; }\n if (step === void 0) { step = 1; }\n this.nextValue = initValue;\n this.step = step;\n }\n NumberSequence.prototype.next = function () {\n var valToReturn = this.nextValue;\n this.nextValue += this.step;\n return valToReturn;\n };\n NumberSequence.prototype.peek = function () {\n return this.nextValue;\n };\n NumberSequence.prototype.skip = function (count) {\n this.nextValue += count;\n };\n return NumberSequence;\n}());\nexport { NumberSequence };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nexport var AgPromiseStatus;\n(function (AgPromiseStatus) {\n AgPromiseStatus[AgPromiseStatus[\"IN_PROGRESS\"] = 0] = \"IN_PROGRESS\";\n AgPromiseStatus[AgPromiseStatus[\"RESOLVED\"] = 1] = \"RESOLVED\";\n})(AgPromiseStatus || (AgPromiseStatus = {}));\nvar AgPromise = /** @class */ (function () {\n function AgPromise(callback) {\n var _this = this;\n this.status = AgPromiseStatus.IN_PROGRESS;\n this.resolution = null;\n this.waiters = [];\n callback(function (value) { return _this.onDone(value); }, function (params) { return _this.onReject(params); });\n }\n AgPromise.all = function (promises) {\n return new AgPromise(function (resolve) {\n var remainingToResolve = promises.length;\n var combinedValues = new Array(remainingToResolve);\n promises.forEach(function (promise, index) {\n promise.then(function (value) {\n combinedValues[index] = value;\n remainingToResolve--;\n if (remainingToResolve === 0) {\n resolve(combinedValues);\n }\n });\n });\n });\n };\n AgPromise.resolve = function (value) {\n if (value === void 0) { value = null; }\n return new AgPromise(function (resolve) { return resolve(value); });\n };\n AgPromise.prototype.then = function (func) {\n var _this = this;\n return new AgPromise(function (resolve) {\n if (_this.status === AgPromiseStatus.RESOLVED) {\n resolve(func(_this.resolution));\n }\n else {\n _this.waiters.push(function (value) { return resolve(func(value)); });\n }\n });\n };\n AgPromise.prototype.resolveNow = function (ifNotResolvedValue, ifResolved) {\n return this.status === AgPromiseStatus.RESOLVED ? ifResolved(this.resolution) : ifNotResolvedValue;\n };\n AgPromise.prototype.onDone = function (value) {\n this.status = AgPromiseStatus.RESOLVED;\n this.resolution = value;\n this.waiters.forEach(function (waiter) { return waiter(value); });\n };\n AgPromise.prototype.onReject = function (params) {\n console.warn('TBI');\n };\n return AgPromise;\n}());\nexport { AgPromise };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __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};\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, PostConstruct } from \"../context/context\";\nimport { BeanStub } from \"../context/beanStub\";\nimport { exists } from \"../utils/generic\";\nimport { isIOSUserAgent } from \"../utils/browser\";\nvar TooltipStates;\n(function (TooltipStates) {\n TooltipStates[TooltipStates[\"NOTHING\"] = 0] = \"NOTHING\";\n TooltipStates[TooltipStates[\"WAITING_TO_SHOW\"] = 1] = \"WAITING_TO_SHOW\";\n TooltipStates[TooltipStates[\"SHOWING\"] = 2] = \"SHOWING\";\n})(TooltipStates || (TooltipStates = {}));\nvar CustomTooltipFeature = /** @class */ (function (_super) {\n __extends(CustomTooltipFeature, _super);\n function CustomTooltipFeature(parentComp) {\n var _this = _super.call(this) || this;\n _this.DEFAULT_SHOW_TOOLTIP_DELAY = 2000;\n _this.DEFAULT_HIDE_TOOLTIP_DELAY = 10000;\n _this.SHOW_QUICK_TOOLTIP_DIFF = 1000;\n _this.FADE_OUT_TOOLTIP_TIMEOUT = 1000;\n _this.state = TooltipStates.NOTHING;\n // when showing the tooltip, we need to make sure it's the most recent instance we request, as due to\n // async we could request two tooltips before the first instance returns, in which case we should\n // disregard the second instance.\n _this.tooltipInstanceCount = 0;\n _this.tooltipMouseTrack = false;\n _this.parentComp = parentComp;\n return _this;\n }\n CustomTooltipFeature.prototype.postConstruct = function () {\n this.tooltipShowDelay = this.gridOptionsWrapper.getTooltipDelay('show') || this.DEFAULT_SHOW_TOOLTIP_DELAY;\n this.tooltipHideDelay = this.gridOptionsWrapper.getTooltipDelay('hide') || this.DEFAULT_HIDE_TOOLTIP_DELAY;\n this.tooltipMouseTrack = this.gridOptionsWrapper.isTooltipMouseTrack();\n var el = this.parentComp.getGui();\n this.addManagedListener(el, 'mouseenter', this.onMouseEnter.bind(this));\n this.addManagedListener(el, 'mouseleave', this.onMouseLeave.bind(this));\n this.addManagedListener(el, 'mousemove', this.onMouseMove.bind(this));\n this.addManagedListener(el, 'mousedown', this.onMouseDown.bind(this));\n this.addManagedListener(el, 'keydown', this.onKeyDown.bind(this));\n };\n CustomTooltipFeature.prototype.destroy = function () {\n // if this component gets destroyed while tooltip is showing, need to make sure\n // we don't end with no mouseLeave event resulting in zombie tooltip\n this.setToDoNothing();\n _super.prototype.destroy.call(this);\n };\n CustomTooltipFeature.prototype.onMouseEnter = function (e) {\n if (isIOSUserAgent()) {\n return;\n }\n // every mouseenter should be following by a mouseleave, however for some unkonwn, it's possible for\n // mouseenter to be called twice in a row, which can happen if editing the cell. this was reported\n // in https://ag-grid.atlassian.net/browse/AG-4422. to get around this, we check the state, and if\n // state is !=nothing, then we know mouseenter was already received.\n if (this.state != TooltipStates.NOTHING) {\n return;\n }\n // if another tooltip was hidden very recently, we only wait 200ms to show, not the normal waiting time\n var delay = this.isLastTooltipHiddenRecently() ? 200 : this.tooltipShowDelay;\n this.showTooltipTimeoutId = window.setTimeout(this.showTooltip.bind(this), delay);\n this.lastMouseEvent = e;\n this.state = TooltipStates.WAITING_TO_SHOW;\n };\n CustomTooltipFeature.prototype.onMouseLeave = function () {\n this.setToDoNothing();\n };\n CustomTooltipFeature.prototype.onKeyDown = function () {\n this.setToDoNothing();\n };\n CustomTooltipFeature.prototype.setToDoNothing = function () {\n if (this.state === TooltipStates.SHOWING) {\n this.hideTooltip();\n }\n this.clearTimeouts();\n this.state = TooltipStates.NOTHING;\n };\n CustomTooltipFeature.prototype.onMouseMove = function (e) {\n // there is a delay from the time we mouseOver a component and the time the\n // tooltip is displayed, so we need to track mousemove to be able to correctly\n // position the tooltip when showTooltip is called.\n this.lastMouseEvent = e;\n if (this.tooltipMouseTrack &&\n this.state === TooltipStates.SHOWING &&\n this.tooltipComp) {\n this.positionTooltipUnderLastMouseEvent();\n }\n };\n CustomTooltipFeature.prototype.onMouseDown = function () {\n this.setToDoNothing();\n };\n CustomTooltipFeature.prototype.hideTooltip = function () {\n // check if comp exists - due to async, although we asked for\n // one, the instance may not be back yet\n if (this.tooltipComp) {\n this.destroyTooltipComp();\n CustomTooltipFeature.lastTooltipHideTime = new Date().getTime();\n }\n this.state = TooltipStates.NOTHING;\n };\n CustomTooltipFeature.prototype.destroyTooltipComp = function () {\n var _this = this;\n // add class to fade out the tooltip\n this.tooltipComp.getGui().classList.add('ag-tooltip-hiding');\n // make local copies of these variables, as we use them in the async function below,\n // and we clear then to 'undefined' later, so need to take a copy before they are undefined.\n var tooltipPopupDestroyFunc = this.tooltipPopupDestroyFunc;\n var tooltipComp = this.tooltipComp;\n window.setTimeout(function () {\n tooltipPopupDestroyFunc();\n _this.getContext().destroyBean(tooltipComp);\n }, this.FADE_OUT_TOOLTIP_TIMEOUT);\n this.tooltipPopupDestroyFunc = undefined;\n this.tooltipComp = undefined;\n };\n CustomTooltipFeature.prototype.isLastTooltipHiddenRecently = function () {\n // return true if <1000ms since last time we hid a tooltip\n var now = new Date().getTime();\n var then = CustomTooltipFeature.lastTooltipHideTime;\n return (now - then) < this.SHOW_QUICK_TOOLTIP_DIFF;\n };\n CustomTooltipFeature.prototype.showTooltip = function () {\n var params = __assign({ api: this.gridApi, columnApi: this.columnApi, context: this.gridOptionsWrapper.getContext() }, this.parentComp.getTooltipParams());\n if (!exists(params.value)) {\n this.setToDoNothing();\n return;\n }\n this.state = TooltipStates.SHOWING;\n this.tooltipInstanceCount++;\n // we pass in tooltipInstanceCount so the callback knows what the count was when\n // we requested the tooltip, so if another tooltip was requested in the mean time\n // we disregard it\n var callback = this.newTooltipComponentCallback.bind(this, this.tooltipInstanceCount);\n var userDetails = this.userComponentFactory.getTooltipCompDetails(params);\n userDetails.newAgStackInstance().then(callback);\n };\n CustomTooltipFeature.prototype.newTooltipComponentCallback = function (tooltipInstanceCopy, tooltipComp) {\n var compNoLongerNeeded = this.state !== TooltipStates.SHOWING || this.tooltipInstanceCount !== tooltipInstanceCopy;\n if (compNoLongerNeeded) {\n this.getContext().destroyBean(tooltipComp);\n return;\n }\n var eGui = tooltipComp.getGui();\n this.tooltipComp = tooltipComp;\n if (!eGui.classList.contains('ag-tooltip')) {\n eGui.classList.add('ag-tooltip-custom');\n }\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var addPopupRes = this.popupService.addPopup({\n eChild: eGui,\n ariaLabel: translate('ariaLabelTooltip', 'Tooltip')\n });\n if (addPopupRes) {\n this.tooltipPopupDestroyFunc = addPopupRes.hideFunc;\n }\n // this.tooltipPopupDestroyFunc = this.popupService.addPopup(false, eGui, false);\n this.positionTooltipUnderLastMouseEvent();\n this.hideTooltipTimeoutId = window.setTimeout(this.hideTooltip.bind(this), this.tooltipHideDelay);\n };\n CustomTooltipFeature.prototype.positionTooltipUnderLastMouseEvent = function () {\n this.popupService.positionPopupUnderMouseEvent({\n type: 'tooltip',\n mouseEvent: this.lastMouseEvent,\n ePopup: this.tooltipComp.getGui(),\n nudgeY: 18\n });\n };\n CustomTooltipFeature.prototype.clearTimeouts = function () {\n if (this.showTooltipTimeoutId) {\n window.clearTimeout(this.showTooltipTimeoutId);\n this.showTooltipTimeoutId = undefined;\n }\n if (this.hideTooltipTimeoutId) {\n window.clearTimeout(this.hideTooltipTimeoutId);\n this.hideTooltipTimeoutId = undefined;\n }\n };\n __decorate([\n Autowired('popupService')\n ], CustomTooltipFeature.prototype, \"popupService\", void 0);\n __decorate([\n Autowired('userComponentFactory')\n ], CustomTooltipFeature.prototype, \"userComponentFactory\", void 0);\n __decorate([\n Autowired('columnApi')\n ], CustomTooltipFeature.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], CustomTooltipFeature.prototype, \"gridApi\", void 0);\n __decorate([\n PostConstruct\n ], CustomTooltipFeature.prototype, \"postConstruct\", null);\n return CustomTooltipFeature;\n}(BeanStub));\nexport { CustomTooltipFeature };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, PreConstruct } from \"../context/context\";\nimport { BeanStub } from \"../context/beanStub\";\nimport { NumberSequence } from \"../utils\";\nimport { isNodeOrElement, copyNodeList, iterateNamedNodeMap, loadTemplate, setVisible, setDisplayed } from '../utils/dom';\nimport { getFunctionName } from '../utils/function';\nimport { CustomTooltipFeature } from \"./customTooltipFeature\";\nvar compIdSequence = new NumberSequence();\nvar CssClassManager = /** @class */ (function () {\n function CssClassManager(getGui) {\n // to minimise DOM hits, we only apply CSS classes if they have changed. as adding a CSS class that is already\n // there, or removing one that wasn't present, all takes CPU.\n this.cssClassStates = {};\n this.getGui = getGui;\n }\n CssClassManager.prototype.addCssClass = function (className) {\n var updateNeeded = this.cssClassStates[className] !== true;\n if (updateNeeded && className.length) {\n this.getGui().classList.add(className);\n this.cssClassStates[className] = true;\n }\n };\n CssClassManager.prototype.removeCssClass = function (className) {\n var updateNeeded = this.cssClassStates[className] !== false;\n if (updateNeeded && className.length) {\n this.getGui().classList.remove(className);\n this.cssClassStates[className] = false;\n }\n };\n CssClassManager.prototype.containsCssClass = function (className) {\n return this.getGui().classList.contains(className);\n };\n CssClassManager.prototype.addOrRemoveCssClass = function (className, addOrRemove) {\n var updateNeeded = this.cssClassStates[className] !== addOrRemove;\n if (updateNeeded && className.length) {\n this.getGui().classList.toggle(className, addOrRemove);\n this.cssClassStates[className] = addOrRemove;\n }\n };\n return CssClassManager;\n}());\nexport { CssClassManager };\nvar Component = /** @class */ (function (_super) {\n __extends(Component, _super);\n function Component(template) {\n var _this = _super.call(this) || this;\n // if false, then CSS class \"ag-hidden\" is applied, which sets \"display: none\"\n _this.displayed = true;\n // if false, then CSS class \"ag-invisible\" is applied, which sets \"visibility: hidden\"\n _this.visible = true;\n // unique id for this row component. this is used for getting a reference to the HTML dom.\n // we cannot use the RowNode id as this is not unique (due to animation, old rows can be lying\n // around as we create a new rowComp instance for the same row node).\n _this.compId = compIdSequence.next();\n _this.cssClassManager = new CssClassManager(function () { return _this.eGui; });\n if (template) {\n _this.setTemplate(template);\n }\n return _this;\n }\n Component.prototype.preConstructOnComponent = function () {\n this.usingBrowserTooltips = this.gridOptionsWrapper.isEnableBrowserTooltips();\n };\n Component.prototype.getCompId = function () {\n return this.compId;\n };\n Component.prototype.getTooltipParams = function () {\n return {\n value: this.tooltipText,\n location: 'UNKNOWN'\n };\n };\n Component.prototype.setTooltip = function (newTooltipText) {\n var _this = this;\n var removeTooltip = function () {\n if (_this.usingBrowserTooltips) {\n _this.getGui().removeAttribute('title');\n }\n else {\n _this.tooltipFeature = _this.destroyBean(_this.tooltipFeature);\n }\n };\n var addTooltip = function () {\n if (_this.usingBrowserTooltips) {\n _this.getGui().setAttribute('title', _this.tooltipText);\n }\n else {\n _this.tooltipFeature = _this.createBean(new CustomTooltipFeature(_this));\n }\n };\n if (this.tooltipText != newTooltipText) {\n if (this.tooltipText) {\n removeTooltip();\n }\n if (newTooltipText != null) {\n this.tooltipText = newTooltipText;\n if (this.tooltipText) {\n addTooltip();\n }\n }\n }\n };\n // for registered components only, eg creates AgCheckbox instance from ag-checkbox HTML tag\n Component.prototype.createChildComponentsFromTags = function (parentNode, paramsMap) {\n var _this = this;\n // we MUST take a copy of the list first, as the 'swapComponentForNode' adds comments into the DOM\n // which messes up the traversal order of the children.\n var childNodeList = copyNodeList(parentNode.childNodes);\n childNodeList.forEach(function (childNode) {\n if (!(childNode instanceof HTMLElement)) {\n return;\n }\n var childComp = _this.createComponentFromElement(childNode, function (childComp) {\n // copy over all attributes, including css classes, so any attributes user put on the tag\n // wll be carried across\n var childGui = childComp.getGui();\n if (childGui) {\n _this.copyAttributesFromNode(childNode, childComp.getGui());\n }\n }, paramsMap);\n if (childComp) {\n if (childComp.addItems && childNode.children.length) {\n _this.createChildComponentsFromTags(childNode, paramsMap);\n // converting from HTMLCollection to Array\n var items = Array.prototype.slice.call(childNode.children);\n childComp.addItems(items);\n }\n // replace the tag (eg ag-checkbox) with the proper HTMLElement (eg 'div') in the dom\n _this.swapComponentForNode(childComp, parentNode, childNode);\n }\n else if (childNode.childNodes) {\n _this.createChildComponentsFromTags(childNode, paramsMap);\n }\n });\n };\n Component.prototype.createComponentFromElement = function (element, afterPreCreateCallback, paramsMap) {\n var key = element.nodeName;\n var componentParams = paramsMap ? paramsMap[element.getAttribute('ref')] : undefined;\n var ComponentClass = this.agStackComponentsRegistry.getComponentClass(key);\n if (ComponentClass) {\n Component.elementGettingCreated = element;\n var newComponent = new ComponentClass(componentParams);\n newComponent.setParentComponent(this);\n this.createBean(newComponent, null, afterPreCreateCallback);\n return newComponent;\n }\n return null;\n };\n Component.prototype.copyAttributesFromNode = function (source, dest) {\n iterateNamedNodeMap(source.attributes, function (name, value) { return dest.setAttribute(name, value); });\n };\n Component.prototype.swapComponentForNode = function (newComponent, parentNode, childNode) {\n var eComponent = newComponent.getGui();\n parentNode.replaceChild(eComponent, childNode);\n parentNode.insertBefore(document.createComment(childNode.nodeName), eComponent);\n this.addDestroyFunc(this.destroyBean.bind(this, newComponent));\n this.swapInComponentForQuerySelectors(newComponent, childNode);\n };\n Component.prototype.swapInComponentForQuerySelectors = function (newComponent, childNode) {\n var thisNoType = this;\n this.iterateOverQuerySelectors(function (querySelector) {\n if (thisNoType[querySelector.attributeName] === childNode) {\n thisNoType[querySelector.attributeName] = newComponent;\n }\n });\n };\n Component.prototype.iterateOverQuerySelectors = function (action) {\n var thisPrototype = Object.getPrototypeOf(this);\n while (thisPrototype != null) {\n var metaData = thisPrototype.__agComponentMetaData;\n var currentProtoName = getFunctionName(thisPrototype.constructor);\n if (metaData && metaData[currentProtoName] && metaData[currentProtoName].querySelectors) {\n metaData[currentProtoName].querySelectors.forEach(function (querySelector) { return action(querySelector); });\n }\n thisPrototype = Object.getPrototypeOf(thisPrototype);\n }\n };\n Component.prototype.setTemplate = function (template, paramsMap) {\n var eGui = loadTemplate(template);\n this.setTemplateFromElement(eGui, paramsMap);\n };\n Component.prototype.setTemplateFromElement = function (element, paramsMap) {\n this.eGui = element;\n this.eGui.__agComponent = this;\n this.wireQuerySelectors();\n // context will not be available when user sets template in constructor\n if (!!this.getContext()) {\n this.createChildComponentsFromTags(this.getGui(), paramsMap);\n }\n };\n Component.prototype.createChildComponentsPreConstruct = function () {\n // ui exists if user sets template in constructor. when this happens, we have to wait for the context\n // to be autoWired first before we can create child components.\n if (!!this.getGui()) {\n this.createChildComponentsFromTags(this.getGui());\n }\n };\n Component.prototype.wireQuerySelectors = function () {\n var _this = this;\n if (!this.eGui) {\n return;\n }\n var thisNoType = this;\n this.iterateOverQuerySelectors(function (querySelector) {\n var setResult = function (result) { return thisNoType[querySelector.attributeName] = result; };\n // if it's a ref selector, and match is on top level component, we return\n // the element. otherwise no way of components putting ref=xxx on the top\n // level element as querySelector only looks at children.\n var topLevelRefMatch = querySelector.refSelector\n && _this.eGui.getAttribute('ref') === querySelector.refSelector;\n if (topLevelRefMatch) {\n setResult(_this.eGui);\n }\n else {\n // otherwise use querySelector, which looks at children\n var resultOfQuery = _this.eGui.querySelector(querySelector.querySelector);\n if (resultOfQuery) {\n setResult(resultOfQuery.__agComponent || resultOfQuery);\n }\n }\n });\n };\n Component.prototype.getGui = function () {\n return this.eGui;\n };\n Component.prototype.getFocusableElement = function () {\n return this.eGui;\n };\n Component.prototype.setParentComponent = function (component) {\n this.parentComponent = component;\n };\n Component.prototype.getParentComponent = function () {\n return this.parentComponent;\n };\n // this method is for older code, that wants to provide the gui element,\n // it is not intended for this to be in ag-Stack\n Component.prototype.setGui = function (eGui) {\n this.eGui = eGui;\n };\n Component.prototype.queryForHtmlElement = function (cssSelector) {\n return this.eGui.querySelector(cssSelector);\n };\n Component.prototype.queryForHtmlInputElement = function (cssSelector) {\n return this.eGui.querySelector(cssSelector);\n };\n Component.prototype.appendChild = function (newChild, container) {\n if (!container) {\n container = this.eGui;\n }\n if (newChild == null) {\n return;\n }\n if (isNodeOrElement(newChild)) {\n container.appendChild(newChild);\n }\n else {\n var childComponent = newChild;\n container.appendChild(childComponent.getGui());\n this.addDestroyFunc(this.destroyBean.bind(this, childComponent));\n }\n };\n Component.prototype.isDisplayed = function () {\n return this.displayed;\n };\n Component.prototype.setVisible = function (visible) {\n if (visible !== this.visible) {\n this.visible = visible;\n setVisible(this.eGui, visible);\n }\n };\n Component.prototype.setDisplayed = function (displayed) {\n if (displayed !== this.displayed) {\n this.displayed = displayed;\n setDisplayed(this.eGui, displayed);\n var event_1 = {\n type: Component.EVENT_DISPLAYED_CHANGED,\n visible: this.displayed\n };\n this.dispatchEvent(event_1);\n }\n };\n Component.prototype.destroy = function () {\n if (this.tooltipFeature) {\n this.tooltipFeature = this.destroyBean(this.tooltipFeature);\n }\n _super.prototype.destroy.call(this);\n };\n Component.prototype.addGuiEventListener = function (event, listener) {\n var _this = this;\n this.eGui.addEventListener(event, listener);\n this.addDestroyFunc(function () { return _this.eGui.removeEventListener(event, listener); });\n };\n Component.prototype.addCssClass = function (className) {\n this.cssClassManager.addCssClass(className);\n };\n Component.prototype.removeCssClass = function (className) {\n this.cssClassManager.removeCssClass(className);\n };\n Component.prototype.containsCssClass = function (className) {\n return this.cssClassManager.containsCssClass(className);\n };\n Component.prototype.addOrRemoveCssClass = function (className, addOrRemove) {\n this.cssClassManager.addOrRemoveCssClass(className, addOrRemove);\n };\n Component.prototype.getAttribute = function (key) {\n var eGui = this.eGui;\n return eGui ? eGui.getAttribute(key) : null;\n };\n Component.prototype.getRefElement = function (refName) {\n return this.queryForHtmlElement(\"[ref=\\\"\" + refName + \"\\\"]\");\n };\n Component.EVENT_DISPLAYED_CHANGED = 'displayedChanged';\n __decorate([\n Autowired('agStackComponentsRegistry')\n ], Component.prototype, \"agStackComponentsRegistry\", void 0);\n __decorate([\n PreConstruct\n ], Component.prototype, \"preConstructOnComponent\", null);\n __decorate([\n PreConstruct\n ], Component.prototype, \"createChildComponentsPreConstruct\", null);\n return Component;\n}(BeanStub));\nexport { Component };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nimport { getFunctionName } from '../utils/function';\nexport function QuerySelector(selector) {\n return querySelectorFunc.bind(this, selector, undefined);\n}\nexport function RefSelector(ref) {\n return querySelectorFunc.bind(this, \"[ref=\" + ref + \"]\", ref);\n}\nfunction querySelectorFunc(selector, refSelector, classPrototype, methodOrAttributeName, index) {\n if (selector === null) {\n console.error('AG Grid: QuerySelector selector should not be null');\n return;\n }\n if (typeof index === 'number') {\n console.error('AG Grid: QuerySelector should be on an attribute');\n return;\n }\n addToObjectProps(classPrototype, 'querySelectors', {\n attributeName: methodOrAttributeName,\n querySelector: selector,\n refSelector: refSelector\n });\n}\n// // think we should take this out, put property bindings on the\n// export function Method(eventName?: string): Function {\n// return methodFunc.bind(this, eventName);\n// }\n//\n// function methodFunc(alias: string, target: Object, methodName: string) {\n// if (alias === null) {\n// console.error(\"AG Grid: EventListener eventName should not be null\");\n// return;\n// }\n//\n// addToObjectProps(target, 'methods', {\n// methodName: methodName,\n// alias: alias\n// });\n// }\nfunction addToObjectProps(target, key, value) {\n // it's an attribute on the class\n var props = getOrCreateProps(target, getFunctionName(target.constructor));\n if (!props[key]) {\n props[key] = [];\n }\n props[key].push(value);\n}\nfunction getOrCreateProps(target, instanceName) {\n if (!target.__agComponentMetaData) {\n target.__agComponentMetaData = {};\n }\n if (!target.__agComponentMetaData[instanceName]) {\n target.__agComponentMetaData[instanceName] = {};\n }\n return target.__agComponentMetaData[instanceName];\n}\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component } from '../../../widgets/component';\nimport { RefSelector } from '../../../widgets/componentAnnotations';\nimport { Autowired } from '../../../context/context';\n// optional floating filter for user provided filters - instead of providing a floating filter,\n// they can provide a getModelAsString() method on the filter instead. this class just displays\n// the string returned from getModelAsString()\nvar ReadOnlyFloatingFilter = /** @class */ (function (_super) {\n __extends(ReadOnlyFloatingFilter, _super);\n function ReadOnlyFloatingFilter() {\n return _super.call(this, /* html */ \"\\n
    \\n \\n
    \") || this;\n }\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to override destroy() just to make the method public.\n ReadOnlyFloatingFilter.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n ReadOnlyFloatingFilter.prototype.init = function (params) {\n this.params = params;\n var displayName = this.columnModel.getDisplayNameForColumn(params.column, 'header', true);\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n this.eFloatingFilterText\n .setDisabled(true)\n .setInputAriaLabel(displayName + \" \" + translate('ariaFilterInput', 'Filter Input'));\n };\n ReadOnlyFloatingFilter.prototype.onParentModelChanged = function (parentModel) {\n var _this = this;\n if (!parentModel) {\n this.eFloatingFilterText.setValue('');\n return;\n }\n this.params.parentFilterInstance(function (filterInstance) {\n // it would be nice to check if getModelAsString was present before creating this component,\n // however that is not possible, as React Hooks and VueJS don't attached the methods to the Filter until\n // AFTER the filter is created, not allowing inspection before this (we create floating filters as columns\n // are drawn, but the parent filters are only created when needed).\n if (filterInstance.getModelAsString) {\n var modelAsString = filterInstance.getModelAsString(parentModel);\n _this.eFloatingFilterText.setValue(modelAsString);\n }\n });\n };\n __decorate([\n RefSelector('eFloatingFilterText')\n ], ReadOnlyFloatingFilter.prototype, \"eFloatingFilterText\", void 0);\n __decorate([\n Autowired('columnModel')\n ], ReadOnlyFloatingFilter.prototype, \"columnModel\", void 0);\n return ReadOnlyFloatingFilter;\n}(Component));\nexport { ReadOnlyFloatingFilter };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nimport { setDisplayed } from '../../../utils/dom';\n/** Provides sync access to async component. Date component can be lazy created - this class encapsulates\n * this by keeping value locally until DateComp has loaded, then passing DateComp the value. */\nvar DateCompWrapper = /** @class */ (function () {\n function DateCompWrapper(context, userComponentFactory, dateComponentParams, eParent) {\n var _this = this;\n this.alive = true;\n this.context = context;\n this.eParent = eParent;\n var compDetails = userComponentFactory.getDateCompDetails(dateComponentParams);\n var promise = compDetails.newAgStackInstance();\n promise.then(function (dateComp) {\n // because async, check the filter still exists after component comes back\n if (!_this.alive) {\n context.destroyBean(dateComp);\n return;\n }\n _this.dateComp = dateComp;\n if (!dateComp) {\n return;\n }\n eParent.appendChild(dateComp.getGui());\n if (dateComp.afterGuiAttached) {\n dateComp.afterGuiAttached();\n }\n if (_this.tempValue) {\n dateComp.setDate(_this.tempValue);\n }\n if (_this.disabled != null) {\n _this.setDateCompDisabled(_this.disabled);\n }\n });\n }\n DateCompWrapper.prototype.destroy = function () {\n this.alive = false;\n this.dateComp = this.context.destroyBean(this.dateComp);\n };\n DateCompWrapper.prototype.getDate = function () {\n return this.dateComp ? this.dateComp.getDate() : this.tempValue;\n };\n DateCompWrapper.prototype.setDate = function (value) {\n if (this.dateComp) {\n this.dateComp.setDate(value);\n }\n else {\n this.tempValue = value;\n }\n };\n DateCompWrapper.prototype.setDisabled = function (disabled) {\n if (this.dateComp) {\n this.setDateCompDisabled(disabled);\n }\n else {\n this.disabled = disabled;\n }\n };\n DateCompWrapper.prototype.setDisplayed = function (displayed) {\n setDisplayed(this.eParent, displayed);\n };\n DateCompWrapper.prototype.setInputPlaceholder = function (placeholder) {\n if (this.dateComp && this.dateComp.setInputPlaceholder) {\n this.dateComp.setInputPlaceholder(placeholder);\n }\n };\n DateCompWrapper.prototype.setInputAriaLabel = function (label) {\n if (this.dateComp && this.dateComp.setInputAriaLabel) {\n this.dateComp.setInputAriaLabel(label);\n }\n };\n DateCompWrapper.prototype.afterGuiAttached = function (params) {\n if (this.dateComp && typeof this.dateComp.afterGuiAttached === 'function') {\n this.dateComp.afterGuiAttached(params);\n }\n };\n DateCompWrapper.prototype.setDateCompDisabled = function (disabled) {\n if (this.dateComp == null) {\n return;\n }\n if (this.dateComp.setDisabled == null) {\n return;\n }\n this.dateComp.setDisabled(disabled);\n };\n return DateCompWrapper;\n}());\nexport { DateCompWrapper };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __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};\n/* Common logic for options, used by both filters and floating filters. */\nvar OptionsFactory = /** @class */ (function () {\n function OptionsFactory() {\n this.customFilterOptions = {};\n }\n OptionsFactory.prototype.init = function (params, defaultOptions) {\n this.filterOptions = params.filterOptions || defaultOptions;\n this.mapCustomOptions();\n this.selectDefaultItem(params);\n this.checkForDeprecatedParams();\n };\n OptionsFactory.prototype.checkForDeprecatedParams = function () {\n if (this.filterOptions.some(function (opt) { return typeof opt != 'string' && opt.test != null; })) {\n console.warn(\"AG Grid: [IFilterOptionDef] since v26.2.0, test() has been replaced with predicate().\");\n }\n if (this.filterOptions.some(function (opt) { return typeof opt != 'string' && opt.hideFilterInput != null; })) {\n console.warn(\"AG Grid: [IFilterOptionDef] since v26.2.0, useOfHideFilterInput has been replaced with numberOfInputs.\");\n }\n };\n OptionsFactory.prototype.getFilterOptions = function () {\n return this.filterOptions;\n };\n OptionsFactory.prototype.mapCustomOptions = function () {\n var _this = this;\n if (!this.filterOptions) {\n return;\n }\n this.filterOptions.forEach(function (filterOption) {\n if (typeof filterOption === 'string') {\n return;\n }\n var requiredProperties = [['displayKey'], ['displayName'], ['predicate', 'test']];\n var propertyCheck = function (keys) {\n if (!keys.some(function (key) { return filterOption[key] != null; })) {\n console.warn(\"AG Grid: ignoring FilterOptionDef as it doesn't contain one of '\" + keys + \"'\");\n return false;\n }\n return true;\n };\n if (!requiredProperties.every(propertyCheck)) {\n _this.filterOptions = _this.filterOptions.filter(function (v) { return v === filterOption; }) || [];\n return;\n }\n var test = filterOption.test;\n var mutatedFilterOptions = __assign({}, filterOption);\n if (test != null && filterOption.predicate == null) {\n mutatedFilterOptions.predicate = function (v, cv) { return test(v[0], cv); };\n delete mutatedFilterOptions.test;\n }\n if (mutatedFilterOptions.hideFilterInput && mutatedFilterOptions.numberOfInputs == null) {\n mutatedFilterOptions.numberOfInputs = 0;\n delete mutatedFilterOptions.hideFilterInput;\n }\n _this.customFilterOptions[filterOption.displayKey] = mutatedFilterOptions;\n });\n };\n OptionsFactory.prototype.selectDefaultItem = function (params) {\n if (params.defaultOption) {\n this.defaultOption = params.defaultOption;\n }\n else if (this.filterOptions.length >= 1) {\n var firstFilterOption = this.filterOptions[0];\n if (typeof firstFilterOption === 'string') {\n this.defaultOption = firstFilterOption;\n }\n else if (firstFilterOption.displayKey) {\n this.defaultOption = firstFilterOption.displayKey;\n }\n else {\n console.warn(\"AG Grid: invalid FilterOptionDef supplied as it doesn't contain a 'displayKey'\");\n }\n }\n else {\n console.warn('AG Grid: no filter options for filter');\n }\n };\n OptionsFactory.prototype.getDefaultOption = function () {\n return this.defaultOption;\n };\n OptionsFactory.prototype.getCustomOption = function (name) {\n return this.customFilterOptions[name];\n };\n return OptionsFactory;\n}());\nexport { OptionsFactory };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nexport var DEFAULT_FILTER_LOCALE_TEXT = {\n applyFilter: 'Apply',\n clearFilter: 'Clear',\n resetFilter: 'Reset',\n cancelFilter: 'Cancel',\n textFilter: 'Text Filter',\n numberFilter: 'Number Filter',\n dateFilter: 'Date Filter',\n setFilter: 'Set Filter',\n filterOoo: 'Filter...',\n empty: 'Choose One',\n equals: 'Equals',\n notEqual: 'Not equal',\n lessThan: 'Less than',\n greaterThan: 'Greater than',\n inRange: 'In range',\n inRangeStart: 'From',\n inRangeEnd: 'To',\n lessThanOrEqual: 'Less than or equals',\n greaterThanOrEqual: 'Greater than or equals',\n contains: 'Contains',\n notContains: 'Not contains',\n startsWith: 'Starts with',\n endsWith: 'Ends with',\n blank: 'Blank',\n notBlank: 'Not blank',\n andCondition: 'AND',\n orCondition: 'OR',\n dateFormatOoo: 'yyyy-mm-dd',\n};\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar KeyCode = /** @class */ (function () {\n function KeyCode() {\n }\n KeyCode.BACKSPACE = 'Backspace';\n KeyCode.TAB = 'Tab';\n KeyCode.ENTER = 'Enter';\n KeyCode.ESCAPE = 'Escape';\n KeyCode.SPACE = ' ';\n KeyCode.LEFT = 'ArrowLeft';\n KeyCode.UP = 'ArrowUp';\n KeyCode.RIGHT = 'ArrowRight';\n KeyCode.DOWN = 'ArrowDown';\n KeyCode.DELETE = 'Delete';\n KeyCode.A = 'A';\n KeyCode.C = 'C';\n KeyCode.V = 'V';\n KeyCode.D = 'D';\n KeyCode.Z = 'Z';\n KeyCode.Y = 'Y';\n KeyCode.F2 = 'F2';\n KeyCode.PAGE_UP = 'PageUp';\n KeyCode.PAGE_DOWN = 'PageDown';\n KeyCode.PAGE_HOME = 'Home';\n KeyCode.PAGE_END = 'End';\n return KeyCode;\n}());\nexport { KeyCode };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __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};\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { PostConstruct, Autowired } from '../context/context';\nimport { KeyCode } from '../constants/keyCode';\nimport { isStopPropagationForAgGrid, stopPropagationForAgGrid } from '../utils/event';\nimport { BeanStub } from '../context/beanStub';\nvar ManagedFocusFeature = /** @class */ (function (_super) {\n __extends(ManagedFocusFeature, _super);\n function ManagedFocusFeature(eFocusableElement, callbacks) {\n if (callbacks === void 0) { callbacks = {}; }\n var _this = _super.call(this) || this;\n _this.eFocusableElement = eFocusableElement;\n _this.callbacks = callbacks;\n _this.callbacks = __assign({ shouldStopEventPropagation: function () { return false; }, onTabKeyDown: function (e) {\n if (e.defaultPrevented) {\n return;\n }\n var nextRoot = _this.focusService.findNextFocusableElement(_this.eFocusableElement, false, e.shiftKey);\n if (!nextRoot) {\n return;\n }\n nextRoot.focus();\n e.preventDefault();\n } }, callbacks);\n return _this;\n }\n ManagedFocusFeature.prototype.postConstruct = function () {\n this.eFocusableElement.classList.add(ManagedFocusFeature.FOCUS_MANAGED_CLASS);\n this.addKeyDownListeners(this.eFocusableElement);\n if (this.callbacks.onFocusIn) {\n this.addManagedListener(this.eFocusableElement, 'focusin', this.callbacks.onFocusIn);\n }\n if (this.callbacks.onFocusOut) {\n this.addManagedListener(this.eFocusableElement, 'focusout', this.callbacks.onFocusOut);\n }\n };\n ManagedFocusFeature.prototype.addKeyDownListeners = function (eGui) {\n var _this = this;\n this.addManagedListener(eGui, 'keydown', function (e) {\n if (e.defaultPrevented || isStopPropagationForAgGrid(e)) {\n return;\n }\n if (_this.callbacks.shouldStopEventPropagation(e)) {\n stopPropagationForAgGrid(e);\n return;\n }\n if (e.key === KeyCode.TAB) {\n _this.callbacks.onTabKeyDown(e);\n }\n else if (_this.callbacks.handleKeyDown) {\n _this.callbacks.handleKeyDown(e);\n }\n });\n };\n ManagedFocusFeature.FOCUS_MANAGED_CLASS = 'ag-focus-managed';\n __decorate([\n Autowired('focusService')\n ], ManagedFocusFeature.prototype, \"focusService\", void 0);\n __decorate([\n PostConstruct\n ], ManagedFocusFeature.prototype, \"postConstruct\", null);\n return ManagedFocusFeature;\n}(BeanStub));\nexport { ManagedFocusFeature };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, PostConstruct } from '../../context/context';\nimport { loadTemplate, setDisabled } from '../../utils/dom';\nimport { debounce } from '../../utils/function';\nimport { DEFAULT_FILTER_LOCALE_TEXT } from '../filterLocaleText';\nimport { ManagedFocusFeature } from '../../widgets/managedFocusFeature';\nimport { convertToSet } from '../../utils/set';\nimport { Component } from '../../widgets/component';\n/**\n * Contains common logic to all provided filters (apply button, clear button, etc).\n * All the filters that come with AG Grid extend this class. User filters do not\n * extend this class.\n *\n * @param M type of filter-model managed by the concrete sub-class that extends this type\n * @param V type of value managed by the concrete sub-class that extends this type\n */\nvar ProvidedFilter = /** @class */ (function (_super) {\n __extends(ProvidedFilter, _super);\n function ProvidedFilter(filterNameKey) {\n var _this = _super.call(this) || this;\n _this.filterNameKey = filterNameKey;\n _this.applyActive = false;\n _this.hidePopup = null;\n // after the user hits 'apply' the model gets copied to here. this is then the model that we use for\n // all filtering. so if user changes UI but doesn't hit apply, then the UI will be out of sync with this model.\n // this is what we want, as the UI should only become the 'active' filter once it's applied. when apply is\n // inactive, this model will be in sync (following the debounce ms). if the UI is not a valid filter\n // (eg the value is missing so nothing to filter on, or for set filter all checkboxes are checked so filter\n // not active) then this appliedModel will be null/undefined.\n _this.appliedModel = null;\n return _this;\n }\n ProvidedFilter.prototype.postConstruct = function () {\n this.resetTemplate(); // do this first to create the DOM\n this.createManagedBean(new ManagedFocusFeature(this.getFocusableElement(), {\n handleKeyDown: this.handleKeyDown.bind(this)\n }));\n };\n // override\n ProvidedFilter.prototype.handleKeyDown = function (e) { };\n ProvidedFilter.prototype.getFilterTitle = function () {\n return this.translate(this.filterNameKey);\n };\n ProvidedFilter.prototype.isFilterActive = function () {\n // filter is active if we have a valid applied model\n return !!this.appliedModel;\n };\n ProvidedFilter.prototype.resetTemplate = function (paramsMap) {\n var templateString = /* html */ \"\\n
    \\n
    \\n \" + this.createBodyTemplate() + \"\\n
    \\n
    \";\n this.setTemplate(templateString, paramsMap);\n };\n ProvidedFilter.prototype.isReadOnly = function () {\n return !!this.providedFilterParams.readOnly;\n };\n ProvidedFilter.prototype.init = function (params) {\n var _this = this;\n this.setParams(params);\n this.resetUiToDefaults(true).then(function () {\n _this.updateUiVisibility();\n _this.setupOnBtApplyDebounce();\n });\n };\n ProvidedFilter.prototype.setParams = function (params) {\n this.providedFilterParams = params;\n this.applyActive = ProvidedFilter.isUseApplyButton(params);\n this.createButtonPanel();\n };\n ProvidedFilter.prototype.createButtonPanel = function () {\n var _this = this;\n var buttons = this.providedFilterParams.buttons;\n if (!buttons || buttons.length < 1 || this.isReadOnly()) {\n return;\n }\n var eButtonsPanel = document.createElement('div');\n eButtonsPanel.classList.add('ag-filter-apply-panel');\n var addButton = function (type) {\n var text;\n var clickListener;\n switch (type) {\n case 'apply':\n text = _this.translate('applyFilter');\n clickListener = function (e) { return _this.onBtApply(false, false, e); };\n break;\n case 'clear':\n text = _this.translate('clearFilter');\n clickListener = function () { return _this.onBtClear(); };\n break;\n case 'reset':\n text = _this.translate('resetFilter');\n clickListener = function () { return _this.onBtReset(); };\n break;\n case 'cancel':\n text = _this.translate('cancelFilter');\n clickListener = function (e) { _this.onBtCancel(e); };\n break;\n default:\n console.warn('AG Grid: Unknown button type specified');\n return;\n }\n var button = loadTemplate(\n /* html */\n \"\" + text + \"\\n \");\n eButtonsPanel.appendChild(button);\n _this.addManagedListener(button, 'click', clickListener);\n };\n convertToSet(buttons).forEach(function (type) { return addButton(type); });\n this.getGui().appendChild(eButtonsPanel);\n };\n // subclasses can override this to provide alternative debounce defaults\n ProvidedFilter.prototype.getDefaultDebounceMs = function () {\n return 0;\n };\n ProvidedFilter.prototype.setupOnBtApplyDebounce = function () {\n var debounceMs = ProvidedFilter.getDebounceMs(this.providedFilterParams, this.getDefaultDebounceMs());\n this.onBtApplyDebounce = debounce(this.onBtApply.bind(this), debounceMs);\n };\n ProvidedFilter.prototype.getModel = function () {\n return this.appliedModel ? this.appliedModel : null;\n };\n ProvidedFilter.prototype.setModel = function (model) {\n var _this = this;\n var promise = model != null ? this.setModelIntoUi(model) : this.resetUiToDefaults();\n return promise.then(function () {\n _this.updateUiVisibility();\n // we set the model from the GUI, rather than the provided model,\n // so the model is consistent, e.g. handling of null/undefined will be the same,\n // or if model is case insensitive, then casing is removed.\n _this.applyModel();\n });\n };\n ProvidedFilter.prototype.onBtCancel = function (e) {\n var _this = this;\n var currentModel = this.getModel();\n var afterAppliedFunc = function () {\n _this.onUiChanged(false, 'prevent');\n if (_this.providedFilterParams.closeOnApply) {\n _this.close(e);\n }\n };\n if (currentModel != null) {\n this.setModelIntoUi(currentModel).then(afterAppliedFunc);\n }\n else {\n this.resetUiToDefaults().then(afterAppliedFunc);\n }\n };\n ProvidedFilter.prototype.onBtClear = function () {\n var _this = this;\n this.resetUiToDefaults().then(function () { return _this.onUiChanged(); });\n };\n ProvidedFilter.prototype.onBtReset = function () {\n this.onBtClear();\n this.onBtApply();\n };\n /**\n * Applies changes made in the UI to the filter, and returns true if the model has changed.\n */\n ProvidedFilter.prototype.applyModel = function () {\n var newModel = this.getModelFromUi();\n if (!this.isModelValid(newModel)) {\n return false;\n }\n var previousModel = this.appliedModel;\n this.appliedModel = newModel;\n // models can be same if user pasted same content into text field, or maybe just changed the case\n // and it's a case insensitive filter\n return !this.areModelsEqual(previousModel, newModel);\n };\n ProvidedFilter.prototype.isModelValid = function (model) {\n return true;\n };\n ProvidedFilter.prototype.onBtApply = function (afterFloatingFilter, afterDataChange, e) {\n if (afterFloatingFilter === void 0) { afterFloatingFilter = false; }\n if (afterDataChange === void 0) { afterDataChange = false; }\n if (this.applyModel()) {\n // the floating filter uses 'afterFloatingFilter' info, so it doesn't refresh after filter changed if change\n // came from floating filter\n this.providedFilterParams.filterChangedCallback({ afterFloatingFilter: afterFloatingFilter, afterDataChange: afterDataChange });\n }\n var closeOnApply = this.providedFilterParams.closeOnApply;\n // only close if an apply button is visible, otherwise we'd be closing every time a change was made!\n if (closeOnApply && this.applyActive && !afterFloatingFilter && !afterDataChange) {\n this.close(e);\n }\n };\n ProvidedFilter.prototype.onNewRowsLoaded = function () {\n };\n ProvidedFilter.prototype.close = function (e) {\n if (!this.hidePopup) {\n return;\n }\n var keyboardEvent = e;\n var key = keyboardEvent && keyboardEvent.key;\n var params;\n if (key === 'Enter' || key === 'Space') {\n params = { keyboardEvent: keyboardEvent };\n }\n this.hidePopup(params);\n this.hidePopup = null;\n };\n /**\n * By default, if the change came from a floating filter it will be applied immediately, otherwise if there is no\n * apply button it will be applied after a debounce, otherwise it will not be applied at all. This behaviour can\n * be adjusted by using the apply parameter.\n */\n ProvidedFilter.prototype.onUiChanged = function (fromFloatingFilter, apply) {\n if (fromFloatingFilter === void 0) { fromFloatingFilter = false; }\n this.updateUiVisibility();\n this.providedFilterParams.filterModifiedCallback();\n if (this.applyActive && !this.isReadOnly) {\n var isValid = this.isModelValid(this.getModelFromUi());\n setDisabled(this.getRefElement('applyFilterButton'), !isValid);\n }\n if ((fromFloatingFilter && !apply) || apply === 'immediately') {\n this.onBtApply(fromFloatingFilter);\n }\n else if ((!this.applyActive && !apply) || apply === 'debounce') {\n this.onBtApplyDebounce();\n }\n };\n ProvidedFilter.prototype.afterGuiAttached = function (params) {\n if (params == null) {\n return;\n }\n this.hidePopup = params.hidePopup;\n };\n // static, as used by floating filter also\n ProvidedFilter.getDebounceMs = function (params, debounceDefault) {\n if (ProvidedFilter.isUseApplyButton(params)) {\n if (params.debounceMs != null) {\n console.warn('AG Grid: debounceMs is ignored when apply button is present');\n }\n return 0;\n }\n return params.debounceMs != null ? params.debounceMs : debounceDefault;\n };\n // static, as used by floating filter also\n ProvidedFilter.isUseApplyButton = function (params) {\n return !!params.buttons && params.buttons.indexOf('apply') >= 0;\n };\n ProvidedFilter.prototype.destroy = function () {\n this.hidePopup = null;\n _super.prototype.destroy.call(this);\n };\n ProvidedFilter.prototype.translate = function (key) {\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n return translate(key, DEFAULT_FILTER_LOCALE_TEXT[key]);\n };\n ProvidedFilter.prototype.getCellValue = function (rowNode) {\n var _a = this.providedFilterParams, api = _a.api, colDef = _a.colDef, column = _a.column, columnApi = _a.columnApi, context = _a.context;\n return this.providedFilterParams.valueGetter({\n api: api,\n colDef: colDef,\n column: column,\n columnApi: columnApi,\n context: context,\n data: rowNode.data,\n getValue: function (field) { return rowNode.data[field]; },\n node: rowNode,\n });\n };\n __decorate([\n Autowired('rowModel')\n ], ProvidedFilter.prototype, \"rowModel\", void 0);\n __decorate([\n Autowired('valueService')\n ], ProvidedFilter.prototype, \"valueService\", void 0);\n __decorate([\n PostConstruct\n ], ProvidedFilter.prototype, \"postConstruct\", null);\n return ProvidedFilter;\n}(Component));\nexport { ProvidedFilter };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component } from \"./component\";\nimport { PostConstruct } from \"../context/context\";\nimport { clearElement, setElementWidth } from \"../utils/dom\";\nimport { setAriaRole } from \"../utils/aria\";\nvar AgAbstractLabel = /** @class */ (function (_super) {\n __extends(AgAbstractLabel, _super);\n function AgAbstractLabel(config, template) {\n var _this = _super.call(this, template) || this;\n _this.labelSeparator = '';\n _this.labelAlignment = 'left';\n _this.label = '';\n _this.config = config || {};\n return _this;\n }\n AgAbstractLabel.prototype.postConstruct = function () {\n this.addCssClass('ag-labeled');\n this.eLabel.classList.add('ag-label');\n var _a = this.config, labelSeparator = _a.labelSeparator, label = _a.label, labelWidth = _a.labelWidth, labelAlignment = _a.labelAlignment;\n if (labelSeparator != null) {\n this.setLabelSeparator(labelSeparator);\n }\n if (label != null) {\n this.setLabel(label);\n }\n if (labelWidth != null) {\n this.setLabelWidth(labelWidth);\n }\n this.setLabelAlignment(labelAlignment || this.labelAlignment);\n this.refreshLabel();\n };\n AgAbstractLabel.prototype.refreshLabel = function () {\n clearElement(this.eLabel);\n if (typeof this.label === 'string') {\n this.eLabel.innerText = this.label + this.labelSeparator;\n }\n else if (this.label) {\n this.eLabel.appendChild(this.label);\n }\n if (this.label === '') {\n this.eLabel.classList.add('ag-hidden');\n setAriaRole(this.eLabel, 'presentation');\n }\n else {\n this.eLabel.classList.remove('ag-hidden');\n setAriaRole(this.eLabel, null);\n }\n };\n AgAbstractLabel.prototype.setLabelSeparator = function (labelSeparator) {\n if (this.labelSeparator === labelSeparator) {\n return this;\n }\n this.labelSeparator = labelSeparator;\n if (this.label != null) {\n this.refreshLabel();\n }\n return this;\n };\n AgAbstractLabel.prototype.getLabelId = function () {\n this.eLabel.id = this.eLabel.id || \"ag-\" + this.getCompId() + \"-label\";\n return this.eLabel.id;\n };\n AgAbstractLabel.prototype.getLabel = function () {\n return this.label;\n };\n AgAbstractLabel.prototype.setLabel = function (label) {\n if (this.label === label) {\n return this;\n }\n this.label = label;\n this.refreshLabel();\n return this;\n };\n AgAbstractLabel.prototype.setLabelAlignment = function (alignment) {\n var eGui = this.getGui();\n var eGuiClassList = eGui.classList;\n eGuiClassList.toggle('ag-label-align-left', alignment === 'left');\n eGuiClassList.toggle('ag-label-align-right', alignment === 'right');\n eGuiClassList.toggle('ag-label-align-top', alignment === 'top');\n return this;\n };\n AgAbstractLabel.prototype.setLabelWidth = function (width) {\n if (this.label == null) {\n return this;\n }\n setElementWidth(this.eLabel, width);\n return this;\n };\n __decorate([\n PostConstruct\n ], AgAbstractLabel.prototype, \"postConstruct\", null);\n return AgAbstractLabel;\n}(Component));\nexport { AgAbstractLabel };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { AgAbstractLabel } from './agAbstractLabel';\nimport { setDisabled, setFixedWidth } from '../utils/dom';\nvar AgAbstractField = /** @class */ (function (_super) {\n __extends(AgAbstractField, _super);\n function AgAbstractField(config, template, className) {\n var _this = _super.call(this, config, template) || this;\n _this.className = className;\n _this.disabled = false;\n return _this;\n }\n AgAbstractField.prototype.postConstruct = function () {\n _super.prototype.postConstruct.call(this);\n if (this.className) {\n this.addCssClass(this.className);\n }\n };\n AgAbstractField.prototype.onValueChange = function (callbackFn) {\n var _this = this;\n this.addManagedListener(this, AgAbstractField.EVENT_CHANGED, function () { return callbackFn(_this.getValue()); });\n return this;\n };\n AgAbstractField.prototype.getWidth = function () {\n return this.getGui().clientWidth;\n };\n AgAbstractField.prototype.setWidth = function (width) {\n setFixedWidth(this.getGui(), width);\n return this;\n };\n AgAbstractField.prototype.getPreviousValue = function () {\n return this.previousValue;\n };\n AgAbstractField.prototype.getValue = function () {\n return this.value;\n };\n AgAbstractField.prototype.setValue = function (value, silent) {\n if (this.value === value) {\n return this;\n }\n this.previousValue = this.value;\n this.value = value;\n if (!silent) {\n this.dispatchEvent({ type: AgAbstractField.EVENT_CHANGED });\n }\n return this;\n };\n AgAbstractField.prototype.setDisabled = function (disabled) {\n disabled = !!disabled;\n var element = this.getGui();\n setDisabled(element, disabled);\n element.classList.toggle('ag-disabled', disabled);\n this.disabled = disabled;\n return this;\n };\n AgAbstractField.prototype.isDisabled = function () {\n return !!this.disabled;\n };\n AgAbstractField.EVENT_CHANGED = 'valueChange';\n return AgAbstractField;\n}(AgAbstractLabel));\nexport { AgAbstractField };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { AgAbstractField } from \"./agAbstractField\";\nimport { RefSelector } from \"./componentAnnotations\";\nimport { setAriaLabelledBy, setAriaLabel, setAriaDescribedBy } from \"../utils/aria\";\nimport { createIconNoSpan } from \"../utils/icon\";\nimport { exists } from \"../utils/generic\";\nimport { setElementWidth, isVisible } from \"../utils/dom\";\nimport { KeyCode } from '../constants/keyCode';\nvar AgPickerField = /** @class */ (function (_super) {\n __extends(AgPickerField, _super);\n function AgPickerField(config, className, pickerIcon, ariaRole) {\n var _this = _super.call(this, config, \n /* html */ \"
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \", className) || this;\n _this.pickerIcon = pickerIcon;\n _this.isPickerDisplayed = false;\n _this.isDestroyingPicker = false;\n _this.skipClick = false;\n return _this;\n }\n AgPickerField.prototype.postConstruct = function () {\n var _this = this;\n _super.prototype.postConstruct.call(this);\n var displayId = this.getCompId() + \"-display\";\n this.eDisplayField.setAttribute('id', displayId);\n setAriaDescribedBy(this.eWrapper, displayId);\n var clickHandler = function () {\n if (_this.skipClick) {\n _this.skipClick = false;\n return;\n }\n if (_this.isDisabled()) {\n return;\n }\n _this.pickerComponent = _this.showPicker();\n };\n var eGui = this.getGui();\n this.addManagedListener(eGui, 'mousedown', function (e) {\n if (!_this.skipClick &&\n _this.pickerComponent &&\n _this.pickerComponent.isAlive() &&\n isVisible(_this.pickerComponent.getGui()) &&\n eGui.contains(e.target)) {\n _this.skipClick = true;\n }\n });\n this.addManagedListener(eGui, 'keydown', function (e) {\n switch (e.key) {\n case KeyCode.UP:\n case KeyCode.DOWN:\n case KeyCode.ENTER:\n case KeyCode.SPACE:\n clickHandler();\n case KeyCode.ESCAPE:\n if (_this.isPickerDisplayed) {\n e.preventDefault();\n }\n break;\n }\n });\n this.addManagedListener(this.eWrapper, 'click', clickHandler);\n this.addManagedListener(this.eLabel, 'click', clickHandler);\n if (this.pickerIcon) {\n var icon = createIconNoSpan(this.pickerIcon, this.gridOptionsWrapper);\n if (icon) {\n this.eIcon.appendChild(icon);\n }\n }\n };\n AgPickerField.prototype.refreshLabel = function () {\n if (exists(this.getLabel())) {\n setAriaLabelledBy(this.eWrapper, this.getLabelId());\n }\n else {\n this.eWrapper.removeAttribute('aria-labelledby');\n }\n _super.prototype.refreshLabel.call(this);\n };\n AgPickerField.prototype.setAriaLabel = function (label) {\n setAriaLabel(this.eWrapper, label);\n return this;\n };\n AgPickerField.prototype.setInputWidth = function (width) {\n setElementWidth(this.eWrapper, width);\n return this;\n };\n AgPickerField.prototype.getFocusableElement = function () {\n return this.eWrapper;\n };\n __decorate([\n RefSelector('eLabel')\n ], AgPickerField.prototype, \"eLabel\", void 0);\n __decorate([\n RefSelector('eWrapper')\n ], AgPickerField.prototype, \"eWrapper\", void 0);\n __decorate([\n RefSelector('eDisplayField')\n ], AgPickerField.prototype, \"eDisplayField\", void 0);\n __decorate([\n RefSelector('eIcon')\n ], AgPickerField.prototype, \"eIcon\", void 0);\n return AgPickerField;\n}(AgAbstractField));\nexport { AgPickerField };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { AgAbstractField } from \"./agAbstractField\";\nimport { Component } from \"./component\";\nimport { PostConstruct } from \"../context/context\";\nimport { escapeString } from \"../utils/string\";\nimport { KeyCode } from '../constants/keyCode';\nimport { setAriaPosInSet, setAriaRole, setAriaSelected, setAriaSetSize } from '../utils/aria';\nvar AgList = /** @class */ (function (_super) {\n __extends(AgList, _super);\n function AgList(cssIdentifier) {\n if (cssIdentifier === void 0) { cssIdentifier = 'default'; }\n var _this = _super.call(this, /* html */ \"
    \") || this;\n _this.cssIdentifier = cssIdentifier;\n _this.options = [];\n _this.itemEls = [];\n return _this;\n }\n AgList.prototype.init = function () {\n this.addManagedListener(this.getGui(), 'keydown', this.handleKeyDown.bind(this));\n };\n AgList.prototype.handleKeyDown = function (e) {\n var key = e.key;\n switch (key) {\n case KeyCode.ENTER:\n if (!this.highlightedEl) {\n this.setValue(this.getValue());\n }\n else {\n var pos = this.itemEls.indexOf(this.highlightedEl);\n this.setValueByIndex(pos);\n }\n break;\n case KeyCode.DOWN:\n case KeyCode.UP:\n var isDown = key === KeyCode.DOWN;\n var itemToHighlight = void 0;\n e.preventDefault();\n if (!this.highlightedEl) {\n itemToHighlight = this.itemEls[isDown ? 0 : this.itemEls.length - 1];\n }\n else {\n var currentIdx = this.itemEls.indexOf(this.highlightedEl);\n var nextPos = currentIdx + (isDown ? 1 : -1);\n nextPos = Math.min(Math.max(nextPos, 0), this.itemEls.length - 1);\n itemToHighlight = this.itemEls[nextPos];\n }\n this.highlightItem(itemToHighlight);\n break;\n }\n };\n AgList.prototype.addOptions = function (listOptions) {\n var _this = this;\n listOptions.forEach(function (listOption) { return _this.addOption(listOption); });\n return this;\n };\n AgList.prototype.addOption = function (listOption) {\n var value = listOption.value, text = listOption.text;\n var sanitisedText = escapeString(text || value);\n this.options.push({ value: value, text: sanitisedText });\n this.renderOption(value, sanitisedText);\n this.updateIndices();\n return this;\n };\n AgList.prototype.updateIndices = function () {\n var options = this.getGui().querySelectorAll('.ag-list-item');\n options.forEach(function (option, idx) {\n setAriaPosInSet(option, idx + 1);\n setAriaSetSize(option, options.length);\n });\n };\n AgList.prototype.renderOption = function (value, text) {\n var _this = this;\n var itemEl = document.createElement('div');\n setAriaRole(itemEl, 'option');\n itemEl.classList.add('ag-list-item', \"ag-\" + this.cssIdentifier + \"-list-item\");\n itemEl.innerHTML = \"\" + text + \"\";\n itemEl.tabIndex = -1;\n this.itemEls.push(itemEl);\n this.addManagedListener(itemEl, 'mouseover', function () { return _this.highlightItem(itemEl); });\n this.addManagedListener(itemEl, 'mouseleave', function () { return _this.clearHighlighted(); });\n this.addManagedListener(itemEl, 'click', function () { return _this.setValue(value); });\n this.getGui().appendChild(itemEl);\n };\n AgList.prototype.setValue = function (value, silent) {\n if (this.value === value) {\n this.fireItemSelected();\n return this;\n }\n if (value == null) {\n this.reset();\n return this;\n }\n var idx = this.options.findIndex(function (option) { return option.value === value; });\n if (idx !== -1) {\n var option = this.options[idx];\n this.value = option.value;\n this.displayValue = option.text != null ? option.text : option.value;\n this.highlightItem(this.itemEls[idx]);\n if (!silent) {\n this.fireChangeEvent();\n }\n }\n return this;\n };\n AgList.prototype.setValueByIndex = function (idx) {\n return this.setValue(this.options[idx].value);\n };\n AgList.prototype.getValue = function () {\n return this.value;\n };\n AgList.prototype.getDisplayValue = function () {\n return this.displayValue;\n };\n AgList.prototype.refreshHighlighted = function () {\n var _this = this;\n this.clearHighlighted();\n var idx = this.options.findIndex(function (option) { return option.value === _this.value; });\n if (idx !== -1) {\n this.highlightItem(this.itemEls[idx]);\n }\n };\n AgList.prototype.reset = function () {\n this.value = null;\n this.displayValue = null;\n this.clearHighlighted();\n this.fireChangeEvent();\n };\n AgList.prototype.highlightItem = function (el) {\n if (!el.offsetParent) {\n return;\n }\n this.clearHighlighted();\n this.highlightedEl = el;\n this.highlightedEl.classList.add(AgList.ACTIVE_CLASS);\n setAriaSelected(this.highlightedEl, true);\n this.highlightedEl.focus();\n };\n AgList.prototype.clearHighlighted = function () {\n if (!this.highlightedEl || !this.highlightedEl.offsetParent) {\n return;\n }\n this.highlightedEl.classList.remove(AgList.ACTIVE_CLASS);\n setAriaSelected(this.highlightedEl, false);\n this.highlightedEl = null;\n };\n AgList.prototype.fireChangeEvent = function () {\n this.dispatchEvent({ type: AgAbstractField.EVENT_CHANGED });\n this.fireItemSelected();\n };\n AgList.prototype.fireItemSelected = function () {\n this.dispatchEvent({ type: AgList.EVENT_ITEM_SELECTED });\n };\n AgList.EVENT_ITEM_SELECTED = 'selectedItem';\n AgList.ACTIVE_CLASS = 'ag-active-item';\n __decorate([\n PostConstruct\n ], AgList.prototype, \"init\", null);\n return AgList;\n}(Component));\nexport { AgList };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { AgAbstractField } from \"./agAbstractField\";\nimport { AgPickerField } from \"./agPickerField\";\nimport { AgList } from \"./agList\";\nimport { Autowired, PostConstruct } from \"../context/context\";\nimport { setElementWidth, getAbsoluteWidth, getInnerHeight } from \"../utils/dom\";\nimport { setAriaExpanded } from \"../utils/aria\";\nvar AgSelect = /** @class */ (function (_super) {\n __extends(AgSelect, _super);\n function AgSelect(config) {\n return _super.call(this, config, 'ag-select', 'smallDown', 'listbox') || this;\n }\n AgSelect.prototype.init = function () {\n var _this = this;\n this.listComponent = this.createBean(new AgList('select'));\n this.listComponent.setParentComponent(this);\n this.eWrapper.tabIndex = 0;\n this.listComponent.addManagedListener(this.listComponent, AgList.EVENT_ITEM_SELECTED, function () { if (_this.hideList) {\n _this.hideList();\n } });\n this.listComponent.addManagedListener(this.listComponent, AgAbstractField.EVENT_CHANGED, function () {\n _this.setValue(_this.listComponent.getValue(), false, true);\n if (_this.hideList) {\n _this.hideList();\n }\n });\n };\n AgSelect.prototype.showPicker = function () {\n var _this = this;\n var listGui = this.listComponent.getGui();\n var eDocument = this.gridOptionsWrapper.getDocument();\n var destroyMouseWheelFunc = this.addManagedListener(eDocument.body, 'wheel', function (e) {\n if (!listGui.contains(e.target) && _this.hideList) {\n _this.hideList();\n }\n });\n var destroyFocusOutFunc = this.addManagedListener(listGui, 'focusout', function (e) {\n if (!listGui.contains(e.relatedTarget) && _this.hideList) {\n _this.hideList();\n }\n });\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var addPopupRes = this.popupService.addPopup({\n modal: true,\n eChild: listGui,\n closeOnEsc: true,\n closedCallback: function () {\n _this.hideList = null;\n _this.isPickerDisplayed = false;\n destroyFocusOutFunc();\n destroyMouseWheelFunc();\n if (_this.isAlive()) {\n setAriaExpanded(_this.eWrapper, false);\n _this.getFocusableElement().focus();\n }\n },\n ariaLabel: translate('ariaLabelSelectField', 'Select Field')\n });\n if (addPopupRes) {\n this.hideList = addPopupRes.hideFunc;\n }\n this.isPickerDisplayed = true;\n setElementWidth(listGui, getAbsoluteWidth(this.eWrapper));\n setAriaExpanded(this.eWrapper, true);\n listGui.style.maxHeight = getInnerHeight(this.popupService.getPopupParent()) + 'px';\n listGui.style.position = 'absolute';\n this.popupService.positionPopupUnderComponent({\n type: 'ag-list',\n eventSource: this.eWrapper,\n ePopup: listGui,\n keepWithinBounds: true\n });\n this.listComponent.refreshHighlighted();\n return this.listComponent;\n };\n AgSelect.prototype.addOptions = function (options) {\n var _this = this;\n options.forEach(function (option) { return _this.addOption(option); });\n return this;\n };\n AgSelect.prototype.addOption = function (option) {\n this.listComponent.addOption(option);\n return this;\n };\n AgSelect.prototype.setValue = function (value, silent, fromPicker) {\n if (this.value === value) {\n return this;\n }\n if (!fromPicker) {\n this.listComponent.setValue(value, true);\n }\n var newValue = this.listComponent.getValue();\n if (newValue === this.getValue()) {\n return this;\n }\n this.eDisplayField.innerHTML = this.listComponent.getDisplayValue();\n return _super.prototype.setValue.call(this, value, silent);\n };\n AgSelect.prototype.destroy = function () {\n if (this.hideList) {\n this.hideList();\n }\n this.destroyBean(this.listComponent);\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Autowired('popupService')\n ], AgSelect.prototype, \"popupService\", void 0);\n __decorate([\n PostConstruct\n ], AgSelect.prototype, \"init\", null);\n return AgSelect;\n}(AgPickerField));\nexport { AgSelect };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { RefSelector } from './componentAnnotations';\nimport { AgAbstractField } from './agAbstractField';\nimport { setDisabled, setElementWidth, addOrRemoveAttribute } from '../utils/dom';\nimport { setAriaLabelledBy, setAriaLabel } from '../utils/aria';\nimport { exists } from '../utils/generic';\nvar AgAbstractInputField = /** @class */ (function (_super) {\n __extends(AgAbstractInputField, _super);\n function AgAbstractInputField(config, className, inputType, displayFieldTag) {\n if (inputType === void 0) { inputType = 'text'; }\n if (displayFieldTag === void 0) { displayFieldTag = 'input'; }\n var _this = _super.call(this, config, /* html */ \"\\n
    \\n
    \\n
    \\n <\" + displayFieldTag + \" ref=\\\"eInput\\\" class=\\\"ag-input-field-input\\\">\\n
    \\n
    \", className) || this;\n _this.inputType = inputType;\n _this.displayFieldTag = displayFieldTag;\n return _this;\n }\n AgAbstractInputField.prototype.postConstruct = function () {\n _super.prototype.postConstruct.call(this);\n this.setInputType();\n this.eLabel.classList.add(this.className + \"-label\");\n this.eWrapper.classList.add(this.className + \"-input-wrapper\");\n this.eInput.classList.add(this.className + \"-input\");\n this.addCssClass('ag-input-field');\n this.eInput.id = this.eInput.id || \"ag-\" + this.getCompId() + \"-input\";\n var _a = this.config, width = _a.width, value = _a.value;\n if (width != null) {\n this.setWidth(width);\n }\n if (value != null) {\n this.setValue(value);\n }\n this.addInputListeners();\n };\n AgAbstractInputField.prototype.refreshLabel = function () {\n if (exists(this.getLabel())) {\n setAriaLabelledBy(this.eInput, this.getLabelId());\n }\n else {\n this.eInput.removeAttribute('aria-labelledby');\n }\n _super.prototype.refreshLabel.call(this);\n };\n AgAbstractInputField.prototype.addInputListeners = function () {\n var _this = this;\n this.addManagedListener(this.eInput, 'input', function (e) { return _this.setValue(e.target.value); });\n };\n AgAbstractInputField.prototype.setInputType = function () {\n if (this.displayFieldTag === 'input') {\n this.eInput.setAttribute('type', this.inputType);\n }\n };\n AgAbstractInputField.prototype.getInputElement = function () {\n return this.eInput;\n };\n AgAbstractInputField.prototype.setInputWidth = function (width) {\n setElementWidth(this.eWrapper, width);\n return this;\n };\n AgAbstractInputField.prototype.setInputName = function (name) {\n this.getInputElement().setAttribute('name', name);\n return this;\n };\n AgAbstractInputField.prototype.getFocusableElement = function () {\n return this.eInput;\n };\n AgAbstractInputField.prototype.setMaxLength = function (length) {\n var eInput = this.eInput;\n eInput.maxLength = length;\n return this;\n };\n AgAbstractInputField.prototype.setInputPlaceholder = function (placeholder) {\n addOrRemoveAttribute(this.eInput, 'placeholder', placeholder);\n return this;\n };\n AgAbstractInputField.prototype.setInputAriaLabel = function (label) {\n setAriaLabel(this.eInput, label);\n return this;\n };\n AgAbstractInputField.prototype.setDisabled = function (disabled) {\n setDisabled(this.eInput, disabled);\n return _super.prototype.setDisabled.call(this, disabled);\n };\n __decorate([\n RefSelector('eLabel')\n ], AgAbstractInputField.prototype, \"eLabel\", void 0);\n __decorate([\n RefSelector('eWrapper')\n ], AgAbstractInputField.prototype, \"eWrapper\", void 0);\n __decorate([\n RefSelector('eInput')\n ], AgAbstractInputField.prototype, \"eInput\", void 0);\n return AgAbstractInputField;\n}(AgAbstractField));\nexport { AgAbstractInputField };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { RefSelector } from '../../widgets/componentAnnotations';\nimport { OptionsFactory } from './optionsFactory';\nimport { ProvidedFilter } from './providedFilter';\nimport { AgPromise } from '../../utils';\nimport { AgSelect } from '../../widgets/agSelect';\nimport { includes } from '../../utils/array';\nimport { setDisplayed, setDisabled } from '../../utils/dom';\nimport { Component } from '../../widgets/component';\nimport { AgAbstractInputField } from '../../widgets/agAbstractInputField';\nexport var ConditionPosition;\n(function (ConditionPosition) {\n ConditionPosition[ConditionPosition[\"One\"] = 0] = \"One\";\n ConditionPosition[ConditionPosition[\"Two\"] = 1] = \"Two\";\n})(ConditionPosition || (ConditionPosition = {}));\n/**\n * Every filter with a dropdown where the user can specify a comparing type against the filter values.\n *\n * @param M type of filter-model managed by the concrete sub-class that extends this type\n * @param V type of value managed by the concrete sub-class that extends this type\n * @param E type of UI element used for collecting user-input\n */\nvar SimpleFilter = /** @class */ (function (_super) {\n __extends(SimpleFilter, _super);\n function SimpleFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SimpleFilter.prototype.getNumberOfInputs = function (type) {\n var customOpts = this.optionsFactory.getCustomOption(type);\n if (customOpts) {\n var numberOfInputs = customOpts.numberOfInputs;\n return numberOfInputs != null ? numberOfInputs : 1;\n }\n var zeroInputTypes = [\n SimpleFilter.EMPTY, SimpleFilter.NOT_BLANK, SimpleFilter.BLANK,\n ];\n if (type && zeroInputTypes.indexOf(type) >= 0) {\n return 0;\n }\n else if (type === SimpleFilter.IN_RANGE) {\n return 2;\n }\n return 1;\n };\n // floating filter calls this when user applies filter from floating filter\n SimpleFilter.prototype.onFloatingFilterChanged = function (type, value) {\n this.setTypeFromFloatingFilter(type);\n this.setValueFromFloatingFilter(value);\n this.onUiChanged(true);\n };\n SimpleFilter.prototype.setTypeFromFloatingFilter = function (type) {\n this.eType1.setValue(type);\n this.eType2.setValue(this.optionsFactory.getDefaultOption());\n (this.isDefaultOperator('AND') ? this.eJoinOperatorAnd : this.eJoinOperatorOr).setValue(true);\n };\n SimpleFilter.prototype.getModelFromUi = function () {\n if (!this.isConditionUiComplete(ConditionPosition.One)) {\n return null;\n }\n if (this.isAllowTwoConditions() && this.isConditionUiComplete(ConditionPosition.Two)) {\n return {\n filterType: this.getFilterType(),\n operator: this.getJoinOperator(),\n condition1: this.createCondition(ConditionPosition.One),\n condition2: this.createCondition(ConditionPosition.Two)\n };\n }\n return this.createCondition(ConditionPosition.One);\n };\n SimpleFilter.prototype.getConditionTypes = function () {\n return [\n this.eType1.getValue(),\n this.eType2.getValue(),\n ];\n };\n SimpleFilter.prototype.getJoinOperator = function () {\n return this.eJoinOperatorOr.getValue() === true ? 'OR' : 'AND';\n };\n SimpleFilter.prototype.areModelsEqual = function (a, b) {\n // both are missing\n if (!a && !b) {\n return true;\n }\n // one is missing, other present\n if ((!a && b) || (a && !b)) {\n return false;\n }\n // one is combined, the other is not\n var aIsSimple = !a.operator;\n var bIsSimple = !b.operator;\n var oneSimpleOneCombined = (!aIsSimple && bIsSimple) || (aIsSimple && !bIsSimple);\n if (oneSimpleOneCombined) {\n return false;\n }\n var res;\n // otherwise both present, so compare\n if (aIsSimple) {\n var aSimple = a;\n var bSimple = b;\n res = this.areSimpleModelsEqual(aSimple, bSimple);\n }\n else {\n var aCombined = a;\n var bCombined = b;\n res = aCombined.operator === bCombined.operator\n && this.areSimpleModelsEqual(aCombined.condition1, bCombined.condition1)\n && this.areSimpleModelsEqual(aCombined.condition2, bCombined.condition2);\n }\n return res;\n };\n SimpleFilter.prototype.setModelIntoUi = function (model) {\n var isCombined = model.operator;\n if (isCombined) {\n var combinedModel = model;\n var orChecked = combinedModel.operator === 'OR';\n this.eJoinOperatorAnd.setValue(!orChecked);\n this.eJoinOperatorOr.setValue(orChecked);\n this.eType1.setValue(combinedModel.condition1.type);\n this.eType2.setValue(combinedModel.condition2.type);\n this.setConditionIntoUi(combinedModel.condition1, ConditionPosition.One);\n this.setConditionIntoUi(combinedModel.condition2, ConditionPosition.Two);\n }\n else {\n var simpleModel = model;\n this.eJoinOperatorAnd.setValue(this.isDefaultOperator('AND'));\n this.eJoinOperatorOr.setValue(this.isDefaultOperator('OR'));\n this.eType1.setValue(simpleModel.type);\n this.eType2.setValue(this.optionsFactory.getDefaultOption());\n this.setConditionIntoUi(simpleModel, ConditionPosition.One);\n this.setConditionIntoUi(null, ConditionPosition.Two);\n }\n return AgPromise.resolve();\n };\n SimpleFilter.prototype.doesFilterPass = function (params) {\n var _this = this;\n var model = this.getModel();\n if (model == null) {\n return true;\n }\n var operator = model.operator;\n var models = [];\n if (operator) {\n var combinedModel = model;\n models.push(combinedModel.condition1, combinedModel.condition2);\n }\n else {\n models.push(model);\n }\n var combineFunction = operator && operator === 'OR' ? 'some' : 'every';\n return models[combineFunction](function (m) { return _this.individualConditionPasses(params, m); });\n };\n SimpleFilter.prototype.setParams = function (params) {\n _super.prototype.setParams.call(this, params);\n this.optionsFactory = new OptionsFactory();\n this.optionsFactory.init(params, this.getDefaultFilterOptions());\n this.allowTwoConditions = !params.suppressAndOrCondition;\n this.alwaysShowBothConditions = !!params.alwaysShowBothConditions;\n this.defaultJoinOperator = this.getDefaultJoinOperator(params.defaultJoinOperator);\n this.putOptionsIntoDropdown();\n this.addChangedListeners();\n };\n SimpleFilter.prototype.getDefaultJoinOperator = function (defaultJoinOperator) {\n return includes(['AND', 'OR'], defaultJoinOperator) ? defaultJoinOperator : 'AND';\n };\n SimpleFilter.prototype.putOptionsIntoDropdown = function () {\n var _this = this;\n var filterOptions = this.optionsFactory.getFilterOptions();\n var eTypes = [this.eType1, this.eType2];\n // Add specified options to all condition drop-downs.\n filterOptions.forEach(function (option) {\n var listOption = typeof option === 'string' ?\n _this.createBoilerplateListOption(option) :\n _this.createCustomListOption(option);\n eTypes.forEach(function (eType) { return eType.addOption(listOption); });\n });\n // Make drop-downs read-only if there is only one option.\n eTypes.forEach(function (eType) { return eType.setDisabled(filterOptions.length <= 1); });\n };\n SimpleFilter.prototype.createBoilerplateListOption = function (option) {\n return { value: option, text: this.translate(option) };\n };\n SimpleFilter.prototype.createCustomListOption = function (option) {\n var displayKey = option.displayKey;\n var customOption = this.optionsFactory.getCustomOption(option.displayKey);\n return {\n value: displayKey,\n text: customOption ?\n this.gridOptionsWrapper.getLocaleTextFunc()(customOption.displayKey, customOption.displayName) :\n this.translate(displayKey),\n };\n };\n SimpleFilter.prototype.isAllowTwoConditions = function () {\n return this.allowTwoConditions;\n };\n SimpleFilter.prototype.createBodyTemplate = function () {\n return /* html */ \"\\n \\n \" + this.createValueTemplate(ConditionPosition.One) + \"\\n
    \\n \\n \\n
    \\n \\n \" + this.createValueTemplate(ConditionPosition.Two);\n };\n SimpleFilter.prototype.getCssIdentifier = function () {\n return 'simple-filter';\n };\n SimpleFilter.prototype.updateUiVisibility = function () {\n var _this = this;\n var elementConditionGroups = [\n [this.eType1],\n [this.eType2, this.eJoinOperatorPanel, this.eJoinOperatorAnd, this.eJoinOperatorOr],\n ];\n var elementBodies = [this.eCondition1Body, this.eCondition2Body];\n elementConditionGroups.forEach(function (group, position) {\n var visible = _this.isConditionVisible(position);\n var disabled = _this.isConditionDisabled(position);\n group.forEach(function (element) {\n if (element instanceof AgAbstractInputField || element instanceof AgSelect) {\n element.setDisabled(disabled);\n element.setDisplayed(visible);\n }\n else {\n setDisabled(element, disabled);\n setDisplayed(element, visible);\n }\n });\n });\n elementBodies.forEach(function (element, index) {\n setDisplayed(element, _this.isConditionBodyVisible(index));\n });\n this.forEachInput(function (element, index, position, numberOfInputs) {\n _this.setElementDisplayed(element, index < numberOfInputs);\n _this.setElementDisabled(element, _this.isConditionDisabled(position));\n });\n this.resetPlaceholder();\n };\n SimpleFilter.prototype.afterGuiAttached = function (params) {\n _super.prototype.afterGuiAttached.call(this, params);\n this.resetPlaceholder();\n if (!params || (!params.suppressFocus && !this.isReadOnly())) {\n var firstInput = this.getInputs()[0][0];\n if (!firstInput) {\n return;\n }\n if (firstInput instanceof AgAbstractInputField) {\n firstInput.getInputElement().focus();\n }\n }\n };\n // allow sub-classes to reset HTML placeholders after UI update.\n SimpleFilter.prototype.resetPlaceholder = function () {\n var _this = this;\n var globalTranslate = this.gridOptionsWrapper.getLocaleTextFunc();\n this.forEachInput(function (element, index, _, numberOfInputs) {\n if (!(element instanceof AgAbstractInputField)) {\n return;\n }\n var placeholder = index === 0 && numberOfInputs > 1 ? 'inRangeStart' :\n index === 0 ? 'filterOoo' :\n 'inRangeEnd';\n var ariaLabel = index === 0 && numberOfInputs > 1 ? globalTranslate('ariaFilterFromValue', 'Filter from value') :\n index === 0 ? globalTranslate('ariaFilterValue', 'Filter Value') :\n globalTranslate('ariaFilterToValue', 'Filter to Value');\n element.setInputPlaceholder(_this.translate(placeholder));\n element.setInputAriaLabel(ariaLabel);\n });\n };\n SimpleFilter.prototype.setElementValue = function (element, value, silent) {\n if (element instanceof AgAbstractInputField) {\n element.setValue(value != null ? String(value) : null, silent);\n }\n };\n SimpleFilter.prototype.setElementDisplayed = function (element, displayed) {\n if (element instanceof Component) {\n setDisplayed(element.getGui(), displayed);\n }\n };\n SimpleFilter.prototype.setElementDisabled = function (element, disabled) {\n if (element instanceof Component) {\n setDisabled(element.getGui(), disabled);\n }\n };\n SimpleFilter.prototype.attachElementOnChange = function (element, listener) {\n if (element instanceof AgAbstractInputField) {\n element.onValueChange(listener);\n }\n };\n SimpleFilter.prototype.forEachInput = function (cb) {\n var _this = this;\n var inputs = this.getInputs();\n this.getConditionTypes().forEach(function (type, position) {\n var numberOfInputs = _this.getNumberOfInputs(type);\n for (var index = 0; index < inputs[position].length; index++) {\n var input = inputs[position][index];\n if (input != null) {\n cb(input, index, position, numberOfInputs);\n }\n }\n });\n };\n SimpleFilter.prototype.isConditionVisible = function (position) {\n if (position === 0) {\n return true;\n } // Position 0 should always be visible.\n if (!this.allowTwoConditions) {\n return false;\n } // Short-circuit if no tail conditions.\n if (this.isReadOnly()) {\n // Only display a condition when read-only if the condition is complete.\n return this.isConditionUiComplete(position);\n }\n if (this.alwaysShowBothConditions) {\n return true;\n }\n // Only display a 2nd or later condition when the previous condition is complete.\n return this.isConditionUiComplete(position - 1);\n };\n SimpleFilter.prototype.isConditionDisabled = function (position) {\n if (this.isReadOnly()) {\n return true;\n } // Read-only mode trumps everything.\n if (!this.isConditionVisible(position)) {\n return true;\n } // Invisible implies disabled.\n if (position === 0) {\n return false;\n } // Position 0 should typically be editable.\n // Only allow editing of a 2nd or later condition if the previous condition is complete.\n return !this.isConditionUiComplete(position - 1);\n };\n SimpleFilter.prototype.isConditionBodyVisible = function (position) {\n if (!this.isConditionVisible(position)) {\n return false;\n }\n // Check that the condition needs inputs.\n var type = this.getConditionTypes()[position];\n var numberOfInputs = this.getNumberOfInputs(type);\n return numberOfInputs > 0;\n };\n // returns true if the UI represents a working filter, eg all parts are filled out.\n // eg if text filter and textfield blank then returns false.\n SimpleFilter.prototype.isConditionUiComplete = function (position) {\n var type = this.getConditionTypes()[position];\n if (type === SimpleFilter.EMPTY) {\n return false;\n }\n if (this.getValues(position).some(function (v) { return v == null; })) {\n return false;\n }\n return true;\n };\n SimpleFilter.prototype.resetUiToDefaults = function (silent) {\n var _this = this;\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var filteringLabel = translate('ariaFilteringOperator', 'Filtering operator');\n var uniqueGroupId = 'ag-simple-filter-and-or-' + this.getCompId();\n var defaultOption = this.optionsFactory.getDefaultOption();\n this.eType1\n .setValue(defaultOption, silent)\n .setAriaLabel(filteringLabel)\n .setDisabled(this.isReadOnly());\n this.eType2\n .setValue(this.optionsFactory.getDefaultOption(), silent)\n .setAriaLabel(filteringLabel)\n .setDisabled(this.isReadOnly());\n this.eJoinOperatorAnd\n .setValue(this.isDefaultOperator('AND'), silent)\n .setName(uniqueGroupId)\n .setLabel(this.translate('andCondition'))\n .setDisabled(this.isReadOnly());\n this.eJoinOperatorOr\n .setValue(this.isDefaultOperator('OR'), silent)\n .setName(uniqueGroupId)\n .setLabel(this.translate('orCondition'))\n .setDisabled(this.isReadOnly());\n this.forEachInput(function (element) {\n _this.setElementValue(element, null, silent);\n _this.setElementDisabled(element, _this.isReadOnly());\n });\n this.resetPlaceholder();\n return AgPromise.resolve();\n };\n // puts model values into the UI\n SimpleFilter.prototype.setConditionIntoUi = function (model, position) {\n var _this = this;\n var values = this.mapValuesFromModel(model);\n this.forEachInput(function (element, index, elPosition, _) {\n if (elPosition !== position) {\n return;\n }\n _this.setElementValue(element, values[index] != null ? values[index] : null);\n });\n };\n // after floating filter changes, this sets the 'value' section. this is implemented by the base class\n // (as that's where value is controlled), the 'type' part from the floating filter is dealt with in this class.\n SimpleFilter.prototype.setValueFromFloatingFilter = function (value) {\n var _this = this;\n this.forEachInput(function (element, index, position, _) {\n _this.setElementValue(element, index === 0 && position === 0 ? value : null);\n });\n };\n SimpleFilter.prototype.isDefaultOperator = function (operator) {\n return operator === this.defaultJoinOperator;\n };\n SimpleFilter.prototype.addChangedListeners = function () {\n var _this = this;\n if (this.isReadOnly()) {\n return;\n }\n var listener = function () { return _this.onUiChanged(); };\n this.eType1.onValueChange(listener);\n this.eType2.onValueChange(listener);\n this.eJoinOperatorOr.onValueChange(listener);\n this.eJoinOperatorAnd.onValueChange(listener);\n this.forEachInput(function (element) {\n _this.attachElementOnChange(element, listener);\n });\n };\n /** returns true if the row passes the said condition */\n SimpleFilter.prototype.individualConditionPasses = function (params, filterModel) {\n var cellValue = this.getCellValue(params.node);\n var values = this.mapValuesFromModel(filterModel);\n var customFilterOption = this.optionsFactory.getCustomOption(filterModel.type);\n var customFilterResult = this.evaluateCustomFilter(customFilterOption, values, cellValue);\n if (customFilterResult != null) {\n return customFilterResult;\n }\n if (cellValue == null) {\n return this.evaluateNullValue(filterModel.type);\n }\n return this.evaluateNonNullValue(values, cellValue, filterModel, params);\n };\n SimpleFilter.prototype.evaluateCustomFilter = function (customFilterOption, values, cellValue) {\n if (customFilterOption == null) {\n return;\n }\n var predicate = customFilterOption.predicate;\n // only execute the custom filter if a value exists or a value isn't required, i.e. input is hidden\n if (predicate != null && !values.some(function (v) { return v == null; })) {\n return predicate(values, cellValue);\n }\n // No custom filter invocation, indicate that to the caller.\n return;\n };\n SimpleFilter.prototype.isBlank = function (cellValue) {\n return cellValue == null ||\n (typeof cellValue === 'string' && cellValue.trim().length === 0);\n };\n SimpleFilter.EMPTY = 'empty';\n SimpleFilter.BLANK = 'blank';\n SimpleFilter.NOT_BLANK = 'notBlank';\n SimpleFilter.EQUALS = 'equals';\n SimpleFilter.NOT_EQUAL = 'notEqual';\n SimpleFilter.LESS_THAN = 'lessThan';\n SimpleFilter.LESS_THAN_OR_EQUAL = 'lessThanOrEqual';\n SimpleFilter.GREATER_THAN = 'greaterThan';\n SimpleFilter.GREATER_THAN_OR_EQUAL = 'greaterThanOrEqual';\n SimpleFilter.IN_RANGE = 'inRange';\n SimpleFilter.CONTAINS = 'contains';\n SimpleFilter.NOT_CONTAINS = 'notContains';\n SimpleFilter.STARTS_WITH = 'startsWith';\n SimpleFilter.ENDS_WITH = 'endsWith';\n __decorate([\n RefSelector('eOptions1')\n ], SimpleFilter.prototype, \"eType1\", void 0);\n __decorate([\n RefSelector('eOptions2')\n ], SimpleFilter.prototype, \"eType2\", void 0);\n __decorate([\n RefSelector('eJoinOperatorPanel')\n ], SimpleFilter.prototype, \"eJoinOperatorPanel\", void 0);\n __decorate([\n RefSelector('eJoinOperatorAnd')\n ], SimpleFilter.prototype, \"eJoinOperatorAnd\", void 0);\n __decorate([\n RefSelector('eJoinOperatorOr')\n ], SimpleFilter.prototype, \"eJoinOperatorOr\", void 0);\n __decorate([\n RefSelector('eCondition1Body')\n ], SimpleFilter.prototype, \"eCondition1Body\", void 0);\n __decorate([\n RefSelector('eCondition2Body')\n ], SimpleFilter.prototype, \"eCondition2Body\", void 0);\n return SimpleFilter;\n}(ProvidedFilter));\nexport { SimpleFilter };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { SimpleFilter } from \"./simpleFilter\";\nvar ScalarFilter = /** @class */ (function (_super) {\n __extends(ScalarFilter, _super);\n function ScalarFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ScalarFilter.prototype.setParams = function (params) {\n _super.prototype.setParams.call(this, params);\n this.scalarFilterParams = params;\n };\n ScalarFilter.prototype.evaluateNullValue = function (filterType) {\n switch (filterType) {\n case ScalarFilter.EQUALS:\n case ScalarFilter.NOT_EQUAL:\n if (this.scalarFilterParams.includeBlanksInEquals) {\n return true;\n }\n break;\n case ScalarFilter.GREATER_THAN:\n case ScalarFilter.GREATER_THAN_OR_EQUAL:\n if (this.scalarFilterParams.includeBlanksInGreaterThan) {\n return true;\n }\n break;\n case ScalarFilter.LESS_THAN:\n case ScalarFilter.LESS_THAN_OR_EQUAL:\n if (this.scalarFilterParams.includeBlanksInLessThan) {\n return true;\n }\n break;\n case ScalarFilter.IN_RANGE:\n if (this.scalarFilterParams.includeBlanksInRange) {\n return true;\n }\n break;\n case ScalarFilter.BLANK:\n return true;\n case ScalarFilter.NOT_BLANK:\n return false;\n }\n return false;\n };\n ScalarFilter.prototype.evaluateNonNullValue = function (values, cellValue, filterModel) {\n var comparator = this.comparator();\n var compareResult = values[0] != null ? comparator(values[0], cellValue) : 0;\n switch (filterModel.type) {\n case ScalarFilter.EQUALS:\n return compareResult === 0;\n case ScalarFilter.NOT_EQUAL:\n return compareResult !== 0;\n case ScalarFilter.GREATER_THAN:\n return compareResult > 0;\n case ScalarFilter.GREATER_THAN_OR_EQUAL:\n return compareResult >= 0;\n case ScalarFilter.LESS_THAN:\n return compareResult < 0;\n case ScalarFilter.LESS_THAN_OR_EQUAL:\n return compareResult <= 0;\n case ScalarFilter.IN_RANGE: {\n var compareToResult = comparator(values[1], cellValue);\n return this.scalarFilterParams.inRangeInclusive ?\n compareResult >= 0 && compareToResult <= 0 :\n compareResult > 0 && compareToResult < 0;\n }\n case ScalarFilter.BLANK:\n return this.isBlank(cellValue);\n case ScalarFilter.NOT_BLANK:\n return !this.isBlank(cellValue);\n default:\n console.warn('AG Grid: Unexpected type of filter \"' + filterModel.type + '\", it looks like the filter was configured with incorrect Filter Options');\n return true;\n }\n };\n return ScalarFilter;\n}(SimpleFilter));\nexport { ScalarFilter };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __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};\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { RefSelector } from '../../../widgets/componentAnnotations';\nimport { Autowired } from '../../../context/context';\nimport { DateCompWrapper } from './dateCompWrapper';\nimport { ConditionPosition } from '../simpleFilter';\nimport { ScalarFilter } from '../scalarFilter';\nimport { serialiseDate, parseDateTimeFromString } from '../../../utils/date';\nvar DEFAULT_MIN_YEAR = 1000;\nvar DEFAULT_MAX_YEAR = Infinity;\nvar DateFilter = /** @class */ (function (_super) {\n __extends(DateFilter, _super);\n function DateFilter() {\n var _this = _super.call(this, 'dateFilter') || this;\n _this.minValidYear = DEFAULT_MIN_YEAR;\n _this.maxValidYear = DEFAULT_MAX_YEAR;\n return _this;\n }\n DateFilter.prototype.afterGuiAttached = function (params) {\n _super.prototype.afterGuiAttached.call(this, params);\n this.dateCondition1FromComp.afterGuiAttached(params);\n };\n DateFilter.prototype.mapValuesFromModel = function (filterModel) {\n // unlike the other filters, we do two things here:\n // 1) allow for different attribute names (same as done for other filters) (eg the 'from' and 'to'\n // are in different locations in Date and Number filter models)\n // 2) convert the type (because Date filter uses Dates, however model is 'string')\n //\n // NOTE: The conversion of string to date also removes the timezone - i.e. when user picks\n // a date from the UI, it will have timezone info in it. This is lost when creating\n // the model. When we recreate the date again here, it's without a timezone.\n var _a = filterModel || {}, dateFrom = _a.dateFrom, dateTo = _a.dateTo, type = _a.type;\n return [\n dateFrom && parseDateTimeFromString(dateFrom) || null,\n dateTo && parseDateTimeFromString(dateTo) || null,\n ].slice(0, this.getNumberOfInputs(type));\n };\n DateFilter.prototype.comparator = function () {\n return this.dateFilterParams.comparator ? this.dateFilterParams.comparator : this.defaultComparator.bind(this);\n };\n DateFilter.prototype.defaultComparator = function (filterDate, cellValue) {\n // The default comparator assumes that the cellValue is a date\n var cellAsDate = cellValue;\n if (cellValue == null || cellAsDate < filterDate) {\n return -1;\n }\n if (cellAsDate > filterDate) {\n return 1;\n }\n return 0;\n };\n DateFilter.prototype.setParams = function (params) {\n _super.prototype.setParams.call(this, params);\n this.dateFilterParams = params;\n var yearParser = function (param, fallback) {\n if (params[param] != null) {\n if (!isNaN(params[param])) {\n return params[param] == null ? fallback : Number(params[param]);\n }\n else {\n console.warn(\"AG Grid: DateFilter \" + param + \" is not a number\");\n }\n }\n return fallback;\n };\n this.minValidYear = yearParser('minValidYear', DEFAULT_MIN_YEAR);\n this.maxValidYear = yearParser('maxValidYear', DEFAULT_MAX_YEAR);\n if (this.minValidYear > this.maxValidYear) {\n console.warn(\"AG Grid: DateFilter minValidYear should be <= maxValidYear\");\n }\n this.createDateComponents();\n };\n DateFilter.prototype.createDateComponents = function () {\n var _this = this;\n var createDateCompWrapper = function (element) {\n return new DateCompWrapper(_this.getContext(), _this.userComponentFactory, {\n onDateChanged: function () { return _this.onUiChanged(); },\n filterParams: _this.dateFilterParams\n }, element);\n };\n this.dateCondition1FromComp = createDateCompWrapper(this.eCondition1PanelFrom);\n this.dateCondition1ToComp = createDateCompWrapper(this.eCondition1PanelTo);\n this.dateCondition2FromComp = createDateCompWrapper(this.eCondition2PanelFrom);\n this.dateCondition2ToComp = createDateCompWrapper(this.eCondition2PanelTo);\n this.addDestroyFunc(function () {\n _this.forEachInput(function (element) { return element.destroy(); });\n });\n };\n DateFilter.prototype.setElementValue = function (element, value, silent) {\n element.setDate(value);\n };\n DateFilter.prototype.setElementDisplayed = function (element, displayed) {\n element.setDisplayed(displayed);\n };\n DateFilter.prototype.setElementDisabled = function (element, disabled) {\n element.setDisabled(disabled);\n };\n DateFilter.prototype.getDefaultFilterOptions = function () {\n return DateFilter.DEFAULT_FILTER_OPTIONS;\n };\n DateFilter.prototype.createValueTemplate = function (position) {\n var pos = position === ConditionPosition.One ? '1' : '2';\n return /* html */ \"\\n
    \\n
    \\n
    \\n
    \";\n };\n DateFilter.prototype.isConditionUiComplete = function (position) {\n var _this = this;\n if (!_super.prototype.isConditionUiComplete.call(this, position)) {\n return false;\n }\n var isValidDate = function (value) { return value != null\n && value.getUTCFullYear() >= _this.minValidYear\n && value.getUTCFullYear() <= _this.maxValidYear; };\n var valid = true;\n this.forEachInput(function (element, index, elPosition, numberOfInputs) {\n if (elPosition !== position || !valid || index >= numberOfInputs) {\n return;\n }\n valid = valid && isValidDate(element.getDate());\n });\n return valid;\n };\n DateFilter.prototype.areSimpleModelsEqual = function (aSimple, bSimple) {\n return aSimple.dateFrom === bSimple.dateFrom\n && aSimple.dateTo === bSimple.dateTo\n && aSimple.type === bSimple.type;\n };\n DateFilter.prototype.getFilterType = function () {\n return 'date';\n };\n DateFilter.prototype.createCondition = function (position) {\n var type = this.getConditionTypes()[position];\n var model = {};\n var values = this.getValues(position);\n if (values.length > 0) {\n model.dateFrom = serialiseDate(values[0]);\n }\n if (values.length > 1) {\n model.dateTo = serialiseDate(values[1]);\n }\n return __assign({ dateFrom: null, dateTo: null, filterType: this.getFilterType(), type: type }, model);\n };\n DateFilter.prototype.resetPlaceholder = function () {\n var globalTranslate = this.gridOptionsWrapper.getLocaleTextFunc();\n var placeholder = this.translate('dateFormatOoo');\n var ariaLabel = globalTranslate('ariaFilterValue', 'Filter Value');\n this.forEachInput(function (element) {\n element.setInputPlaceholder(placeholder);\n element.setInputAriaLabel(ariaLabel);\n });\n };\n DateFilter.prototype.getInputs = function () {\n return [\n [this.dateCondition1FromComp, this.dateCondition1ToComp],\n [this.dateCondition2FromComp, this.dateCondition2ToComp],\n ];\n };\n DateFilter.prototype.getValues = function (position) {\n var result = [];\n this.forEachInput(function (element, index, elPosition, numberOfInputs) {\n if (position === elPosition && index < numberOfInputs) {\n result.push(element.getDate());\n }\n });\n return result;\n };\n DateFilter.DEFAULT_FILTER_OPTIONS = [\n ScalarFilter.EQUALS,\n ScalarFilter.GREATER_THAN,\n ScalarFilter.LESS_THAN,\n ScalarFilter.NOT_EQUAL,\n ScalarFilter.IN_RANGE,\n ScalarFilter.BLANK,\n ScalarFilter.NOT_BLANK,\n ];\n __decorate([\n RefSelector('eCondition1PanelFrom')\n ], DateFilter.prototype, \"eCondition1PanelFrom\", void 0);\n __decorate([\n RefSelector('eCondition1PanelTo')\n ], DateFilter.prototype, \"eCondition1PanelTo\", void 0);\n __decorate([\n RefSelector('eCondition2PanelFrom')\n ], DateFilter.prototype, \"eCondition2PanelFrom\", void 0);\n __decorate([\n RefSelector('eCondition2PanelTo')\n ], DateFilter.prototype, \"eCondition2PanelTo\", void 0);\n __decorate([\n Autowired('userComponentFactory')\n ], DateFilter.prototype, \"userComponentFactory\", void 0);\n return DateFilter;\n}(ScalarFilter));\nexport { DateFilter };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Component } from '../../../widgets/component';\nimport { SimpleFilter } from '../../provided/simpleFilter';\nimport { OptionsFactory } from '../../provided/optionsFactory';\nvar SimpleFloatingFilter = /** @class */ (function (_super) {\n __extends(SimpleFloatingFilter, _super);\n function SimpleFloatingFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SimpleFloatingFilter.prototype.getDefaultDebounceMs = function () {\n return 0;\n };\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to override destroy() just to make the method public.\n SimpleFloatingFilter.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n // used by:\n // 1) NumberFloatingFilter & TextFloatingFilter: Always, for both when editable and read only.\n // 2) DateFloatingFilter: Only when read only (as we show text rather than a date picker when read only)\n SimpleFloatingFilter.prototype.getTextFromModel = function (model) {\n if (!model) {\n return null;\n }\n var isCombined = model.operator != null;\n if (isCombined) {\n var combinedModel = model;\n var _a = combinedModel || {}, condition1 = _a.condition1, condition2 = _a.condition2;\n var customOption1 = this.optionsFactory.getCustomOption(condition1.type);\n var customOption2 = this.optionsFactory.getCustomOption(condition2.type);\n return [\n this.conditionToString(condition1, customOption1),\n combinedModel.operator,\n this.conditionToString(condition2, customOption2),\n ].join(' ');\n }\n else {\n var condition = model;\n var customOption = this.optionsFactory.getCustomOption(condition.type);\n // For custom filter options we display the Name of the filter instead\n // of displaying the `from` value, as it wouldn't be relevant\n var _b = customOption || {}, displayKey = _b.displayKey, displayName = _b.displayName, numberOfInputs = _b.numberOfInputs;\n if (displayKey && displayName && numberOfInputs === 0) {\n this.gridOptionsWrapper.getLocaleTextFunc()(displayKey, displayName);\n return displayName;\n }\n return this.conditionToString(condition, customOption);\n }\n };\n SimpleFloatingFilter.prototype.isEventFromFloatingFilter = function (event) {\n return event && event.afterFloatingFilter;\n };\n SimpleFloatingFilter.prototype.getLastType = function () {\n return this.lastType;\n };\n SimpleFloatingFilter.prototype.isReadOnly = function () {\n return this.readOnly;\n };\n SimpleFloatingFilter.prototype.setLastTypeFromModel = function (model) {\n // if no model provided by the parent filter use default\n if (!model) {\n this.lastType = this.optionsFactory.getDefaultOption();\n return;\n }\n var isCombined = model.operator;\n var condition;\n if (isCombined) {\n var combinedModel = model;\n condition = combinedModel.condition1;\n }\n else {\n condition = model;\n }\n this.lastType = condition.type;\n };\n SimpleFloatingFilter.prototype.canWeEditAfterModelFromParentFilter = function (model) {\n if (!model) {\n // if no model, then we can edit as long as the lastType is something we can edit, as this\n // is the type we will provide to the parent filter if the user decides to use the floating filter.\n return this.isTypeEditable(this.lastType);\n }\n // never allow editing if the filter is combined (ie has two parts)\n var isCombined = model.operator;\n if (isCombined) {\n return false;\n }\n var simpleModel = model;\n return this.isTypeEditable(simpleModel.type);\n };\n SimpleFloatingFilter.prototype.init = function (params) {\n this.optionsFactory = new OptionsFactory();\n this.optionsFactory.init(params.filterParams, this.getDefaultFilterOptions());\n this.lastType = this.optionsFactory.getDefaultOption();\n // readOnly is a property of IProvidedFilterParams - we need to find a better (type-safe)\n // way to support reading this in the future.\n this.readOnly = !!params.filterParams.readOnly;\n // we are editable if:\n // 1) there is a type (user has configured filter wrong if not type)\n // AND\n // 2) the default type is not 'in range'\n var editable = this.isTypeEditable(this.lastType);\n this.setEditable(editable);\n };\n SimpleFloatingFilter.prototype.doesFilterHaveSingleInput = function (filterType) {\n var customFilterOption = this.optionsFactory.getCustomOption(filterType);\n var numberOfInputs = (customFilterOption || {}).numberOfInputs;\n return numberOfInputs == null || numberOfInputs == 1;\n };\n SimpleFloatingFilter.prototype.isTypeEditable = function (type) {\n var uneditableTypes = [\n SimpleFilter.IN_RANGE, SimpleFilter.EMPTY, SimpleFilter.BLANK, SimpleFilter.NOT_BLANK,\n ];\n return !!type &&\n !this.isReadOnly() &&\n this.doesFilterHaveSingleInput(type) &&\n uneditableTypes.indexOf(type) < 0;\n };\n return SimpleFloatingFilter;\n}(Component));\nexport { SimpleFloatingFilter };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { DateFilter } from './dateFilter';\nimport { Autowired } from '../../../context/context';\nimport { DateCompWrapper } from './dateCompWrapper';\nimport { RefSelector } from '../../../widgets/componentAnnotations';\nimport { SimpleFilter } from '../simpleFilter';\nimport { SimpleFloatingFilter } from '../../floating/provided/simpleFloatingFilter';\nimport { ProvidedFilter } from '../providedFilter';\nimport { setDisplayed } from '../../../utils/dom';\nimport { parseDateTimeFromString, serialiseDate } from '../../../utils/date';\nimport { debounce } from '../../../utils/function';\nvar DateFloatingFilter = /** @class */ (function (_super) {\n __extends(DateFloatingFilter, _super);\n function DateFloatingFilter() {\n return _super.call(this, /* html */ \"\\n
    \\n \\n
    \\n
    \") || this;\n }\n DateFloatingFilter.prototype.getDefaultFilterOptions = function () {\n return DateFilter.DEFAULT_FILTER_OPTIONS;\n };\n DateFloatingFilter.prototype.conditionToString = function (condition, options) {\n var type = condition.type;\n var numberOfInputs = (options || {}).numberOfInputs;\n var isRange = type == SimpleFilter.IN_RANGE || numberOfInputs === 2;\n var dateFrom = parseDateTimeFromString(condition.dateFrom);\n var dateTo = parseDateTimeFromString(condition.dateTo);\n if (isRange) {\n return serialiseDate(dateFrom, false) + \"-\" + serialiseDate(dateTo, false);\n }\n if (dateFrom != null) {\n return \"\" + serialiseDate(dateFrom, false);\n }\n // cater for when the type doesn't need a value\n return \"\" + type;\n };\n DateFloatingFilter.prototype.init = function (params) {\n _super.prototype.init.call(this, params);\n this.params = params;\n this.createDateComponent();\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n this.eReadOnlyText\n .setDisabled(true)\n .setInputAriaLabel(translate('ariaDateFilterInput', 'Date Filter Input'));\n };\n DateFloatingFilter.prototype.setEditable = function (editable) {\n setDisplayed(this.eDateWrapper, editable);\n setDisplayed(this.eReadOnlyText.getGui(), !editable);\n };\n DateFloatingFilter.prototype.onParentModelChanged = function (model, event) {\n // We don't want to update the floating filter if the floating filter caused the change,\n // because the UI is already in sync. if we didn't do this, the UI would behave strangely\n // as it would be updating as the user is typing\n if (this.isEventFromFloatingFilter(event)) {\n return;\n }\n _super.prototype.setLastTypeFromModel.call(this, model);\n var allowEditing = !this.isReadOnly() &&\n this.canWeEditAfterModelFromParentFilter(model);\n this.setEditable(allowEditing);\n if (allowEditing) {\n if (model) {\n var dateModel = model;\n this.dateComp.setDate(parseDateTimeFromString(dateModel.dateFrom));\n }\n else {\n this.dateComp.setDate(null);\n }\n this.eReadOnlyText.setValue('');\n }\n else {\n this.eReadOnlyText.setValue(this.getTextFromModel(model));\n this.dateComp.setDate(null);\n }\n };\n DateFloatingFilter.prototype.onDateChanged = function () {\n var _this = this;\n var filterValueDate = this.dateComp.getDate();\n var filterValueText = serialiseDate(filterValueDate);\n this.params.parentFilterInstance(function (filterInstance) {\n if (filterInstance) {\n var date = parseDateTimeFromString(filterValueText);\n filterInstance.onFloatingFilterChanged(_this.getLastType() || null, date);\n }\n });\n };\n DateFloatingFilter.prototype.createDateComponent = function () {\n var _this = this;\n var debounceMs = ProvidedFilter.getDebounceMs(this.params.filterParams, this.getDefaultDebounceMs());\n var dateComponentParams = {\n onDateChanged: debounce(this.onDateChanged.bind(this), debounceMs),\n filterParams: this.params.column.getColDef().filterParams\n };\n this.dateComp = new DateCompWrapper(this.getContext(), this.userComponentFactory, dateComponentParams, this.eDateWrapper);\n this.addDestroyFunc(function () { return _this.dateComp.destroy(); });\n };\n __decorate([\n Autowired('userComponentFactory')\n ], DateFloatingFilter.prototype, \"userComponentFactory\", void 0);\n __decorate([\n RefSelector('eReadOnlyText')\n ], DateFloatingFilter.prototype, \"eReadOnlyText\", void 0);\n __decorate([\n RefSelector('eDateWrapper')\n ], DateFloatingFilter.prototype, \"eDateWrapper\", void 0);\n return DateFloatingFilter;\n}(SimpleFloatingFilter));\nexport { DateFloatingFilter };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component } from '../../../widgets/component';\nimport { RefSelector } from '../../../widgets/componentAnnotations';\nimport { serialiseDate, parseDateTimeFromString } from '../../../utils/date';\nimport { isBrowserChrome, isBrowserFirefox } from '../../../utils/browser';\nvar DefaultDateComponent = /** @class */ (function (_super) {\n __extends(DefaultDateComponent, _super);\n function DefaultDateComponent() {\n return _super.call(this, /* html */ \"\\n
    \\n \\n
    \") || this;\n }\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to override destroy() just to make the method public.\n DefaultDateComponent.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n DefaultDateComponent.prototype.init = function (params) {\n var _this = this;\n var eDocument = this.gridOptionsWrapper.getDocument();\n var inputElement = this.eDateInput.getInputElement();\n if (this.shouldUseBrowserDatePicker(params)) {\n inputElement.type = 'date';\n }\n // ensures that the input element is focussed when a clear button is clicked\n this.addManagedListener(inputElement, 'mousedown', function () {\n if (_this.eDateInput.isDisabled()) {\n return;\n }\n inputElement.focus();\n });\n this.addManagedListener(inputElement, 'input', function (e) {\n if (e.target !== eDocument.activeElement) {\n return;\n }\n if (_this.eDateInput.isDisabled()) {\n return;\n }\n params.onDateChanged();\n });\n var _a = params.filterParams || {}, minValidYear = _a.minValidYear, maxValidYear = _a.maxValidYear;\n if (minValidYear) {\n inputElement.min = minValidYear + \"-01-01\";\n }\n if (maxValidYear) {\n inputElement.max = maxValidYear + \"-12-31\";\n }\n };\n DefaultDateComponent.prototype.getDate = function () {\n return parseDateTimeFromString(this.eDateInput.getValue());\n };\n DefaultDateComponent.prototype.setDate = function (date) {\n this.eDateInput.setValue(serialiseDate(date, false));\n };\n DefaultDateComponent.prototype.setInputPlaceholder = function (placeholder) {\n this.eDateInput.setInputPlaceholder(placeholder);\n };\n DefaultDateComponent.prototype.setDisabled = function (disabled) {\n this.eDateInput.setDisabled(disabled);\n };\n DefaultDateComponent.prototype.afterGuiAttached = function (params) {\n if (!params || !params.suppressFocus) {\n this.eDateInput.getInputElement().focus();\n }\n };\n DefaultDateComponent.prototype.shouldUseBrowserDatePicker = function (params) {\n if (params.filterParams && params.filterParams.browserDatePicker != null) {\n return params.filterParams.browserDatePicker;\n }\n return isBrowserChrome() || isBrowserFirefox();\n };\n __decorate([\n RefSelector('eDateInput')\n ], DefaultDateComponent.prototype, \"eDateInput\", void 0);\n return DefaultDateComponent;\n}(Component));\nexport { DefaultDateComponent };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { RefSelector } from '../../../widgets/componentAnnotations';\nimport { ConditionPosition } from '../simpleFilter';\nimport { ScalarFilter } from '../scalarFilter';\nimport { makeNull } from '../../../utils/generic';\nimport { isBrowserChrome, isBrowserEdge } from '../../../utils/browser';\nvar NumberFilter = /** @class */ (function (_super) {\n __extends(NumberFilter, _super);\n function NumberFilter() {\n return _super.call(this, 'numberFilter') || this;\n }\n NumberFilter.prototype.mapValuesFromModel = function (filterModel) {\n var _a = filterModel || {}, filter = _a.filter, filterTo = _a.filterTo, type = _a.type;\n return [\n filter == null ? null : filter,\n filterTo == null ? null : filterTo,\n ].slice(0, this.getNumberOfInputs(type));\n };\n NumberFilter.prototype.getDefaultDebounceMs = function () {\n return 500;\n };\n NumberFilter.prototype.comparator = function () {\n return function (left, right) {\n if (left === right) {\n return 0;\n }\n return left < right ? 1 : -1;\n };\n };\n NumberFilter.prototype.setParams = function (params) {\n this.numberFilterParams = params;\n var allowedCharPattern = this.getAllowedCharPattern();\n if (allowedCharPattern) {\n var config = { allowedCharPattern: allowedCharPattern };\n this.resetTemplate({\n 'eValue-index0-1': config,\n 'eValue-index1-1': config,\n 'eValue-index0-2': config,\n 'eValue-index1-2': config,\n });\n }\n _super.prototype.setParams.call(this, params);\n };\n NumberFilter.prototype.getDefaultFilterOptions = function () {\n return NumberFilter.DEFAULT_FILTER_OPTIONS;\n };\n NumberFilter.prototype.createValueTemplate = function (position) {\n var pos = position === ConditionPosition.One ? '1' : '2';\n var allowedCharPattern = this.getAllowedCharPattern();\n var agElementTag = allowedCharPattern ? 'ag-input-text-field' : 'ag-input-number-field';\n return /* html */ \"\\n
    \\n <\" + agElementTag + \" class=\\\"ag-filter-from ag-filter-filter\\\" ref=\\\"eValue-index0-\" + pos + \"\\\">\\n <\" + agElementTag + \" class=\\\"ag-filter-to ag-filter-filter\\\" ref=\\\"eValue-index1-\" + pos + \"\\\">\\n
    \";\n };\n NumberFilter.prototype.getValues = function (position) {\n var _this = this;\n var result = [];\n this.forEachInput(function (element, index, elPosition, numberOfInputs) {\n if (position === elPosition && index < numberOfInputs) {\n result.push(_this.stringToFloat(element.getValue()));\n }\n });\n return result;\n };\n NumberFilter.prototype.areSimpleModelsEqual = function (aSimple, bSimple) {\n return aSimple.filter === bSimple.filter\n && aSimple.filterTo === bSimple.filterTo\n && aSimple.type === bSimple.type;\n };\n NumberFilter.prototype.getFilterType = function () {\n return 'number';\n };\n NumberFilter.prototype.stringToFloat = function (value) {\n if (typeof value === 'number') {\n return value;\n }\n var filterText = makeNull(value);\n if (filterText != null && filterText.trim() === '') {\n filterText = null;\n }\n if (this.numberFilterParams.numberParser) {\n return this.numberFilterParams.numberParser(filterText);\n }\n return filterText == null || filterText.trim() === '-' ? null : parseFloat(filterText);\n };\n NumberFilter.prototype.createCondition = function (position) {\n var type = this.getConditionTypes()[position];\n var model = {\n filterType: this.getFilterType(),\n type: type\n };\n var values = this.getValues(position);\n if (values.length > 0) {\n model.filter = values[0];\n }\n if (values.length > 1) {\n model.filterTo = values[1];\n }\n return model;\n };\n NumberFilter.prototype.getInputs = function () {\n return [\n [this.eValueFrom1, this.eValueTo1],\n [this.eValueFrom2, this.eValueTo2],\n ];\n };\n NumberFilter.prototype.getAllowedCharPattern = function () {\n var allowedCharPattern = (this.numberFilterParams || {}).allowedCharPattern;\n if (allowedCharPattern) {\n return allowedCharPattern;\n }\n if (!isBrowserChrome() && !isBrowserEdge()) {\n // only Chrome and Edge support the HTML5 number field, so for other browsers we provide an equivalent\n // constraint instead\n return '\\\\d\\\\-\\\\.';\n }\n return null;\n };\n NumberFilter.DEFAULT_FILTER_OPTIONS = [\n ScalarFilter.EQUALS,\n ScalarFilter.NOT_EQUAL,\n ScalarFilter.LESS_THAN,\n ScalarFilter.LESS_THAN_OR_EQUAL,\n ScalarFilter.GREATER_THAN,\n ScalarFilter.GREATER_THAN_OR_EQUAL,\n ScalarFilter.IN_RANGE,\n ScalarFilter.BLANK,\n ScalarFilter.NOT_BLANK,\n ];\n __decorate([\n RefSelector('eValue-index0-1')\n ], NumberFilter.prototype, \"eValueFrom1\", void 0);\n __decorate([\n RefSelector('eValue-index1-1')\n ], NumberFilter.prototype, \"eValueTo1\", void 0);\n __decorate([\n RefSelector('eValue-index0-2')\n ], NumberFilter.prototype, \"eValueFrom2\", void 0);\n __decorate([\n RefSelector('eValue-index1-2')\n ], NumberFilter.prototype, \"eValueTo2\", void 0);\n return NumberFilter;\n}(ScalarFilter));\nexport { NumberFilter };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __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};\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { RefSelector } from '../../../widgets/componentAnnotations';\nimport { SimpleFilter, ConditionPosition } from '../simpleFilter';\nimport { makeNull } from '../../../utils/generic';\nimport { _ } from '../../../utils';\nvar TextFilter = /** @class */ (function (_super) {\n __extends(TextFilter, _super);\n function TextFilter() {\n return _super.call(this, 'textFilter') || this;\n }\n TextFilter.trimInput = function (value) {\n var trimmedInput = value && value.trim();\n // trim the input, unless it is all whitespace (this is consistent with Excel behaviour)\n return trimmedInput === '' ? value : trimmedInput;\n };\n TextFilter.prototype.getDefaultDebounceMs = function () {\n return 500;\n };\n TextFilter.prototype.setParams = function (params) {\n _super.prototype.setParams.call(this, params);\n this.textFilterParams = params;\n this.matcher = this.getTextMatcher();\n this.formatter = this.textFilterParams.textFormatter ||\n (this.textFilterParams.caseSensitive ? TextFilter.DEFAULT_FORMATTER : TextFilter.DEFAULT_LOWERCASE_FORMATTER);\n };\n TextFilter.prototype.getTextMatcher = function () {\n var legacyComparator = this.textFilterParams.textCustomComparator;\n if (legacyComparator) {\n _.doOnce(function () { return console.warn('AG Grid - textCustomComparator is deprecated, use textMatcher instead.'); }, 'textCustomComparator.deprecated');\n return function (_a) {\n var filterOption = _a.filterOption, value = _a.value, filterText = _a.filterText;\n return legacyComparator(filterOption, value, filterText);\n };\n }\n return this.textFilterParams.textMatcher || TextFilter.DEFAULT_MATCHER;\n };\n TextFilter.prototype.createCondition = function (position) {\n var type = this.getConditionTypes()[position];\n var model = {\n filterType: this.getFilterType(),\n type: type,\n };\n var values = this.getValues(position);\n if (values.length > 0) {\n model.filter = values[0];\n }\n if (values.length > 1) {\n model.filterTo = values[1];\n }\n return model;\n };\n TextFilter.prototype.getFilterType = function () {\n return 'text';\n };\n TextFilter.prototype.areSimpleModelsEqual = function (aSimple, bSimple) {\n return aSimple.filter === bSimple.filter &&\n aSimple.filterTo === bSimple.filterTo &&\n aSimple.type === bSimple.type;\n };\n TextFilter.prototype.getInputs = function () {\n return [\n [this.eValueFrom1, this.eValueTo1],\n [this.eValueFrom2, this.eValueTo2],\n ];\n };\n TextFilter.prototype.getValues = function (position) {\n var _this = this;\n var result = [];\n this.forEachInput(function (element, index, elPosition, numberOfInputs) {\n if (position === elPosition && index < numberOfInputs) {\n var value = makeNull(element.getValue());\n var cleanValue = (_this.textFilterParams.trimInput ? TextFilter.trimInput(value) : value) || null;\n result.push(cleanValue);\n element.setValue(cleanValue, true); // ensure clean value is visible\n }\n });\n return result;\n };\n TextFilter.prototype.getDefaultFilterOptions = function () {\n return TextFilter.DEFAULT_FILTER_OPTIONS;\n };\n TextFilter.prototype.createValueTemplate = function (position) {\n var pos = position === ConditionPosition.One ? '1' : '2';\n return /* html */ \"\\n
    \\n \\n \\n
    \";\n };\n TextFilter.prototype.mapValuesFromModel = function (filterModel) {\n var _a = filterModel || {}, filter = _a.filter, filterTo = _a.filterTo, type = _a.type;\n return [\n filter || null,\n filterTo || null,\n ].slice(0, this.getNumberOfInputs(type));\n };\n TextFilter.prototype.evaluateNullValue = function (filterType) {\n var filterTypesAllowNulls = [\n SimpleFilter.NOT_EQUAL, SimpleFilter.NOT_CONTAINS, SimpleFilter.BLANK,\n ];\n return filterType ? filterTypesAllowNulls.indexOf(filterType) >= 0 : false;\n };\n TextFilter.prototype.evaluateNonNullValue = function (values, cellValue, filterModel, params) {\n var _this = this;\n var formattedValues = values.map(function (v) { return _this.formatter(v); }) || [];\n var cellValueFormatted = this.formatter(cellValue);\n var _a = this.textFilterParams, api = _a.api, colDef = _a.colDef, column = _a.column, columnApi = _a.columnApi, context = _a.context, textFormatter = _a.textFormatter;\n if (filterModel.type === SimpleFilter.BLANK) {\n return this.isBlank(cellValue);\n }\n else if (filterModel.type === SimpleFilter.NOT_BLANK) {\n return !this.isBlank(cellValue);\n }\n var matcherParams = {\n api: api,\n colDef: colDef,\n column: column,\n columnApi: columnApi,\n context: context,\n node: params.node,\n data: params.data,\n filterOption: filterModel.type,\n value: cellValueFormatted,\n textFormatter: textFormatter,\n };\n return formattedValues.some(function (v) { return _this.matcher(__assign(__assign({}, matcherParams), { filterText: v })); });\n };\n TextFilter.DEFAULT_FILTER_OPTIONS = [\n SimpleFilter.CONTAINS,\n SimpleFilter.NOT_CONTAINS,\n SimpleFilter.EQUALS,\n SimpleFilter.NOT_EQUAL,\n SimpleFilter.STARTS_WITH,\n SimpleFilter.ENDS_WITH,\n SimpleFilter.BLANK,\n SimpleFilter.NOT_BLANK,\n ];\n TextFilter.DEFAULT_FORMATTER = function (from) { return from; };\n TextFilter.DEFAULT_LOWERCASE_FORMATTER = function (from) { return from == null ? null : from.toString().toLowerCase(); };\n TextFilter.DEFAULT_MATCHER = function (_a) {\n var filterOption = _a.filterOption, value = _a.value, filterText = _a.filterText;\n if (filterText == null) {\n return false;\n }\n switch (filterOption) {\n case TextFilter.CONTAINS:\n return value.indexOf(filterText) >= 0;\n case TextFilter.NOT_CONTAINS:\n return value.indexOf(filterText) < 0;\n case TextFilter.EQUALS:\n return value === filterText;\n case TextFilter.NOT_EQUAL:\n return value != filterText;\n case TextFilter.STARTS_WITH:\n return value.indexOf(filterText) === 0;\n case TextFilter.ENDS_WITH:\n var index = value.lastIndexOf(filterText);\n return index >= 0 && index === (value.length - filterText.length);\n default:\n return false;\n }\n };\n __decorate([\n RefSelector('eValue-index0-1')\n ], TextFilter.prototype, \"eValueFrom1\", void 0);\n __decorate([\n RefSelector('eValue-index1-1')\n ], TextFilter.prototype, \"eValueTo1\", void 0);\n __decorate([\n RefSelector('eValue-index0-2')\n ], TextFilter.prototype, \"eValueFrom2\", void 0);\n __decorate([\n RefSelector('eValue-index1-2')\n ], TextFilter.prototype, \"eValueTo2\", void 0);\n return TextFilter;\n}(SimpleFilter));\nexport { TextFilter };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { RefSelector } from '../../../widgets/componentAnnotations';\nimport { debounce } from '../../../utils/function';\nimport { ProvidedFilter } from '../../provided/providedFilter';\nimport { PostConstruct, Autowired } from '../../../context/context';\nimport { SimpleFloatingFilter } from './simpleFloatingFilter';\nimport { SimpleFilter } from '../../provided/simpleFilter';\nimport { KeyCode } from '../../../constants/keyCode';\nimport { TextFilter } from '../../provided/text/textFilter';\nvar TextInputFloatingFilter = /** @class */ (function (_super) {\n __extends(TextInputFloatingFilter, _super);\n function TextInputFloatingFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TextInputFloatingFilter.prototype.postConstruct = function () {\n this.resetTemplate();\n };\n TextInputFloatingFilter.prototype.resetTemplate = function (paramsMap) {\n this.setTemplate(/* html */ \"\\n
    \\n \\n
    \\n \", paramsMap);\n };\n TextInputFloatingFilter.prototype.getDefaultDebounceMs = function () {\n return 500;\n };\n TextInputFloatingFilter.prototype.onParentModelChanged = function (model, event) {\n if (this.isEventFromFloatingFilter(event)) {\n // if the floating filter triggered the change, it is already in sync\n return;\n }\n this.setLastTypeFromModel(model);\n this.eFloatingFilterInput.setValue(this.getTextFromModel(model));\n this.setEditable(this.canWeEditAfterModelFromParentFilter(model));\n };\n TextInputFloatingFilter.prototype.init = function (params) {\n _super.prototype.init.call(this, params);\n this.params = params;\n this.applyActive = ProvidedFilter.isUseApplyButton(this.params.filterParams);\n var allowedCharPattern = this.params.filterParams.allowedCharPattern;\n if (allowedCharPattern != null) {\n this.resetTemplate({ eFloatingFilterInput: { allowedCharPattern: allowedCharPattern } });\n }\n if (!this.isReadOnly()) {\n var debounceMs = ProvidedFilter.getDebounceMs(this.params.filterParams, this.getDefaultDebounceMs());\n var toDebounce = debounce(this.syncUpWithParentFilter.bind(this), debounceMs);\n var filterGui = this.eFloatingFilterInput.getGui();\n this.addManagedListener(filterGui, 'input', toDebounce);\n this.addManagedListener(filterGui, 'keypress', toDebounce);\n this.addManagedListener(filterGui, 'keydown', toDebounce);\n }\n var columnDef = params.column.getDefinition();\n if (this.isReadOnly() || (columnDef.filterParams &&\n columnDef.filterParams.filterOptions &&\n columnDef.filterParams.filterOptions.length === 1 &&\n columnDef.filterParams.filterOptions[0] === 'inRange')) {\n this.eFloatingFilterInput.setDisabled(true);\n }\n var displayName = this.columnModel.getDisplayNameForColumn(params.column, 'header', true);\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n this.eFloatingFilterInput.setInputAriaLabel(displayName + \" \" + translate('ariaFilterInput', 'Filter Input'));\n };\n TextInputFloatingFilter.prototype.syncUpWithParentFilter = function (e) {\n var _this = this;\n var enterKeyPressed = e.key === KeyCode.ENTER;\n if (this.applyActive && !enterKeyPressed) {\n return;\n }\n var value = this.eFloatingFilterInput.getValue();\n if (this.params.filterParams.trimInput) {\n value = TextFilter.trimInput(value);\n this.eFloatingFilterInput.setValue(value, true); // ensure visible value is trimmed\n }\n this.params.parentFilterInstance(function (filterInstance) {\n if (filterInstance) {\n filterInstance.onFloatingFilterChanged(_this.getLastType() || null, value || null);\n }\n });\n };\n TextInputFloatingFilter.prototype.conditionToString = function (condition, options) {\n var numberOfInputs = (options || {}).numberOfInputs;\n var isRange = condition.type == SimpleFilter.IN_RANGE || numberOfInputs === 2;\n if (isRange) {\n return condition.filter + \"-\" + condition.filterTo;\n }\n // cater for when the type doesn't need a value\n if (condition.filter != null) {\n return \"\" + condition.filter;\n }\n return \"\" + condition.type;\n };\n TextInputFloatingFilter.prototype.setEditable = function (editable) {\n this.eFloatingFilterInput.setDisabled(!editable);\n };\n __decorate([\n Autowired('columnModel')\n ], TextInputFloatingFilter.prototype, \"columnModel\", void 0);\n __decorate([\n RefSelector('eFloatingFilterInput')\n ], TextInputFloatingFilter.prototype, \"eFloatingFilterInput\", void 0);\n __decorate([\n PostConstruct\n ], TextInputFloatingFilter.prototype, \"postConstruct\", null);\n return TextInputFloatingFilter;\n}(SimpleFloatingFilter));\nexport { TextInputFloatingFilter };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { NumberFilter } from './numberFilter';\nimport { TextInputFloatingFilter } from '../../floating/provided/textInputFloatingFilter';\nvar NumberFloatingFilter = /** @class */ (function (_super) {\n __extends(NumberFloatingFilter, _super);\n function NumberFloatingFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n NumberFloatingFilter.prototype.getDefaultFilterOptions = function () {\n return NumberFilter.DEFAULT_FILTER_OPTIONS;\n };\n return NumberFloatingFilter;\n}(TextInputFloatingFilter));\nexport { NumberFloatingFilter };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { TextFilter } from './textFilter';\nimport { TextInputFloatingFilter } from '../../floating/provided/textInputFloatingFilter';\nvar TextFloatingFilter = /** @class */ (function (_super) {\n __extends(TextFloatingFilter, _super);\n function TextFloatingFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TextFloatingFilter.prototype.getDefaultFilterOptions = function () {\n return TextFilter.DEFAULT_FILTER_OPTIONS;\n };\n return TextFloatingFilter;\n}(TextInputFloatingFilter));\nexport { TextFloatingFilter };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nimport { EventService } from \"../eventService\";\nimport { areEventsNear } from \"../utils/mouse\";\nvar TouchListener = /** @class */ (function () {\n function TouchListener(eElement, preventMouseClick) {\n var _this = this;\n if (preventMouseClick === void 0) { preventMouseClick = false; }\n this.destroyFuncs = [];\n this.touching = false;\n this.eventService = new EventService();\n this.eElement = eElement;\n this.preventMouseClick = preventMouseClick;\n var startListener = this.onTouchStart.bind(this);\n var moveListener = this.onTouchMove.bind(this);\n var endListener = this.onTouchEnd.bind(this);\n this.eElement.addEventListener(\"touchstart\", startListener, { passive: true });\n this.eElement.addEventListener(\"touchmove\", moveListener, { passive: true });\n // we set passive=false, as we want to prevent default on this event\n this.eElement.addEventListener(\"touchend\", endListener, { passive: false });\n this.destroyFuncs.push(function () {\n _this.eElement.removeEventListener(\"touchstart\", startListener, { passive: true });\n _this.eElement.removeEventListener(\"touchmove\", moveListener, { passive: true });\n _this.eElement.removeEventListener(\"touchend\", endListener, { passive: false });\n });\n }\n TouchListener.prototype.getActiveTouch = function (touchList) {\n for (var i = 0; i < touchList.length; i++) {\n var matches = touchList[i].identifier === this.touchStart.identifier;\n if (matches) {\n return touchList[i];\n }\n }\n return null;\n };\n TouchListener.prototype.addEventListener = function (eventType, listener) {\n this.eventService.addEventListener(eventType, listener);\n };\n TouchListener.prototype.removeEventListener = function (eventType, listener) {\n this.eventService.removeEventListener(eventType, listener);\n };\n TouchListener.prototype.onTouchStart = function (touchEvent) {\n var _this = this;\n // only looking at one touch point at any time\n if (this.touching) {\n return;\n }\n this.touchStart = touchEvent.touches[0];\n this.touching = true;\n this.moved = false;\n var touchStartCopy = this.touchStart;\n window.setTimeout(function () {\n var touchesMatch = _this.touchStart === touchStartCopy;\n if (_this.touching && touchesMatch && !_this.moved) {\n _this.moved = true;\n var event_1 = {\n type: TouchListener.EVENT_LONG_TAP,\n touchStart: _this.touchStart,\n touchEvent: touchEvent\n };\n _this.eventService.dispatchEvent(event_1);\n }\n }, 500);\n };\n TouchListener.prototype.onTouchMove = function (touchEvent) {\n if (!this.touching) {\n return;\n }\n var touch = this.getActiveTouch(touchEvent.touches);\n if (!touch) {\n return;\n }\n var eventIsFarAway = !areEventsNear(touch, this.touchStart, 4);\n if (eventIsFarAway) {\n this.moved = true;\n }\n };\n TouchListener.prototype.onTouchEnd = function (touchEvent) {\n if (!this.touching) {\n return;\n }\n if (!this.moved) {\n var event_2 = {\n type: TouchListener.EVENT_TAP,\n touchStart: this.touchStart\n };\n this.eventService.dispatchEvent(event_2);\n this.checkForDoubleTap();\n }\n // stops the tap from also been processed as a mouse click\n if (this.preventMouseClick) {\n touchEvent.preventDefault();\n }\n this.touching = false;\n };\n TouchListener.prototype.checkForDoubleTap = function () {\n var now = new Date().getTime();\n if (this.lastTapTime && this.lastTapTime > 0) {\n // if previous tap, see if duration is short enough to be considered double tap\n var interval = now - this.lastTapTime;\n if (interval > TouchListener.DOUBLE_TAP_MILLIS) {\n // dispatch double tap event\n var event_3 = {\n type: TouchListener.EVENT_DOUBLE_TAP,\n touchStart: this.touchStart\n };\n this.eventService.dispatchEvent(event_3);\n // this stops a tripple tap ending up as two double taps\n this.lastTapTime = null;\n }\n else {\n this.lastTapTime = now;\n }\n }\n else {\n this.lastTapTime = now;\n }\n };\n TouchListener.prototype.destroy = function () {\n this.destroyFuncs.forEach(function (func) { return func(); });\n };\n TouchListener.EVENT_TAP = \"tap\";\n TouchListener.EVENT_DOUBLE_TAP = \"doubleTap\";\n TouchListener.EVENT_LONG_TAP = \"longTap\";\n TouchListener.DOUBLE_TAP_MILLIS = 500;\n return TouchListener;\n}());\nexport { TouchListener };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired } from \"../../../context/context\";\nimport { Column } from \"../../../entities/column\";\nimport { Events } from \"../../../events\";\nimport { firstExistingValue } from \"../../../utils/array\";\nimport { isIOSUserAgent } from \"../../../utils/browser\";\nimport { clearElement, removeFromParent, setDisplayed } from \"../../../utils/dom\";\nimport { exists } from \"../../../utils/generic\";\nimport { createIconNoSpan } from \"../../../utils/icon\";\nimport { escapeString } from \"../../../utils/string\";\nimport { Component } from \"../../../widgets/component\";\nimport { RefSelector } from \"../../../widgets/componentAnnotations\";\nimport { TouchListener } from \"../../../widgets/touchListener\";\nvar HeaderComp = /** @class */ (function (_super) {\n __extends(HeaderComp, _super);\n function HeaderComp() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.lastMovingChanged = 0;\n return _this;\n }\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to override destroy() just to make the method public.\n HeaderComp.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n HeaderComp.prototype.refresh = function (params) {\n this.params = params;\n // if template changed, then recreate the whole comp, the code required to manage\n // a changing template is to difficult for what it's worth.\n if (this.workOutTemplate() != this.currentTemplate) {\n return false;\n }\n if (this.workOutShowMenu() != this.currentShowMenu) {\n return false;\n }\n if (this.workOutSort() != this.currentSort) {\n return false;\n }\n this.setDisplayName(params);\n return true;\n };\n HeaderComp.prototype.workOutTemplate = function () {\n var template = firstExistingValue(this.params.template, HeaderComp.TEMPLATE);\n // take account of any newlines & whitespace before/after the actual template\n template = template && template.trim ? template.trim() : template;\n return template;\n };\n HeaderComp.prototype.init = function (params) {\n this.params = params;\n this.currentTemplate = this.workOutTemplate();\n this.setTemplate(this.currentTemplate);\n this.setupTap();\n this.setupIcons(params.column);\n this.setMenu();\n this.setupSort();\n this.setupFilterIcon();\n this.setDisplayName(params);\n };\n HeaderComp.prototype.setDisplayName = function (params) {\n if (this.currentDisplayName != params.displayName) {\n this.currentDisplayName = params.displayName;\n var displayNameSanitised = escapeString(this.currentDisplayName);\n if (this.eText) {\n this.eText.innerHTML = displayNameSanitised;\n }\n }\n };\n HeaderComp.prototype.setupIcons = function (column) {\n this.addInIcon('sortAscending', this.eSortAsc, column);\n this.addInIcon('sortDescending', this.eSortDesc, column);\n this.addInIcon('sortUnSort', this.eSortNone, column);\n this.addInIcon('menu', this.eMenu, column);\n this.addInIcon('filter', this.eFilter, column);\n };\n HeaderComp.prototype.addInIcon = function (iconName, eParent, column) {\n if (eParent == null) {\n return;\n }\n var eIcon = createIconNoSpan(iconName, this.gridOptionsWrapper, column);\n if (eIcon) {\n eParent.appendChild(eIcon);\n }\n };\n HeaderComp.prototype.setupTap = function () {\n var _this = this;\n var options = this.gridOptionsWrapper;\n if (options.isSuppressTouch()) {\n return;\n }\n var touchListener = new TouchListener(this.getGui(), true);\n var suppressMenuHide = options.isSuppressMenuHide();\n var tapMenuButton = suppressMenuHide && exists(this.eMenu);\n var menuTouchListener = tapMenuButton ? new TouchListener(this.eMenu, true) : touchListener;\n if (this.params.enableMenu) {\n var eventType = tapMenuButton ? 'EVENT_TAP' : 'EVENT_LONG_TAP';\n var showMenuFn = function (event) {\n options.getApi().showColumnMenuAfterMouseClick(_this.params.column, event.touchStart);\n };\n this.addManagedListener(menuTouchListener, TouchListener[eventType], showMenuFn);\n }\n if (this.params.enableSorting) {\n var tapListener = function (event) {\n var target = event.touchStart.target;\n // When suppressMenuHide is true, a tap on the menu icon will bubble up\n // to the header container, in that case we should not sort\n if (suppressMenuHide && _this.eMenu.contains(target)) {\n return;\n }\n _this.sortController.progressSort(_this.params.column, false, \"uiColumnSorted\");\n };\n this.addManagedListener(touchListener, TouchListener.EVENT_TAP, tapListener);\n }\n // if tapMenuButton is true `touchListener` and `menuTouchListener` are different\n // so we need to make sure to destroy both listeners here\n this.addDestroyFunc(function () { return touchListener.destroy(); });\n if (tapMenuButton) {\n this.addDestroyFunc(function () { return menuTouchListener.destroy(); });\n }\n };\n HeaderComp.prototype.workOutShowMenu = function () {\n // we don't show the menu if on an iPad/iPhone, as the user cannot have a pointer device/\n // However if suppressMenuHide is set to true the menu will be displayed alwasys, so it's ok\n // to show it on iPad in this case (as hover isn't needed). If suppressMenuHide\n // is false (default) user will need to use longpress to display the menu.\n var menuHides = !this.gridOptionsWrapper.isSuppressMenuHide();\n var onIpadAndMenuHides = isIOSUserAgent() && menuHides;\n var showMenu = this.params.enableMenu && !onIpadAndMenuHides;\n return showMenu;\n };\n HeaderComp.prototype.setMenu = function () {\n var _this = this;\n // if no menu provided in template, do nothing\n if (!this.eMenu) {\n return;\n }\n this.currentShowMenu = this.workOutShowMenu();\n if (!this.currentShowMenu) {\n removeFromParent(this.eMenu);\n return;\n }\n var suppressMenuHide = this.gridOptionsWrapper.isSuppressMenuHide();\n this.addManagedListener(this.eMenu, 'click', function () { return _this.showMenu(_this.eMenu); });\n this.eMenu.classList.toggle('ag-header-menu-always-show', suppressMenuHide);\n };\n HeaderComp.prototype.showMenu = function (eventSource) {\n if (!eventSource) {\n eventSource = this.eMenu;\n }\n this.menuFactory.showMenuAfterButtonClick(this.params.column, eventSource, 'columnMenu');\n };\n HeaderComp.prototype.removeSortIcons = function () {\n removeFromParent(this.eSortAsc);\n removeFromParent(this.eSortDesc);\n removeFromParent(this.eSortNone);\n removeFromParent(this.eSortOrder);\n };\n HeaderComp.prototype.workOutSort = function () {\n return this.params.enableSorting;\n };\n HeaderComp.prototype.setupSort = function () {\n var _this = this;\n this.currentSort = this.params.enableSorting;\n if (!this.currentSort) {\n this.removeSortIcons();\n return;\n }\n var sortUsingCtrl = this.gridOptionsWrapper.isMultiSortKeyCtrl();\n // keep track of last time the moving changed flag was set\n this.addManagedListener(this.params.column, Column.EVENT_MOVING_CHANGED, function () {\n _this.lastMovingChanged = new Date().getTime();\n });\n // add the event on the header, so when clicked, we do sorting\n if (this.eLabel) {\n this.addManagedListener(this.eLabel, 'click', function (event) {\n // sometimes when moving a column via dragging, this was also firing a clicked event.\n // here is issue raised by user: https://ag-grid.zendesk.com/agent/tickets/1076\n // this check stops sort if a) column is moving or b) column moved less than 200ms ago (so caters for race condition)\n var moving = _this.params.column.isMoving();\n var nowTime = new Date().getTime();\n // typically there is <2ms if moving flag was set recently, as it would be done in same VM turn\n var movedRecently = (nowTime - _this.lastMovingChanged) < 50;\n var columnMoving = moving || movedRecently;\n if (!columnMoving) {\n var multiSort = sortUsingCtrl ? (event.ctrlKey || event.metaKey) : event.shiftKey;\n _this.params.progressSort(multiSort);\n }\n });\n }\n this.addManagedListener(this.params.column, Column.EVENT_SORT_CHANGED, this.onSortChanged.bind(this));\n this.onSortChanged();\n this.addManagedListener(this.eventService, Events.EVENT_SORT_CHANGED, this.setMultiSortOrder.bind(this));\n this.setMultiSortOrder();\n };\n HeaderComp.prototype.onSortChanged = function () {\n this.addOrRemoveCssClass('ag-header-cell-sorted-asc', this.params.column.isSortAscending());\n this.addOrRemoveCssClass('ag-header-cell-sorted-desc', this.params.column.isSortDescending());\n this.addOrRemoveCssClass('ag-header-cell-sorted-none', this.params.column.isSortNone());\n if (this.eSortAsc) {\n this.eSortAsc.classList.toggle('ag-hidden', !this.params.column.isSortAscending());\n }\n if (this.eSortDesc) {\n this.eSortDesc.classList.toggle('ag-hidden', !this.params.column.isSortDescending());\n }\n if (this.eSortNone) {\n var alwaysHideNoSort = !this.params.column.getColDef().unSortIcon && !this.gridOptionsWrapper.isUnSortIcon();\n this.eSortNone.classList.toggle('ag-hidden', alwaysHideNoSort || !this.params.column.isSortNone());\n }\n };\n // we listen here for global sort events, NOT column sort events, as we want to do this\n // when sorting has been set on all column (if we listened just for our col (where we\n // set the asc / desc icons) then it's possible other cols are yet to get their sorting state.\n HeaderComp.prototype.setMultiSortOrder = function () {\n if (!this.eSortOrder) {\n return;\n }\n var col = this.params.column;\n var allColumnsWithSorting = this.sortController.getColumnsWithSortingOrdered();\n var indexThisCol = allColumnsWithSorting.indexOf(col);\n var moreThanOneColSorting = allColumnsWithSorting.length > 1;\n var showIndex = col.isSorting() && moreThanOneColSorting;\n setDisplayed(this.eSortOrder, showIndex);\n if (indexThisCol >= 0) {\n this.eSortOrder.innerHTML = (indexThisCol + 1).toString();\n }\n else {\n clearElement(this.eSortOrder);\n }\n };\n HeaderComp.prototype.setupFilterIcon = function () {\n if (!this.eFilter) {\n return;\n }\n this.addManagedListener(this.params.column, Column.EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));\n this.onFilterChanged();\n };\n HeaderComp.prototype.onFilterChanged = function () {\n var filterPresent = this.params.column.isFilterActive();\n this.eFilter.classList.toggle('ag-hidden', !filterPresent);\n };\n HeaderComp.TEMPLATE = \"
    \\n \\n
    \\n \\n \\n \\n \\n \\n \\n
    \\n
    \";\n __decorate([\n Autowired('sortController')\n ], HeaderComp.prototype, \"sortController\", void 0);\n __decorate([\n Autowired('menuFactory')\n ], HeaderComp.prototype, \"menuFactory\", void 0);\n __decorate([\n RefSelector('eFilter')\n ], HeaderComp.prototype, \"eFilter\", void 0);\n __decorate([\n RefSelector('eSortAsc')\n ], HeaderComp.prototype, \"eSortAsc\", void 0);\n __decorate([\n RefSelector('eSortDesc')\n ], HeaderComp.prototype, \"eSortDesc\", void 0);\n __decorate([\n RefSelector('eSortNone')\n ], HeaderComp.prototype, \"eSortNone\", void 0);\n __decorate([\n RefSelector('eSortOrder')\n ], HeaderComp.prototype, \"eSortOrder\", void 0);\n __decorate([\n RefSelector('eMenu')\n ], HeaderComp.prototype, \"eMenu\", void 0);\n __decorate([\n RefSelector('eLabel')\n ], HeaderComp.prototype, \"eLabel\", void 0);\n __decorate([\n RefSelector('eText')\n ], HeaderComp.prototype, \"eText\", void 0);\n return HeaderComp;\n}(Component));\nexport { HeaderComp };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component } from \"../../../widgets/component\";\nimport { Autowired } from \"../../../context/context\";\nimport { TouchListener } from \"../../../widgets/touchListener\";\nimport { RefSelector } from \"../../../widgets/componentAnnotations\";\nimport { ProvidedColumnGroup } from \"../../../entities/providedColumnGroup\";\nimport { escapeString } from \"../../../utils/string\";\nimport { isStopPropagationForAgGrid, stopPropagationForAgGrid } from \"../../../utils/event\";\nimport { setDisplayed } from \"../../../utils/dom\";\nimport { createIconNoSpan } from \"../../../utils/icon\";\nimport { exists } from \"../../../utils/generic\";\nimport { doOnce } from \"../../../utils/function\";\nvar HeaderGroupComp = /** @class */ (function (_super) {\n __extends(HeaderGroupComp, _super);\n function HeaderGroupComp() {\n return _super.call(this, HeaderGroupComp.TEMPLATE) || this;\n }\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to override destroy() just to make the method public.\n HeaderGroupComp.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n HeaderGroupComp.prototype.init = function (params) {\n this.params = params;\n this.checkWarnings();\n this.setupLabel();\n this.addGroupExpandIcon();\n this.setupExpandIcons();\n };\n HeaderGroupComp.prototype.checkWarnings = function () {\n var paramsAny = this.params;\n if (paramsAny.template) {\n var message_1 = \"AG Grid: A template was provided for Header Group Comp - templates are only supported for Header Comps (not groups)\";\n doOnce(function () { return console.warn(message_1); }, 'HeaderGroupComp.templateNotSupported');\n }\n };\n HeaderGroupComp.prototype.setupExpandIcons = function () {\n var _this = this;\n this.addInIcon(\"columnGroupOpened\", \"agOpened\");\n this.addInIcon(\"columnGroupClosed\", \"agClosed\");\n var expandAction = function (event) {\n if (isStopPropagationForAgGrid(event)) {\n return;\n }\n var newExpandedValue = !_this.params.columnGroup.isExpanded();\n _this.columnModel.setColumnGroupOpened(_this.params.columnGroup.getProvidedColumnGroup(), newExpandedValue, \"uiColumnExpanded\");\n };\n this.addTouchAndClickListeners(this.eCloseIcon, expandAction);\n this.addTouchAndClickListeners(this.eOpenIcon, expandAction);\n var stopPropagationAction = function (event) {\n stopPropagationForAgGrid(event);\n };\n // adding stopPropagation to the double click for the icons prevents double click action happening\n // when the icons are clicked. if the icons are double clicked, then the groups should open and\n // then close again straight away. if we also listened to double click, then the group would open,\n // close, then open, which is not what we want. double click should only action if the user double\n // clicks outside of the icons.\n this.addManagedListener(this.eCloseIcon, \"dblclick\", stopPropagationAction);\n this.addManagedListener(this.eOpenIcon, \"dblclick\", stopPropagationAction);\n this.addManagedListener(this.getGui(), \"dblclick\", expandAction);\n this.updateIconVisibility();\n var providedColumnGroup = this.params.columnGroup.getProvidedColumnGroup();\n this.addManagedListener(providedColumnGroup, ProvidedColumnGroup.EVENT_EXPANDED_CHANGED, this.updateIconVisibility.bind(this));\n this.addManagedListener(providedColumnGroup, ProvidedColumnGroup.EVENT_EXPANDABLE_CHANGED, this.updateIconVisibility.bind(this));\n };\n HeaderGroupComp.prototype.addTouchAndClickListeners = function (eElement, action) {\n var touchListener = new TouchListener(eElement, true);\n this.addManagedListener(touchListener, TouchListener.EVENT_TAP, action);\n this.addDestroyFunc(function () { return touchListener.destroy(); });\n this.addManagedListener(eElement, \"click\", action);\n };\n HeaderGroupComp.prototype.updateIconVisibility = function () {\n var columnGroup = this.params.columnGroup;\n if (columnGroup.isExpandable()) {\n var expanded = this.params.columnGroup.isExpanded();\n setDisplayed(this.eOpenIcon, expanded);\n setDisplayed(this.eCloseIcon, !expanded);\n }\n else {\n setDisplayed(this.eOpenIcon, false);\n setDisplayed(this.eCloseIcon, false);\n }\n };\n HeaderGroupComp.prototype.addInIcon = function (iconName, refName) {\n var eIcon = createIconNoSpan(iconName, this.gridOptionsWrapper, null);\n if (eIcon) {\n this.getRefElement(refName).appendChild(eIcon);\n }\n };\n HeaderGroupComp.prototype.addGroupExpandIcon = function () {\n if (!this.params.columnGroup.isExpandable()) {\n setDisplayed(this.eOpenIcon, false);\n setDisplayed(this.eCloseIcon, false);\n return;\n }\n };\n HeaderGroupComp.prototype.setupLabel = function () {\n // no renderer, default text render\n var displayName = this.params.displayName;\n if (exists(displayName)) {\n var displayNameSanitised = escapeString(displayName);\n this.getRefElement('agLabel').innerHTML = displayNameSanitised;\n }\n };\n HeaderGroupComp.TEMPLATE = \"
    \\n \\n \\n \\n
    \";\n __decorate([\n Autowired(\"columnModel\")\n ], HeaderGroupComp.prototype, \"columnModel\", void 0);\n __decorate([\n RefSelector(\"agOpened\")\n ], HeaderGroupComp.prototype, \"eOpenIcon\", void 0);\n __decorate([\n RefSelector(\"agClosed\")\n ], HeaderGroupComp.prototype, \"eCloseIcon\", void 0);\n return HeaderGroupComp;\n}(Component));\nexport { HeaderGroupComp };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Component } from \"./component\";\nvar PopupComponent = /** @class */ (function (_super) {\n __extends(PopupComponent, _super);\n function PopupComponent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PopupComponent.prototype.isPopup = function () {\n return true;\n };\n PopupComponent.prototype.setParentComponent = function (container) {\n container.addCssClass('ag-has-popup');\n _super.prototype.setParentComponent.call(this, container);\n };\n PopupComponent.prototype.destroy = function () {\n var parentComp = this.parentComponent;\n var hasParent = parentComp && parentComp.isAlive();\n if (hasParent) {\n parentComp.getGui().classList.remove('ag-has-popup');\n }\n _super.prototype.destroy.call(this);\n };\n return PopupComponent;\n}(Component));\nexport { PopupComponent };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { PopupComponent } from \"../../widgets/popupComponent\";\nimport { RefSelector } from \"../../widgets/componentAnnotations\";\nimport { exists } from \"../../utils/generic\";\nimport { KeyCode } from '../../constants/keyCode';\nvar LargeTextCellEditor = /** @class */ (function (_super) {\n __extends(LargeTextCellEditor, _super);\n function LargeTextCellEditor() {\n return _super.call(this, LargeTextCellEditor.TEMPLATE) || this;\n }\n LargeTextCellEditor.prototype.init = function (params) {\n this.params = params;\n this.focusAfterAttached = params.cellStartedEdit;\n this.eTextArea\n .setMaxLength(params.maxLength || 200)\n .setCols(params.cols || 60)\n .setRows(params.rows || 10);\n if (exists(params.value)) {\n this.eTextArea.setValue(params.value.toString(), true);\n }\n this.addGuiEventListener('keydown', this.onKeyDown.bind(this));\n };\n LargeTextCellEditor.prototype.onKeyDown = function (event) {\n var key = event.key;\n if (key === KeyCode.LEFT ||\n key === KeyCode.UP ||\n key === KeyCode.RIGHT ||\n key === KeyCode.DOWN ||\n (event.shiftKey && key === KeyCode.ENTER)) { // shift+enter allows for newlines\n event.stopPropagation();\n }\n };\n LargeTextCellEditor.prototype.afterGuiAttached = function () {\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n this.eTextArea.setInputAriaLabel(translate('ariaInputEditor', 'Input Editor'));\n if (this.focusAfterAttached) {\n this.eTextArea.getFocusableElement().focus();\n }\n };\n LargeTextCellEditor.prototype.getValue = function () {\n return this.params.parseValue(this.eTextArea.getValue());\n };\n LargeTextCellEditor.TEMPLATE = \"
    \\n \\n
    \";\n __decorate([\n RefSelector(\"eTextArea\")\n ], LargeTextCellEditor.prototype, \"eTextArea\", void 0);\n return LargeTextCellEditor;\n}(PopupComponent));\nexport { LargeTextCellEditor };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired } from \"../../context/context\";\nimport { PopupComponent } from \"../../widgets/popupComponent\";\nimport { RefSelector } from \"../../widgets/componentAnnotations\";\nimport { missing } from \"../../utils/generic\";\nimport { KeyCode } from '../../constants/keyCode';\nvar SelectCellEditor = /** @class */ (function (_super) {\n __extends(SelectCellEditor, _super);\n function SelectCellEditor() {\n var _this = _super.call(this, '
    ') || this;\n _this.startedByEnter = false;\n return _this;\n }\n SelectCellEditor.prototype.init = function (params) {\n var _this = this;\n this.focusAfterAttached = params.cellStartedEdit;\n if (missing(params.values)) {\n console.warn('AG Grid: no values found for select cellEditor');\n return;\n }\n this.startedByEnter = params.eventKey != null ? params.eventKey === KeyCode.ENTER : false;\n var hasValue = false;\n params.values.forEach(function (value) {\n var option = { value: value };\n var valueFormatted = _this.valueFormatterService.formatValue(params.column, null, null, value);\n var valueFormattedExits = valueFormatted !== null && valueFormatted !== undefined;\n option.text = valueFormattedExits ? valueFormatted : value;\n _this.eSelect.addOption(option);\n hasValue = hasValue || params.value === value;\n });\n if (hasValue) {\n this.eSelect.setValue(params.value, true);\n }\n else if (params.values.length) {\n this.eSelect.setValue(params.values[0], true);\n }\n // we don't want to add this if full row editing, otherwise selecting will stop the\n // full row editing.\n if (!this.gridOptionsWrapper.isFullRowEdit()) {\n this.eSelect.onValueChange(function () { return params.stopEditing(); });\n }\n };\n SelectCellEditor.prototype.afterGuiAttached = function () {\n if (this.focusAfterAttached) {\n this.eSelect.getFocusableElement().focus();\n }\n if (this.startedByEnter) {\n this.eSelect.showPicker();\n }\n };\n SelectCellEditor.prototype.focusIn = function () {\n this.eSelect.getFocusableElement().focus();\n };\n SelectCellEditor.prototype.getValue = function () {\n return this.eSelect.getValue();\n };\n SelectCellEditor.prototype.isPopup = function () {\n return false;\n };\n __decorate([\n Autowired('valueFormatterService')\n ], SelectCellEditor.prototype, \"valueFormatterService\", void 0);\n __decorate([\n RefSelector('eSelect')\n ], SelectCellEditor.prototype, \"eSelect\", void 0);\n return SelectCellEditor;\n}(PopupComponent));\nexport { SelectCellEditor };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { doOnce } from \"../../utils/function\";\nimport { SelectCellEditor } from \"./selectCellEditor\";\nvar PopupSelectCellEditor = /** @class */ (function (_super) {\n __extends(PopupSelectCellEditor, _super);\n function PopupSelectCellEditor() {\n var _this = _super.call(this) || this;\n doOnce(function () { return console.warn('AG Grid: The PopupSelectCellEditor (agPopupSelectCellEditor) is deprecated. Instead use {cellEditor: \"agSelectCellEditor\", cellEditorPopup: true} '); }, 'PopupSelectCellEditor.deprecated');\n return _this;\n }\n PopupSelectCellEditor.prototype.isPopup = function () {\n return true;\n };\n return PopupSelectCellEditor;\n}(SelectCellEditor));\nexport { PopupSelectCellEditor };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { PopupComponent } from \"../../widgets/popupComponent\";\nimport { RefSelector } from \"../../widgets/componentAnnotations\";\nimport { exists } from \"../../utils/generic\";\nimport { isBrowserSafari } from \"../../utils/browser\";\nimport { KeyCode } from '../../constants/keyCode';\nvar TextCellEditor = /** @class */ (function (_super) {\n __extends(TextCellEditor, _super);\n function TextCellEditor() {\n return _super.call(this, TextCellEditor.TEMPLATE) || this;\n }\n TextCellEditor.prototype.init = function (params) {\n this.params = params;\n var eInput = this.eInput;\n var startValue;\n // cellStartedEdit is only false if we are doing fullRow editing\n if (params.cellStartedEdit) {\n this.focusAfterAttached = true;\n if (params.eventKey === KeyCode.BACKSPACE || params.eventKey === KeyCode.DELETE) {\n startValue = '';\n }\n else if (params.charPress) {\n startValue = params.charPress;\n }\n else {\n startValue = this.getStartValue(params);\n if (params.eventKey !== KeyCode.F2) {\n this.highlightAllOnFocus = true;\n }\n }\n }\n else {\n this.focusAfterAttached = false;\n startValue = this.getStartValue(params);\n }\n if (startValue != null) {\n eInput.setValue(startValue, true);\n }\n this.addManagedListener(eInput.getGui(), 'keydown', function (event) {\n var key = event.key;\n if (key === KeyCode.PAGE_UP || key === KeyCode.PAGE_DOWN) {\n event.preventDefault();\n }\n });\n };\n TextCellEditor.prototype.afterGuiAttached = function () {\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var eInput = this.eInput;\n eInput.setInputAriaLabel(translate('ariaInputEditor', 'Input Editor'));\n if (!this.focusAfterAttached) {\n return;\n }\n // Added for AG-3238. We can't remove this explicit focus() because Chrome requires an input\n // to be focused before setSelectionRange will work. But it triggers a bug in Safari where\n // explicitly focusing then blurring an empty field will cause the parent container to scroll.\n if (!isBrowserSafari()) {\n eInput.getFocusableElement().focus();\n }\n var inputEl = eInput.getInputElement();\n if (this.highlightAllOnFocus) {\n inputEl.select();\n }\n else {\n // when we started editing, we want the caret at the end, not the start.\n // this comes into play in two scenarios:\n // a) when user hits F2\n // b) when user hits a printable character\n var value = eInput.getValue();\n var len = (exists(value) && value.length) || 0;\n if (len) {\n inputEl.setSelectionRange(len, len);\n }\n }\n };\n // gets called when tabbing trough cells and in full row edit mode\n TextCellEditor.prototype.focusIn = function () {\n var eInput = this.eInput;\n var focusEl = eInput.getFocusableElement();\n var inputEl = eInput.getInputElement();\n focusEl.focus();\n inputEl.select();\n };\n TextCellEditor.prototype.getValue = function () {\n var eInput = this.eInput;\n return this.params.parseValue(eInput.getValue());\n };\n TextCellEditor.prototype.getStartValue = function (params) {\n var formatValue = params.useFormatter || params.column.getColDef().refData;\n return formatValue ? params.formatValue(params.value) : params.value;\n };\n TextCellEditor.prototype.isPopup = function () {\n return false;\n };\n TextCellEditor.TEMPLATE = '
    ';\n __decorate([\n RefSelector('eInput')\n ], TextCellEditor.prototype, \"eInput\", void 0);\n return TextCellEditor;\n}(PopupComponent));\nexport { TextCellEditor };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { doOnce } from \"../../utils/function\";\nimport { TextCellEditor } from \"./textCellEditor\";\nvar PopupTextCellEditor = /** @class */ (function (_super) {\n __extends(PopupTextCellEditor, _super);\n function PopupTextCellEditor() {\n var _this = _super.call(this) || this;\n doOnce(function () { return console.warn('AG Grid: The PopupTextCellEditor (agPopupTextCellEditor) is deprecated. Instead use {cellEditor: \"agTextCellEditor\", cellEditorPopup: true} '); }, 'PopupTextCellEditor.deprecated');\n return _this;\n }\n PopupTextCellEditor.prototype.isPopup = function () {\n return true;\n };\n return PopupTextCellEditor;\n}(TextCellEditor));\nexport { PopupTextCellEditor };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired } from \"../../context/context\";\nimport { Component } from \"../../widgets/component\";\nimport { exists } from \"../../utils/generic\";\nimport { clearElement } from \"../../utils/dom\";\nvar ARROW_UP = '\\u2191';\nvar ARROW_DOWN = '\\u2193';\nvar AnimateShowChangeCellRenderer = /** @class */ (function (_super) {\n __extends(AnimateShowChangeCellRenderer, _super);\n function AnimateShowChangeCellRenderer() {\n var _this = _super.call(this, AnimateShowChangeCellRenderer.TEMPLATE) || this;\n _this.refreshCount = 0;\n return _this;\n }\n AnimateShowChangeCellRenderer.prototype.init = function (params) {\n // this.params = params;\n this.eValue = this.queryForHtmlElement('.ag-value-change-value');\n this.eDelta = this.queryForHtmlElement('.ag-value-change-delta');\n this.refresh(params);\n };\n AnimateShowChangeCellRenderer.prototype.showDelta = function (params, delta) {\n var absDelta = Math.abs(delta);\n var valueFormatted = params.formatValue(absDelta);\n var valueToUse = exists(valueFormatted) ? valueFormatted : absDelta;\n var deltaUp = (delta >= 0);\n if (deltaUp) {\n this.eDelta.innerHTML = ARROW_UP + valueToUse;\n }\n else {\n // because negative, use ABS to remove sign\n this.eDelta.innerHTML = ARROW_DOWN + valueToUse;\n }\n this.eDelta.classList.toggle('ag-value-change-delta-up', deltaUp);\n this.eDelta.classList.toggle('ag-value-change-delta-down', !deltaUp);\n };\n AnimateShowChangeCellRenderer.prototype.setTimerToRemoveDelta = function () {\n var _this = this;\n // the refreshCount makes sure that if the value updates again while\n // the below timer is waiting, then the below timer will realise it\n // is not the most recent and will not try to remove the delta value.\n this.refreshCount++;\n var refreshCountCopy = this.refreshCount;\n window.setTimeout(function () {\n if (refreshCountCopy === _this.refreshCount) {\n _this.hideDeltaValue();\n }\n }, 2000);\n };\n AnimateShowChangeCellRenderer.prototype.hideDeltaValue = function () {\n this.eValue.classList.remove('ag-value-change-value-highlight');\n clearElement(this.eDelta);\n };\n AnimateShowChangeCellRenderer.prototype.refresh = function (params) {\n var value = params.value;\n if (value === this.lastValue) {\n return false;\n }\n if (exists(params.valueFormatted)) {\n this.eValue.innerHTML = params.valueFormatted;\n }\n else if (exists(params.value)) {\n this.eValue.innerHTML = value;\n }\n else {\n clearElement(this.eValue);\n }\n // we don't show the delta if we are in the middle of a filter. see comment on FilterManager\n // with regards processingFilterChange\n if (this.filterManager.isSuppressFlashingCellsBecauseFiltering()) {\n return false;\n }\n if (typeof value === 'number' && typeof this.lastValue === 'number') {\n var delta = value - this.lastValue;\n this.showDelta(params, delta);\n }\n // highlight the current value, but only if it's not new, otherwise it\n // would get highlighted first time the value is shown\n if (this.lastValue) {\n this.eValue.classList.add('ag-value-change-value-highlight');\n }\n this.setTimerToRemoveDelta();\n this.lastValue = value;\n return true;\n };\n AnimateShowChangeCellRenderer.TEMPLATE = '' +\n '' +\n '' +\n '';\n __decorate([\n Autowired('filterManager')\n ], AnimateShowChangeCellRenderer.prototype, \"filterManager\", void 0);\n return AnimateShowChangeCellRenderer;\n}(Component));\nexport { AnimateShowChangeCellRenderer };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired } from \"../../context/context\";\nimport { Component } from \"../../widgets/component\";\nimport { loadTemplate, clearElement } from \"../../utils/dom\";\nimport { missing, exists } from \"../../utils/generic\";\nvar AnimateSlideCellRenderer = /** @class */ (function (_super) {\n __extends(AnimateSlideCellRenderer, _super);\n function AnimateSlideCellRenderer() {\n var _this = _super.call(this, AnimateSlideCellRenderer.TEMPLATE) || this;\n _this.refreshCount = 0;\n _this.eCurrent = _this.queryForHtmlElement('.ag-value-slide-current');\n return _this;\n }\n AnimateSlideCellRenderer.prototype.init = function (params) {\n this.refresh(params);\n };\n AnimateSlideCellRenderer.prototype.addSlideAnimation = function () {\n var _this = this;\n this.refreshCount++;\n // below we keep checking this, and stop working on the animation\n // if it no longer matches - this means another animation has started\n // and this one is stale.\n var refreshCountCopy = this.refreshCount;\n // if old animation, remove it\n if (this.ePrevious) {\n this.getGui().removeChild(this.ePrevious);\n }\n this.ePrevious = loadTemplate('');\n this.ePrevious.innerHTML = this.eCurrent.innerHTML;\n this.getGui().insertBefore(this.ePrevious, this.eCurrent);\n // having timeout of 0 allows use to skip to the next css turn,\n // so we know the previous css classes have been applied. so the\n // complex set of setTimeout below creates the animation\n window.setTimeout(function () {\n if (refreshCountCopy !== _this.refreshCount) {\n return;\n }\n _this.ePrevious.classList.add('ag-value-slide-out-end');\n }, 50);\n window.setTimeout(function () {\n if (refreshCountCopy !== _this.refreshCount) {\n return;\n }\n _this.getGui().removeChild(_this.ePrevious);\n _this.ePrevious = null;\n }, 3000);\n };\n AnimateSlideCellRenderer.prototype.refresh = function (params) {\n var value = params.value;\n if (missing(value)) {\n value = '';\n }\n if (value === this.lastValue) {\n return false;\n }\n // we don't show the delta if we are in the middle of a filter. see comment on FilterManager\n // with regards processingFilterChange\n if (this.filterManager.isSuppressFlashingCellsBecauseFiltering()) {\n return false;\n }\n this.addSlideAnimation();\n this.lastValue = value;\n if (exists(params.valueFormatted)) {\n this.eCurrent.innerHTML = params.valueFormatted;\n }\n else if (exists(params.value)) {\n this.eCurrent.innerHTML = value;\n }\n else {\n clearElement(this.eCurrent);\n }\n return true;\n };\n AnimateSlideCellRenderer.TEMPLATE = \"\\n \\n \";\n __decorate([\n Autowired('filterManager')\n ], AnimateSlideCellRenderer.prototype, \"filterManager\", void 0);\n return AnimateSlideCellRenderer;\n}(Component));\nexport { AnimateSlideCellRenderer };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nimport { EventService } from \"../eventService\";\nimport { Events } from \"../events\";\nimport { Constants } from \"../constants/constants\";\nimport { exists, missing, missingOrEmpty } from \"../utils/generic\";\nimport { getAllKeysInObjects } from \"../utils/object\";\nimport { debounce } from \"../utils/function\";\nexport var RowHighlightPosition;\n(function (RowHighlightPosition) {\n RowHighlightPosition[RowHighlightPosition[\"Above\"] = 0] = \"Above\";\n RowHighlightPosition[RowHighlightPosition[\"Below\"] = 1] = \"Below\";\n})(RowHighlightPosition || (RowHighlightPosition = {}));\nvar RowNode = /** @class */ (function () {\n function RowNode(beans) {\n /** The current row index. If the row is filtered out or in a collapsed group, this value will be `null`. */\n this.rowIndex = null;\n /** The key for the group eg Ireland, UK, USA */\n this.key = null;\n /** Children mapped by the pivot columns. */\n this.childrenMapped = {};\n /**\n * This will be `true` if it has a rowIndex assigned, otherwise `false`.\n */\n this.displayed = false;\n /** The row top position in pixels. */\n this.rowTop = null;\n /** The top pixel for this row last time, makes sense if data set was ordered or filtered,\n * it is used so new rows can animate in from their old position. */\n this.oldRowTop = null;\n /** `true` by default - can be overridden via gridOptions.isRowSelectable(rowNode) */\n this.selectable = true;\n /** Used by sorting service - to give deterministic sort to groups. Previously we\n * just id for this, however id is a string and had slower sorting compared to numbers. */\n this.__objectId = RowNode.OBJECT_ID_SEQUENCE++;\n /** When one or more Columns are using autoHeight, this keeps track of height of each autoHeight Cell,\n * indexed by the Column ID. */\n this.__autoHeights = {};\n /** `true` when nodes with the same id are being removed and added as part of the same batch transaction */\n this.alreadyRendered = false;\n this.highlighted = null;\n this.selected = false;\n this.beans = beans;\n }\n /** Replaces the data on the `rowNode`. When complete, the grid will refresh the the entire rendered row if it is showing. */\n RowNode.prototype.setData = function (data) {\n this.setDataCommon(data, false);\n };\n // similar to setRowData, however it is expected that the data is the same data item. this\n // is intended to be used with Redux type stores, where the whole data can be changed. we are\n // guaranteed that the data is the same entity (so grid doesn't need to worry about the id of the\n // underlying data changing, hence doesn't need to worry about selection). the grid, upon receiving\n // dataChanged event, will refresh the cells rather than rip them all out (so user can show transitions).\n RowNode.prototype.updateData = function (data) {\n this.setDataCommon(data, true);\n };\n RowNode.prototype.setDataCommon = function (data, update) {\n var oldData = this.data;\n this.data = data;\n this.beans.valueCache.onDataChanged();\n this.updateDataOnDetailNode();\n this.checkRowSelectable();\n var event = this.createDataChangedEvent(data, oldData, update);\n this.dispatchLocalEvent(event);\n };\n // when we are doing master / detail, the detail node is lazy created, but then kept around.\n // so if we show / hide the detail, the same detail rowNode is used. so we need to keep the data\n // in sync, otherwise expand/collapse of the detail would still show the old values.\n RowNode.prototype.updateDataOnDetailNode = function () {\n if (this.detailNode) {\n this.detailNode.data = this.data;\n }\n };\n RowNode.prototype.createDataChangedEvent = function (newData, oldData, update) {\n return {\n type: RowNode.EVENT_DATA_CHANGED,\n node: this,\n oldData: oldData,\n newData: newData,\n update: update\n };\n };\n RowNode.prototype.createLocalRowEvent = function (type) {\n return {\n type: type,\n node: this\n };\n };\n RowNode.prototype.getRowIndexString = function () {\n if (this.rowPinned === Constants.PINNED_TOP) {\n return 't-' + this.rowIndex;\n }\n if (this.rowPinned === Constants.PINNED_BOTTOM) {\n return 'b-' + this.rowIndex;\n }\n return this.rowIndex.toString();\n };\n RowNode.prototype.createDaemonNode = function () {\n var oldNode = new RowNode(this.beans);\n // just copy the id and data, this is enough for the node to be used\n // in the selection controller (the selection controller is the only\n // place where daemon nodes can live).\n oldNode.id = this.id;\n oldNode.data = this.data;\n oldNode.daemon = true;\n oldNode.selected = this.selected;\n oldNode.level = this.level;\n return oldNode;\n };\n RowNode.prototype.setDataAndId = function (data, id) {\n var oldNode = exists(this.id) ? this.createDaemonNode() : null;\n var oldData = this.data;\n this.data = data;\n this.updateDataOnDetailNode();\n this.setId(id);\n this.beans.selectionService.syncInRowNode(this, oldNode);\n this.checkRowSelectable();\n var event = this.createDataChangedEvent(data, oldData, false);\n this.dispatchLocalEvent(event);\n };\n RowNode.prototype.checkRowSelectable = function () {\n var isRowSelectableFunc = this.beans.gridOptionsWrapper.getIsRowSelectableFunc();\n this.setRowSelectable(isRowSelectableFunc ? isRowSelectableFunc(this) : true);\n };\n RowNode.prototype.setRowSelectable = function (newVal) {\n if (this.selectable !== newVal) {\n this.selectable = newVal;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_SELECTABLE_CHANGED));\n }\n }\n };\n RowNode.prototype.setId = function (id) {\n // see if user is providing the id's\n var getRowIdFunc = this.beans.gridOptionsWrapper.getRowIdFunc();\n if (getRowIdFunc) {\n // if user is providing the id's, then we set the id only after the data has been set.\n // this is important for virtual pagination and viewport, where empty rows exist.\n if (this.data) {\n // we pass 'true' as we skip this level when generating keys,\n // as we don't always have the key for this level (eg when updating\n // data via transaction on SSRM, we are getting key to look up the\n // RowNode, don't have the RowNode yet, thus no way to get the current key)\n var parentKeys = this.getGroupKeys(true);\n this.id = getRowIdFunc({\n api: this.beans.gridApi,\n columnApi: this.beans.columnApi,\n data: this.data,\n parentKeys: parentKeys.length > 0 ? parentKeys : undefined,\n level: this.level\n });\n // make sure id provided doesn't start with 'row-group-' as this is reserved. also check that\n // it has 'startsWith' in case the user provided a number.\n if (this.id !== null && typeof this.id === 'string' && this.id.startsWith(RowNode.ID_PREFIX_ROW_GROUP)) {\n console.error(\"AG Grid: Row IDs cannot start with \" + RowNode.ID_PREFIX_ROW_GROUP + \", this is a reserved prefix for AG Grid's row grouping feature.\");\n }\n // force id to be a string\n if (this.id !== null && typeof this.id !== 'string') {\n this.id = '' + this.id;\n }\n }\n else {\n // this can happen if user has set blank into the rowNode after the row previously\n // having data. this happens in virtual page row model, when data is delete and\n // the page is refreshed.\n this.id = undefined;\n }\n }\n else {\n this.id = id;\n }\n };\n RowNode.prototype.getGroupKeys = function (excludeSelf) {\n if (excludeSelf === void 0) { excludeSelf = false; }\n var keys = [];\n var pointer = this;\n if (excludeSelf) {\n pointer = pointer.parent;\n }\n while (pointer && pointer.level >= 0) {\n keys.push(pointer.key);\n pointer = pointer.parent;\n }\n keys.reverse();\n return keys;\n };\n RowNode.prototype.isPixelInRange = function (pixel) {\n if (!exists(this.rowTop) || !exists(this.rowHeight)) {\n return false;\n }\n return pixel >= this.rowTop && pixel < (this.rowTop + this.rowHeight);\n };\n RowNode.prototype.setFirstChild = function (firstChild) {\n if (this.firstChild === firstChild) {\n return;\n }\n this.firstChild = firstChild;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_FIRST_CHILD_CHANGED));\n }\n };\n RowNode.prototype.setLastChild = function (lastChild) {\n if (this.lastChild === lastChild) {\n return;\n }\n this.lastChild = lastChild;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_LAST_CHILD_CHANGED));\n }\n };\n RowNode.prototype.setChildIndex = function (childIndex) {\n if (this.childIndex === childIndex) {\n return;\n }\n this.childIndex = childIndex;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_CHILD_INDEX_CHANGED));\n }\n };\n RowNode.prototype.setRowTop = function (rowTop) {\n this.oldRowTop = this.rowTop;\n if (this.rowTop === rowTop) {\n return;\n }\n this.rowTop = rowTop;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_TOP_CHANGED));\n }\n this.setDisplayed(rowTop !== null);\n };\n RowNode.prototype.clearRowTopAndRowIndex = function () {\n this.oldRowTop = null;\n this.setRowTop(null);\n this.setRowIndex(null);\n };\n RowNode.prototype.setDisplayed = function (displayed) {\n if (this.displayed === displayed) {\n return;\n }\n this.displayed = displayed;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_DISPLAYED_CHANGED));\n }\n };\n RowNode.prototype.setDragging = function (dragging) {\n if (this.dragging === dragging) {\n return;\n }\n this.dragging = dragging;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_DRAGGING_CHANGED));\n }\n };\n RowNode.prototype.setHighlighted = function (highlighted) {\n if (highlighted === this.highlighted) {\n return;\n }\n this.highlighted = highlighted;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_HIGHLIGHT_CHANGED));\n }\n };\n RowNode.prototype.setAllChildrenCount = function (allChildrenCount) {\n if (this.allChildrenCount === allChildrenCount) {\n return;\n }\n this.allChildrenCount = allChildrenCount;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_ALL_CHILDREN_COUNT_CHANGED));\n }\n };\n RowNode.prototype.setMaster = function (master) {\n if (this.master === master) {\n return;\n }\n // if changing AWAY from master, then unexpand, otherwise\n // next time it's shown it is expanded again\n if (this.master && !master) {\n this.expanded = false;\n }\n this.master = master;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_MASTER_CHANGED));\n }\n };\n RowNode.prototype.setGroup = function (group) {\n if (this.group === group) {\n return;\n }\n // if we used to be a group, and no longer, then close the node\n if (this.group && !group) {\n this.expanded = false;\n }\n this.group = group;\n this.updateHasChildren();\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_GROUP_CHANGED));\n }\n };\n /**\n * Sets the row height.\n * Call if you want to change the height initially assigned to the row.\n * After calling, you must call `api.onRowHeightChanged()` so the grid knows it needs to work out the placement of the rows. */\n RowNode.prototype.setRowHeight = function (rowHeight, estimated) {\n if (estimated === void 0) { estimated = false; }\n this.rowHeight = rowHeight;\n this.rowHeightEstimated = estimated;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_HEIGHT_CHANGED));\n }\n };\n RowNode.prototype.setRowAutoHeight = function (cellHeight, column) {\n if (!this.__autoHeights) {\n this.__autoHeights = {};\n }\n var autoHeights = this.__autoHeights;\n autoHeights[column.getId()] = cellHeight;\n if (cellHeight != null) {\n if (this.checkAutoHeightsDebounced == null) {\n this.checkAutoHeightsDebounced = debounce(this.checkAutoHeights.bind(this), 1);\n }\n this.checkAutoHeightsDebounced();\n }\n };\n RowNode.prototype.checkAutoHeights = function () {\n var notAllPresent = false;\n var nonePresent = true;\n var newRowHeight = 0;\n var autoHeights = this.__autoHeights;\n if (autoHeights == null) {\n return;\n }\n var displayedAutoHeightCols = this.beans.columnModel.getAllDisplayedAutoHeightCols();\n displayedAutoHeightCols.forEach(function (col) {\n var cellHeight = autoHeights[col.getId()];\n if (cellHeight == null) {\n notAllPresent = true;\n return;\n }\n nonePresent = false;\n if (cellHeight > newRowHeight) {\n newRowHeight = cellHeight;\n }\n });\n if (notAllPresent) {\n return;\n }\n // we take min of 10, so we don't adjust for empty rows. if <10, we put to default.\n // this prevents the row starting very small when waiting for async components,\n // which would then mean the grid squashes in far to many rows (as small heights\n // means more rows fit in) which looks crap. so best ignore small values and assume\n // we are still waiting for values to render.\n if (nonePresent || newRowHeight < 10) {\n newRowHeight = this.beans.gridOptionsWrapper.getRowHeightForNode(this).height;\n }\n if (newRowHeight == this.rowHeight) {\n return;\n }\n this.setRowHeight(newRowHeight);\n var rowModel = this.beans.rowModel;\n if (rowModel.onRowHeightChanged) {\n rowModel.onRowHeightChanged();\n }\n };\n RowNode.prototype.setRowIndex = function (rowIndex) {\n if (this.rowIndex === rowIndex) {\n return;\n }\n this.rowIndex = rowIndex;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_ROW_INDEX_CHANGED));\n }\n };\n RowNode.prototype.setUiLevel = function (uiLevel) {\n if (this.uiLevel === uiLevel) {\n return;\n }\n this.uiLevel = uiLevel;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_UI_LEVEL_CHANGED));\n }\n };\n RowNode.prototype.setExpanded = function (expanded) {\n if (this.expanded === expanded) {\n return;\n }\n this.expanded = expanded;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_EXPANDED_CHANGED));\n }\n var event = Object.assign({}, this.createGlobalRowEvent(Events.EVENT_ROW_GROUP_OPENED), {\n expanded: expanded\n });\n this.beans.rowNodeEventThrottle.dispatchExpanded(event);\n // when using footers we need to refresh the group row, as the aggregation\n // values jump between group and footer\n if (this.beans.gridOptionsWrapper.isGroupIncludeFooter()) {\n this.beans.rowRenderer.refreshCells({ rowNodes: [this] });\n }\n };\n RowNode.prototype.createGlobalRowEvent = function (type) {\n return {\n type: type,\n node: this,\n data: this.data,\n rowIndex: this.rowIndex,\n rowPinned: this.rowPinned,\n context: this.beans.gridOptionsWrapper.getContext(),\n api: this.beans.gridOptionsWrapper.getApi(),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi()\n };\n };\n RowNode.prototype.dispatchLocalEvent = function (event) {\n if (this.eventService) {\n this.eventService.dispatchEvent(event);\n }\n };\n // we also allow editing the value via the editors. when it is done via\n // the editors, no 'cell changed' event gets fired, as it's assumed that\n // the cell knows about the change given it's in charge of the editing.\n // this method is for the client to call, so the cell listens for the change\n // event, and also flashes the cell when the change occurs.\n /** Replaces the value on the `rowNode` for the specified column. When complete, the grid will refresh the rendered cell on the required row only. */\n RowNode.prototype.setDataValue = function (colKey, newValue, eventSource) {\n var column = this.beans.columnModel.getPrimaryColumn(colKey);\n var oldValue = this.beans.valueService.getValue(column, this);\n this.beans.valueService.setValue(this, column, newValue, eventSource);\n this.dispatchCellChangedEvent(column, newValue, oldValue);\n };\n RowNode.prototype.setGroupValue = function (colKey, newValue) {\n var column = this.beans.columnModel.getGridColumn(colKey);\n if (missing(this.groupData)) {\n this.groupData = {};\n }\n var columnId = column.getColId();\n var oldValue = this.groupData[columnId];\n if (oldValue === newValue) {\n return;\n }\n this.groupData[columnId] = newValue;\n this.dispatchCellChangedEvent(column, newValue, oldValue);\n };\n // sets the data for an aggregation\n RowNode.prototype.setAggData = function (newAggData) {\n var _this = this;\n // find out all keys that could potentially change\n var colIds = getAllKeysInObjects([this.aggData, newAggData]);\n var oldAggData = this.aggData;\n this.aggData = newAggData;\n // if no event service, nobody has registered for events, so no need fire event\n if (this.eventService) {\n colIds.forEach(function (colId) {\n var column = _this.beans.columnModel.getGridColumn(colId);\n var value = _this.aggData ? _this.aggData[colId] : undefined;\n var oldValue = oldAggData ? oldAggData[colId] : undefined;\n _this.dispatchCellChangedEvent(column, value, oldValue);\n });\n }\n };\n RowNode.prototype.updateHasChildren = function () {\n // we need to return true when this.group=true, as this is used by server side row model\n // (as children are lazy loaded and stored in a cache anyway). otherwise we return true\n // if children exist.\n var newValue = (this.group && !this.footer) || (this.childrenAfterGroup && this.childrenAfterGroup.length > 0);\n if (newValue !== this.__hasChildren) {\n this.__hasChildren = !!newValue;\n if (this.eventService) {\n this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_HAS_CHILDREN_CHANGED));\n }\n }\n };\n RowNode.prototype.hasChildren = function () {\n if (this.__hasChildren == null) {\n this.updateHasChildren();\n }\n return this.__hasChildren;\n };\n RowNode.prototype.isEmptyRowGroupNode = function () {\n return this.group && missingOrEmpty(this.childrenAfterGroup);\n };\n RowNode.prototype.dispatchCellChangedEvent = function (column, newValue, oldValue) {\n var cellChangedEvent = {\n type: RowNode.EVENT_CELL_CHANGED,\n node: this,\n column: column,\n newValue: newValue,\n oldValue: oldValue\n };\n this.dispatchLocalEvent(cellChangedEvent);\n };\n /**\n * The first time `quickFilter` runs, the grid creates a one-off string representation of the row.\n * This string is then used for the quick filter instead of hitting each column separately.\n * When you edit, using grid editing, this string gets cleared down.\n * However if you edit without using grid editing, you will need to clear this string down for the row to be updated with the new values.\n * Otherwise new values will not work with the `quickFilter`. */\n RowNode.prototype.resetQuickFilterAggregateText = function () {\n this.quickFilterAggregateText = null;\n };\n RowNode.prototype.isExpandable = function () {\n return (this.hasChildren() && !this.footer) || this.master ? true : false;\n };\n /** Returns:\n * - `true` if node is selected,\n * - `false` if the node isn't selected\n * - `undefined` if it's partially selected (group where not all children are selected). */\n RowNode.prototype.isSelected = function () {\n // for footers, we just return what our sibling selected state is, as cannot select a footer\n if (this.footer) {\n return this.sibling.isSelected();\n }\n return this.selected;\n };\n /** Perform a depth-first search of this node and its children. */\n RowNode.prototype.depthFirstSearch = function (callback) {\n if (this.childrenAfterGroup) {\n this.childrenAfterGroup.forEach(function (child) { return child.depthFirstSearch(callback); });\n }\n callback(this);\n };\n // + rowController.updateGroupsInSelection()\n // + selectionController.calculatedSelectedForAllGroupNodes()\n RowNode.prototype.calculateSelectedFromChildren = function () {\n var atLeastOneSelected = false;\n var atLeastOneDeSelected = false;\n var atLeastOneMixed = false;\n var newSelectedValue;\n if (this.childrenAfterGroup) {\n for (var i = 0; i < this.childrenAfterGroup.length; i++) {\n var child = this.childrenAfterGroup[i];\n // skip non-selectable nodes to prevent inconsistent selection values\n if (!child.selectable) {\n continue;\n }\n var childState = child.isSelected();\n switch (childState) {\n case true:\n atLeastOneSelected = true;\n break;\n case false:\n atLeastOneDeSelected = true;\n break;\n default:\n atLeastOneMixed = true;\n break;\n }\n }\n }\n if (atLeastOneMixed) {\n newSelectedValue = undefined;\n }\n else if (atLeastOneSelected && !atLeastOneDeSelected) {\n newSelectedValue = true;\n }\n else if (!atLeastOneSelected && atLeastOneDeSelected) {\n newSelectedValue = false;\n }\n else {\n newSelectedValue = undefined;\n }\n this.selectThisNode(newSelectedValue);\n };\n RowNode.prototype.setSelectedInitialValue = function (selected) {\n this.selected = selected;\n };\n /**\n * Select (or deselect) the node.\n * @param newValue -`true` for selection, `false` for deselection.\n * @param clearSelection - If selecting, then passing `true` will select the node exclusively (i.e. NOT do multi select). If doing deselection, `clearSelection` has no impact.\n * @param suppressFinishActions - Pass `true` to prevent the `selectionChanged` from being fired. Note that the `rowSelected` event will still be fired.\n */\n RowNode.prototype.setSelected = function (newValue, clearSelection, suppressFinishActions) {\n if (clearSelection === void 0) { clearSelection = false; }\n if (suppressFinishActions === void 0) { suppressFinishActions = false; }\n this.setSelectedParams({\n newValue: newValue,\n clearSelection: clearSelection,\n suppressFinishActions: suppressFinishActions,\n rangeSelect: false\n });\n };\n RowNode.prototype.isRowPinned = function () {\n return this.rowPinned === Constants.PINNED_TOP || this.rowPinned === Constants.PINNED_BOTTOM;\n };\n // to make calling code more readable, this is the same method as setSelected except it takes names parameters\n RowNode.prototype.setSelectedParams = function (params) {\n var groupSelectsChildren = this.beans.gridOptionsWrapper.isGroupSelectsChildren();\n var newValue = params.newValue === true;\n var clearSelection = params.clearSelection === true;\n var suppressFinishActions = params.suppressFinishActions === true;\n var rangeSelect = params.rangeSelect === true;\n // groupSelectsFiltered only makes sense when group selects children\n var groupSelectsFiltered = groupSelectsChildren && (params.groupSelectsFiltered === true);\n if (this.id === undefined) {\n console.warn('AG Grid: cannot select node until id for node is known');\n return 0;\n }\n if (this.rowPinned) {\n console.warn('AG Grid: cannot select pinned rows');\n return 0;\n }\n // if we are a footer, we don't do selection, just pass the info\n // to the sibling (the parent of the group)\n if (this.footer) {\n return this.sibling.setSelectedParams(params);\n }\n if (rangeSelect && this.beans.selectionService.getLastSelectedNode()) {\n var newRowClicked = this.beans.selectionService.getLastSelectedNode() !== this;\n var allowMultiSelect = this.beans.gridOptionsWrapper.isRowSelectionMulti();\n if (newRowClicked && allowMultiSelect) {\n var nodesChanged = this.doRowRangeSelection(params.newValue);\n this.beans.selectionService.setLastSelectedNode(this);\n return nodesChanged;\n }\n }\n var updatedCount = 0;\n // when groupSelectsFiltered, then this node may end up intermediate despite\n // trying to set it to true / false. this group will be calculated further on\n // down when we call calculatedSelectedForAllGroupNodes(). we need to skip it\n // here, otherwise the updatedCount would include it.\n var skipThisNode = groupSelectsFiltered && this.group;\n if (!skipThisNode) {\n var thisNodeWasSelected = this.selectThisNode(newValue);\n if (thisNodeWasSelected) {\n updatedCount++;\n }\n }\n if (groupSelectsChildren && this.group) {\n updatedCount += this.selectChildNodes(newValue, groupSelectsFiltered);\n }\n // clear other nodes if not doing multi select\n if (!suppressFinishActions) {\n var clearOtherNodes = newValue && (clearSelection || !this.beans.gridOptionsWrapper.isRowSelectionMulti());\n if (clearOtherNodes) {\n updatedCount += this.beans.selectionService.clearOtherNodes(this);\n }\n // only if we selected something, then update groups and fire events\n if (updatedCount > 0) {\n this.beans.selectionService.updateGroupsFromChildrenSelections();\n // this is the very end of the 'action node', so we are finished all the updates,\n // include any parent / child changes that this method caused\n var event_1 = {\n type: Events.EVENT_SELECTION_CHANGED,\n api: this.beans.gridApi,\n columnApi: this.beans.columnApi\n };\n this.beans.eventService.dispatchEvent(event_1);\n }\n // so if user next does shift-select, we know where to start the selection from\n if (newValue) {\n this.beans.selectionService.setLastSelectedNode(this);\n }\n }\n return updatedCount;\n };\n // selects all rows between this node and the last selected node (or the top if this is the first selection).\n // not to be mixed up with 'cell range selection' where you drag the mouse, this is row range selection, by\n // holding down 'shift'.\n RowNode.prototype.doRowRangeSelection = function (value) {\n var _this = this;\n if (value === void 0) { value = true; }\n var groupsSelectChildren = this.beans.gridOptionsWrapper.isGroupSelectsChildren();\n var lastSelectedNode = this.beans.selectionService.getLastSelectedNode();\n var nodesToSelect = this.beans.rowModel.getNodesInRangeForSelection(this, lastSelectedNode);\n var updatedCount = 0;\n nodesToSelect.forEach(function (rowNode) {\n if (rowNode.group && groupsSelectChildren || (value === false && _this === rowNode)) {\n return;\n }\n var nodeWasSelected = rowNode.selectThisNode(value);\n if (nodeWasSelected) {\n updatedCount++;\n }\n });\n this.beans.selectionService.updateGroupsFromChildrenSelections();\n var event = {\n type: Events.EVENT_SELECTION_CHANGED,\n api: this.beans.gridApi,\n columnApi: this.beans.columnApi\n };\n this.beans.eventService.dispatchEvent(event);\n return updatedCount;\n };\n RowNode.prototype.isParentOfNode = function (potentialParent) {\n var parentNode = this.parent;\n while (parentNode) {\n if (parentNode === potentialParent) {\n return true;\n }\n parentNode = parentNode.parent;\n }\n return false;\n };\n RowNode.prototype.selectThisNode = function (newValue) {\n // we only check selectable when newValue=true (ie selecting) to allow unselecting values,\n // as selectable is dynamic, need a way to unselect rows when selectable becomes false.\n var selectionNotAllowed = !this.selectable && newValue;\n var selectionNotChanged = this.selected === newValue;\n if (selectionNotAllowed || selectionNotChanged) {\n return false;\n }\n this.selected = newValue;\n if (this.eventService) {\n this.dispatchLocalEvent(this.createLocalRowEvent(RowNode.EVENT_ROW_SELECTED));\n }\n var event = this.createGlobalRowEvent(Events.EVENT_ROW_SELECTED);\n this.beans.eventService.dispatchEvent(event);\n return true;\n };\n RowNode.prototype.selectChildNodes = function (newValue, groupSelectsFiltered) {\n var children = groupSelectsFiltered ? this.childrenAfterFilter : this.childrenAfterGroup;\n if (missing(children)) {\n return 0;\n }\n var updatedCount = 0;\n for (var i = 0; i < children.length; i++) {\n updatedCount += children[i].setSelectedParams({\n newValue: newValue,\n clearSelection: false,\n suppressFinishActions: true,\n groupSelectsFiltered: groupSelectsFiltered\n });\n }\n return updatedCount;\n };\n /** Add an event listener. */\n RowNode.prototype.addEventListener = function (eventType, listener) {\n if (!this.eventService) {\n this.eventService = new EventService();\n }\n this.eventService.addEventListener(eventType, listener);\n };\n /** Remove event listener. */\n RowNode.prototype.removeEventListener = function (eventType, listener) {\n if (!this.eventService) {\n return;\n }\n this.eventService.removeEventListener(eventType, listener);\n if (this.eventService.noRegisteredListenersExist()) {\n this.eventService = null;\n }\n };\n RowNode.prototype.onMouseEnter = function () {\n this.dispatchLocalEvent(this.createLocalRowEvent(RowNode.EVENT_MOUSE_ENTER));\n };\n RowNode.prototype.onMouseLeave = function () {\n this.dispatchLocalEvent(this.createLocalRowEvent(RowNode.EVENT_MOUSE_LEAVE));\n };\n RowNode.prototype.getFirstChildOfFirstChild = function (rowGroupColumn) {\n var currentRowNode = this;\n var isCandidate = true;\n var foundFirstChildPath = false;\n var nodeToSwapIn = null;\n // if we are hiding groups, then if we are the first child, of the first child,\n // all the way up to the column we are interested in, then we show the group cell.\n while (isCandidate && !foundFirstChildPath) {\n var parentRowNode = currentRowNode.parent;\n var firstChild = exists(parentRowNode) && currentRowNode.firstChild;\n if (firstChild) {\n if (parentRowNode.rowGroupColumn === rowGroupColumn) {\n foundFirstChildPath = true;\n nodeToSwapIn = parentRowNode;\n }\n }\n else {\n isCandidate = false;\n }\n currentRowNode = parentRowNode;\n }\n return foundFirstChildPath ? nodeToSwapIn : null;\n };\n RowNode.prototype.isFullWidthCell = function () {\n var isFullWidthCellFunc = this.beans.gridOptionsWrapper.getIsFullWidthCellFunc();\n return isFullWidthCellFunc ? isFullWidthCellFunc(this) : false;\n };\n /**\n * Returns the route of the row node. If the Row Node is a group, it returns the route to that Row Node.\n * If the Row Node is not a group, it returns `undefined`.\n */\n RowNode.prototype.getRoute = function () {\n if (this.key == null) {\n return;\n }\n var res = [];\n var pointer = this;\n while (pointer.key != null) {\n res.push(pointer.key);\n pointer = pointer.parent;\n }\n return res.reverse();\n };\n RowNode.ID_PREFIX_ROW_GROUP = 'row-group-';\n RowNode.ID_PREFIX_TOP_PINNED = 't-';\n RowNode.ID_PREFIX_BOTTOM_PINNED = 'b-';\n RowNode.OBJECT_ID_SEQUENCE = 0;\n RowNode.EVENT_ROW_SELECTED = 'rowSelected';\n RowNode.EVENT_DATA_CHANGED = 'dataChanged';\n RowNode.EVENT_CELL_CHANGED = 'cellChanged';\n RowNode.EVENT_ALL_CHILDREN_COUNT_CHANGED = 'allChildrenCountChanged';\n RowNode.EVENT_MASTER_CHANGED = 'masterChanged';\n RowNode.EVENT_GROUP_CHANGED = 'groupChanged';\n RowNode.EVENT_MOUSE_ENTER = 'mouseEnter';\n RowNode.EVENT_MOUSE_LEAVE = 'mouseLeave';\n RowNode.EVENT_HEIGHT_CHANGED = 'heightChanged';\n RowNode.EVENT_TOP_CHANGED = 'topChanged';\n RowNode.EVENT_DISPLAYED_CHANGED = 'displayedChanged';\n RowNode.EVENT_FIRST_CHILD_CHANGED = 'firstChildChanged';\n RowNode.EVENT_LAST_CHILD_CHANGED = 'lastChildChanged';\n RowNode.EVENT_CHILD_INDEX_CHANGED = 'childIndexChanged';\n RowNode.EVENT_ROW_INDEX_CHANGED = 'rowIndexChanged';\n RowNode.EVENT_EXPANDED_CHANGED = 'expandedChanged';\n RowNode.EVENT_HAS_CHILDREN_CHANGED = 'hasChildrenChanged';\n RowNode.EVENT_SELECTABLE_CHANGED = 'selectableChanged';\n RowNode.EVENT_UI_LEVEL_CHANGED = 'uiLevelChanged';\n RowNode.EVENT_HIGHLIGHT_CHANGED = 'rowHighlightChanged';\n RowNode.EVENT_DRAGGING_CHANGED = 'draggingChanged';\n return RowNode;\n}());\nexport { RowNode };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { PostConstruct } from '../context/context';\nimport { Component } from '../widgets/component';\nimport { Events } from '../events';\nimport { RefSelector } from '../widgets/componentAnnotations';\nimport { RowNode } from '../entities/rowNode';\nimport { stopPropagationForAgGrid } from '../utils/event';\nvar CheckboxSelectionComponent = /** @class */ (function (_super) {\n __extends(CheckboxSelectionComponent, _super);\n function CheckboxSelectionComponent() {\n return _super.call(this, /* html*/ \"\\n
    \\n \\n
    \") || this;\n }\n CheckboxSelectionComponent.prototype.postConstruct = function () {\n this.eCheckbox.setPassive(true);\n };\n CheckboxSelectionComponent.prototype.getCheckboxId = function () {\n return this.eCheckbox.getInputElement().id;\n };\n CheckboxSelectionComponent.prototype.onDataChanged = function () {\n // when rows are loaded for the second time, this can impact the selection, as a row\n // could be loaded as already selected (if user scrolls down, and then up again).\n this.onSelectionChanged();\n };\n CheckboxSelectionComponent.prototype.onSelectableChanged = function () {\n this.showOrHideSelect();\n };\n CheckboxSelectionComponent.prototype.onSelectionChanged = function () {\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var state = this.rowNode.isSelected();\n var stateName = state === undefined\n ? translate('ariaIndeterminate', 'indeterminate')\n : (state === true\n ? translate('ariaChecked', 'checked')\n : translate('ariaUnchecked', 'unchecked'));\n var ariaLabel = translate('ariaRowToggleSelection', 'Press Space to toggle row selection');\n this.eCheckbox.setValue(state, true);\n this.eCheckbox.setInputAriaLabel(ariaLabel + \" (\" + stateName + \")\");\n };\n CheckboxSelectionComponent.prototype.onCheckedClicked = function (event) {\n var groupSelectsFiltered = this.gridOptionsWrapper.isGroupSelectsFiltered();\n var updatedCount = this.rowNode.setSelectedParams({ newValue: false, rangeSelect: event.shiftKey, groupSelectsFiltered: groupSelectsFiltered });\n return updatedCount;\n };\n CheckboxSelectionComponent.prototype.onUncheckedClicked = function (event) {\n var groupSelectsFiltered = this.gridOptionsWrapper.isGroupSelectsFiltered();\n var updatedCount = this.rowNode.setSelectedParams({ newValue: true, rangeSelect: event.shiftKey, groupSelectsFiltered: groupSelectsFiltered });\n return updatedCount;\n };\n CheckboxSelectionComponent.prototype.init = function (params) {\n var _this = this;\n this.rowNode = params.rowNode;\n this.column = params.column;\n this.onSelectionChanged();\n // we don't want the row clicked event to fire when selecting the checkbox, otherwise the row\n // would possibly get selected twice\n this.addGuiEventListener('click', function (event) { return stopPropagationForAgGrid(event); });\n // likewise we don't want double click on this icon to open a group\n this.addGuiEventListener('dblclick', function (event) { return stopPropagationForAgGrid(event); });\n this.addManagedListener(this.eCheckbox.getInputElement(), 'click', function (event) {\n var isSelected = _this.eCheckbox.getValue();\n var previousValue = _this.eCheckbox.getPreviousValue();\n if (previousValue === undefined || isSelected === undefined) {\n // Indeterminate state - try toggling children to determine action.\n var result = _this.onUncheckedClicked(event || {});\n if (result === 0) {\n _this.onCheckedClicked(event);\n }\n }\n else if (isSelected) {\n _this.onCheckedClicked(event);\n }\n else {\n _this.onUncheckedClicked(event || {});\n }\n });\n this.addManagedListener(this.rowNode, RowNode.EVENT_ROW_SELECTED, this.onSelectionChanged.bind(this));\n this.addManagedListener(this.rowNode, RowNode.EVENT_DATA_CHANGED, this.onDataChanged.bind(this));\n this.addManagedListener(this.rowNode, RowNode.EVENT_SELECTABLE_CHANGED, this.onSelectableChanged.bind(this));\n var isRowSelectableFunc = this.gridOptionsWrapper.getIsRowSelectableFunc();\n var checkboxVisibleIsDynamic = isRowSelectableFunc || this.checkboxCallbackExists();\n if (checkboxVisibleIsDynamic) {\n var showOrHideSelectListener = this.showOrHideSelect.bind(this);\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, showOrHideSelectListener);\n this.addManagedListener(this.rowNode, RowNode.EVENT_DATA_CHANGED, showOrHideSelectListener);\n this.addManagedListener(this.rowNode, RowNode.EVENT_CELL_CHANGED, showOrHideSelectListener);\n this.showOrHideSelect();\n }\n this.eCheckbox.getInputElement().setAttribute('tabindex', '-1');\n };\n CheckboxSelectionComponent.prototype.showOrHideSelect = function () {\n // if the isRowSelectable() is not provided the row node is selectable by default\n var selectable = this.rowNode.selectable;\n // checkboxSelection callback is deemed a legacy solution however we will still consider it's result.\n // If selectable, then also check the colDef callback. if not selectable, this it short circuits - no need\n // to call the colDef callback.\n if (selectable && this.checkboxCallbackExists()) {\n selectable = this.column.isCellCheckboxSelection(this.rowNode);\n }\n // show checkbox if both conditions are true\n this.setVisible(selectable);\n };\n CheckboxSelectionComponent.prototype.checkboxCallbackExists = function () {\n // column will be missing if groupUseEntireRow=true\n var colDef = this.column ? this.column.getColDef() : null;\n return !!colDef && typeof colDef.checkboxSelection === 'function';\n };\n __decorate([\n RefSelector('eCheckbox')\n ], CheckboxSelectionComponent.prototype, \"eCheckbox\", void 0);\n __decorate([\n PostConstruct\n ], CheckboxSelectionComponent.prototype, \"postConstruct\", null);\n return CheckboxSelectionComponent;\n}(Component));\nexport { CheckboxSelectionComponent };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nimport { BeanStub } from \"../context/beanStub\";\nimport { PostConstruct, Bean, Autowired, PreDestroy } from \"../context/context\";\nimport { escapeString } from \"../utils/string\";\nimport { createIcon } from \"../utils/icon\";\nimport { removeFromArray } from \"../utils/array\";\nimport { getBodyHeight, getBodyWidth } from \"../utils/browser\";\nimport { loadTemplate, clearElement } from \"../utils/dom\";\nimport { isFunction } from \"../utils/function\";\nexport var DragSourceType;\n(function (DragSourceType) {\n DragSourceType[DragSourceType[\"ToolPanel\"] = 0] = \"ToolPanel\";\n DragSourceType[DragSourceType[\"HeaderCell\"] = 1] = \"HeaderCell\";\n DragSourceType[DragSourceType[\"RowDrag\"] = 2] = \"RowDrag\";\n DragSourceType[DragSourceType[\"ChartPanel\"] = 3] = \"ChartPanel\";\n})(DragSourceType || (DragSourceType = {}));\nexport var VerticalDirection;\n(function (VerticalDirection) {\n VerticalDirection[VerticalDirection[\"Up\"] = 0] = \"Up\";\n VerticalDirection[VerticalDirection[\"Down\"] = 1] = \"Down\";\n})(VerticalDirection || (VerticalDirection = {}));\nexport var HorizontalDirection;\n(function (HorizontalDirection) {\n HorizontalDirection[HorizontalDirection[\"Left\"] = 0] = \"Left\";\n HorizontalDirection[HorizontalDirection[\"Right\"] = 1] = \"Right\";\n})(HorizontalDirection || (HorizontalDirection = {}));\nvar DragAndDropService = /** @class */ (function (_super) {\n __extends(DragAndDropService, _super);\n function DragAndDropService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.dragSourceAndParamsList = [];\n _this.dropTargets = [];\n return _this;\n }\n DragAndDropService_1 = DragAndDropService;\n DragAndDropService.prototype.init = function () {\n this.ePinnedIcon = createIcon('columnMovePin', this.gridOptionsWrapper, null);\n this.eHideIcon = createIcon('columnMoveHide', this.gridOptionsWrapper, null);\n this.eMoveIcon = createIcon('columnMoveMove', this.gridOptionsWrapper, null);\n this.eLeftIcon = createIcon('columnMoveLeft', this.gridOptionsWrapper, null);\n this.eRightIcon = createIcon('columnMoveRight', this.gridOptionsWrapper, null);\n this.eGroupIcon = createIcon('columnMoveGroup', this.gridOptionsWrapper, null);\n this.eAggregateIcon = createIcon('columnMoveValue', this.gridOptionsWrapper, null);\n this.ePivotIcon = createIcon('columnMovePivot', this.gridOptionsWrapper, null);\n this.eDropNotAllowedIcon = createIcon('dropNotAllowed', this.gridOptionsWrapper, null);\n };\n DragAndDropService.prototype.addDragSource = function (dragSource, allowTouch) {\n if (allowTouch === void 0) { allowTouch = false; }\n var params = {\n eElement: dragSource.eElement,\n dragStartPixels: dragSource.dragStartPixels,\n onDragStart: this.onDragStart.bind(this, dragSource),\n onDragStop: this.onDragStop.bind(this),\n onDragging: this.onDragging.bind(this)\n };\n this.dragSourceAndParamsList.push({ params: params, dragSource: dragSource });\n this.dragService.addDragSource(params, allowTouch);\n };\n DragAndDropService.prototype.removeDragSource = function (dragSource) {\n var sourceAndParams = this.dragSourceAndParamsList.find(function (item) { return item.dragSource === dragSource; });\n if (sourceAndParams) {\n this.dragService.removeDragSource(sourceAndParams.params);\n removeFromArray(this.dragSourceAndParamsList, sourceAndParams);\n }\n };\n DragAndDropService.prototype.clearDragSourceParamsList = function () {\n var _this = this;\n this.dragSourceAndParamsList.forEach(function (sourceAndParams) { return _this.dragService.removeDragSource(sourceAndParams.params); });\n this.dragSourceAndParamsList.length = 0;\n };\n DragAndDropService.prototype.nudge = function () {\n if (this.dragging) {\n this.onDragging(this.eventLastTime, true);\n }\n };\n DragAndDropService.prototype.onDragStart = function (dragSource, mouseEvent) {\n this.dragging = true;\n this.dragSource = dragSource;\n this.eventLastTime = mouseEvent;\n this.dragItem = this.dragSource.getDragItem();\n this.lastDropTarget = this.dragSource.dragSourceDropTarget;\n if (this.dragSource.onDragStarted) {\n this.dragSource.onDragStarted();\n }\n this.createGhost();\n };\n DragAndDropService.prototype.onDragStop = function (mouseEvent) {\n this.eventLastTime = null;\n this.dragging = false;\n if (this.dragSource.onDragStopped) {\n this.dragSource.onDragStopped();\n }\n if (this.lastDropTarget && this.lastDropTarget.onDragStop) {\n var draggingEvent = this.createDropTargetEvent(this.lastDropTarget, mouseEvent, null, null, false);\n this.lastDropTarget.onDragStop(draggingEvent);\n }\n this.lastDropTarget = null;\n this.dragItem = null;\n this.removeGhost();\n };\n DragAndDropService.prototype.onDragging = function (mouseEvent, fromNudge) {\n var _this = this;\n var hDirection = this.getHorizontalDirection(mouseEvent);\n var vDirection = this.getVerticalDirection(mouseEvent);\n this.eventLastTime = mouseEvent;\n this.positionGhost(mouseEvent);\n // check if mouseEvent intersects with any of the drop targets\n var validDropTargets = this.dropTargets.filter(function (target) { return _this.isMouseOnDropTarget(mouseEvent, target); });\n var len = validDropTargets.length;\n var dropTarget = null;\n if (len > 0) {\n dropTarget = len === 1\n ? validDropTargets[0]\n // the current mouse position could intersect with more than 1 element\n // if they are nested. In that case we need to get the most specific\n // container, which is the one that does not contain any other targets.\n : validDropTargets.reduce(function (prevTarget, currTarget) {\n if (!prevTarget) {\n return currTarget;\n }\n var prevContainer = prevTarget.getContainer();\n var currContainer = currTarget.getContainer();\n if (prevContainer.contains(currContainer)) {\n return currTarget;\n }\n return prevTarget;\n });\n }\n if (dropTarget !== this.lastDropTarget) {\n this.leaveLastTargetIfExists(mouseEvent, hDirection, vDirection, fromNudge);\n this.enterDragTargetIfExists(dropTarget, mouseEvent, hDirection, vDirection, fromNudge);\n this.lastDropTarget = dropTarget;\n }\n else if (dropTarget && dropTarget.onDragging) {\n var draggingEvent = this.createDropTargetEvent(dropTarget, mouseEvent, hDirection, vDirection, fromNudge);\n dropTarget.onDragging(draggingEvent);\n }\n };\n DragAndDropService.prototype.enterDragTargetIfExists = function (dropTarget, mouseEvent, hDirection, vDirection, fromNudge) {\n if (!dropTarget) {\n return;\n }\n if (dropTarget.onDragEnter) {\n var dragEnterEvent = this.createDropTargetEvent(dropTarget, mouseEvent, hDirection, vDirection, fromNudge);\n dropTarget.onDragEnter(dragEnterEvent);\n }\n this.setGhostIcon(dropTarget.getIconName ? dropTarget.getIconName() : null);\n };\n DragAndDropService.prototype.leaveLastTargetIfExists = function (mouseEvent, hDirection, vDirection, fromNudge) {\n if (!this.lastDropTarget) {\n return;\n }\n if (this.lastDropTarget.onDragLeave) {\n var dragLeaveEvent = this.createDropTargetEvent(this.lastDropTarget, mouseEvent, hDirection, vDirection, fromNudge);\n this.lastDropTarget.onDragLeave(dragLeaveEvent);\n }\n this.setGhostIcon(null);\n };\n DragAndDropService.prototype.getAllContainersFromDropTarget = function (dropTarget) {\n var secondaryContainers = dropTarget.getSecondaryContainers ? dropTarget.getSecondaryContainers() : null;\n var containers = [[dropTarget.getContainer()]];\n return secondaryContainers ? containers.concat(secondaryContainers) : containers;\n };\n DragAndDropService.prototype.allContainersIntersect = function (mouseEvent, containers) {\n var e_1, _a;\n try {\n for (var containers_1 = __values(containers), containers_1_1 = containers_1.next(); !containers_1_1.done; containers_1_1 = containers_1.next()) {\n var container = containers_1_1.value;\n var rect = container.getBoundingClientRect();\n // if element is not visible, then width and height are zero\n if (rect.width === 0 || rect.height === 0) {\n return false;\n }\n var horizontalFit = mouseEvent.clientX >= rect.left && mouseEvent.clientX < rect.right;\n var verticalFit = mouseEvent.clientY >= rect.top && mouseEvent.clientY < rect.bottom;\n if (!horizontalFit || !verticalFit) {\n return false;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (containers_1_1 && !containers_1_1.done && (_a = containers_1.return)) _a.call(containers_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return true;\n };\n // checks if the mouse is on the drop target. it checks eContainer and eSecondaryContainers\n DragAndDropService.prototype.isMouseOnDropTarget = function (mouseEvent, dropTarget) {\n var e_2, _a;\n var allContainersFromDropTarget = this.getAllContainersFromDropTarget(dropTarget);\n var mouseOverTarget = false;\n try {\n for (var allContainersFromDropTarget_1 = __values(allContainersFromDropTarget), allContainersFromDropTarget_1_1 = allContainersFromDropTarget_1.next(); !allContainersFromDropTarget_1_1.done; allContainersFromDropTarget_1_1 = allContainersFromDropTarget_1.next()) {\n var currentContainers = allContainersFromDropTarget_1_1.value;\n if (this.allContainersIntersect(mouseEvent, currentContainers)) {\n mouseOverTarget = true;\n break;\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (allContainersFromDropTarget_1_1 && !allContainersFromDropTarget_1_1.done && (_a = allContainersFromDropTarget_1.return)) _a.call(allContainersFromDropTarget_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n return mouseOverTarget && dropTarget.isInterestedIn(this.dragSource.type);\n };\n DragAndDropService.prototype.addDropTarget = function (dropTarget) {\n this.dropTargets.push(dropTarget);\n };\n DragAndDropService.prototype.removeDropTarget = function (dropTarget) {\n this.dropTargets = this.dropTargets.filter(function (target) { return target.getContainer() !== dropTarget.getContainer(); });\n };\n DragAndDropService.prototype.hasExternalDropZones = function () {\n return this.dropTargets.some(function (zones) { return zones.external; });\n };\n DragAndDropService.prototype.findExternalZone = function (params) {\n var externalTargets = this.dropTargets.filter(function (target) { return target.external; });\n return externalTargets.find(function (zone) { return zone.getContainer() === params.getContainer(); }) || null;\n };\n DragAndDropService.prototype.getHorizontalDirection = function (event) {\n var clientX = this.eventLastTime && this.eventLastTime.clientX;\n var eClientX = event.clientX;\n if (clientX === eClientX) {\n return null;\n }\n return clientX > eClientX ? HorizontalDirection.Left : HorizontalDirection.Right;\n };\n DragAndDropService.prototype.getVerticalDirection = function (event) {\n var clientY = this.eventLastTime && this.eventLastTime.clientY;\n var eClientY = event.clientY;\n if (clientY === eClientY) {\n return null;\n }\n return clientY > eClientY ? VerticalDirection.Up : VerticalDirection.Down;\n };\n DragAndDropService.prototype.createDropTargetEvent = function (dropTarget, event, hDirection, vDirection, fromNudge) {\n // localise x and y to the target\n var dropZoneTarget = dropTarget.getContainer();\n var rect = dropZoneTarget.getBoundingClientRect();\n var _a = this, api = _a.gridApi, columnApi = _a.columnApi, dragItem = _a.dragItem, dragSource = _a.dragSource;\n var x = event.clientX - rect.left;\n var y = event.clientY - rect.top;\n return { event: event, x: x, y: y, vDirection: vDirection, hDirection: hDirection, dragSource: dragSource, fromNudge: fromNudge, dragItem: dragItem, api: api, columnApi: columnApi, dropZoneTarget: dropZoneTarget };\n };\n DragAndDropService.prototype.positionGhost = function (event) {\n var ghost = this.eGhost;\n if (!ghost) {\n return;\n }\n var ghostRect = ghost.getBoundingClientRect();\n var ghostHeight = ghostRect.height;\n // for some reason, without the '-2', it still overlapped by 1 or 2 pixels, which\n // then brought in scrollbars to the browser. no idea why, but putting in -2 here\n // works around it which is good enough for me.\n var browserWidth = getBodyWidth() - 2;\n var browserHeight = getBodyHeight() - 2;\n var top = event.pageY - (ghostHeight / 2);\n var left = event.pageX - 10;\n var eDocument = this.gridOptionsWrapper.getDocument();\n var win = (eDocument.defaultView || window);\n var windowScrollY = win.pageYOffset || eDocument.documentElement.scrollTop;\n var windowScrollX = win.pageXOffset || eDocument.documentElement.scrollLeft;\n // check ghost is not positioned outside of the browser\n if (browserWidth > 0 && ((left + ghost.clientWidth) > (browserWidth + windowScrollX))) {\n left = browserWidth + windowScrollX - ghost.clientWidth;\n }\n if (left < 0) {\n left = 0;\n }\n if (browserHeight > 0 && ((top + ghost.clientHeight) > (browserHeight + windowScrollY))) {\n top = browserHeight + windowScrollY - ghost.clientHeight;\n }\n if (top < 0) {\n top = 0;\n }\n ghost.style.left = left + \"px\";\n ghost.style.top = top + \"px\";\n };\n DragAndDropService.prototype.removeGhost = function () {\n if (this.eGhost && this.eGhostParent) {\n this.eGhostParent.removeChild(this.eGhost);\n }\n this.eGhost = null;\n };\n DragAndDropService.prototype.createGhost = function () {\n this.eGhost = loadTemplate(DragAndDropService_1.GHOST_TEMPLATE);\n var theme = this.environment.getTheme().theme;\n if (theme) {\n this.eGhost.classList.add(theme);\n }\n this.eGhostIcon = this.eGhost.querySelector('.ag-dnd-ghost-icon');\n this.setGhostIcon(null);\n var eText = this.eGhost.querySelector('.ag-dnd-ghost-label');\n var dragItemName = this.dragSource.dragItemName;\n if (isFunction(dragItemName)) {\n dragItemName = dragItemName();\n }\n eText.innerHTML = escapeString(dragItemName) || '';\n this.eGhost.style.height = '25px';\n this.eGhost.style.top = '20px';\n this.eGhost.style.left = '20px';\n var eDocument = this.gridOptionsWrapper.getDocument();\n var targetEl = null;\n try {\n targetEl = eDocument.fullscreenElement;\n }\n catch (e) {\n // some environments like SalesForce will throw errors\n // simply by trying to read the fullscreenElement property\n }\n finally {\n if (!targetEl) {\n targetEl = eDocument.querySelector('body');\n }\n }\n this.eGhostParent = targetEl;\n if (!this.eGhostParent) {\n console.warn('AG Grid: could not find document body, it is needed for dragging columns');\n }\n else {\n this.eGhostParent.appendChild(this.eGhost);\n }\n };\n DragAndDropService.prototype.setGhostIcon = function (iconName, shake) {\n if (shake === void 0) { shake = false; }\n clearElement(this.eGhostIcon);\n var eIcon = null;\n if (!iconName) {\n iconName = this.dragSource.defaultIconName || DragAndDropService_1.ICON_NOT_ALLOWED;\n }\n switch (iconName) {\n case DragAndDropService_1.ICON_PINNED:\n eIcon = this.ePinnedIcon;\n break;\n case DragAndDropService_1.ICON_MOVE:\n eIcon = this.eMoveIcon;\n break;\n case DragAndDropService_1.ICON_LEFT:\n eIcon = this.eLeftIcon;\n break;\n case DragAndDropService_1.ICON_RIGHT:\n eIcon = this.eRightIcon;\n break;\n case DragAndDropService_1.ICON_GROUP:\n eIcon = this.eGroupIcon;\n break;\n case DragAndDropService_1.ICON_AGGREGATE:\n eIcon = this.eAggregateIcon;\n break;\n case DragAndDropService_1.ICON_PIVOT:\n eIcon = this.ePivotIcon;\n break;\n case DragAndDropService_1.ICON_NOT_ALLOWED:\n eIcon = this.eDropNotAllowedIcon;\n break;\n case DragAndDropService_1.ICON_HIDE:\n eIcon = this.eHideIcon;\n break;\n }\n this.eGhostIcon.classList.toggle('ag-shake-left-to-right', shake);\n if (eIcon === this.eHideIcon && this.gridOptionsWrapper.isSuppressDragLeaveHidesColumns()) {\n return;\n }\n if (eIcon) {\n this.eGhostIcon.appendChild(eIcon);\n }\n };\n var DragAndDropService_1;\n DragAndDropService.ICON_PINNED = 'pinned';\n DragAndDropService.ICON_MOVE = 'move';\n DragAndDropService.ICON_LEFT = 'left';\n DragAndDropService.ICON_RIGHT = 'right';\n DragAndDropService.ICON_GROUP = 'group';\n DragAndDropService.ICON_AGGREGATE = 'aggregate';\n DragAndDropService.ICON_PIVOT = 'pivot';\n DragAndDropService.ICON_NOT_ALLOWED = 'notAllowed';\n DragAndDropService.ICON_HIDE = 'hide';\n DragAndDropService.GHOST_TEMPLATE = \"
    \\n \\n
    \\n
    \";\n __decorate([\n Autowired('dragService')\n ], DragAndDropService.prototype, \"dragService\", void 0);\n __decorate([\n Autowired('environment')\n ], DragAndDropService.prototype, \"environment\", void 0);\n __decorate([\n Autowired('columnApi')\n ], DragAndDropService.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], DragAndDropService.prototype, \"gridApi\", void 0);\n __decorate([\n PostConstruct\n ], DragAndDropService.prototype, \"init\", null);\n __decorate([\n PreDestroy\n ], DragAndDropService.prototype, \"clearDragSourceParamsList\", null);\n DragAndDropService = DragAndDropService_1 = __decorate([\n Bean('dragAndDropService')\n ], DragAndDropService);\n return DragAndDropService;\n}(BeanStub));\nexport { DragAndDropService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component } from \"../../widgets/component\";\nimport { Autowired, PostConstruct, PreDestroy } from \"../../context/context\";\nimport { RowNode } from \"../../entities/rowNode\";\nimport { DragSourceType } from \"../../dragAndDrop/dragAndDropService\";\nimport { Events } from \"../../eventKeys\";\nimport { BeanStub } from \"../../context/beanStub\";\nimport { createIconNoSpan } from \"../../utils/icon\";\nimport { doOnce, isFunction } from \"../../utils/function\";\nvar RowDragComp = /** @class */ (function (_super) {\n __extends(RowDragComp, _super);\n function RowDragComp(cellValueFn, rowNode, column, customGui, dragStartPixels, suppressVisibilityChange) {\n var _this = _super.call(this) || this;\n _this.cellValueFn = cellValueFn;\n _this.rowNode = rowNode;\n _this.column = column;\n _this.customGui = customGui;\n _this.dragStartPixels = dragStartPixels;\n _this.suppressVisibilityChange = suppressVisibilityChange;\n _this.dragSource = null;\n return _this;\n }\n RowDragComp.prototype.isCustomGui = function () {\n return this.customGui != null;\n };\n RowDragComp.prototype.postConstruct = function () {\n if (!this.customGui) {\n this.setTemplate(/* html */ \"
    \");\n this.getGui().appendChild(createIconNoSpan('rowDrag', this.beans.gridOptionsWrapper, null));\n this.addDragSource();\n }\n else {\n this.setDragElement(this.customGui, this.dragStartPixels);\n }\n this.checkCompatibility();\n if (!this.suppressVisibilityChange) {\n var strategy = this.beans.gridOptionsWrapper.isRowDragManaged() ?\n new ManagedVisibilityStrategy(this, this.beans, this.rowNode, this.column) :\n new NonManagedVisibilityStrategy(this, this.beans, this.rowNode, this.column);\n this.createManagedBean(strategy, this.beans.context);\n }\n };\n RowDragComp.prototype.setDragElement = function (dragElement, dragStartPixels) {\n this.setTemplateFromElement(dragElement);\n this.addDragSource(dragStartPixels);\n };\n RowDragComp.prototype.getSelectedCount = function () {\n var isRowDragMultiRow = this.beans.gridOptionsWrapper.isRowDragMultiRow();\n if (!isRowDragMultiRow) {\n return 1;\n }\n var selection = this.beans.selectionService.getSelectedNodes();\n return selection.indexOf(this.rowNode) !== -1 ? selection.length : 1;\n };\n // returns true if all compatibility items work out\n RowDragComp.prototype.checkCompatibility = function () {\n var managed = this.beans.gridOptionsWrapper.isRowDragManaged();\n var treeData = this.beans.gridOptionsWrapper.isTreeData();\n if (treeData && managed) {\n doOnce(function () {\n return console.warn('AG Grid: If using row drag with tree data, you cannot have rowDragManaged=true');\n }, 'RowDragComp.managedAndTreeData');\n }\n };\n RowDragComp.prototype.addDragSource = function (dragStartPixels) {\n var _this = this;\n if (dragStartPixels === void 0) { dragStartPixels = 4; }\n // if this is changing the drag element, delete the previous dragSource\n if (this.dragSource) {\n this.removeDragSource();\n }\n var dragItem = {\n rowNode: this.rowNode,\n columns: this.column ? [this.column] : undefined,\n defaultTextValue: this.cellValueFn(),\n };\n var rowDragText = this.column && this.column.getColDef().rowDragText;\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n this.dragSource = {\n type: DragSourceType.RowDrag,\n eElement: this.getGui(),\n dragItemName: function () {\n var dragItemCount = _this.getSelectedCount();\n if (rowDragText) {\n return rowDragText(dragItem, dragItemCount);\n }\n return dragItemCount === 1 ? _this.cellValueFn() : dragItemCount + \" \" + translate('rowDragRows', 'rows');\n },\n getDragItem: function () { return dragItem; },\n dragStartPixels: dragStartPixels,\n dragSourceDomDataKey: this.beans.gridOptionsWrapper.getDomDataKey()\n };\n this.beans.dragAndDropService.addDragSource(this.dragSource, true);\n };\n RowDragComp.prototype.removeDragSource = function () {\n if (this.dragSource) {\n this.beans.dragAndDropService.removeDragSource(this.dragSource);\n }\n this.dragSource = null;\n };\n __decorate([\n Autowired('beans')\n ], RowDragComp.prototype, \"beans\", void 0);\n __decorate([\n PostConstruct\n ], RowDragComp.prototype, \"postConstruct\", null);\n __decorate([\n PreDestroy\n ], RowDragComp.prototype, \"removeDragSource\", null);\n return RowDragComp;\n}(Component));\nexport { RowDragComp };\nvar VisibilityStrategy = /** @class */ (function (_super) {\n __extends(VisibilityStrategy, _super);\n function VisibilityStrategy(parent, rowNode, column) {\n var _this = _super.call(this) || this;\n _this.parent = parent;\n _this.rowNode = rowNode;\n _this.column = column;\n return _this;\n }\n VisibilityStrategy.prototype.setDisplayedOrVisible = function (neverDisplayed) {\n if (neverDisplayed) {\n this.parent.setDisplayed(false);\n }\n else {\n var shown = true;\n var isShownSometimes = false;\n if (this.column) {\n shown = this.column.isRowDrag(this.rowNode) || this.parent.isCustomGui();\n isShownSometimes = isFunction(this.column.getColDef().rowDrag);\n }\n // if shown sometimes, them some rows can have drag handle while other don't,\n // so we use setVisible to keep the handles horizontally aligned (as setVisible\n // keeps the empty space, whereas setDisplayed looses the space)\n if (isShownSometimes) {\n this.parent.setDisplayed(true);\n this.parent.setVisible(shown);\n }\n else {\n this.parent.setDisplayed(shown);\n this.parent.setVisible(true);\n }\n }\n };\n return VisibilityStrategy;\n}(BeanStub));\n// when non managed, the visibility depends on suppressRowDrag property only\nvar NonManagedVisibilityStrategy = /** @class */ (function (_super) {\n __extends(NonManagedVisibilityStrategy, _super);\n function NonManagedVisibilityStrategy(parent, beans, rowNode, column) {\n var _this = _super.call(this, parent, rowNode, column) || this;\n _this.beans = beans;\n return _this;\n }\n NonManagedVisibilityStrategy.prototype.postConstruct = function () {\n this.addManagedListener(this.beans.gridOptionsWrapper, 'suppressRowDrag', this.onSuppressRowDrag.bind(this));\n // in case data changes, then we need to update visibility of drag item\n this.addManagedListener(this.rowNode, RowNode.EVENT_DATA_CHANGED, this.workOutVisibility.bind(this));\n this.addManagedListener(this.rowNode, RowNode.EVENT_CELL_CHANGED, this.workOutVisibility.bind(this));\n this.addManagedListener(this.rowNode, RowNode.EVENT_CELL_CHANGED, this.workOutVisibility.bind(this));\n this.addManagedListener(this.beans.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.workOutVisibility.bind(this));\n this.workOutVisibility();\n };\n NonManagedVisibilityStrategy.prototype.onSuppressRowDrag = function () {\n this.workOutVisibility();\n };\n NonManagedVisibilityStrategy.prototype.workOutVisibility = function () {\n // only show the drag if both sort and filter are not present\n var neverDisplayed = this.beans.gridOptionsWrapper.isSuppressRowDrag();\n this.setDisplayedOrVisible(neverDisplayed);\n };\n __decorate([\n PostConstruct\n ], NonManagedVisibilityStrategy.prototype, \"postConstruct\", null);\n return NonManagedVisibilityStrategy;\n}(VisibilityStrategy));\n// when managed, the visibility depends on sort, filter and row group, as well as suppressRowDrag property\nvar ManagedVisibilityStrategy = /** @class */ (function (_super) {\n __extends(ManagedVisibilityStrategy, _super);\n function ManagedVisibilityStrategy(parent, beans, rowNode, column) {\n var _this = _super.call(this, parent, rowNode, column) || this;\n _this.beans = beans;\n return _this;\n }\n ManagedVisibilityStrategy.prototype.postConstruct = function () {\n // we do not show the component if sort, filter or grouping is active\n this.addManagedListener(this.beans.eventService, Events.EVENT_SORT_CHANGED, this.workOutVisibility.bind(this));\n this.addManagedListener(this.beans.eventService, Events.EVENT_FILTER_CHANGED, this.workOutVisibility.bind(this));\n this.addManagedListener(this.beans.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.workOutVisibility.bind(this));\n this.addManagedListener(this.beans.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.workOutVisibility.bind(this));\n // in case data changes, then we need to update visibility of drag item\n this.addManagedListener(this.rowNode, RowNode.EVENT_DATA_CHANGED, this.workOutVisibility.bind(this));\n this.addManagedListener(this.rowNode, RowNode.EVENT_CELL_CHANGED, this.workOutVisibility.bind(this));\n this.addManagedListener(this.beans.gridOptionsWrapper, 'suppressRowDrag', this.onSuppressRowDrag.bind(this));\n this.workOutVisibility();\n };\n ManagedVisibilityStrategy.prototype.onSuppressRowDrag = function () {\n this.workOutVisibility();\n };\n ManagedVisibilityStrategy.prototype.workOutVisibility = function () {\n // only show the drag if both sort and filter are not present\n var gridBodyCon = this.beans.ctrlsService.getGridBodyCtrl();\n var rowDragFeature = gridBodyCon.getRowDragFeature();\n var shouldPreventRowMove = rowDragFeature && rowDragFeature.shouldPreventRowMove();\n var suppressRowDrag = this.beans.gridOptionsWrapper.isSuppressRowDrag();\n var hasExternalDropZones = this.beans.dragAndDropService.hasExternalDropZones();\n var neverDisplayed = (shouldPreventRowMove && !hasExternalDropZones) || suppressRowDrag;\n this.setDisplayedOrVisible(neverDisplayed);\n };\n __decorate([\n PostConstruct\n ], ManagedVisibilityStrategy.prototype, \"postConstruct\", null);\n return ManagedVisibilityStrategy;\n}(VisibilityStrategy));\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __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};\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Constants } from \"../../constants/constants\";\nimport { KeyCode } from \"../../constants/keyCode\";\nimport { BeanStub } from \"../../context/beanStub\";\nimport { Autowired } from \"../../context/context\";\nimport { RowNode } from \"../../entities/rowNode\";\nimport { isElementInEventPath, isStopPropagationForAgGrid, stopPropagationForAgGrid } from \"../../utils/event\";\nimport { doOnce } from \"../../utils/function\";\nimport { missing } from \"../../utils/generic\";\nimport { createIconNoSpan } from \"../../utils/icon\";\nimport { cloneObject } from \"../../utils/object\";\nimport { CheckboxSelectionComponent } from \"../checkboxSelectionComponent\";\nimport { RowDragComp } from \"../row/rowDragComp\";\nvar GroupCellRendererCtrl = /** @class */ (function (_super) {\n __extends(GroupCellRendererCtrl, _super);\n function GroupCellRendererCtrl() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n GroupCellRendererCtrl.prototype.init = function (comp, eGui, eCheckbox, eExpanded, eContracted, compClass, params) {\n this.params = params;\n this.eGui = eGui;\n this.eCheckbox = eCheckbox;\n this.eExpanded = eExpanded;\n this.eContracted = eContracted;\n this.comp = comp;\n this.compClass = compClass;\n var topLevelFooter = this.isTopLevelFooter();\n var embeddedRowMismatch = this.isEmbeddedRowMismatch();\n // This allows for empty strings to appear as groups since\n // it will only return for null or undefined.\n var nullValue = params.value == null;\n var skipCell = false;\n // if the groupCellRenderer is inside of a footer and groupHideOpenParents is true\n // we should only display the groupCellRenderer if the current column is the rowGroupedColumn\n if (this.gridOptionsWrapper.isGroupIncludeFooter() && this.gridOptionsWrapper.isGroupHideOpenParents()) {\n var node = params.node;\n if (node.footer) {\n var showRowGroup = params.colDef && params.colDef.showRowGroup;\n var rowGroupColumnId = node.rowGroupColumn && node.rowGroupColumn.getColId();\n skipCell = showRowGroup !== rowGroupColumnId;\n }\n }\n this.cellIsBlank = topLevelFooter ? false : (embeddedRowMismatch || nullValue || skipCell);\n if (this.cellIsBlank) {\n return;\n }\n this.setupShowingValueForOpenedParent();\n this.findDisplayedGroupNode();\n this.addFullWidthRowDraggerIfNeeded();\n this.addExpandAndContract();\n this.addCheckboxIfNeeded();\n this.addValueElement();\n this.setupIndent();\n };\n GroupCellRendererCtrl.prototype.isTopLevelFooter = function () {\n if (!this.gridOptionsWrapper.isGroupIncludeTotalFooter()) {\n return false;\n }\n if (this.params.value != null || this.params.node.level != -1) {\n return false;\n }\n // at this point, we know it's the root node and there is no value present, so it's a footer cell.\n // the only thing to work out is if we are displaying groups across multiple\n // columns (groupMultiAutoColumn=true), we only want 'total' to appear in the first column.\n var colDef = this.params.colDef;\n var doingFullWidth = colDef == null;\n if (doingFullWidth) {\n return true;\n }\n if (colDef.showRowGroup === true) {\n return true;\n }\n var rowGroupCols = this.columnModel.getRowGroupColumns();\n // this is a sanity check, rowGroupCols should always be present\n if (!rowGroupCols || rowGroupCols.length === 0) {\n return true;\n }\n var firstRowGroupCol = rowGroupCols[0];\n return firstRowGroupCol.getId() === colDef.showRowGroup;\n };\n // if we are doing embedded full width rows, we only show the renderer when\n // in the body, or if pinning in the pinned section, or if pinning and RTL,\n // in the right section. otherwise we would have the cell repeated in each section.\n GroupCellRendererCtrl.prototype.isEmbeddedRowMismatch = function () {\n if (!this.params.fullWidth || !this.gridOptionsWrapper.isEmbedFullWidthRows()) {\n return false;\n }\n var pinnedLeftCell = this.params.pinned === Constants.PINNED_LEFT;\n var pinnedRightCell = this.params.pinned === Constants.PINNED_RIGHT;\n var bodyCell = !pinnedLeftCell && !pinnedRightCell;\n if (this.gridOptionsWrapper.isEnableRtl()) {\n if (this.columnModel.isPinningLeft()) {\n return !pinnedRightCell;\n }\n return !bodyCell;\n }\n if (this.columnModel.isPinningLeft()) {\n return !pinnedLeftCell;\n }\n return !bodyCell;\n };\n GroupCellRendererCtrl.prototype.findDisplayedGroupNode = function () {\n var column = this.params.column;\n var rowNode = this.params.node;\n if (this.showingValueForOpenedParent) {\n var pointer = rowNode.parent;\n while (pointer != null) {\n if (pointer.rowGroupColumn && column.isRowGroupDisplayed(pointer.rowGroupColumn.getId())) {\n this.displayedGroupNode = pointer;\n break;\n }\n pointer = pointer.parent;\n }\n }\n // if we didn't find a displayed group, set it to the row node\n if (missing(this.displayedGroupNode)) {\n this.displayedGroupNode = rowNode;\n }\n };\n GroupCellRendererCtrl.prototype.setupShowingValueForOpenedParent = function () {\n // note - this code depends on sortService.updateGroupDataForHiddenOpenParents, where group data\n // is updated to reflect the dragged down parents\n var rowNode = this.params.node;\n var column = this.params.column;\n if (!this.gridOptionsWrapper.isGroupHideOpenParents()) {\n this.showingValueForOpenedParent = false;\n return;\n }\n // hideOpenParents means rowNode.groupData can have data for the group this column is displaying, even though\n // this rowNode isn't grouping by the column we are displaying\n // if no groupData at all, we are not showing a parent value\n if (!rowNode.groupData) {\n this.showingValueForOpenedParent = false;\n return;\n }\n // this is the normal case, in that we are showing a group for which this column is configured. note that\n // this means the Row Group is closed (if it was open, we would not be displaying it)\n var showingGroupNode = rowNode.rowGroupColumn != null;\n if (showingGroupNode) {\n var keyOfGroupingColumn = rowNode.rowGroupColumn.getId();\n var configuredToShowThisGroupLevel = column.isRowGroupDisplayed(keyOfGroupingColumn);\n // if showing group as normal, we didn't take group info from parent\n if (configuredToShowThisGroupLevel) {\n this.showingValueForOpenedParent = false;\n return;\n }\n }\n // see if we are showing a Group Value for the Displayed Group. if we are showing a group value, and this Row Node\n // is not grouping by this Displayed Group, we must of gotten the value from a parent node\n var valPresent = rowNode.groupData[column.getId()] != null;\n this.showingValueForOpenedParent = valPresent;\n };\n GroupCellRendererCtrl.prototype.addValueElement = function () {\n if (this.displayedGroupNode.footer) {\n this.addFooterValue();\n }\n else {\n this.addGroupValue();\n this.addChildCount();\n }\n };\n GroupCellRendererCtrl.prototype.addGroupValue = function () {\n // we try and use the cellRenderer of the column used for the grouping if we can\n var paramsAdjusted = this.adjustParamsWithDetailsFromRelatedColumn();\n var innerCompDetails = this.getInnerCompDetails(paramsAdjusted);\n var valueFormatted = paramsAdjusted.valueFormatted, value = paramsAdjusted.value;\n var valueWhenNoRenderer = valueFormatted != null ? valueFormatted : value;\n this.comp.setInnerRenderer(innerCompDetails, valueWhenNoRenderer);\n };\n GroupCellRendererCtrl.prototype.adjustParamsWithDetailsFromRelatedColumn = function () {\n var relatedColumn = this.displayedGroupNode.rowGroupColumn;\n var column = this.params.column;\n if (!relatedColumn) {\n return this.params;\n }\n var notFullWidth = column != null;\n if (notFullWidth) {\n var showingThisRowGroup = column.isRowGroupDisplayed(relatedColumn.getId());\n if (!showingThisRowGroup) {\n return this.params;\n }\n }\n var params = this.params;\n var _a = this.params, value = _a.value, scope = _a.scope, node = _a.node;\n var valueFormatted = this.valueFormatterService.formatValue(relatedColumn, node, scope, value);\n // we don't update the original params, as they could of come through React,\n // as react has RowGroupCellRenderer, which means the params could be props which\n // would be read only\n var paramsAdjusted = __assign(__assign({}, params), { valueFormatted: valueFormatted });\n return paramsAdjusted;\n };\n GroupCellRendererCtrl.prototype.addFooterValue = function () {\n var footerValueGetter = this.params.footerValueGetter;\n var footerValue = '';\n if (footerValueGetter) {\n // params is same as we were given, except we set the value as the item to display\n var paramsClone = cloneObject(this.params);\n paramsClone.value = this.params.value;\n if (typeof footerValueGetter === 'function') {\n footerValue = footerValueGetter(paramsClone);\n }\n else if (typeof footerValueGetter === 'string') {\n footerValue = this.expressionService.evaluate(footerValueGetter, paramsClone);\n }\n else {\n console.warn('AG Grid: footerValueGetter should be either a function or a string (expression)');\n }\n }\n else {\n footerValue = 'Total ' + (this.params.value != null ? this.params.value : '');\n }\n var innerCompDetails = this.getInnerCompDetails(this.params);\n this.comp.setInnerRenderer(innerCompDetails, footerValue);\n };\n GroupCellRendererCtrl.prototype.getInnerCompDetails = function (params) {\n var _this = this;\n // for full width rows, we don't do any of the below\n if (params.fullWidth) {\n return this.userComponentFactory.getFullWidthGroupRowInnerCellRenderer(this.gridOptions.groupRowRendererParams, params);\n }\n // when grouping, the normal case is we use the cell renderer of the grouped column. eg if grouping by country\n // and then rating, we will use the country cell renderer for each country group row and likewise the rating\n // cell renderer for each rating group row.\n //\n // however if the user has innerCellRenderer defined, this gets preference and we don't use cell renderers\n // of the grouped columns.\n //\n // so we check and use in the following order:\n //\n // 1) thisColDef.cellRendererParams.innerRenderer of the column showing the groups (eg auto group column)\n // 2) groupedColDef.cellRenderer of the grouped column\n // 3) groupedColDef.cellRendererParams.innerRenderer\n // we check if cell renderer provided for the group cell renderer, eg colDef.cellRendererParams.innerRenderer\n var innerCompDetails = this.userComponentFactory\n .getInnerRendererDetails(params, params);\n // avoid using GroupCellRenderer again, otherwise stack overflow, as we insert same renderer again and again.\n // this covers off chance user is grouping by a column that is also configured with GroupCellRenderer\n var isGroupRowRenderer = function (details) { return details && details.componentClass == _this.compClass; };\n if (innerCompDetails && !isGroupRowRenderer(innerCompDetails)) {\n // use the renderer defined in cellRendererParams.innerRenderer\n return innerCompDetails;\n }\n var relatedColumn = this.displayedGroupNode.rowGroupColumn;\n var relatedColDef = relatedColumn ? relatedColumn.getColDef() : undefined;\n if (!relatedColDef) {\n return;\n }\n // otherwise see if we can use the cellRenderer of the column we are grouping by\n var relatedCompDetails = this.userComponentFactory\n .getCellRendererDetails(relatedColDef, params);\n if (relatedCompDetails && !isGroupRowRenderer(relatedCompDetails)) {\n // Only if the original column is using a specific renderer, it it is a using a DEFAULT one ignore it\n return relatedCompDetails;\n }\n if (isGroupRowRenderer(relatedCompDetails) &&\n relatedColDef.cellRendererParams &&\n relatedColDef.cellRendererParams.innerRenderer) {\n // edge case - this comes from a column which has been grouped dynamically, that has a renderer 'group'\n // and has an inner cell renderer\n var res = this.userComponentFactory.getInnerRendererDetails(relatedColDef.cellRendererParams, params);\n return res;\n }\n };\n GroupCellRendererCtrl.prototype.addChildCount = function () {\n // only include the child count if it's included, eg if user doing custom aggregation,\n // then this could be left out, or set to -1, ie no child count\n if (this.params.suppressCount) {\n return;\n }\n this.addManagedListener(this.displayedGroupNode, RowNode.EVENT_ALL_CHILDREN_COUNT_CHANGED, this.updateChildCount.bind(this));\n // filtering changes the child count, so need to cater for it\n this.updateChildCount();\n };\n GroupCellRendererCtrl.prototype.updateChildCount = function () {\n var allChildrenCount = this.displayedGroupNode.allChildrenCount;\n var showingGroupForThisNode = this.isShowRowGroupForThisRow();\n var showCount = showingGroupForThisNode && allChildrenCount != null && allChildrenCount >= 0;\n var countString = showCount ? \"(\" + allChildrenCount + \")\" : \"\";\n this.comp.setChildCount(countString);\n };\n GroupCellRendererCtrl.prototype.isShowRowGroupForThisRow = function () {\n if (this.gridOptionsWrapper.isTreeData()) {\n return true;\n }\n var rowGroupColumn = this.displayedGroupNode.rowGroupColumn;\n if (!rowGroupColumn) {\n return false;\n }\n // column is null for fullWidthRows\n var column = this.params.column;\n var thisColumnIsInterested = column == null || column.isRowGroupDisplayed(rowGroupColumn.getId());\n return thisColumnIsInterested;\n };\n GroupCellRendererCtrl.prototype.addExpandAndContract = function () {\n var params = this.params;\n var eExpandedIcon = createIconNoSpan('groupExpanded', this.gridOptionsWrapper, null);\n var eContractedIcon = createIconNoSpan('groupContracted', this.gridOptionsWrapper, null);\n if (eExpandedIcon) {\n this.eExpanded.appendChild(eExpandedIcon);\n }\n if (eContractedIcon) {\n this.eContracted.appendChild(eContractedIcon);\n }\n var eGroupCell = params.eGridCell;\n // if editing groups, then double click is to start editing\n if (!this.gridOptionsWrapper.isEnableGroupEdit() && this.isExpandable() && !params.suppressDoubleClickExpand) {\n this.addManagedListener(eGroupCell, 'dblclick', this.onCellDblClicked.bind(this));\n }\n this.addManagedListener(this.eExpanded, 'click', this.onExpandClicked.bind(this));\n this.addManagedListener(this.eContracted, 'click', this.onExpandClicked.bind(this));\n // expand / contract as the user hits enter\n this.addManagedListener(eGroupCell, 'keydown', this.onKeyDown.bind(this));\n this.addManagedListener(params.node, RowNode.EVENT_EXPANDED_CHANGED, this.showExpandAndContractIcons.bind(this));\n this.showExpandAndContractIcons();\n // because we don't show the expand / contract when there are no children, we need to check every time\n // the number of children change.\n var expandableChangedListener = this.onRowNodeIsExpandableChanged.bind(this);\n this.addManagedListener(this.displayedGroupNode, RowNode.EVENT_ALL_CHILDREN_COUNT_CHANGED, expandableChangedListener);\n this.addManagedListener(this.displayedGroupNode, RowNode.EVENT_MASTER_CHANGED, expandableChangedListener);\n this.addManagedListener(this.displayedGroupNode, RowNode.EVENT_GROUP_CHANGED, expandableChangedListener);\n this.addManagedListener(this.displayedGroupNode, RowNode.EVENT_HAS_CHILDREN_CHANGED, expandableChangedListener);\n };\n GroupCellRendererCtrl.prototype.onExpandClicked = function (mouseEvent) {\n if (isStopPropagationForAgGrid(mouseEvent)) {\n return;\n }\n // so if we expand a node, it does not also get selected.\n stopPropagationForAgGrid(mouseEvent);\n this.onExpandOrContract();\n };\n GroupCellRendererCtrl.prototype.onExpandOrContract = function () {\n // must use the displayedGroup, so if data was dragged down, we expand the parent, not this row\n var rowNode = this.displayedGroupNode;\n var nextExpandState = !rowNode.expanded;\n rowNode.setExpanded(nextExpandState);\n };\n GroupCellRendererCtrl.prototype.isExpandable = function () {\n if (this.showingValueForOpenedParent) {\n return true;\n }\n var rowNode = this.displayedGroupNode;\n var reducedLeafNode = this.columnModel.isPivotMode() && rowNode.leafGroup;\n var expandableGroup = rowNode.isExpandable() && !rowNode.footer && !reducedLeafNode;\n if (!expandableGroup) {\n return false;\n }\n // column is null for fullWidthRows\n var column = this.params.column;\n var displayingForOneColumnOnly = column != null && typeof column.getColDef().showRowGroup === 'string';\n if (displayingForOneColumnOnly) {\n var showing = this.isShowRowGroupForThisRow();\n return showing;\n }\n return true;\n };\n GroupCellRendererCtrl.prototype.showExpandAndContractIcons = function () {\n var _a = this, params = _a.params, displayedGroup = _a.displayedGroupNode, columnModel = _a.columnModel;\n var node = params.node;\n var isExpandable = this.isExpandable();\n if (isExpandable) {\n // if expandable, show one based on expand state.\n // if we were dragged down, means our parent is always expanded\n var expanded = this.showingValueForOpenedParent ? true : node.expanded;\n this.comp.setExpandedDisplayed(expanded);\n this.comp.setContractedDisplayed(!expanded);\n }\n else {\n // it not expandable, show neither\n this.comp.setExpandedDisplayed(false);\n this.comp.setContractedDisplayed(false);\n }\n // compensation padding for leaf nodes, so there is blank space instead of the expand icon\n var pivotMode = columnModel.isPivotMode();\n var pivotModeAndLeafGroup = pivotMode && displayedGroup.leafGroup;\n var addExpandableCss = isExpandable && !pivotModeAndLeafGroup;\n var isTotalFooterNode = node.footer && node.level === -1;\n this.comp.addOrRemoveCssClass('ag-cell-expandable', addExpandableCss);\n this.comp.addOrRemoveCssClass('ag-row-group', addExpandableCss);\n if (pivotMode) {\n this.comp.addOrRemoveCssClass('ag-pivot-leaf-group', pivotModeAndLeafGroup);\n }\n else if (!isTotalFooterNode) {\n this.comp.addOrRemoveCssClass('ag-row-group-leaf-indent', !addExpandableCss);\n }\n };\n GroupCellRendererCtrl.prototype.onRowNodeIsExpandableChanged = function () {\n // maybe if no children now, we should hide the expand / contract icons\n this.showExpandAndContractIcons();\n // if we have no children, this impacts the indent\n this.setIndent();\n };\n GroupCellRendererCtrl.prototype.setupIndent = function () {\n // only do this if an indent - as this overwrites the padding that\n // the theme set, which will make things look 'not aligned' for the\n // first group level.\n var node = this.params.node;\n var suppressPadding = this.params.suppressPadding;\n if (!suppressPadding) {\n this.addManagedListener(node, RowNode.EVENT_UI_LEVEL_CHANGED, this.setIndent.bind(this));\n this.setIndent();\n }\n };\n GroupCellRendererCtrl.prototype.setIndent = function () {\n if (this.gridOptionsWrapper.isGroupHideOpenParents()) {\n return;\n }\n var params = this.params;\n var rowNode = params.node;\n // if we are only showing one group column, we don't want to be indenting based on level\n var fullWithRow = !!params.colDef;\n var treeData = this.gridOptionsWrapper.isTreeData();\n var manyDimensionThisColumn = !fullWithRow || treeData || params.colDef.showRowGroup === true;\n var paddingCount = manyDimensionThisColumn ? rowNode.uiLevel : 0;\n var userProvidedPaddingPixelsTheDeprecatedWay = params.padding >= 0;\n if (userProvidedPaddingPixelsTheDeprecatedWay) {\n doOnce(function () { return console.warn('AG Grid: cellRendererParams.padding no longer works, it was deprecated in since v14.2 and removed in v26, configuring padding for groupCellRenderer should be done with Sass variables and themes. Please see the AG Grid documentation page for Themes, in particular the property $row-group-indent-size.'); }, 'groupCellRenderer->doDeprecatedWay');\n }\n if (this.indentClass) {\n this.comp.addOrRemoveCssClass(this.indentClass, false);\n }\n this.indentClass = 'ag-row-group-indent-' + paddingCount;\n this.comp.addOrRemoveCssClass(this.indentClass, true);\n };\n GroupCellRendererCtrl.prototype.addFullWidthRowDraggerIfNeeded = function () {\n var _this = this;\n if (!this.params.fullWidth || !this.params.rowDrag) {\n return;\n }\n var rowDragComp = new RowDragComp(function () { return _this.params.value; }, this.params.node);\n this.createManagedBean(rowDragComp, this.context);\n this.eGui.insertAdjacentElement('afterbegin', rowDragComp.getGui());\n };\n GroupCellRendererCtrl.prototype.isUserWantsSelected = function () {\n var paramsCheckbox = this.params.checkbox;\n if (typeof paramsCheckbox === 'function') {\n return paramsCheckbox(this.params);\n }\n return paramsCheckbox === true;\n };\n GroupCellRendererCtrl.prototype.addCheckboxIfNeeded = function () {\n var _this = this;\n var rowNode = this.displayedGroupNode;\n var checkboxNeeded = this.isUserWantsSelected() &&\n // footers cannot be selected\n !rowNode.footer &&\n // pinned rows cannot be selected\n !rowNode.rowPinned &&\n // details cannot be selected\n !rowNode.detail;\n if (checkboxNeeded) {\n var cbSelectionComponent_1 = new CheckboxSelectionComponent();\n this.getContext().createBean(cbSelectionComponent_1);\n cbSelectionComponent_1.init({ rowNode: rowNode, column: this.params.column });\n this.eCheckbox.appendChild(cbSelectionComponent_1.getGui());\n this.addDestroyFunc(function () { return _this.getContext().destroyBean(cbSelectionComponent_1); });\n }\n this.comp.setCheckboxVisible(checkboxNeeded);\n };\n GroupCellRendererCtrl.prototype.onKeyDown = function (event) {\n var enterKeyPressed = event.key === KeyCode.ENTER;\n if (!enterKeyPressed || this.params.suppressEnterExpand) {\n return;\n }\n var cellEditable = this.params.column && this.params.column.isCellEditable(this.params.node);\n if (cellEditable) {\n return;\n }\n this.onExpandOrContract();\n };\n GroupCellRendererCtrl.prototype.onCellDblClicked = function (mouseEvent) {\n if (isStopPropagationForAgGrid(mouseEvent)) {\n return;\n }\n // we want to avoid acting on double click events on the expand / contract icon,\n // as that icons already has expand / collapse functionality on it. otherwise if\n // the icon was double clicked, we would get 'click', 'click', 'dblclick' which\n // is open->close->open, however double click should be open->close only.\n var targetIsExpandIcon = isElementInEventPath(this.eExpanded, mouseEvent)\n || isElementInEventPath(this.eContracted, mouseEvent);\n if (!targetIsExpandIcon) {\n this.onExpandOrContract();\n }\n };\n __decorate([\n Autowired('expressionService')\n ], GroupCellRendererCtrl.prototype, \"expressionService\", void 0);\n __decorate([\n Autowired('valueFormatterService')\n ], GroupCellRendererCtrl.prototype, \"valueFormatterService\", void 0);\n __decorate([\n Autowired('columnModel')\n ], GroupCellRendererCtrl.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('userComponentFactory')\n ], GroupCellRendererCtrl.prototype, \"userComponentFactory\", void 0);\n __decorate([\n Autowired('gridOptions')\n ], GroupCellRendererCtrl.prototype, \"gridOptions\", void 0);\n return GroupCellRendererCtrl;\n}(BeanStub));\nexport { GroupCellRendererCtrl };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { setAriaRole } from \"../../utils/aria\";\nimport { setDisplayed } from \"../../utils/dom\";\nimport { Component } from \"../../widgets/component\";\nimport { RefSelector } from \"../../widgets/componentAnnotations\";\nimport { GroupCellRendererCtrl } from \"./groupCellRendererCtrl\";\nvar GroupCellRenderer = /** @class */ (function (_super) {\n __extends(GroupCellRenderer, _super);\n function GroupCellRenderer() {\n return _super.call(this, GroupCellRenderer.TEMPLATE) || this;\n }\n GroupCellRenderer.prototype.init = function (params) {\n var _this = this;\n var compProxy = {\n setInnerRenderer: function (compDetails, valueToDisplay) { return _this.setRenderDetails(compDetails, valueToDisplay); },\n setChildCount: function (count) { return _this.eChildCount.innerHTML = count; },\n addOrRemoveCssClass: function (cssClass, value) { return _this.addOrRemoveCssClass(cssClass, value); },\n setContractedDisplayed: function (expanded) { return setDisplayed(_this.eContracted, expanded); },\n setExpandedDisplayed: function (expanded) { return setDisplayed(_this.eExpanded, expanded); },\n setCheckboxVisible: function (visible) { return _this.eCheckbox.classList.toggle('ag-invisible', !visible); }\n };\n var ctrl = this.createManagedBean(new GroupCellRendererCtrl());\n var fullWidth = !params.colDef;\n var eGui = this.getGui();\n ctrl.init(compProxy, eGui, this.eCheckbox, this.eExpanded, this.eContracted, this.constructor, params);\n if (fullWidth) {\n setAriaRole(eGui, 'gridcell');\n }\n };\n GroupCellRenderer.prototype.setRenderDetails = function (compDetails, valueToDisplay) {\n var _this = this;\n if (compDetails) {\n var componentPromise = compDetails.newAgStackInstance();\n if (!componentPromise) {\n return;\n }\n componentPromise.then(function (comp) {\n if (!comp) {\n return;\n }\n var destroyComp = function () { return _this.context.destroyBean(comp); };\n if (_this.isAlive()) {\n _this.eValue.appendChild(comp.getGui());\n _this.addDestroyFunc(destroyComp);\n }\n else {\n destroyComp();\n }\n });\n }\n else {\n this.eValue.innerText = valueToDisplay;\n }\n };\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to have public here instead of private or protected\n GroupCellRenderer.prototype.destroy = function () {\n this.getContext().destroyBean(this.innerCellRenderer);\n _super.prototype.destroy.call(this);\n };\n GroupCellRenderer.prototype.refresh = function () {\n return false;\n };\n GroupCellRenderer.TEMPLATE = \"\\n \\n \\n \\n \\n \\n \";\n __decorate([\n RefSelector('eExpanded')\n ], GroupCellRenderer.prototype, \"eExpanded\", void 0);\n __decorate([\n RefSelector('eContracted')\n ], GroupCellRenderer.prototype, \"eContracted\", void 0);\n __decorate([\n RefSelector('eCheckbox')\n ], GroupCellRenderer.prototype, \"eCheckbox\", void 0);\n __decorate([\n RefSelector('eValue')\n ], GroupCellRenderer.prototype, \"eValue\", void 0);\n __decorate([\n RefSelector('eChildCount')\n ], GroupCellRenderer.prototype, \"eChildCount\", void 0);\n return GroupCellRenderer;\n}(Component));\nexport { GroupCellRenderer };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component } from \"../../widgets/component\";\nimport { RefSelector } from \"../../widgets/componentAnnotations\";\nimport { createIconNoSpan } from \"../../utils/icon\";\nvar LoadingCellRenderer = /** @class */ (function (_super) {\n __extends(LoadingCellRenderer, _super);\n function LoadingCellRenderer() {\n return _super.call(this, LoadingCellRenderer.TEMPLATE) || this;\n }\n LoadingCellRenderer.prototype.init = function (params) {\n params.node.failedLoad ? this.setupFailed() : this.setupLoading();\n };\n LoadingCellRenderer.prototype.setupFailed = function () {\n this.eLoadingText.innerText = 'ERR';\n };\n LoadingCellRenderer.prototype.setupLoading = function () {\n var eLoadingIcon = createIconNoSpan('groupLoading', this.gridOptionsWrapper, null);\n if (eLoadingIcon) {\n this.eLoadingIcon.appendChild(eLoadingIcon);\n }\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n this.eLoadingText.innerText = localeTextFunc('loadingOoo', 'Loading');\n };\n LoadingCellRenderer.prototype.refresh = function (params) {\n return false;\n };\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to override destroy() just to make the method public.\n LoadingCellRenderer.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n LoadingCellRenderer.TEMPLATE = \"
    \\n \\n \\n
    \";\n __decorate([\n RefSelector('eLoadingIcon')\n ], LoadingCellRenderer.prototype, \"eLoadingIcon\", void 0);\n __decorate([\n RefSelector('eLoadingText')\n ], LoadingCellRenderer.prototype, \"eLoadingText\", void 0);\n return LoadingCellRenderer;\n}(Component));\nexport { LoadingCellRenderer };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Component } from \"../../widgets/component\";\nvar LoadingOverlayComponent = /** @class */ (function (_super) {\n __extends(LoadingOverlayComponent, _super);\n function LoadingOverlayComponent() {\n return _super.call(this) || this;\n }\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to override destroy() just to make the method public.\n LoadingOverlayComponent.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n LoadingOverlayComponent.prototype.init = function (params) {\n var template = this.gridOptionsWrapper.getOverlayLoadingTemplate() ?\n this.gridOptionsWrapper.getOverlayLoadingTemplate() : LoadingOverlayComponent.DEFAULT_LOADING_OVERLAY_TEMPLATE;\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var localisedTemplate = template.replace('[LOADING...]', localeTextFunc('loadingOoo', 'Loading...'));\n this.setTemplate(localisedTemplate);\n };\n LoadingOverlayComponent.DEFAULT_LOADING_OVERLAY_TEMPLATE = '[LOADING...]';\n return LoadingOverlayComponent;\n}(Component));\nexport { LoadingOverlayComponent };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Component } from \"../../widgets/component\";\nvar NoRowsOverlayComponent = /** @class */ (function (_super) {\n __extends(NoRowsOverlayComponent, _super);\n function NoRowsOverlayComponent() {\n return _super.call(this) || this;\n }\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to override destroy() just to make the method public.\n NoRowsOverlayComponent.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n NoRowsOverlayComponent.prototype.init = function (params) {\n var template = this.gridOptionsWrapper.getOverlayNoRowsTemplate() ?\n this.gridOptionsWrapper.getOverlayNoRowsTemplate() : NoRowsOverlayComponent.DEFAULT_NO_ROWS_TEMPLATE;\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var localisedTemplate = template.replace('[NO_ROWS_TO_SHOW]', localeTextFunc('noRowsToShow', 'No Rows To Show'));\n this.setTemplate(localisedTemplate);\n };\n NoRowsOverlayComponent.DEFAULT_NO_ROWS_TEMPLATE = '[NO_ROWS_TO_SHOW]';\n return NoRowsOverlayComponent;\n}(Component));\nexport { NoRowsOverlayComponent };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PopupComponent } from '../widgets/popupComponent';\nimport { escapeString } from '../utils/string';\nvar TooltipComponent = /** @class */ (function (_super) {\n __extends(TooltipComponent, _super);\n function TooltipComponent() {\n return _super.call(this, /* html */ \"
    \") || this;\n }\n // will need to type params\n TooltipComponent.prototype.init = function (params) {\n var value = params.value;\n this.getGui().innerHTML = escapeString(value);\n };\n return TooltipComponent;\n}(PopupComponent));\nexport { TooltipComponent };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { BeanStub } from \"../../context/beanStub\";\nimport { Autowired, Bean, PostConstruct } from \"../../context/context\";\nimport { ReadOnlyFloatingFilter } from \"../../filter/floating/provided/readOnlyFloatingFilter\";\nimport { DateFilter } from \"../../filter/provided/date/dateFilter\";\nimport { DateFloatingFilter } from \"../../filter/provided/date/dateFloatingFilter\";\nimport { DefaultDateComponent } from \"../../filter/provided/date/defaultDateComponent\";\nimport { NumberFilter } from \"../../filter/provided/number/numberFilter\";\nimport { NumberFloatingFilter } from \"../../filter/provided/number/numberFloatingFilter\";\nimport { TextFilter } from \"../../filter/provided/text/textFilter\";\nimport { TextFloatingFilter } from \"../../filter/provided/text/textFloatingFilter\";\nimport { HeaderComp } from \"../../headerRendering/cells/column/headerComp\";\nimport { HeaderGroupComp } from \"../../headerRendering/cells/columnGroup/headerGroupComp\";\nimport { LargeTextCellEditor } from \"../../rendering/cellEditors/largeTextCellEditor\";\nimport { PopupSelectCellEditor } from \"../../rendering/cellEditors/popupSelectCellEditor\";\nimport { PopupTextCellEditor } from \"../../rendering/cellEditors/popupTextCellEditor\";\nimport { SelectCellEditor } from \"../../rendering/cellEditors/selectCellEditor\";\nimport { TextCellEditor } from \"../../rendering/cellEditors/textCellEditor\";\nimport { AnimateShowChangeCellRenderer } from \"../../rendering/cellRenderers/animateShowChangeCellRenderer\";\nimport { AnimateSlideCellRenderer } from \"../../rendering/cellRenderers/animateSlideCellRenderer\";\nimport { GroupCellRenderer } from \"../../rendering/cellRenderers/groupCellRenderer\";\nimport { LoadingCellRenderer } from \"../../rendering/cellRenderers/loadingCellRenderer\";\nimport { LoadingOverlayComponent } from \"../../rendering/overlays/loadingOverlayComponent\";\nimport { NoRowsOverlayComponent } from \"../../rendering/overlays/noRowsOverlayComponent\";\nimport { TooltipComponent } from \"../../rendering/tooltipComponent\";\nimport { doOnce } from \"../../utils/function\";\nimport { iterateObject } from '../../utils/object';\nvar UserComponentRegistry = /** @class */ (function (_super) {\n __extends(UserComponentRegistry, _super);\n function UserComponentRegistry() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.agGridDefaults = {\n //date\n agDateInput: DefaultDateComponent,\n //header\n agColumnHeader: HeaderComp,\n agColumnGroupHeader: HeaderGroupComp,\n //floating filters\n agTextColumnFloatingFilter: TextFloatingFilter,\n agNumberColumnFloatingFilter: NumberFloatingFilter,\n agDateColumnFloatingFilter: DateFloatingFilter,\n agReadOnlyFloatingFilter: ReadOnlyFloatingFilter,\n // renderers\n agAnimateShowChangeCellRenderer: AnimateShowChangeCellRenderer,\n agAnimateSlideCellRenderer: AnimateSlideCellRenderer,\n agGroupCellRenderer: GroupCellRenderer,\n agGroupRowRenderer: GroupCellRenderer,\n agLoadingCellRenderer: LoadingCellRenderer,\n //editors\n agCellEditor: TextCellEditor,\n agTextCellEditor: TextCellEditor,\n agSelectCellEditor: SelectCellEditor,\n agPopupTextCellEditor: PopupTextCellEditor,\n agPopupSelectCellEditor: PopupSelectCellEditor,\n agLargeTextCellEditor: LargeTextCellEditor,\n //filter\n agTextColumnFilter: TextFilter,\n agNumberColumnFilter: NumberFilter,\n agDateColumnFilter: DateFilter,\n //overlays\n agLoadingOverlay: LoadingOverlayComponent,\n agNoRowsOverlay: NoRowsOverlayComponent,\n // tooltips\n agTooltipComponent: TooltipComponent\n };\n _this.agDeprecatedNames = {\n set: {\n newComponentName: 'agSetColumnFilter',\n propertyHolder: 'filter'\n },\n text: {\n newComponentName: 'agTextColumnFilter',\n propertyHolder: 'filter'\n },\n number: {\n newComponentName: 'agNumberColumnFilter',\n propertyHolder: 'filter'\n },\n date: {\n newComponentName: 'agDateColumnFilter',\n propertyHolder: 'filter'\n },\n group: {\n newComponentName: 'agGroupCellRenderer',\n propertyHolder: 'cellRenderer'\n },\n animateShowChange: {\n newComponentName: 'agAnimateShowChangeCellRenderer',\n propertyHolder: 'cellRenderer'\n },\n animateSlide: {\n newComponentName: 'agAnimateSlideCellRenderer',\n propertyHolder: 'cellRenderer'\n },\n select: {\n newComponentName: 'agSelectCellEditor',\n propertyHolder: 'cellEditor'\n },\n largeText: {\n newComponentName: 'agLargeTextCellEditor',\n propertyHolder: 'cellEditor'\n },\n popupSelect: {\n newComponentName: 'agPopupSelectCellEditor',\n propertyHolder: 'cellEditor'\n },\n popupText: {\n newComponentName: 'agPopupTextCellEditor',\n propertyHolder: 'cellEditor'\n },\n richSelect: {\n newComponentName: 'agRichSelectCellEditor',\n propertyHolder: 'cellEditor'\n },\n headerComponent: {\n newComponentName: 'agColumnHeader',\n propertyHolder: 'headerComponent'\n }\n };\n _this.jsComps = {};\n _this.fwComps = {};\n return _this;\n }\n UserComponentRegistry.prototype.init = function () {\n var _this = this;\n if (this.gridOptions.components != null) {\n iterateObject(this.gridOptions.components, function (key, component) { return _this.registerJsComponent(key, component); });\n }\n if (this.gridOptions.frameworkComponents != null) {\n iterateObject(this.gridOptions.frameworkComponents, function (key, component) { return _this.registerFwComponent(key, component); });\n }\n };\n UserComponentRegistry.prototype.registerDefaultComponent = function (rawName, component) {\n var name = this.translateIfDeprecated(rawName);\n if (this.agGridDefaults[name]) {\n console.error(\"Trying to overwrite a default component. You should call registerComponent\");\n return;\n }\n this.agGridDefaults[name] = component;\n };\n UserComponentRegistry.prototype.registerJsComponent = function (rawName, component) {\n var name = this.translateIfDeprecated(rawName);\n if (this.fwComps[name]) {\n console.error(\"Trying to register a component that you have already registered for frameworks: \" + name);\n return;\n }\n this.jsComps[name] = component;\n };\n /**\n * B the business interface (ie IHeader)\n * A the agGridComponent interface (ie IHeaderComp). The final object acceptable by ag-grid\n */\n UserComponentRegistry.prototype.registerFwComponent = function (rawName, component) {\n var warningMessage = \"AG Grid: As of v27, registering components via grid property frameworkComponents is deprecated. Instead register both JavaScript AND Framework Components via the components property.\";\n doOnce(function () { return console.warn(warningMessage); }, \"UserComponentRegistry.frameworkComponentsDeprecated\");\n var name = this.translateIfDeprecated(rawName);\n this.fwComps[name] = component;\n };\n UserComponentRegistry.prototype.retrieve = function (rawName) {\n var name = this.translateIfDeprecated(rawName);\n var createResult = function (component, componentFromFramework) { return ({ componentFromFramework: componentFromFramework, component: component }); };\n // FrameworkOverrides.frameworkComponent() is used in two locations:\n // 1) for Vue, user provided components get registered via a framework specific way.\n // 2) for React, it's how the React UI provides alternative default components (eg GroupCellRenderer and DetailCellRenderer)\n var registeredViaFrameworkComp = this.getFrameworkOverrides().frameworkComponent(name);\n if (registeredViaFrameworkComp != null) {\n return createResult(registeredViaFrameworkComp, true);\n }\n var frameworkComponent = this.fwComps[name];\n if (frameworkComponent) {\n return createResult(frameworkComponent, true);\n }\n var jsComponent = this.jsComps[name];\n if (jsComponent) {\n var isFwkComp = this.getFrameworkOverrides().isFrameworkComponent(jsComponent);\n return createResult(jsComponent, isFwkComp);\n }\n var defaultComponent = this.agGridDefaults[name];\n if (defaultComponent) {\n return createResult(defaultComponent, false);\n }\n if (Object.keys(this.agGridDefaults).indexOf(name) < 0) {\n console.warn(\"AG Grid: Looking for component [\" + name + \"] but it wasn't found.\");\n }\n return null;\n };\n UserComponentRegistry.prototype.translateIfDeprecated = function (raw) {\n var deprecatedInfo = this.agDeprecatedNames[raw];\n if (deprecatedInfo != null) {\n doOnce(function () {\n console.warn(\"ag-grid. Since v15.0 component names have been renamed to be namespaced. You should rename \" + deprecatedInfo.propertyHolder + \":\" + raw + \" to \" + deprecatedInfo.propertyHolder + \":\" + deprecatedInfo.newComponentName);\n }, 'DEPRECATE_COMPONENT_' + raw);\n return deprecatedInfo.newComponentName;\n }\n return raw;\n };\n __decorate([\n Autowired('gridOptions')\n ], UserComponentRegistry.prototype, \"gridOptions\", void 0);\n __decorate([\n Autowired('agComponentUtils')\n ], UserComponentRegistry.prototype, \"agComponentUtils\", void 0);\n __decorate([\n PostConstruct\n ], UserComponentRegistry.prototype, \"init\", null);\n UserComponentRegistry = __decorate([\n Bean('userComponentRegistry')\n ], UserComponentRegistry);\n return UserComponentRegistry;\n}(BeanStub));\nexport { UserComponentRegistry };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nexport var DateComponent = {\n propertyName: 'dateComponent',\n cellRenderer: false\n};\nexport var HeaderComponent = {\n propertyName: 'headerComponent',\n cellRenderer: false\n};\nexport var HeaderGroupComponent = {\n propertyName: 'headerGroupComponent',\n cellRenderer: false\n};\nexport var CellRendererComponent = {\n propertyName: 'cellRenderer',\n cellRenderer: true\n};\nexport var CellEditorComponent = {\n propertyName: 'cellEditor',\n cellRenderer: false\n};\nexport var InnerRendererComponent = {\n propertyName: 'innerRenderer',\n cellRenderer: true\n};\nexport var LoadingOverlayComponent = {\n propertyName: 'loadingOverlayComponent',\n cellRenderer: false\n};\nexport var NoRowsOverlayComponent = {\n propertyName: 'noRowsOverlayComponent',\n cellRenderer: false\n};\nexport var TooltipComponent = {\n propertyName: 'tooltipComponent',\n cellRenderer: false\n};\nexport var FilterComponent = {\n propertyName: 'filter',\n cellRenderer: false\n};\nexport var FloatingFilterComponent = {\n propertyName: 'floatingFilterComponent',\n cellRenderer: false\n};\nexport var ToolPanelComponent = {\n propertyName: 'toolPanel',\n cellRenderer: false\n};\nexport var StatusPanelComponent = {\n propertyName: 'statusPanel',\n cellRenderer: false\n};\nexport var FullWidth = {\n propertyName: 'fullWidthCellRenderer',\n cellRenderer: true\n};\nexport var FullWidthLoading = {\n propertyName: 'loadingCellRenderer',\n cellRenderer: true\n};\nexport var FullWidthGroup = {\n propertyName: 'groupRowRenderer',\n cellRenderer: true\n};\nexport var FullWidthDetail = {\n propertyName: 'detailCellRenderer',\n cellRenderer: true\n};\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar FloatingFilterMapper = /** @class */ (function () {\n function FloatingFilterMapper() {\n }\n FloatingFilterMapper.getFloatingFilterType = function (filterType) {\n return this.filterToFloatingFilterMapping[filterType];\n };\n FloatingFilterMapper.filterToFloatingFilterMapping = {\n set: 'agSetColumnFloatingFilter',\n agSetColumnFilter: 'agSetColumnFloatingFilter',\n multi: 'agMultiColumnFloatingFilter',\n agMultiColumnFilter: 'agMultiColumnFloatingFilter',\n number: 'agNumberColumnFloatingFilter',\n agNumberColumnFilter: 'agNumberColumnFloatingFilter',\n date: 'agDateColumnFloatingFilter',\n agDateColumnFilter: 'agDateColumnFloatingFilter',\n text: 'agTextColumnFloatingFilter',\n agTextColumnFilter: 'agTextColumnFloatingFilter'\n };\n return FloatingFilterMapper;\n}());\nexport { FloatingFilterMapper };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { BeanStub } from \"../../context/beanStub\";\nimport { Autowired, Bean, Optional } from \"../../context/context\";\nimport { AgPromise } from \"../../utils\";\nimport { mergeDeep } from '../../utils/object';\nimport { CellEditorComponent, CellRendererComponent, DateComponent, FilterComponent, FloatingFilterComponent, FullWidth, FullWidthDetail, FullWidthGroup, FullWidthLoading, HeaderComponent, HeaderGroupComponent, InnerRendererComponent, LoadingOverlayComponent, NoRowsOverlayComponent, StatusPanelComponent, ToolPanelComponent, TooltipComponent } from \"./componentTypes\";\nimport { FloatingFilterMapper } from '../../filter/floating/floatingFilterMapper';\nimport { ModuleNames } from '../../modules/moduleNames';\nimport { ModuleRegistry } from '../../modules/moduleRegistry';\nimport { doOnce } from \"../../utils/function\";\nvar ANNOTATIONS = '__annotations__';\nvar UserComponentFactory = /** @class */ (function (_super) {\n __extends(UserComponentFactory, _super);\n function UserComponentFactory() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n UserComponentFactory.prototype.getHeaderCompDetails = function (colDef, params) {\n return this.getCompDetails(colDef, HeaderComponent, 'agColumnHeader', params);\n };\n UserComponentFactory.prototype.getHeaderGroupCompDetails = function (params) {\n var colGroupDef = params.columnGroup.getColGroupDef();\n return this.getCompDetails(colGroupDef, HeaderGroupComponent, 'agColumnGroupHeader', params);\n };\n // this one is unusual, as it can be LoadingCellRenderer, DetailCellRenderer, FullWidthCellRenderer or GroupRowRenderer.\n // so we have to pass the type in.\n UserComponentFactory.prototype.getFullWidthCellRendererDetails = function (params) {\n return this.getCompDetails(this.gridOptions, FullWidth, null, params, true);\n };\n UserComponentFactory.prototype.getFullWidthLoadingCellRendererDetails = function (params) {\n return this.getCompDetails(this.gridOptions, FullWidthLoading, 'agLoadingCellRenderer', params, true);\n };\n UserComponentFactory.prototype.getFullWidthGroupCellRendererDetails = function (params) {\n return this.getCompDetails(this.gridOptions, FullWidthGroup, 'agGroupRowRenderer', params, true);\n };\n UserComponentFactory.prototype.getFullWidthDetailCellRendererDetails = function (params) {\n return this.getCompDetails(this.gridOptions, FullWidthDetail, 'agDetailCellRenderer', params, true);\n };\n // CELL RENDERER\n UserComponentFactory.prototype.getInnerRendererDetails = function (def, params) {\n return this.getCompDetails(def, InnerRendererComponent, null, params);\n };\n UserComponentFactory.prototype.getFullWidthGroupRowInnerCellRenderer = function (def, params) {\n return this.getCompDetails(def, InnerRendererComponent, null, params);\n };\n UserComponentFactory.prototype.getCellRendererDetails = function (def, params) {\n return this.getCompDetails(def, CellRendererComponent, null, params);\n };\n // CELL EDITOR\n UserComponentFactory.prototype.getCellEditorDetails = function (def, params) {\n return this.getCompDetails(def, CellEditorComponent, 'agCellEditor', params, true);\n };\n // FILTER\n UserComponentFactory.prototype.getFilterDetails = function (def, params, defaultFilter) {\n return this.getCompDetails(def, FilterComponent, defaultFilter, params, true);\n };\n UserComponentFactory.prototype.getDateCompDetails = function (params) {\n return this.getCompDetails(this.gridOptions, DateComponent, 'agDateInput', params, true);\n };\n UserComponentFactory.prototype.getLoadingOverlayCompDetails = function (params) {\n return this.getCompDetails(this.gridOptions, LoadingOverlayComponent, 'agLoadingOverlay', params, true);\n };\n UserComponentFactory.prototype.getNoRowsOverlayCompDetails = function (params) {\n return this.getCompDetails(this.gridOptions, NoRowsOverlayComponent, 'agNoRowsOverlay', params, true);\n };\n UserComponentFactory.prototype.getTooltipCompDetails = function (params) {\n return this.getCompDetails(params.colDef, TooltipComponent, 'agTooltipComponent', params, true);\n };\n UserComponentFactory.prototype.getSetFilterCellRendererDetails = function (def, params) {\n return this.getCompDetails(def, CellRendererComponent, null, params);\n };\n UserComponentFactory.prototype.getFloatingFilterCompDetails = function (def, params, defaultFloatingFilter) {\n return this.getCompDetails(def, FloatingFilterComponent, defaultFloatingFilter, params);\n };\n UserComponentFactory.prototype.getToolPanelCompDetails = function (toolPanelDef, params) {\n return this.getCompDetails(toolPanelDef, ToolPanelComponent, null, params, true);\n };\n UserComponentFactory.prototype.getStatusPanelCompDetails = function (def, params) {\n return this.getCompDetails(def, StatusPanelComponent, null, params, true);\n };\n UserComponentFactory.prototype.getCompDetails = function (defObject, type, defaultName, params, mandatory) {\n var _this = this;\n if (mandatory === void 0) { mandatory = false; }\n var propertyName = type.propertyName, cellRenderer = type.cellRenderer;\n var _a = this.getCompKeys(defObject, type, params), compName = _a.compName, jsComp = _a.jsComp, fwComp = _a.fwComp, paramsFromSelector = _a.paramsFromSelector, popupFromSelector = _a.popupFromSelector, popupPositionFromSelector = _a.popupPositionFromSelector;\n var lookupFromRegistry = function (key) {\n var item = _this.userComponentRegistry.retrieve(key);\n if (item) {\n jsComp = !item.componentFromFramework ? item.component : undefined;\n fwComp = item.componentFromFramework ? item.component : undefined;\n }\n };\n // if compOption is a string, means we need to look the item up\n if (compName != null) {\n lookupFromRegistry(compName);\n }\n // if lookup brought nothing back, and we have a default, lookup the default\n if (jsComp == null && fwComp == null && defaultName != null) {\n lookupFromRegistry(defaultName);\n }\n // if we have a comp option, and it's a function, replace it with an object equivalent adaptor\n if (jsComp && cellRenderer && !this.agComponentUtils.doesImplementIComponent(jsComp)) {\n jsComp = this.agComponentUtils.adaptFunction(propertyName, jsComp);\n }\n if (!jsComp && !fwComp) {\n if (mandatory) {\n console.error(\"Could not find component \" + compName + \", did you forget to configure this component?\");\n }\n return;\n }\n var paramsMerged = this.mergeParamsWithApplicationProvidedParams(defObject, type, params, paramsFromSelector);\n var componentFromFramework = jsComp == null;\n var componentClass = jsComp ? jsComp : fwComp;\n return {\n componentFromFramework: componentFromFramework,\n componentClass: componentClass,\n params: paramsMerged,\n type: type,\n popupFromSelector: popupFromSelector,\n popupPositionFromSelector: popupPositionFromSelector,\n newAgStackInstance: function () { return _this.newAgStackInstance(componentClass, componentFromFramework, paramsMerged, type); }\n };\n };\n UserComponentFactory.prototype.getCompKeys = function (defObject, type, params) {\n var _this = this;\n var propertyName = type.propertyName;\n var compName;\n var jsComp;\n var fwComp;\n var paramsFromSelector;\n var popupFromSelector;\n var popupPositionFromSelector;\n // there are two types of js comps, class based and func based. we can only check for\n // class based, by checking if getGui() exists. no way to differentiate js func based vs eg react func based\n // const isJsClassComp = (comp: any) => this.agComponentUtils.doesImplementIComponent(comp);\n // const fwActive = this.frameworkComponentWrapper != null;\n // pull from defObject if available\n if (defObject) {\n var defObjectAny = defObject;\n // if selector, use this\n var selectorFunc = defObjectAny[propertyName + 'Selector'];\n var selectorRes = selectorFunc ? selectorFunc(params) : null;\n var assignComp = function (providedJsComp, providedFwComp) {\n var xxxFrameworkDeprecatedWarn = function () {\n var warningMessage = \"AG Grid: As of v27, the property \" + propertyName + \"Framework is deprecated. The property \" + propertyName + \" can now be used for JavaScript AND Framework Components.\";\n doOnce(function () { return console.warn(warningMessage); }, \"UserComponentFactory.\" + propertyName + \"FrameworkDeprecated\");\n };\n if (typeof providedJsComp === 'string') {\n compName = providedJsComp;\n }\n else if (typeof providedFwComp === 'string') {\n xxxFrameworkDeprecatedWarn();\n compName = providedFwComp;\n // comp===true for filters, which means use the default comp\n }\n else if (providedJsComp != null && providedJsComp !== true) {\n var isFwkComp = _this.getFrameworkOverrides().isFrameworkComponent(providedJsComp);\n if (isFwkComp) {\n fwComp = providedJsComp;\n }\n else {\n jsComp = providedJsComp;\n }\n }\n else if (providedFwComp != null) {\n xxxFrameworkDeprecatedWarn();\n fwComp = providedFwComp;\n }\n };\n if (selectorRes) {\n if (selectorRes.frameworkComponent != null) {\n var warningMessage_1 = \"AG Grid: As of v27, the return for \" + propertyName + \"Selector has attributes [component, params] only. The attribute frameworkComponent is deprecated. You should now return back Framework Components using the 'component' attribute and the grid works out if it's a framework component or not.\";\n doOnce(function () { return console.warn(warningMessage_1); }, \"UserComponentFactory.\" + propertyName + \"FrameworkSelectorDeprecated\");\n assignComp(selectorRes.frameworkComponent, undefined);\n }\n else {\n assignComp(selectorRes.component, undefined);\n }\n paramsFromSelector = selectorRes.params;\n popupFromSelector = selectorRes.popup;\n popupPositionFromSelector = selectorRes.popupPosition;\n }\n else {\n // if no selector, or result of selector is empty, take from defObject\n assignComp(defObjectAny[propertyName], defObjectAny[propertyName + 'Framework']);\n }\n }\n return { compName: compName, jsComp: jsComp, fwComp: fwComp, paramsFromSelector: paramsFromSelector, popupFromSelector: popupFromSelector, popupPositionFromSelector: popupPositionFromSelector };\n };\n UserComponentFactory.prototype.newAgStackInstance = function (ComponentClass, componentFromFramework, params, type) {\n var propertyName = type.propertyName;\n var jsComponent = !componentFromFramework;\n // using javascript component\n var instance;\n if (jsComponent) {\n instance = new ComponentClass();\n }\n else {\n // Using framework component\n var thisComponentConfig = this.componentMetadataProvider.retrieve(propertyName);\n instance = this.frameworkComponentWrapper.wrap(ComponentClass, thisComponentConfig.mandatoryMethodList, thisComponentConfig.optionalMethodList, type);\n }\n var deferredInit = this.initComponent(instance, params);\n if (deferredInit == null) {\n return AgPromise.resolve(instance);\n }\n return deferredInit.then(function () { return instance; });\n };\n // used by Floating Filter\n UserComponentFactory.prototype.mergeParamsWithApplicationProvidedParams = function (defObject, type, paramsFromGrid, paramsFromSelector) {\n if (paramsFromSelector === void 0) { paramsFromSelector = null; }\n var params = {};\n mergeDeep(params, paramsFromGrid);\n // pull user params from either the old prop name and new prop name\n // eg either cellRendererParams and cellCompParams\n var defObjectAny = defObject;\n var userParams = defObjectAny && defObjectAny[type.propertyName + 'Params'];\n if (typeof userParams === 'function') {\n var userParamsFromFunc = userParams(paramsFromGrid);\n mergeDeep(params, userParamsFromFunc);\n }\n else if (typeof userParams === 'object') {\n mergeDeep(params, userParams);\n }\n mergeDeep(params, paramsFromSelector);\n return params;\n };\n UserComponentFactory.prototype.initComponent = function (component, params) {\n this.context.createBean(component);\n if (component.init == null) {\n return;\n }\n return component.init(params);\n };\n UserComponentFactory.prototype.getDefaultFloatingFilterType = function (def) {\n if (def == null) {\n return null;\n }\n var defaultFloatingFilterType = null;\n var _a = this.getCompKeys(def, FilterComponent), compName = _a.compName, jsComp = _a.jsComp, fwComp = _a.fwComp;\n if (compName) {\n // will be undefined if not in the map\n defaultFloatingFilterType = FloatingFilterMapper.getFloatingFilterType(compName);\n }\n else {\n var usingDefaultFilter = (jsComp == null && fwComp == null) && (def.filter === true);\n if (usingDefaultFilter) {\n var setFilterModuleLoaded = ModuleRegistry.isRegistered(ModuleNames.SetFilterModule);\n defaultFloatingFilterType = setFilterModuleLoaded ? 'agSetColumnFloatingFilter' : 'agTextColumnFloatingFilter';\n }\n }\n return defaultFloatingFilterType;\n };\n __decorate([\n Autowired('gridOptions')\n ], UserComponentFactory.prototype, \"gridOptions\", void 0);\n __decorate([\n Autowired('agComponentUtils')\n ], UserComponentFactory.prototype, \"agComponentUtils\", void 0);\n __decorate([\n Autowired('componentMetadataProvider')\n ], UserComponentFactory.prototype, \"componentMetadataProvider\", void 0);\n __decorate([\n Autowired('userComponentRegistry')\n ], UserComponentFactory.prototype, \"userComponentRegistry\", void 0);\n __decorate([\n Optional('frameworkComponentWrapper')\n ], UserComponentFactory.prototype, \"frameworkComponentWrapper\", void 0);\n UserComponentFactory = __decorate([\n Bean('userComponentFactory')\n ], UserComponentFactory);\n return UserComponentFactory;\n}(BeanStub));\nexport { UserComponentFactory };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar SideBarDefParser = /** @class */ (function () {\n function SideBarDefParser() {\n }\n SideBarDefParser.parse = function (toParse) {\n if (!toParse) {\n return null;\n }\n if (toParse === true) {\n return {\n toolPanels: [\n SideBarDefParser.DEFAULT_COLUMN_COMP,\n SideBarDefParser.DEFAULT_FILTER_COMP,\n ],\n defaultToolPanel: 'columns'\n };\n }\n if (typeof toParse === 'string') {\n return SideBarDefParser.parse([toParse]);\n }\n if (Array.isArray(toParse)) {\n var comps_1 = [];\n toParse.forEach(function (key) {\n var lookupResult = SideBarDefParser.DEFAULT_BY_KEY[key];\n if (!lookupResult) {\n console.warn(\"AG Grid: the key \" + key + \" is not a valid key for specifying a tool panel, valid keys are: \" + Object.keys(SideBarDefParser.DEFAULT_BY_KEY).join(','));\n return;\n }\n comps_1.push(lookupResult);\n });\n if (comps_1.length === 0) {\n return null;\n }\n return {\n toolPanels: comps_1,\n defaultToolPanel: comps_1[0].id\n };\n }\n var result = {\n toolPanels: SideBarDefParser.parseComponents(toParse.toolPanels),\n defaultToolPanel: toParse.defaultToolPanel,\n hiddenByDefault: toParse.hiddenByDefault,\n position: toParse.position\n };\n return result;\n };\n SideBarDefParser.parseComponents = function (from) {\n var result = [];\n if (!from) {\n return result;\n }\n from.forEach(function (it) {\n var toAdd = null;\n if (typeof it === 'string') {\n var lookupResult = SideBarDefParser.DEFAULT_BY_KEY[it];\n if (!lookupResult) {\n console.warn(\"AG Grid: the key \" + it + \" is not a valid key for specifying a tool panel, valid keys are: \" + Object.keys(SideBarDefParser.DEFAULT_BY_KEY).join(','));\n return;\n }\n toAdd = lookupResult;\n }\n else {\n toAdd = it;\n }\n result.push(toAdd);\n });\n return result;\n };\n SideBarDefParser.DEFAULT_COLUMN_COMP = {\n id: 'columns',\n labelDefault: 'Columns',\n labelKey: 'columns',\n iconKey: 'columns',\n toolPanel: 'agColumnsToolPanel',\n };\n SideBarDefParser.DEFAULT_FILTER_COMP = {\n id: 'filters',\n labelDefault: 'Filters',\n labelKey: 'filters',\n iconKey: 'filter',\n toolPanel: 'agFiltersToolPanel',\n };\n SideBarDefParser.DEFAULT_BY_KEY = {\n columns: SideBarDefParser.DEFAULT_COLUMN_COMP,\n filters: SideBarDefParser.DEFAULT_FILTER_COMP\n };\n return SideBarDefParser;\n}());\nexport { SideBarDefParser };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nimport { EventService } from './eventService';\nimport { Constants } from './constants/constants';\nimport { ComponentUtil } from './components/componentUtil';\nimport { Autowired, Bean, PostConstruct, PreDestroy, Qualifier } from './context/context';\nimport { PropertyKeys } from './propertyKeys';\nimport { ColDefUtil } from './components/colDefUtil';\nimport { Events } from './eventKeys';\nimport { SideBarDefParser } from './entities/sideBar';\nimport { ModuleNames } from './modules/moduleNames';\nimport { iterateObject } from './utils/object';\nimport { ModuleRegistry } from './modules/moduleRegistry';\nimport { isNumeric } from './utils/number';\nimport { exists, missing, values } from './utils/generic';\nimport { fuzzyCheckStrings } from './utils/fuzzyMatch';\nimport { doOnce } from './utils/function';\nimport { getScrollbarWidth } from './utils/browser';\nimport { capitalise } from './utils/string';\nvar DEFAULT_ROW_HEIGHT = 25;\nvar DEFAULT_DETAIL_ROW_HEIGHT = 300;\nvar DEFAULT_VIEWPORT_ROW_MODEL_PAGE_SIZE = 5;\nvar DEFAULT_VIEWPORT_ROW_MODEL_BUFFER_SIZE = 5;\nvar DEFAULT_KEEP_DETAIL_ROW_COUNT = 10;\nfunction isTrue(value) {\n return value === true || value === 'true';\n}\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (typeof value == 'string') {\n return parseInt(value, 10);\n }\n}\nfunction zeroOrGreater(value, defaultValue) {\n if (value >= 0) {\n return value;\n }\n // zero gets returned if number is missing or the wrong type\n return defaultValue;\n}\nfunction oneOrGreater(value, defaultValue) {\n var valueNumber = parseInt(value, 10);\n if (isNumeric(valueNumber) && valueNumber > 0) {\n return valueNumber;\n }\n return defaultValue;\n}\nvar GridOptionsWrapper = /** @class */ (function () {\n function GridOptionsWrapper() {\n this.propertyEventService = new EventService();\n this.domDataKey = '__AG_' + Math.random().toString();\n this.destroyed = false;\n }\n GridOptionsWrapper_1 = GridOptionsWrapper;\n GridOptionsWrapper.prototype.agWire = function (gridApi, columnApi) {\n this.gridOptions.api = gridApi;\n this.gridOptions.columnApi = columnApi;\n this.checkForDeprecated();\n this.checkForViolations();\n };\n GridOptionsWrapper.prototype.destroy = function () {\n // need to remove these, as we don't own the lifecycle of the gridOptions, we need to\n // remove the references in case the user keeps the grid options, we want the rest\n // of the grid to be picked up by the garbage collector\n this.gridOptions.api = null;\n this.gridOptions.columnApi = null;\n this.destroyed = true;\n };\n GridOptionsWrapper.prototype.init = function () {\n var _this = this;\n if (this.gridOptions.suppressPropertyNamesCheck !== true) {\n this.checkGridOptionsProperties();\n this.checkColumnDefProperties();\n }\n // parse side bar options into correct format\n if (this.gridOptions.sideBar != null) {\n this.gridOptions.sideBar = SideBarDefParser.parse(this.gridOptions.sideBar);\n }\n var async = this.useAsyncEvents();\n this.eventService.addGlobalListener(this.globalEventHandler.bind(this), async);\n if (this.isGroupSelectsChildren() && this.isSuppressParentsInRowNodes()) {\n console.warn(\"AG Grid: 'groupSelectsChildren' does not work with 'suppressParentsInRowNodes', this selection method needs the part in rowNode to work\");\n }\n if (this.isGroupSelectsChildren()) {\n if (!this.isRowSelectionMulti()) {\n console.warn(\"AG Grid: rowSelection must be 'multiple' for groupSelectsChildren to make sense\");\n }\n if (this.isRowModelServerSide()) {\n console.warn('AG Grid: group selects children is NOT support for Server Side Row Model. ' +\n 'This is because the rows are lazy loaded, so selecting a group is not possible as' +\n 'the grid has no way of knowing what the children are.');\n }\n }\n if (this.isGroupRemoveSingleChildren() && this.isGroupHideOpenParents()) {\n console.warn(\"AG Grid: groupRemoveSingleChildren and groupHideOpenParents do not work with each other, you need to pick one. And don't ask us how to us these together on our support forum either you will get the same answer!\");\n }\n if (this.isRowModelServerSide()) {\n var msg = function (prop) { return \"AG Grid: '\" + prop + \"' is not supported on the Server-Side Row Model\"; };\n if (exists(this.gridOptions.groupDefaultExpanded)) {\n console.warn(msg('groupDefaultExpanded'));\n }\n if (exists(this.gridOptions.groupDefaultExpanded)) {\n console.warn(msg('groupIncludeFooter'));\n }\n if (exists(this.gridOptions.groupDefaultExpanded)) {\n console.warn(msg('groupIncludeTotalFooter'));\n }\n }\n if (this.isEnableRangeSelection()) {\n ModuleRegistry.assertRegistered(ModuleNames.RangeSelectionModule, 'enableRangeSelection');\n }\n if (!this.isEnableRangeSelection() && (this.isEnableRangeHandle() || this.isEnableFillHandle())) {\n console.warn(\"AG Grid: 'enableRangeHandle' and 'enableFillHandle' will not work unless 'enableRangeSelection' is set to true\");\n }\n var warnOfDeprecaredIcon = function (name) {\n if (_this.gridOptions.icons && _this.gridOptions.icons[name]) {\n console.warn(\"gridOptions.icons.\" + name + \" is no longer supported. For information on how to style checkboxes and radio buttons, see https://www.ag-grid.com/javascript-grid-icons/\");\n }\n };\n warnOfDeprecaredIcon('radioButtonOff');\n warnOfDeprecaredIcon('radioButtonOn');\n warnOfDeprecaredIcon('checkboxChecked');\n warnOfDeprecaredIcon('checkboxUnchecked');\n warnOfDeprecaredIcon('checkboxIndeterminate');\n // sets an initial calculation for the scrollbar width\n this.getScrollbarWidth();\n };\n GridOptionsWrapper.prototype.checkColumnDefProperties = function () {\n var _this = this;\n if (this.gridOptions.columnDefs == null) {\n return;\n }\n this.gridOptions.columnDefs.forEach(function (colDef) {\n var userProperties = Object.getOwnPropertyNames(colDef);\n var validProperties = __spread(ColDefUtil.ALL_PROPERTIES, ColDefUtil.FRAMEWORK_PROPERTIES);\n _this.checkProperties(userProperties, validProperties, validProperties, 'colDef', 'https://www.ag-grid.com/javascript-grid-column-properties/');\n });\n };\n GridOptionsWrapper.prototype.checkGridOptionsProperties = function () {\n var userProperties = Object.getOwnPropertyNames(this.gridOptions);\n var validProperties = __spread(PropertyKeys.ALL_PROPERTIES, PropertyKeys.FRAMEWORK_PROPERTIES, values(Events).map(function (event) { return ComponentUtil.getCallbackForEvent(event); }));\n var validPropertiesAndExceptions = __spread(validProperties, ['api', 'columnApi']);\n this.checkProperties(userProperties, validPropertiesAndExceptions, validProperties, 'gridOptions', 'https://www.ag-grid.com/javascript-grid-properties/');\n };\n GridOptionsWrapper.prototype.checkProperties = function (userProperties, validPropertiesAndExceptions, validProperties, containerName, docsUrl) {\n var invalidProperties = fuzzyCheckStrings(userProperties, validPropertiesAndExceptions, validProperties);\n iterateObject(invalidProperties, function (key, value) {\n console.warn(\"ag-grid: invalid \" + containerName + \" property '\" + key + \"' did you mean any of these: \" + value.slice(0, 8).join(\", \"));\n });\n if (Object.keys(invalidProperties).length > 0) {\n console.warn(\"ag-grid: to see all the valid \" + containerName + \" properties please check: \" + docsUrl);\n }\n };\n GridOptionsWrapper.prototype.getDomDataKey = function () {\n return this.domDataKey;\n };\n // returns the dom data, or undefined if not found\n GridOptionsWrapper.prototype.getDomData = function (element, key) {\n var domData = element[this.getDomDataKey()];\n return domData ? domData[key] : undefined;\n };\n GridOptionsWrapper.prototype.setDomData = function (element, key, value) {\n var domDataKey = this.getDomDataKey();\n var domData = element[domDataKey];\n if (missing(domData)) {\n domData = {};\n element[domDataKey] = domData;\n }\n domData[key] = value;\n };\n GridOptionsWrapper.prototype.isRowSelection = function () {\n return this.gridOptions.rowSelection === 'single' || this.gridOptions.rowSelection === 'multiple';\n };\n GridOptionsWrapper.prototype.isSuppressRowDeselection = function () {\n return isTrue(this.gridOptions.suppressRowDeselection);\n };\n GridOptionsWrapper.prototype.isRowSelectionMulti = function () {\n return this.gridOptions.rowSelection === 'multiple';\n };\n GridOptionsWrapper.prototype.isRowMultiSelectWithClick = function () {\n return isTrue(this.gridOptions.rowMultiSelectWithClick);\n };\n GridOptionsWrapper.prototype.getContext = function () {\n return this.gridOptions.context;\n };\n GridOptionsWrapper.prototype.isPivotMode = function () {\n return isTrue(this.gridOptions.pivotMode);\n };\n GridOptionsWrapper.prototype.isSuppressExpandablePivotGroups = function () {\n return isTrue(this.gridOptions.suppressExpandablePivotGroups);\n };\n GridOptionsWrapper.prototype.getPivotColumnGroupTotals = function () {\n return this.gridOptions.pivotColumnGroupTotals;\n };\n GridOptionsWrapper.prototype.getPivotRowTotals = function () {\n return this.gridOptions.pivotRowTotals;\n };\n GridOptionsWrapper.prototype.isRowModelInfinite = function () {\n return this.gridOptions.rowModelType === Constants.ROW_MODEL_TYPE_INFINITE;\n };\n GridOptionsWrapper.prototype.isRowModelViewport = function () {\n return this.gridOptions.rowModelType === Constants.ROW_MODEL_TYPE_VIEWPORT;\n };\n GridOptionsWrapper.prototype.isRowModelServerSide = function () {\n return this.gridOptions.rowModelType === Constants.ROW_MODEL_TYPE_SERVER_SIDE;\n };\n GridOptionsWrapper.prototype.isRowModelDefault = function () {\n return (missing(this.gridOptions.rowModelType) ||\n this.gridOptions.rowModelType === Constants.ROW_MODEL_TYPE_CLIENT_SIDE);\n };\n GridOptionsWrapper.prototype.isFullRowEdit = function () {\n return this.gridOptions.editType === 'fullRow';\n };\n GridOptionsWrapper.prototype.isSuppressFocusAfterRefresh = function () {\n return isTrue(this.gridOptions.suppressFocusAfterRefresh);\n };\n GridOptionsWrapper.prototype.isSuppressBrowserResizeObserver = function () {\n return isTrue(this.gridOptions.suppressBrowserResizeObserver);\n };\n GridOptionsWrapper.prototype.isSuppressMaintainUnsortedOrder = function () {\n return isTrue(this.gridOptions.suppressMaintainUnsortedOrder);\n };\n GridOptionsWrapper.prototype.isSuppressClearOnFillReduction = function () {\n return isTrue(this.gridOptions.suppressClearOnFillReduction);\n };\n GridOptionsWrapper.prototype.isShowToolPanel = function () {\n return isTrue(this.gridOptions.sideBar && Array.isArray(this.getSideBar().toolPanels));\n };\n GridOptionsWrapper.prototype.getSideBar = function () {\n return this.gridOptions.sideBar;\n };\n GridOptionsWrapper.prototype.isSuppressTouch = function () {\n return isTrue(this.gridOptions.suppressTouch);\n };\n GridOptionsWrapper.prototype.isMaintainColumnOrder = function () {\n return isTrue(this.gridOptions.maintainColumnOrder);\n };\n GridOptionsWrapper.prototype.isSuppressRowTransform = function () {\n return isTrue(this.gridOptions.suppressRowTransform);\n };\n GridOptionsWrapper.prototype.isSuppressColumnStateEvents = function () {\n return isTrue(this.gridOptions.suppressColumnStateEvents);\n };\n GridOptionsWrapper.prototype.isAllowDragFromColumnsToolPanel = function () {\n return isTrue(this.gridOptions.allowDragFromColumnsToolPanel);\n };\n GridOptionsWrapper.prototype.useAsyncEvents = function () {\n return !isTrue(this.gridOptions.suppressAsyncEvents);\n };\n GridOptionsWrapper.prototype.isEnableCellChangeFlash = function () {\n return isTrue(this.gridOptions.enableCellChangeFlash);\n };\n GridOptionsWrapper.prototype.getCellFlashDelay = function () {\n return this.gridOptions.cellFlashDelay || 500;\n };\n GridOptionsWrapper.prototype.getCellFadeDelay = function () {\n return this.gridOptions.cellFadeDelay || 1000;\n };\n GridOptionsWrapper.prototype.isGroupSelectsChildren = function () {\n var result = isTrue(this.gridOptions.groupSelectsChildren);\n if (result && this.isTreeData()) {\n console.warn('AG Grid: groupSelectsChildren does not work with tree data');\n return false;\n }\n return result;\n };\n GridOptionsWrapper.prototype.isSuppressRowHoverHighlight = function () {\n return isTrue(this.gridOptions.suppressRowHoverHighlight);\n };\n GridOptionsWrapper.prototype.isColumnHoverHighlight = function () {\n return isTrue(this.gridOptions.columnHoverHighlight);\n };\n GridOptionsWrapper.prototype.isGroupSelectsFiltered = function () {\n return isTrue(this.gridOptions.groupSelectsFiltered);\n };\n GridOptionsWrapper.prototype.isGroupHideOpenParents = function () {\n return isTrue(this.gridOptions.groupHideOpenParents);\n };\n GridOptionsWrapper.prototype.isGroupMaintainOrder = function () {\n return isTrue(this.gridOptions.groupMaintainOrder);\n };\n GridOptionsWrapper.prototype.getAutoGroupColumnDef = function () {\n return this.gridOptions.autoGroupColumnDef;\n };\n GridOptionsWrapper.prototype.isGroupMultiAutoColumn = function () {\n if (this.gridOptions.groupDisplayType) {\n return this.matchesGroupDisplayType('multipleColumns', this.gridOptions.groupDisplayType);\n }\n // if we are doing hideOpenParents we also show multiple columns, otherwise hideOpenParents would not work\n return isTrue(this.gridOptions.groupHideOpenParents);\n };\n GridOptionsWrapper.prototype.isGroupUseEntireRow = function (pivotMode) {\n // we never allow groupUseEntireRow if in pivot mode, otherwise we won't see the pivot values.\n if (pivotMode) {\n return false;\n }\n return this.gridOptions.groupDisplayType ?\n this.matchesGroupDisplayType('groupRows', this.gridOptions.groupDisplayType) : false;\n };\n GridOptionsWrapper.prototype.isGroupSuppressAutoColumn = function () {\n var isCustomRowGroups = this.gridOptions.groupDisplayType ?\n this.matchesGroupDisplayType('custom', this.gridOptions.groupDisplayType) : false;\n if (isCustomRowGroups) {\n return true;\n }\n return this.gridOptions.treeDataDisplayType ?\n this.matchesTreeDataDisplayType('custom', this.gridOptions.treeDataDisplayType) : false;\n };\n GridOptionsWrapper.prototype.isGroupRemoveSingleChildren = function () {\n return isTrue(this.gridOptions.groupRemoveSingleChildren);\n };\n GridOptionsWrapper.prototype.isGroupRemoveLowestSingleChildren = function () {\n return isTrue(this.gridOptions.groupRemoveLowestSingleChildren);\n };\n GridOptionsWrapper.prototype.isGroupIncludeFooter = function () {\n return isTrue(this.gridOptions.groupIncludeFooter);\n };\n GridOptionsWrapper.prototype.isGroupIncludeTotalFooter = function () {\n return isTrue(this.gridOptions.groupIncludeTotalFooter);\n };\n GridOptionsWrapper.prototype.isGroupSuppressBlankHeader = function () {\n return isTrue(this.gridOptions.groupSuppressBlankHeader);\n };\n GridOptionsWrapper.prototype.isSuppressRowClickSelection = function () {\n return isTrue(this.gridOptions.suppressRowClickSelection);\n };\n GridOptionsWrapper.prototype.isSuppressCellFocus = function () {\n return isTrue(this.gridOptions.suppressCellFocus);\n };\n GridOptionsWrapper.prototype.isSuppressMultiSort = function () {\n return isTrue(this.gridOptions.suppressMultiSort);\n };\n GridOptionsWrapper.prototype.isMultiSortKeyCtrl = function () {\n return this.gridOptions.multiSortKey === 'ctrl';\n };\n GridOptionsWrapper.prototype.isPivotSuppressAutoColumn = function () {\n return isTrue(this.gridOptions.pivotSuppressAutoColumn);\n };\n GridOptionsWrapper.prototype.isSuppressDragLeaveHidesColumns = function () {\n return isTrue(this.gridOptions.suppressDragLeaveHidesColumns);\n };\n GridOptionsWrapper.prototype.isSuppressScrollOnNewData = function () {\n return isTrue(this.gridOptions.suppressScrollOnNewData);\n };\n GridOptionsWrapper.prototype.isSuppressScrollWhenPopupsAreOpen = function () {\n return isTrue(this.gridOptions.suppressScrollWhenPopupsAreOpen);\n };\n GridOptionsWrapper.prototype.isRowDragEntireRow = function () {\n return isTrue(this.gridOptions.rowDragEntireRow);\n };\n GridOptionsWrapper.prototype.isSuppressRowDrag = function () {\n return isTrue(this.gridOptions.suppressRowDrag);\n };\n GridOptionsWrapper.prototype.isRowDragManaged = function () {\n return isTrue(this.gridOptions.rowDragManaged);\n };\n GridOptionsWrapper.prototype.isSuppressMoveWhenRowDragging = function () {\n return isTrue(this.gridOptions.suppressMoveWhenRowDragging);\n };\n GridOptionsWrapper.prototype.isRowDragMultiRow = function () {\n return isTrue(this.gridOptions.rowDragMultiRow);\n };\n // returns either 'print', 'autoHeight' or 'normal' (normal is the default)\n GridOptionsWrapper.prototype.getDomLayout = function () {\n var domLayout = this.gridOptions.domLayout || Constants.DOM_LAYOUT_NORMAL;\n var validLayouts = [\n Constants.DOM_LAYOUT_PRINT,\n Constants.DOM_LAYOUT_AUTO_HEIGHT,\n Constants.DOM_LAYOUT_NORMAL\n ];\n if (validLayouts.indexOf(domLayout) === -1) {\n doOnce(function () {\n return console.warn(\"AG Grid: \" + domLayout + \" is not valid for DOM Layout, valid values are \" + Constants.DOM_LAYOUT_NORMAL + \", \" + Constants.DOM_LAYOUT_AUTO_HEIGHT + \" and \" + Constants.DOM_LAYOUT_PRINT);\n }, 'warn about dom layout values');\n return Constants.DOM_LAYOUT_NORMAL;\n }\n return domLayout;\n };\n GridOptionsWrapper.prototype.isSuppressHorizontalScroll = function () {\n return isTrue(this.gridOptions.suppressHorizontalScroll);\n };\n GridOptionsWrapper.prototype.isSuppressMaxRenderedRowRestriction = function () {\n return isTrue(this.gridOptions.suppressMaxRenderedRowRestriction);\n };\n GridOptionsWrapper.prototype.isExcludeChildrenWhenTreeDataFiltering = function () {\n return isTrue(this.gridOptions.excludeChildrenWhenTreeDataFiltering);\n };\n GridOptionsWrapper.prototype.isAlwaysShowHorizontalScroll = function () {\n return isTrue(this.gridOptions.alwaysShowHorizontalScroll);\n };\n GridOptionsWrapper.prototype.isAlwaysShowVerticalScroll = function () {\n return isTrue(this.gridOptions.alwaysShowVerticalScroll);\n };\n GridOptionsWrapper.prototype.isDebounceVerticalScrollbar = function () {\n return isTrue(this.gridOptions.debounceVerticalScrollbar);\n };\n GridOptionsWrapper.prototype.isSuppressLoadingOverlay = function () {\n return isTrue(this.gridOptions.suppressLoadingOverlay);\n };\n GridOptionsWrapper.prototype.isSuppressNoRowsOverlay = function () {\n return isTrue(this.gridOptions.suppressNoRowsOverlay);\n };\n GridOptionsWrapper.prototype.isSuppressFieldDotNotation = function () {\n return isTrue(this.gridOptions.suppressFieldDotNotation);\n };\n GridOptionsWrapper.prototype.getPinnedTopRowData = function () {\n return this.gridOptions.pinnedTopRowData;\n };\n GridOptionsWrapper.prototype.getPinnedBottomRowData = function () {\n return this.gridOptions.pinnedBottomRowData;\n };\n GridOptionsWrapper.prototype.isFunctionsPassive = function () {\n return isTrue(this.gridOptions.functionsPassive);\n };\n GridOptionsWrapper.prototype.isSuppressChangeDetection = function () {\n return isTrue(this.gridOptions.suppressChangeDetection);\n };\n GridOptionsWrapper.prototype.isSuppressAnimationFrame = function () {\n return isTrue(this.gridOptions.suppressAnimationFrame);\n };\n GridOptionsWrapper.prototype.getQuickFilterText = function () {\n return this.gridOptions.quickFilterText;\n };\n GridOptionsWrapper.prototype.isCacheQuickFilter = function () {\n return isTrue(this.gridOptions.cacheQuickFilter);\n };\n GridOptionsWrapper.prototype.isUnSortIcon = function () {\n return isTrue(this.gridOptions.unSortIcon);\n };\n GridOptionsWrapper.prototype.isSuppressMenuHide = function () {\n return isTrue(this.gridOptions.suppressMenuHide);\n };\n GridOptionsWrapper.prototype.isEnterMovesDownAfterEdit = function () {\n return isTrue(this.gridOptions.enterMovesDownAfterEdit);\n };\n GridOptionsWrapper.prototype.isEnterMovesDown = function () {\n return isTrue(this.gridOptions.enterMovesDown);\n };\n GridOptionsWrapper.prototype.isUndoRedoCellEditing = function () {\n return isTrue(this.gridOptions.undoRedoCellEditing);\n };\n GridOptionsWrapper.prototype.getUndoRedoCellEditingLimit = function () {\n return toNumber(this.gridOptions.undoRedoCellEditingLimit);\n };\n GridOptionsWrapper.prototype.getRowStyle = function () {\n return this.gridOptions.rowStyle;\n };\n GridOptionsWrapper.prototype.getRowClass = function () {\n return this.gridOptions.rowClass;\n };\n GridOptionsWrapper.prototype.getRowStyleFunc = function () {\n return this.gridOptions.getRowStyle;\n };\n GridOptionsWrapper.prototype.getRowClassFunc = function () {\n return this.gridOptions.getRowClass;\n };\n GridOptionsWrapper.prototype.rowClassRules = function () {\n return this.gridOptions.rowClassRules;\n };\n GridOptionsWrapper.prototype.getServerSideStoreType = function () {\n return this.gridOptions.serverSideStoreType;\n };\n GridOptionsWrapper.prototype.getServerSideStoreParamsFunc = function () {\n return this.gridOptions.getServerSideStoreParams;\n };\n GridOptionsWrapper.prototype.getCreateChartContainerFunc = function () {\n return this.gridOptions.createChartContainer;\n };\n GridOptionsWrapper.prototype.getPopupParent = function () {\n return this.gridOptions.popupParent;\n };\n GridOptionsWrapper.prototype.getBlockLoadDebounceMillis = function () {\n return this.gridOptions.blockLoadDebounceMillis;\n };\n GridOptionsWrapper.prototype.getPostProcessPopupFunc = function () {\n return this.gridOptions.postProcessPopup;\n };\n GridOptionsWrapper.prototype.getPaginationNumberFormatterFunc = function () {\n return this.gridOptions.paginationNumberFormatter;\n };\n GridOptionsWrapper.prototype.getChildCountFunc = function () {\n return this.gridOptions.getChildCount;\n };\n GridOptionsWrapper.prototype.getIsApplyServerSideTransactionFunc = function () {\n return this.gridOptions.isApplyServerSideTransaction;\n };\n GridOptionsWrapper.prototype.getDefaultGroupOrderComparator = function () {\n return this.gridOptions.defaultGroupOrderComparator;\n };\n GridOptionsWrapper.prototype.getIsFullWidthCellFunc = function () {\n return this.gridOptions.isFullWidthCell;\n };\n GridOptionsWrapper.prototype.getFullWidthCellRendererParams = function () {\n return this.gridOptions.fullWidthCellRendererParams;\n };\n GridOptionsWrapper.prototype.isEmbedFullWidthRows = function () {\n return isTrue(this.gridOptions.embedFullWidthRows) || isTrue(this.gridOptions.deprecatedEmbedFullWidthRows);\n };\n GridOptionsWrapper.prototype.isDetailRowAutoHeight = function () {\n return isTrue(this.gridOptions.detailRowAutoHeight);\n };\n GridOptionsWrapper.prototype.getSuppressKeyboardEventFunc = function () {\n return this.gridOptions.suppressKeyboardEvent;\n };\n GridOptionsWrapper.prototype.getBusinessKeyForNodeFunc = function () {\n return this.gridOptions.getBusinessKeyForNode;\n };\n GridOptionsWrapper.prototype.getApi = function () {\n return this.gridOptions.api;\n };\n GridOptionsWrapper.prototype.getColumnApi = function () {\n return this.gridOptions.columnApi;\n };\n GridOptionsWrapper.prototype.isReadOnlyEdit = function () {\n return isTrue(this.gridOptions.readOnlyEdit);\n ;\n };\n GridOptionsWrapper.prototype.isImmutableData = function () {\n // we used to have a property immutableData for this. however this was deprecated\n // in favour of having Immutable Data on by default when getRowId is provided\n return this.gridOptions.getRowId != null || isTrue(this.gridOptions.immutableData);\n };\n GridOptionsWrapper.prototype.isEnsureDomOrder = function () {\n return isTrue(this.gridOptions.ensureDomOrder);\n };\n GridOptionsWrapper.prototype.isEnableCharts = function () {\n if (isTrue(this.gridOptions.enableCharts)) {\n return ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, 'enableCharts');\n }\n return false;\n };\n GridOptionsWrapper.prototype.getColResizeDefault = function () {\n return this.gridOptions.colResizeDefault;\n };\n GridOptionsWrapper.prototype.isSingleClickEdit = function () {\n return isTrue(this.gridOptions.singleClickEdit);\n };\n GridOptionsWrapper.prototype.isSuppressClickEdit = function () {\n return isTrue(this.gridOptions.suppressClickEdit);\n };\n GridOptionsWrapper.prototype.isStopEditingWhenCellsLoseFocus = function () {\n return isTrue(this.gridOptions.stopEditingWhenCellsLoseFocus);\n };\n GridOptionsWrapper.prototype.getGroupDefaultExpanded = function () {\n return this.gridOptions.groupDefaultExpanded;\n };\n GridOptionsWrapper.prototype.getMaxConcurrentDatasourceRequests = function () {\n var res = toNumber(this.gridOptions.maxConcurrentDatasourceRequests);\n if (res == null) {\n return 2;\n } // 2 is the default\n if (res <= 0) {\n return;\n } // negative number, eg -1, means no max restriction\n return res;\n };\n GridOptionsWrapper.prototype.getMaxBlocksInCache = function () {\n return this.gridOptions.maxBlocksInCache;\n };\n GridOptionsWrapper.prototype.getCacheOverflowSize = function () {\n return this.gridOptions.cacheOverflowSize;\n };\n GridOptionsWrapper.prototype.getPaginationPageSize = function () {\n return toNumber(this.gridOptions.paginationPageSize);\n };\n GridOptionsWrapper.prototype.isPaginateChildRows = function () {\n var shouldPaginate = this.isGroupRemoveSingleChildren() || this.isGroupRemoveLowestSingleChildren();\n if (shouldPaginate) {\n return true;\n }\n return isTrue(this.gridOptions.paginateChildRows);\n };\n GridOptionsWrapper.prototype.getCacheBlockSize = function () {\n return oneOrGreater(this.gridOptions.cacheBlockSize);\n };\n GridOptionsWrapper.prototype.getInfiniteInitialRowCount = function () {\n return this.gridOptions.infiniteInitialRowCount;\n };\n GridOptionsWrapper.prototype.isPurgeClosedRowNodes = function () {\n return isTrue(this.gridOptions.purgeClosedRowNodes);\n };\n GridOptionsWrapper.prototype.isSuppressPaginationPanel = function () {\n return isTrue(this.gridOptions.suppressPaginationPanel);\n };\n GridOptionsWrapper.prototype.getRowData = function () {\n return this.gridOptions.rowData;\n };\n GridOptionsWrapper.prototype.isEnableRtl = function () {\n return isTrue(this.gridOptions.enableRtl);\n };\n GridOptionsWrapper.prototype.getRowGroupPanelShow = function () {\n return this.gridOptions.rowGroupPanelShow;\n };\n GridOptionsWrapper.prototype.getPivotPanelShow = function () {\n return this.gridOptions.pivotPanelShow;\n };\n GridOptionsWrapper.prototype.isAngularCompileRows = function () {\n return isTrue(this.gridOptions.angularCompileRows);\n };\n GridOptionsWrapper.prototype.isAngularCompileFilters = function () {\n return isTrue(this.gridOptions.angularCompileFilters);\n };\n GridOptionsWrapper.prototype.isDebug = function () {\n return isTrue(this.gridOptions.debug);\n };\n GridOptionsWrapper.prototype.getColumnDefs = function () {\n return this.gridOptions.columnDefs;\n };\n GridOptionsWrapper.prototype.getColumnTypes = function () {\n return this.gridOptions.columnTypes;\n };\n GridOptionsWrapper.prototype.getDatasource = function () {\n return this.gridOptions.datasource;\n };\n GridOptionsWrapper.prototype.getViewportDatasource = function () {\n return this.gridOptions.viewportDatasource;\n };\n GridOptionsWrapper.prototype.getServerSideDatasource = function () {\n return this.gridOptions.serverSideDatasource;\n };\n GridOptionsWrapper.prototype.isAccentedSort = function () {\n return isTrue(this.gridOptions.accentedSort);\n };\n GridOptionsWrapper.prototype.isEnableBrowserTooltips = function () {\n return isTrue(this.gridOptions.enableBrowserTooltips);\n };\n GridOptionsWrapper.prototype.isEnableCellExpressions = function () {\n return isTrue(this.gridOptions.enableCellExpressions);\n };\n GridOptionsWrapper.prototype.isEnableGroupEdit = function () {\n return isTrue(this.gridOptions.enableGroupEdit);\n };\n GridOptionsWrapper.prototype.isSuppressMiddleClickScrolls = function () {\n return isTrue(this.gridOptions.suppressMiddleClickScrolls);\n };\n GridOptionsWrapper.prototype.isPreventDefaultOnContextMenu = function () {\n return isTrue(this.gridOptions.preventDefaultOnContextMenu);\n };\n GridOptionsWrapper.prototype.isSuppressPreventDefaultOnMouseWheel = function () {\n return isTrue(this.gridOptions.suppressPreventDefaultOnMouseWheel);\n };\n GridOptionsWrapper.prototype.isSuppressColumnVirtualisation = function () {\n return isTrue(this.gridOptions.suppressColumnVirtualisation);\n };\n GridOptionsWrapper.prototype.isSuppressRowVirtualisation = function () {\n return isTrue(this.gridOptions.suppressRowVirtualisation);\n };\n GridOptionsWrapper.prototype.isSuppressContextMenu = function () {\n return isTrue(this.gridOptions.suppressContextMenu);\n };\n GridOptionsWrapper.prototype.isAllowContextMenuWithControlKey = function () {\n return isTrue(this.gridOptions.allowContextMenuWithControlKey);\n };\n GridOptionsWrapper.prototype.isSuppressCopyRowsToClipboard = function () {\n return isTrue(this.gridOptions.suppressCopyRowsToClipboard);\n };\n GridOptionsWrapper.prototype.isCopyHeadersToClipboard = function () {\n return isTrue(this.gridOptions.copyHeadersToClipboard);\n };\n GridOptionsWrapper.prototype.isCopyGroupHeadersToClipboard = function () {\n return isTrue(this.gridOptions.copyGroupHeadersToClipboard);\n };\n GridOptionsWrapper.prototype.isSuppressClipboardPaste = function () {\n return isTrue(this.gridOptions.suppressClipboardPaste);\n };\n GridOptionsWrapper.prototype.isSuppressLastEmptyLineOnPaste = function () {\n return isTrue(this.gridOptions.suppressLastEmptyLineOnPaste);\n };\n GridOptionsWrapper.prototype.isPagination = function () {\n return isTrue(this.gridOptions.pagination);\n };\n GridOptionsWrapper.prototype.isSuppressEnterpriseResetOnNewColumns = function () {\n return isTrue(this.gridOptions.suppressEnterpriseResetOnNewColumns);\n };\n GridOptionsWrapper.prototype.getProcessDataFromClipboardFunc = function () {\n return this.gridOptions.processDataFromClipboard;\n };\n GridOptionsWrapper.prototype.getAsyncTransactionWaitMillis = function () {\n return exists(this.gridOptions.asyncTransactionWaitMillis) ? this.gridOptions.asyncTransactionWaitMillis : Constants.BATCH_WAIT_MILLIS;\n };\n GridOptionsWrapper.prototype.isSuppressMovableColumns = function () {\n return isTrue(this.gridOptions.suppressMovableColumns);\n };\n GridOptionsWrapper.prototype.isAnimateRows = function () {\n // never allow animating if enforcing the row order\n if (this.isEnsureDomOrder()) {\n return false;\n }\n return isTrue(this.gridOptions.animateRows);\n };\n GridOptionsWrapper.prototype.isSuppressColumnMoveAnimation = function () {\n return isTrue(this.gridOptions.suppressColumnMoveAnimation);\n };\n GridOptionsWrapper.prototype.isSuppressAggFuncInHeader = function () {\n return isTrue(this.gridOptions.suppressAggFuncInHeader);\n };\n GridOptionsWrapper.prototype.isSuppressAggAtRootLevel = function () {\n return isTrue(this.gridOptions.suppressAggAtRootLevel);\n };\n GridOptionsWrapper.prototype.isSuppressAggFilteredOnly = function () {\n return isTrue(this.gridOptions.suppressAggFilteredOnly);\n };\n GridOptionsWrapper.prototype.isShowOpenedGroup = function () {\n return isTrue(this.gridOptions.showOpenedGroup);\n };\n GridOptionsWrapper.prototype.isReactUi = function () {\n return isTrue(this.gridOptions.reactUi);\n };\n GridOptionsWrapper.prototype.isSuppressReactUi = function () {\n return isTrue(this.gridOptions.suppressReactUi);\n };\n GridOptionsWrapper.prototype.isEnableRangeSelection = function () {\n return ModuleRegistry.isRegistered(ModuleNames.RangeSelectionModule) && isTrue(this.gridOptions.enableRangeSelection);\n };\n GridOptionsWrapper.prototype.isEnableRangeHandle = function () {\n return isTrue(this.gridOptions.enableRangeHandle);\n };\n GridOptionsWrapper.prototype.isEnableFillHandle = function () {\n return isTrue(this.gridOptions.enableFillHandle);\n };\n GridOptionsWrapper.prototype.getFillHandleDirection = function () {\n var direction = this.gridOptions.fillHandleDirection;\n if (!direction) {\n return 'xy';\n }\n if (direction !== 'x' && direction !== 'y' && direction !== 'xy') {\n doOnce(function () { return console.warn(\"AG Grid: valid values for fillHandleDirection are 'x', 'y' and 'xy'. Default to 'xy'.\"); }, 'warn invalid fill direction');\n return 'xy';\n }\n return direction;\n };\n GridOptionsWrapper.prototype.getFillOperation = function () {\n return this.gridOptions.fillOperation;\n };\n GridOptionsWrapper.prototype.isSuppressMultiRangeSelection = function () {\n return isTrue(this.gridOptions.suppressMultiRangeSelection);\n };\n GridOptionsWrapper.prototype.isPaginationAutoPageSize = function () {\n return isTrue(this.gridOptions.paginationAutoPageSize);\n };\n GridOptionsWrapper.prototype.isRememberGroupStateWhenNewData = function () {\n return isTrue(this.gridOptions.rememberGroupStateWhenNewData);\n };\n GridOptionsWrapper.prototype.getIcons = function () {\n return this.gridOptions.icons;\n };\n GridOptionsWrapper.prototype.getAggFuncs = function () {\n return this.gridOptions.aggFuncs;\n };\n GridOptionsWrapper.prototype.getSortingOrder = function () {\n return this.gridOptions.sortingOrder;\n };\n GridOptionsWrapper.prototype.getAlignedGrids = function () {\n return this.gridOptions.alignedGrids;\n };\n GridOptionsWrapper.prototype.isMasterDetail = function () {\n var masterDetail = isTrue(this.gridOptions.masterDetail);\n if (masterDetail) {\n return ModuleRegistry.assertRegistered(ModuleNames.MasterDetailModule, 'masterDetail');\n }\n else {\n return false;\n }\n };\n GridOptionsWrapper.prototype.isKeepDetailRows = function () {\n return isTrue(this.gridOptions.keepDetailRows);\n };\n GridOptionsWrapper.prototype.getKeepDetailRowsCount = function () {\n var keepDetailRowsCount = this.gridOptions.keepDetailRowsCount;\n if (exists(keepDetailRowsCount) && keepDetailRowsCount > 0) {\n return this.gridOptions.keepDetailRowsCount;\n }\n return DEFAULT_KEEP_DETAIL_ROW_COUNT;\n };\n GridOptionsWrapper.prototype.getIsRowMasterFunc = function () {\n return this.gridOptions.isRowMaster;\n };\n GridOptionsWrapper.prototype.getIsRowSelectableFunc = function () {\n return this.gridOptions.isRowSelectable;\n };\n GridOptionsWrapper.prototype.getGroupRowRendererParams = function () {\n return this.gridOptions.groupRowRendererParams;\n };\n GridOptionsWrapper.prototype.getOverlayLoadingTemplate = function () {\n return this.gridOptions.overlayLoadingTemplate;\n };\n GridOptionsWrapper.prototype.getOverlayNoRowsTemplate = function () {\n return this.gridOptions.overlayNoRowsTemplate;\n };\n GridOptionsWrapper.prototype.isSuppressAutoSize = function () {\n return isTrue(this.gridOptions.suppressAutoSize);\n };\n GridOptionsWrapper.prototype.isEnableCellTextSelection = function () {\n return isTrue(this.gridOptions.enableCellTextSelection);\n };\n GridOptionsWrapper.prototype.isSuppressParentsInRowNodes = function () {\n return isTrue(this.gridOptions.suppressParentsInRowNodes);\n };\n GridOptionsWrapper.prototype.isSuppressClipboardApi = function () {\n return isTrue(this.gridOptions.suppressClipboardApi);\n };\n GridOptionsWrapper.prototype.isFunctionsReadOnly = function () {\n return isTrue(this.gridOptions.functionsReadOnly);\n };\n GridOptionsWrapper.prototype.isEnableCellTextSelect = function () {\n return isTrue(this.gridOptions.enableCellTextSelection);\n };\n GridOptionsWrapper.prototype.getDefaultColDef = function () {\n return this.gridOptions.defaultColDef;\n };\n GridOptionsWrapper.prototype.getDefaultColGroupDef = function () {\n return this.gridOptions.defaultColGroupDef;\n };\n GridOptionsWrapper.prototype.getDefaultExportParams = function (type) {\n if (this.gridOptions.defaultExportParams) {\n console.warn(\"AG Grid: Since v25.2 `defaultExportParams` has been replaced by `default\" + capitalise(type) + \"ExportParams`'\");\n if (type === 'csv') {\n return this.gridOptions.defaultExportParams;\n }\n return this.gridOptions.defaultExportParams;\n }\n if (type === 'csv' && this.gridOptions.defaultCsvExportParams) {\n return this.gridOptions.defaultCsvExportParams;\n }\n if (type === 'excel' && this.gridOptions.defaultExcelExportParams) {\n return this.gridOptions.defaultExcelExportParams;\n }\n };\n GridOptionsWrapper.prototype.isSuppressCsvExport = function () {\n return isTrue(this.gridOptions.suppressCsvExport);\n };\n GridOptionsWrapper.prototype.isAllowShowChangeAfterFilter = function () {\n return isTrue(this.gridOptions.allowShowChangeAfterFilter);\n };\n GridOptionsWrapper.prototype.isSuppressExcelExport = function () {\n return isTrue(this.gridOptions.suppressExcelExport);\n };\n GridOptionsWrapper.prototype.isSuppressMakeColumnVisibleAfterUnGroup = function () {\n return isTrue(this.gridOptions.suppressMakeColumnVisibleAfterUnGroup);\n };\n GridOptionsWrapper.prototype.getDataPathFunc = function () {\n return this.gridOptions.getDataPath;\n };\n GridOptionsWrapper.prototype.getIsServerSideGroupFunc = function () {\n return this.gridOptions.isServerSideGroup;\n };\n GridOptionsWrapper.prototype.getIsServerSideGroupOpenByDefaultFunc = function () {\n return this.gridOptions.isServerSideGroupOpenByDefault;\n };\n GridOptionsWrapper.prototype.getIsGroupOpenByDefaultFunc = function () {\n return this.gridOptions.isGroupOpenByDefault;\n };\n GridOptionsWrapper.prototype.getServerSideGroupKeyFunc = function () {\n return this.gridOptions.getServerSideGroupKey;\n };\n GridOptionsWrapper.prototype.getGroupRowAggNodesFunc = function () {\n return this.gridOptions.groupRowAggNodes;\n };\n GridOptionsWrapper.prototype.getContextMenuItemsFunc = function () {\n return this.gridOptions.getContextMenuItems;\n };\n GridOptionsWrapper.prototype.getMainMenuItemsFunc = function () {\n return this.gridOptions.getMainMenuItems;\n };\n GridOptionsWrapper.prototype.getRowIdFunc = function () {\n var _a = this.gridOptions, getRowId = _a.getRowId, getRowNodeId = _a.getRowNodeId;\n if (getRowId) {\n return getRowId;\n }\n // this is the deprecated way, so provide a proxy to make it compatible\n if (getRowNodeId) {\n return function (params) { return getRowNodeId(params.data); };\n }\n };\n GridOptionsWrapper.prototype.getNavigateToNextHeaderFunc = function () {\n return this.gridOptions.navigateToNextHeader;\n };\n GridOptionsWrapper.prototype.getTabToNextHeaderFunc = function () {\n return this.gridOptions.tabToNextHeader;\n };\n GridOptionsWrapper.prototype.getNavigateToNextCellFunc = function () {\n return this.gridOptions.navigateToNextCell;\n };\n GridOptionsWrapper.prototype.getTabToNextCellFunc = function () {\n return this.gridOptions.tabToNextCell;\n };\n GridOptionsWrapper.prototype.getGridTabIndex = function () {\n return (this.gridOptions.tabIndex || 0).toString();\n };\n GridOptionsWrapper.prototype.isTreeData = function () {\n var usingTreeData = isTrue(this.gridOptions.treeData);\n if (usingTreeData) {\n return ModuleRegistry.assertRegistered(ModuleNames.RowGroupingModule, 'Tree Data');\n }\n return false;\n };\n GridOptionsWrapper.prototype.isValueCache = function () {\n return isTrue(this.gridOptions.valueCache);\n };\n GridOptionsWrapper.prototype.isValueCacheNeverExpires = function () {\n return isTrue(this.gridOptions.valueCacheNeverExpires);\n };\n GridOptionsWrapper.prototype.isDeltaSort = function () {\n return isTrue(this.gridOptions.deltaSort);\n };\n GridOptionsWrapper.prototype.isAggregateOnlyChangedColumns = function () {\n return isTrue(this.gridOptions.aggregateOnlyChangedColumns);\n };\n GridOptionsWrapper.prototype.getProcessSecondaryColDefFunc = function () {\n return this.gridOptions.processSecondaryColDef;\n };\n GridOptionsWrapper.prototype.getProcessSecondaryColGroupDefFunc = function () {\n return this.gridOptions.processSecondaryColGroupDef;\n };\n GridOptionsWrapper.prototype.getSendToClipboardFunc = function () {\n return this.gridOptions.sendToClipboard;\n };\n GridOptionsWrapper.prototype.getProcessRowPostCreateFunc = function () {\n return this.gridOptions.processRowPostCreate;\n };\n GridOptionsWrapper.prototype.getProcessCellForClipboardFunc = function () {\n return this.gridOptions.processCellForClipboard;\n };\n GridOptionsWrapper.prototype.getProcessHeaderForClipboardFunc = function () {\n return this.gridOptions.processHeaderForClipboard;\n };\n GridOptionsWrapper.prototype.getProcessGroupHeaderForClipboardFunc = function () {\n return this.gridOptions.processGroupHeaderForClipboard;\n };\n GridOptionsWrapper.prototype.getProcessCellFromClipboardFunc = function () {\n return this.gridOptions.processCellFromClipboard;\n };\n GridOptionsWrapper.prototype.getViewportRowModelPageSize = function () {\n return oneOrGreater(this.gridOptions.viewportRowModelPageSize, DEFAULT_VIEWPORT_ROW_MODEL_PAGE_SIZE);\n };\n GridOptionsWrapper.prototype.getViewportRowModelBufferSize = function () {\n return zeroOrGreater(this.gridOptions.viewportRowModelBufferSize, DEFAULT_VIEWPORT_ROW_MODEL_BUFFER_SIZE);\n };\n GridOptionsWrapper.prototype.isServerSideSortingAlwaysResets = function () {\n return isTrue(this.gridOptions.serverSideSortingAlwaysResets);\n };\n GridOptionsWrapper.prototype.isServerSideFilteringAlwaysResets = function () {\n return isTrue(this.gridOptions.serverSideFilteringAlwaysResets);\n };\n GridOptionsWrapper.prototype.getPostSortFunc = function () {\n return this.gridOptions.postSort;\n };\n GridOptionsWrapper.prototype.getChartToolbarItemsFunc = function () {\n return this.gridOptions.getChartToolbarItems;\n };\n GridOptionsWrapper.prototype.getChartThemeOverrides = function () {\n return this.gridOptions.chartThemeOverrides;\n };\n GridOptionsWrapper.prototype.getCustomChartThemes = function () {\n return this.gridOptions.customChartThemes;\n };\n GridOptionsWrapper.prototype.getChartThemes = function () {\n // return default themes if user hasn't supplied any\n return this.gridOptions.chartThemes || ['ag-default', 'ag-material', 'ag-pastel', 'ag-vivid', 'ag-solar'];\n };\n GridOptionsWrapper.prototype.getClipboardDelimiter = function () {\n return exists(this.gridOptions.clipboardDelimiter) ? this.gridOptions.clipboardDelimiter : '\\t';\n };\n GridOptionsWrapper.prototype.setProperty = function (key, value, force) {\n if (force === void 0) { force = false; }\n var gridOptionsNoType = this.gridOptions;\n var previousValue = gridOptionsNoType[key];\n if (force || previousValue !== value) {\n gridOptionsNoType[key] = value;\n var event_1 = {\n type: key,\n currentValue: value,\n previousValue: previousValue\n };\n this.propertyEventService.dispatchEvent(event_1);\n }\n };\n GridOptionsWrapper.prototype.addEventListener = function (key, listener) {\n this.propertyEventService.addEventListener(key, listener);\n };\n GridOptionsWrapper.prototype.removeEventListener = function (key, listener) {\n this.propertyEventService.removeEventListener(key, listener);\n };\n GridOptionsWrapper.prototype.isSkipHeaderOnAutoSize = function () {\n return !!this.gridOptions.skipHeaderOnAutoSize;\n };\n GridOptionsWrapper.prototype.getAutoSizePadding = function () {\n var value = this.gridOptions.autoSizePadding;\n return value != null && value >= 0 ? value : 20;\n };\n // properties\n GridOptionsWrapper.prototype.getHeaderHeight = function () {\n if (typeof this.gridOptions.headerHeight === 'number') {\n return this.gridOptions.headerHeight;\n }\n return this.getFromTheme(25, 'headerHeight');\n };\n GridOptionsWrapper.prototype.getFloatingFiltersHeight = function () {\n if (typeof this.gridOptions.floatingFiltersHeight === 'number') {\n return this.gridOptions.floatingFiltersHeight;\n }\n return this.getFromTheme(25, 'headerHeight');\n };\n GridOptionsWrapper.prototype.getGroupHeaderHeight = function () {\n if (typeof this.gridOptions.groupHeaderHeight === 'number') {\n return this.gridOptions.groupHeaderHeight;\n }\n return this.getHeaderHeight();\n };\n GridOptionsWrapper.prototype.getPivotHeaderHeight = function () {\n if (typeof this.gridOptions.pivotHeaderHeight === 'number') {\n return this.gridOptions.pivotHeaderHeight;\n }\n return this.getHeaderHeight();\n };\n GridOptionsWrapper.prototype.getPivotGroupHeaderHeight = function () {\n if (typeof this.gridOptions.pivotGroupHeaderHeight === 'number') {\n return this.gridOptions.pivotGroupHeaderHeight;\n }\n return this.getGroupHeaderHeight();\n };\n GridOptionsWrapper.prototype.isExternalFilterPresent = function () {\n if (typeof this.gridOptions.isExternalFilterPresent === 'function') {\n return this.gridOptions.isExternalFilterPresent();\n }\n return false;\n };\n GridOptionsWrapper.prototype.doesExternalFilterPass = function (node) {\n if (typeof this.gridOptions.doesExternalFilterPass === 'function') {\n return this.gridOptions.doesExternalFilterPass(node);\n }\n return false;\n };\n GridOptionsWrapper.prototype.getTooltipDelay = function (type) {\n var _a = this.gridOptions, tooltipShowDelay = _a.tooltipShowDelay, tooltipHideDelay = _a.tooltipHideDelay;\n var delay = type === 'show' ? tooltipShowDelay : tooltipHideDelay;\n var capitalisedType = capitalise(type);\n if (exists(delay)) {\n if (delay < 0) {\n doOnce(function () { return console.warn(\"ag-grid: tooltip\" + capitalisedType + \"Delay should not be lower than 0\"); }, \"tooltip\" + capitalisedType + \"DelayWarn\");\n }\n return Math.max(200, delay);\n }\n return null;\n };\n GridOptionsWrapper.prototype.isTooltipMouseTrack = function () {\n return isTrue(this.gridOptions.tooltipMouseTrack);\n };\n GridOptionsWrapper.prototype.isSuppressModelUpdateAfterUpdateTransaction = function () {\n return isTrue(this.gridOptions.suppressModelUpdateAfterUpdateTransaction);\n };\n GridOptionsWrapper.prototype.getDocument = function () {\n // if user is providing document, we use the users one,\n // otherwise we use the document on the global namespace.\n var result = null;\n if (this.gridOptions.getDocument && exists(this.gridOptions.getDocument)) {\n result = this.gridOptions.getDocument();\n }\n else if (this.eGridDiv) {\n result = this.eGridDiv.ownerDocument;\n }\n if (result && exists(result)) {\n return result;\n }\n return document;\n };\n GridOptionsWrapper.prototype.getMinColWidth = function () {\n var minColWidth = this.gridOptions.minColWidth;\n if (exists(minColWidth) && minColWidth > GridOptionsWrapper_1.MIN_COL_WIDTH) {\n return this.gridOptions.minColWidth;\n }\n var measuredMin = this.getFromTheme(null, 'headerCellMinWidth');\n return exists(measuredMin) ? Math.max(measuredMin, GridOptionsWrapper_1.MIN_COL_WIDTH) : GridOptionsWrapper_1.MIN_COL_WIDTH;\n };\n GridOptionsWrapper.prototype.getMaxColWidth = function () {\n if (this.gridOptions.maxColWidth && this.gridOptions.maxColWidth > GridOptionsWrapper_1.MIN_COL_WIDTH) {\n return this.gridOptions.maxColWidth;\n }\n return null;\n };\n GridOptionsWrapper.prototype.getColWidth = function () {\n if (typeof this.gridOptions.colWidth !== 'number' || this.gridOptions.colWidth < GridOptionsWrapper_1.MIN_COL_WIDTH) {\n return 200;\n }\n return this.gridOptions.colWidth;\n };\n GridOptionsWrapper.prototype.getRowBuffer = function () {\n var rowBuffer = this.gridOptions.rowBuffer;\n if (typeof rowBuffer === 'number') {\n if (rowBuffer < 0) {\n doOnce(function () { return console.warn(\"AG Grid: rowBuffer should not be negative\"); }, 'warn rowBuffer negative');\n this.gridOptions.rowBuffer = rowBuffer = 0;\n }\n }\n else {\n rowBuffer = Constants.ROW_BUFFER_SIZE;\n }\n return rowBuffer;\n };\n GridOptionsWrapper.prototype.getRowBufferInPixels = function () {\n var rowsToBuffer = this.getRowBuffer();\n var defaultRowHeight = this.getRowHeightAsNumber();\n return rowsToBuffer * defaultRowHeight;\n };\n // the user might be using some non-standard scrollbar, eg a scrollbar that has zero\n // width and overlays (like the Safari scrollbar, but presented in Chrome). so we\n // allow the user to provide the scroll width before we work it out.\n GridOptionsWrapper.prototype.getScrollbarWidth = function () {\n if (this.scrollbarWidth == null) {\n var useGridOptions = typeof this.gridOptions.scrollbarWidth === 'number' && this.gridOptions.scrollbarWidth >= 0;\n var scrollbarWidth = useGridOptions ? this.gridOptions.scrollbarWidth : getScrollbarWidth();\n if (scrollbarWidth != null) {\n this.scrollbarWidth = scrollbarWidth;\n this.eventService.dispatchEvent({\n type: Events.EVENT_SCROLLBAR_WIDTH_CHANGED\n });\n }\n }\n return this.scrollbarWidth;\n };\n GridOptionsWrapper.prototype.checkForDeprecated = function () {\n // casting to generic object, so typescript compiles even though\n // we are looking for attributes that don't exist\n var options = this.gridOptions;\n if (options.deprecatedEmbedFullWidthRows) {\n console.warn(\"AG Grid: since v21.2, deprecatedEmbedFullWidthRows has been replaced with embedFullWidthRows.\");\n }\n if (options.rowDeselection) {\n console.warn('AG Grid: since v24.x, rowDeselection is deprecated and the behaviour is true by default. Please use `suppressRowDeselection` to prevent rows from being deselected.');\n }\n if (options.enableMultiRowDragging) {\n options.rowDragMultiRow = true;\n delete options.enableMultiRowDragging;\n console.warn('AG Grid: since v26.1, `enableMultiRowDragging` is deprecated. Please use `rowDragMultiRow`.');\n }\n var checkRenamedProperty = function (oldProp, newProp, version) {\n if (options[oldProp] != null) {\n console.warn(\"ag-grid: since version \" + version + \", '\" + oldProp + \"' is deprecated / renamed, please use the new property name '\" + newProp + \"' instead.\");\n if (options[newProp] == null) {\n options[newProp] = options[oldProp];\n }\n }\n };\n checkRenamedProperty('batchUpdateWaitMillis', 'asyncTransactionWaitMillis', '23.1.x');\n checkRenamedProperty('deltaRowDataMode', 'immutableData', '23.1.x');\n if (options.immutableColumns || options.deltaColumnMode) {\n console.warn('AG Grid: since v24.0, immutableColumns and deltaColumnMode properties are gone. The grid now works like this as default. To keep column order maintained, set grid property applyColumnDefOrder=true');\n }\n checkRenamedProperty('suppressSetColumnStateEvents', 'suppressColumnStateEvents', '24.0.x');\n if (options.groupRowInnerRenderer || options.groupRowInnerRendererParams || options.groupRowInnerRendererFramework) {\n console.warn('AG Grid: since v24.0, grid properties groupRowInnerRenderer, groupRowInnerRendererFramework and groupRowInnerRendererParams are no longer used.');\n console.warn(' Instead use the grid properties groupRowRendererParams.innerRenderer, groupRowRendererParams.innerRendererFramework and groupRowRendererParams.innerRendererParams.');\n console.warn(' For example instead of this:');\n console.warn(' groupRowInnerRenderer: \"myRenderer\"');\n console.warn(' groupRowInnerRendererParams: {x: a}');\n console.warn(' Replace with this:');\n console.warn(' groupRowRendererParams: {');\n console.warn(' innerRenderer: \"myRenderer\",');\n console.warn(' innerRendererParams: {x: a}');\n console.warn(' }');\n console.warn(' We have copied the properties over for you. However to stop this error message, please change your application code.');\n if (!options.groupRowRendererParams) {\n options.groupRowRendererParams = {};\n }\n var params = options.groupRowRendererParams;\n if (options.groupRowInnerRenderer) {\n params.innerRenderer = options.groupRowInnerRenderer;\n }\n if (options.groupRowInnerRendererParams) {\n params.innerRendererParams = options.groupRowInnerRendererParams;\n }\n if (options.groupRowInnerRendererFramework) {\n params.innerRendererFramework = options.groupRowInnerRendererFramework;\n }\n }\n if (options.rememberGroupStateWhenNewData) {\n console.warn('AG Grid: since v24.0, grid property rememberGroupStateWhenNewData is deprecated. This feature was provided before Transaction Updates worked (which keep group state). Now that transaction updates are possible and they keep group state, this feature is no longer needed.');\n }\n if (options.detailCellRendererParams && options.detailCellRendererParams.autoHeight) {\n console.warn('AG Grid: since v24.1, grid property detailCellRendererParams.autoHeight is replaced with grid property detailRowAutoHeight. This allows this feature to work when you provide a custom DetailCellRenderer');\n options.detailRowAutoHeight = true;\n }\n if (options.suppressKeyboardEvent) {\n console.warn(\"AG Grid: since v24.1 suppressKeyboardEvent in the gridOptions has been deprecated and will be removed in\\n future versions of AG Grid. If you need this to be set for every column use the defaultColDef property.\");\n }\n if (options.suppressEnterpriseResetOnNewColumns) {\n console.warn('AG Grid: since v25, grid property suppressEnterpriseResetOnNewColumns is deprecated. This was a temporary property to allow changing columns in Server Side Row Model without triggering a reload. Now that it is possible to dynamically change columns in the grid, this is no longer needed.');\n }\n if (options.suppressColumnStateEvents) {\n console.warn('AG Grid: since v25, grid property suppressColumnStateEvents no longer works due to a refactor that we did. It should be possible to achieve similar using event.source, which would be \"api\" if the event was due to setting column state via the API');\n }\n if (options.defaultExportParams) {\n console.warn('AG Grid: since v25.2, the grid property `defaultExportParams` has been replaced by `defaultCsvExportParams` and `defaultExcelExportParams`.');\n }\n if (options.stopEditingWhenGridLosesFocus) {\n console.warn('AG Grid: since v25.2.2, the grid property `stopEditingWhenGridLosesFocus` has been replaced by `stopEditingWhenCellsLoseFocus`.');\n options.stopEditingWhenCellsLoseFocus = true;\n }\n if (options.applyColumnDefOrder) {\n console.warn('AG Grid: since v26.0, the grid property `applyColumnDefOrder` is no longer needed, as this is the default behaviour. To turn this behaviour off, set maintainColumnOrder=true');\n }\n if (options.groupMultiAutoColumn) {\n console.warn(\"AG Grid: since v26.0, the grid property `groupMultiAutoColumn` has been replaced by `groupDisplayType = 'multipleColumns'`\");\n options.groupDisplayType = 'multipleColumns';\n }\n if (options.groupUseEntireRow) {\n console.warn(\"AG Grid: since v26.0, the grid property `groupUseEntireRow` has been replaced by `groupDisplayType = 'groupRows'`\");\n options.groupDisplayType = 'groupRows';\n }\n if (options.groupSuppressAutoColumn) {\n var propName = options.treeData ? 'treeDataDisplayType' : 'groupDisplayType';\n console.warn(\"AG Grid: since v26.0, the grid property `groupSuppressAutoColumn` has been replaced by `\" + propName + \" = 'custom'`\");\n options.groupDisplayType = 'custom';\n }\n if (options.defaultGroupSortComparator) {\n console.warn(\"AG Grid: since v26.0, the grid property `defaultGroupSortComparator` has been replaced by `defaultGroupOrderComparator`\");\n options.defaultGroupOrderComparator = options.defaultGroupSortComparator;\n }\n if (options.colWidth) {\n console.warn('AG Grid: since v26.1, the grid property `colWidth` is deprecated and should be set via `defaultColDef.width`.');\n }\n if (options.minColWidth) {\n console.warn('AG Grid: since v26.1, the grid property `minColWidth` is deprecated and should be set via `defaultColDef.minWidth`.');\n }\n if (options.maxColWidth) {\n console.warn('AG Grid: since v26.1, the grid property `maxColWidth` is deprecated and should be set via `defaultColDef.maxWidth`.');\n }\n if (options.reactUi) {\n console.warn('AG Grid: since v27.0, React UI is on by default, so no need for reactUi=true. To turn it off, set suppressReactUi=true.');\n }\n if (options.suppressReactUi) {\n console.warn('AG Grid: The legacy React rendering engine is deprecated and will be removed in the next major version of the grid.');\n }\n if (options.suppressCellSelection) {\n console.warn('AG Grid: since v27.0, `suppressCellSelection` has been replaced by `suppressCellFocus`.');\n options.suppressCellFocus = options.suppressCellSelection;\n }\n if (options.getRowNodeId) {\n console.warn('AG Grid: since v27.1, `getRowNodeId` is deprecate and has been replaced by `getRowId`. The difference is if getRowId() is implemented, immutable data is on by default.');\n }\n if (options.immutableData) {\n console.warn('AG Grid: since v27.1, `immutableData` is deprecated. To turn on, implement `getRowId` has been replaced by `getRowId`. The difference is if getRowId() is implemented, immutable data is on by default.');\n }\n if (options.clipboardDeliminator) {\n console.warn('AG Grid: since v27.1, `clipboardDeliminator` has been replaced by `clipboardDelimiter`.');\n options.clipboardDelimiter = options.clipboardDeliminator;\n }\n };\n GridOptionsWrapper.prototype.checkForViolations = function () {\n if (this.isTreeData()) {\n this.treeDataViolations();\n }\n };\n GridOptionsWrapper.prototype.treeDataViolations = function () {\n if (this.isRowModelDefault()) {\n if (missing(this.getDataPathFunc())) {\n console.warn('AG Grid: property usingTreeData=true with rowModel=clientSide, but you did not ' +\n 'provide getDataPath function, please provide getDataPath function if using tree data.');\n }\n }\n if (this.isRowModelServerSide()) {\n if (missing(this.getIsServerSideGroupFunc())) {\n console.warn('AG Grid: property usingTreeData=true with rowModel=serverSide, but you did not ' +\n 'provide isServerSideGroup function, please provide isServerSideGroup function if using tree data.');\n }\n if (missing(this.getServerSideGroupKeyFunc())) {\n console.warn('AG Grid: property usingTreeData=true with rowModel=serverSide, but you did not ' +\n 'provide getServerSideGroupKey function, please provide getServerSideGroupKey function if using tree data.');\n }\n }\n };\n GridOptionsWrapper.prototype.getLocaleTextFunc = function () {\n if (this.gridOptions.localeTextFunc) {\n return this.gridOptions.localeTextFunc;\n }\n var localeText = this.gridOptions.localeText;\n return function (key, defaultValue) {\n var localisedText = localeText && localeText[key];\n return (localisedText !== null && localisedText !== void 0 ? localisedText : defaultValue);\n };\n };\n // responsible for calling the onXXX functions on gridOptions\n GridOptionsWrapper.prototype.globalEventHandler = function (eventName, event) {\n // prevent events from being fired _after_ the grid has been destroyed\n if (this.destroyed) {\n return;\n }\n var callbackMethodName = ComponentUtil.getCallbackForEvent(eventName);\n if (typeof this.gridOptions[callbackMethodName] === 'function') {\n this.gridOptions[callbackMethodName](event);\n }\n };\n GridOptionsWrapper.prototype.setRowHeightVariable = function (height) {\n var oldRowHeight = this.eGridDiv.style.getPropertyValue('--ag-row-height').trim();\n var newRowHeight = height + \"px\";\n if (oldRowHeight != newRowHeight) {\n this.eGridDiv.style.setProperty('--ag-row-height', newRowHeight);\n }\n };\n // we don't allow dynamic row height for virtual paging\n GridOptionsWrapper.prototype.getRowHeightAsNumber = function () {\n if (!this.gridOptions.rowHeight || missing(this.gridOptions.rowHeight)) {\n return this.getDefaultRowHeight();\n }\n var rowHeight = this.gridOptions.rowHeight;\n if (rowHeight && this.isNumeric(rowHeight)) {\n this.setRowHeightVariable(rowHeight);\n return rowHeight;\n }\n console.warn('AG Grid row height must be a number if not using standard row model');\n return this.getDefaultRowHeight();\n };\n GridOptionsWrapper.prototype.isGetRowHeightFunction = function () {\n return typeof this.gridOptions.getRowHeight === 'function';\n };\n GridOptionsWrapper.prototype.getRowHeightForNode = function (rowNode, allowEstimate, defaultRowHeight) {\n if (allowEstimate === void 0) { allowEstimate = false; }\n if (defaultRowHeight == null) {\n defaultRowHeight = this.getDefaultRowHeight();\n }\n // check the function first, in case use set both function and\n // number, when using virtual pagination then function can be\n // used for pinned rows and the number for the body rows.\n if (this.isGetRowHeightFunction()) {\n if (allowEstimate) {\n return { height: defaultRowHeight, estimated: true };\n }\n var params = {\n node: rowNode,\n data: rowNode.data,\n api: this.gridOptions.api,\n context: this.gridOptions.context\n };\n var height = this.gridOptions.getRowHeight(params);\n if (this.isNumeric(height)) {\n if (height === 0) {\n doOnce(function () { return console.warn('AG Grid: The return of `getRowHeight` cannot be zero. If the intention is to hide rows, use a filter instead.'); }, 'invalidRowHeight');\n }\n return { height: Math.max(1, height), estimated: false };\n }\n }\n if (rowNode.detail && this.isMasterDetail()) {\n // if autoHeight, we want the height to grow to the new height starting at 1, as otherwise a flicker would happen,\n // as the detail goes to the default (eg 200px) and then immediately shrink up/down to the new measured height\n // (due to auto height) which looks bad, especially if doing row animation.\n if (this.isDetailRowAutoHeight()) {\n return { height: 1, estimated: false };\n }\n if (this.isNumeric(this.gridOptions.detailRowHeight)) {\n return { height: this.gridOptions.detailRowHeight, estimated: false };\n }\n return { height: DEFAULT_DETAIL_ROW_HEIGHT, estimated: false };\n }\n var rowHeight = this.gridOptions.rowHeight && this.isNumeric(this.gridOptions.rowHeight) ? this.gridOptions.rowHeight : defaultRowHeight;\n return { height: rowHeight, estimated: false };\n };\n GridOptionsWrapper.prototype.isDynamicRowHeight = function () {\n return typeof this.gridOptions.getRowHeight === 'function';\n };\n GridOptionsWrapper.prototype.getListItemHeight = function () {\n return this.getFromTheme(20, 'listItemHeight');\n };\n GridOptionsWrapper.prototype.chartMenuPanelWidth = function () {\n return this.environment.chartMenuPanelWidth();\n };\n GridOptionsWrapper.prototype.isNumeric = function (value) {\n return !isNaN(value) && typeof value === 'number' && isFinite(value);\n };\n GridOptionsWrapper.prototype.getFromTheme = function (defaultValue, sassVariableName) {\n var theme = this.environment.getTheme().theme;\n if (theme && theme.indexOf('ag-theme') === 0) {\n return this.environment.getSassVariable(theme, sassVariableName);\n }\n return defaultValue;\n };\n GridOptionsWrapper.prototype.getDefaultRowHeight = function () {\n return this.getFromTheme(DEFAULT_ROW_HEIGHT, 'rowHeight');\n };\n GridOptionsWrapper.prototype.matchesGroupDisplayType = function (toMatch, supplied) {\n var groupDisplayTypeValues = ['groupRows', 'multipleColumns', 'custom', 'singleColumn'];\n if (groupDisplayTypeValues.indexOf(supplied) < 0) {\n console.warn(\"AG Grid: '\" + supplied + \"' is not a valid groupDisplayType value - possible values are: '\" + groupDisplayTypeValues.join(\"', '\") + \"'\");\n return false;\n }\n return supplied === toMatch;\n };\n GridOptionsWrapper.prototype.matchesTreeDataDisplayType = function (toMatch, supplied) {\n var treeDataDisplayTypeValues = ['auto', 'custom'];\n if (treeDataDisplayTypeValues.indexOf(supplied) < 0) {\n console.warn(\"AG Grid: '\" + supplied + \"' is not a valid treeDataDisplayType value - possible values are: '\" + treeDataDisplayTypeValues.join(\"', '\") + \"'\");\n return false;\n }\n return supplied === toMatch;\n };\n var GridOptionsWrapper_1;\n GridOptionsWrapper.MIN_COL_WIDTH = 10;\n GridOptionsWrapper.PROP_HEADER_HEIGHT = 'headerHeight';\n GridOptionsWrapper.PROP_GROUP_REMOVE_SINGLE_CHILDREN = 'groupRemoveSingleChildren';\n GridOptionsWrapper.PROP_GROUP_REMOVE_LOWEST_SINGLE_CHILDREN = 'groupRemoveLowestSingleChildren';\n GridOptionsWrapper.PROP_PIVOT_HEADER_HEIGHT = 'pivotHeaderHeight';\n GridOptionsWrapper.PROP_SUPPRESS_CLIPBOARD_PASTE = 'suppressClipboardPaste';\n GridOptionsWrapper.PROP_GROUP_HEADER_HEIGHT = 'groupHeaderHeight';\n GridOptionsWrapper.PROP_PIVOT_GROUP_HEADER_HEIGHT = 'pivotGroupHeaderHeight';\n GridOptionsWrapper.PROP_NAVIGATE_TO_NEXT_CELL = 'navigateToNextCell';\n GridOptionsWrapper.PROP_TAB_TO_NEXT_CELL = 'tabToNextCell';\n GridOptionsWrapper.PROP_NAVIGATE_TO_NEXT_HEADER = 'navigateToNextHeader';\n GridOptionsWrapper.PROP_TAB_TO_NEXT_HEADER = 'tabToNextHeader';\n GridOptionsWrapper.PROP_IS_EXTERNAL_FILTER_PRESENT = 'isExternalFilterPresent';\n GridOptionsWrapper.PROP_DOES_EXTERNAL_FILTER_PASS = 'doesExternalFilterPass';\n GridOptionsWrapper.PROP_FLOATING_FILTERS_HEIGHT = 'floatingFiltersHeight';\n GridOptionsWrapper.PROP_SUPPRESS_ROW_CLICK_SELECTION = 'suppressRowClickSelection';\n GridOptionsWrapper.PROP_SUPPRESS_ROW_DRAG = 'suppressRowDrag';\n GridOptionsWrapper.PROP_SUPPRESS_MOVE_WHEN_ROW_DRAG = 'suppressMoveWhenRowDragging';\n GridOptionsWrapper.PROP_GET_ROW_CLASS = 'getRowClass';\n GridOptionsWrapper.PROP_GET_ROW_STYLE = 'getRowStyle';\n GridOptionsWrapper.PROP_GET_ROW_HEIGHT = 'getRowHeight';\n GridOptionsWrapper.PROP_POPUP_PARENT = 'popupParent';\n GridOptionsWrapper.PROP_DOM_LAYOUT = 'domLayout';\n GridOptionsWrapper.PROP_FILL_HANDLE_DIRECTION = 'fillHandleDirection';\n GridOptionsWrapper.PROP_GROUP_ROW_AGG_NODES = 'groupRowAggNodes';\n GridOptionsWrapper.PROP_GET_BUSINESS_KEY_FOR_NODE = 'getBusinessKeyForNode';\n GridOptionsWrapper.PROP_GET_CHILD_COUNT = 'getChildCount';\n GridOptionsWrapper.PROP_PROCESS_ROW_POST_CREATE = 'processRowPostCreate';\n GridOptionsWrapper.PROP_GET_ROW_NODE_ID = 'getRowNodeId';\n GridOptionsWrapper.PROP_IS_FULL_WIDTH_CELL = 'isFullWidthCell';\n GridOptionsWrapper.PROP_IS_ROW_SELECTABLE = 'isRowSelectable';\n GridOptionsWrapper.PROP_IS_ROW_MASTER = 'isRowMaster';\n GridOptionsWrapper.PROP_POST_SORT = 'postSort';\n GridOptionsWrapper.PROP_GET_DOCUMENT = 'getDocument';\n GridOptionsWrapper.PROP_POST_PROCESS_POPUP = 'postProcessPopup';\n GridOptionsWrapper.PROP_DEFAULT_GROUP_ORDER_COMPARATOR = 'defaultGroupOrderComparator';\n GridOptionsWrapper.PROP_PAGINATION_NUMBER_FORMATTER = 'paginationNumberFormatter';\n GridOptionsWrapper.PROP_GET_CONTEXT_MENU_ITEMS = 'getContextMenuItems';\n GridOptionsWrapper.PROP_GET_MAIN_MENU_ITEMS = 'getMainMenuItems';\n GridOptionsWrapper.PROP_PROCESS_CELL_FOR_CLIPBOARD = 'processCellForClipboard';\n GridOptionsWrapper.PROP_PROCESS_CELL_FROM_CLIPBOARD = 'processCellFromClipboard';\n GridOptionsWrapper.PROP_SEND_TO_CLIPBOARD = 'sendToClipboard';\n GridOptionsWrapper.PROP_PROCESS_TO_SECONDARY_COLDEF = 'processSecondaryColDef';\n GridOptionsWrapper.PROP_PROCESS_SECONDARY_COL_GROUP_DEF = 'processSecondaryColGroupDef';\n GridOptionsWrapper.PROP_GET_CHART_TOOLBAR_ITEMS = 'getChartToolbarItems';\n GridOptionsWrapper.PROP_GET_SERVER_SIDE_STORE_PARAMS = 'getServerSideStoreParams';\n GridOptionsWrapper.PROP_IS_SERVER_SIDE_GROUPS_OPEN_BY_DEFAULT = 'isServerSideGroupOpenByDefault';\n GridOptionsWrapper.PROP_IS_APPLY_SERVER_SIDE_TRANSACTION = 'isApplyServerSideTransaction';\n GridOptionsWrapper.PROP_IS_SERVER_SIDE_GROUP = 'isServerSideGroup';\n GridOptionsWrapper.PROP_GET_SERVER_SIDE_GROUP_KEY = 'getServerSideGroupKey';\n __decorate([\n Autowired('gridOptions')\n ], GridOptionsWrapper.prototype, \"gridOptions\", void 0);\n __decorate([\n Autowired('eventService')\n ], GridOptionsWrapper.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('environment')\n ], GridOptionsWrapper.prototype, \"environment\", void 0);\n __decorate([\n Autowired('eGridDiv')\n ], GridOptionsWrapper.prototype, \"eGridDiv\", void 0);\n __decorate([\n __param(0, Qualifier('gridApi')), __param(1, Qualifier('columnApi'))\n ], GridOptionsWrapper.prototype, \"agWire\", null);\n __decorate([\n PreDestroy\n ], GridOptionsWrapper.prototype, \"destroy\", null);\n __decorate([\n PostConstruct\n ], GridOptionsWrapper.prototype, \"init\", null);\n GridOptionsWrapper = GridOptionsWrapper_1 = __decorate([\n Bean('gridOptionsWrapper')\n ], GridOptionsWrapper);\n return GridOptionsWrapper;\n}());\nexport { GridOptionsWrapper };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n// when doing transactions, or change detection, and grouping is present\n// in the data, there is no need for the ClientSideRowModel to update each\n// group after an update, ony parts that were impacted by the change.\n// this class keeps track of all groups that were impacted by a transaction.\n// the the different CSRM operations (filter, sort etc) use the forEach method\n// to visit each group that was changed.\nvar ChangedPath = /** @class */ (function () {\n function ChangedPath(keepingColumns, rootNode) {\n // whether changed path is active of not. it is active when a) doing\n // a transaction update or b) doing change detection. if we are doing\n // a CSRM refresh for other reasons (after sort or filter, or user calling\n // setRowData() without delta mode) then we are not active. we are also\n // marked as not active if secondary columns change in pivot (as this impacts\n // aggregations)\n this.active = true;\n // for each node in the change path, we also store which columns need\n // to be re-aggregated.\n this.nodeIdsToColumns = {};\n // for quick lookup, all items in the change path are mapped by nodeId\n this.mapToItems = {};\n this.keepingColumns = keepingColumns;\n this.pathRoot = {\n rowNode: rootNode,\n children: null\n };\n this.mapToItems[rootNode.id] = this.pathRoot;\n }\n // can be set inactive by:\n // a) ClientSideRowModel, if no transactions or\n // b) PivotService, if secondary columns changed\n ChangedPath.prototype.setInactive = function () {\n this.active = false;\n };\n ChangedPath.prototype.isActive = function () {\n return this.active;\n };\n ChangedPath.prototype.depthFirstSearchChangedPath = function (pathItem, callback) {\n if (pathItem.children) {\n for (var i = 0; i < pathItem.children.length; i++) {\n this.depthFirstSearchChangedPath(pathItem.children[i], callback);\n }\n }\n callback(pathItem.rowNode);\n };\n ChangedPath.prototype.depthFirstSearchEverything = function (rowNode, callback, traverseEverything) {\n if (rowNode.childrenAfterGroup) {\n for (var i = 0; i < rowNode.childrenAfterGroup.length; i++) {\n var childNode = rowNode.childrenAfterGroup[i];\n if (childNode.childrenAfterGroup) {\n this.depthFirstSearchEverything(rowNode.childrenAfterGroup[i], callback, traverseEverything);\n }\n else if (traverseEverything) {\n callback(childNode);\n }\n }\n }\n callback(rowNode);\n };\n // traverseLeafNodes -> used when NOT doing changed path, ie traversing everything. the callback\n // will be called for child nodes in addition to parent nodes.\n ChangedPath.prototype.forEachChangedNodeDepthFirst = function (callback, traverseLeafNodes) {\n if (traverseLeafNodes === void 0) { traverseLeafNodes = false; }\n if (this.active) {\n // if we are active, then use the change path to callback\n // only for updated groups\n this.depthFirstSearchChangedPath(this.pathRoot, callback);\n }\n else {\n // we are not active, so callback for everything, walk the entire path\n this.depthFirstSearchEverything(this.pathRoot.rowNode, callback, traverseLeafNodes);\n }\n };\n ChangedPath.prototype.executeFromRootNode = function (callback) {\n callback(this.pathRoot.rowNode);\n };\n ChangedPath.prototype.createPathItems = function (rowNode) {\n var pointer = rowNode;\n var newEntryCount = 0;\n while (!this.mapToItems[pointer.id]) {\n var newEntry = {\n rowNode: pointer,\n children: null\n };\n this.mapToItems[pointer.id] = newEntry;\n newEntryCount++;\n pointer = pointer.parent;\n }\n return newEntryCount;\n };\n ChangedPath.prototype.populateColumnsMap = function (rowNode, columns) {\n var _this = this;\n if (!this.keepingColumns || !columns) {\n return;\n }\n var pointer = rowNode;\n while (pointer) {\n // if columns, add the columns in all the way to parent, merging\n // in any other columns that might be there already\n if (!this.nodeIdsToColumns[pointer.id]) {\n this.nodeIdsToColumns[pointer.id] = {};\n }\n columns.forEach(function (col) { return _this.nodeIdsToColumns[pointer.id][col.getId()] = true; });\n pointer = pointer.parent;\n }\n };\n ChangedPath.prototype.linkPathItems = function (rowNode, newEntryCount) {\n var pointer = rowNode;\n for (var i = 0; i < newEntryCount; i++) {\n var thisItem = this.mapToItems[pointer.id];\n var parentItem = this.mapToItems[pointer.parent.id];\n if (!parentItem.children) {\n parentItem.children = [];\n }\n parentItem.children.push(thisItem);\n pointer = pointer.parent;\n }\n };\n // called by\n // 1) change detection (provides cols) and\n // 2) groupStage if doing transaction update (doesn't provide cols)\n ChangedPath.prototype.addParentNode = function (rowNode, columns) {\n if (!rowNode || rowNode.isRowPinned()) {\n return;\n }\n // we cannot do both steps below in the same loop as\n // the second loop has a dependency on the first loop.\n // ie the hierarchy cannot be stitched up yet because\n // we don't have it built yet\n // create the new PathItem objects.\n var newEntryCount = this.createPathItems(rowNode);\n // link in the node items\n this.linkPathItems(rowNode, newEntryCount);\n // update columns\n this.populateColumnsMap(rowNode, columns);\n };\n ChangedPath.prototype.canSkip = function (rowNode) {\n return this.active && !this.mapToItems[rowNode.id];\n };\n ChangedPath.prototype.getValueColumnsForNode = function (rowNode, valueColumns) {\n if (!this.keepingColumns) {\n return valueColumns;\n }\n var colsForThisNode = this.nodeIdsToColumns[rowNode.id];\n var result = valueColumns.filter(function (col) { return colsForThisNode[col.getId()]; });\n return result;\n };\n ChangedPath.prototype.getNotValueColumnsForNode = function (rowNode, valueColumns) {\n if (!this.keepingColumns) {\n return null;\n }\n var colsForThisNode = this.nodeIdsToColumns[rowNode.id];\n var result = valueColumns.filter(function (col) { return !colsForThisNode[col.getId()]; });\n return result;\n };\n return ChangedPath;\n}());\nexport { ChangedPath };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { Bean } from \"./context/context\";\nimport { BeanStub } from \"./context/beanStub\";\nimport { Qualifier } from \"./context/context\";\nimport { Events } from \"./events\";\nimport { Autowired } from \"./context/context\";\nimport { PostConstruct } from \"./context/context\";\nimport { Constants } from \"./constants/constants\";\nimport { ChangedPath } from \"./utils/changedPath\";\nimport { iterateObject } from \"./utils/object\";\nimport { exists } from \"./utils/generic\";\nvar SelectionService = /** @class */ (function (_super) {\n __extends(SelectionService, _super);\n function SelectionService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SelectionService.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('selectionService');\n this.reset();\n if (this.gridOptionsWrapper.isRowModelDefault()) {\n this.addManagedListener(this.eventService, Events.EVENT_ROW_DATA_CHANGED, this.reset.bind(this));\n }\n };\n SelectionService.prototype.init = function () {\n this.groupSelectsChildren = this.gridOptionsWrapper.isGroupSelectsChildren();\n this.addManagedListener(this.eventService, Events.EVENT_ROW_SELECTED, this.onRowSelected.bind(this));\n };\n SelectionService.prototype.setLastSelectedNode = function (rowNode) {\n this.lastSelectedNode = rowNode;\n };\n SelectionService.prototype.getLastSelectedNode = function () {\n return this.lastSelectedNode;\n };\n SelectionService.prototype.getSelectedNodes = function () {\n var selectedNodes = [];\n iterateObject(this.selectedNodes, function (key, rowNode) {\n if (rowNode) {\n selectedNodes.push(rowNode);\n }\n });\n return selectedNodes;\n };\n SelectionService.prototype.getSelectedRows = function () {\n var selectedRows = [];\n iterateObject(this.selectedNodes, function (key, rowNode) {\n if (rowNode && rowNode.data) {\n selectedRows.push(rowNode.data);\n }\n });\n return selectedRows;\n };\n SelectionService.prototype.removeGroupsFromSelection = function () {\n var _this = this;\n iterateObject(this.selectedNodes, function (key, rowNode) {\n if (rowNode && rowNode.group) {\n _this.selectedNodes[rowNode.id] = undefined;\n }\n });\n };\n // should only be called if groupSelectsChildren=true\n SelectionService.prototype.updateGroupsFromChildrenSelections = function (changedPath) {\n // we only do this when group selection state depends on selected children\n if (!this.gridOptionsWrapper.isGroupSelectsChildren()) {\n return;\n }\n // also only do it if CSRM (code should never allow this anyway)\n if (this.rowModel.getType() !== Constants.ROW_MODEL_TYPE_CLIENT_SIDE) {\n return;\n }\n var clientSideRowModel = this.rowModel;\n var rootNode = clientSideRowModel.getRootNode();\n if (!changedPath) {\n changedPath = new ChangedPath(true, rootNode);\n changedPath.setInactive();\n }\n changedPath.forEachChangedNodeDepthFirst(function (rowNode) {\n if (rowNode !== rootNode) {\n rowNode.calculateSelectedFromChildren();\n }\n });\n // clientSideRowModel.getTopLevelNodes()!.forEach((rowNode: RowNode) => {\n // rowNode.depthFirstSearch((node) => {\n // if (node.group) {\n // }\n // });\n // });\n };\n SelectionService.prototype.getNodeForIdIfSelected = function (id) {\n return this.selectedNodes[id];\n };\n SelectionService.prototype.clearOtherNodes = function (rowNodeToKeepSelected) {\n var _this = this;\n var groupsToRefresh = {};\n var updatedCount = 0;\n iterateObject(this.selectedNodes, function (key, otherRowNode) {\n if (otherRowNode && otherRowNode.id !== rowNodeToKeepSelected.id) {\n var rowNode = _this.selectedNodes[otherRowNode.id];\n updatedCount += rowNode.setSelectedParams({\n newValue: false,\n clearSelection: false,\n suppressFinishActions: true\n });\n if (_this.groupSelectsChildren && otherRowNode.parent) {\n groupsToRefresh[otherRowNode.parent.id] = otherRowNode.parent;\n }\n }\n });\n iterateObject(groupsToRefresh, function (key, group) {\n group.calculateSelectedFromChildren();\n });\n return updatedCount;\n };\n SelectionService.prototype.onRowSelected = function (event) {\n var rowNode = event.node;\n // we do not store the group rows when the groups select children\n if (this.groupSelectsChildren && rowNode.group) {\n return;\n }\n if (rowNode.isSelected()) {\n this.selectedNodes[rowNode.id] = rowNode;\n }\n else {\n this.selectedNodes[rowNode.id] = undefined;\n }\n };\n SelectionService.prototype.syncInRowNode = function (rowNode, oldNode) {\n this.syncInOldRowNode(rowNode, oldNode);\n this.syncInNewRowNode(rowNode);\n };\n // if the id has changed for the node, then this means the rowNode\n // is getting used for a different data item, which breaks\n // our selectedNodes, as the node now is mapped by the old id\n // which is inconsistent. so to keep the old node as selected,\n // we swap in the clone (with the old id and old data). this means\n // the oldNode is effectively a daemon we keep a reference to,\n // so if client calls api.getSelectedNodes(), it gets the daemon\n // in the result. when the client un-selects, the reference to the\n // daemon is removed. the daemon, because it's an oldNode, is not\n // used by the grid for rendering, it's a copy of what the node used\n // to be like before the id was changed.\n SelectionService.prototype.syncInOldRowNode = function (rowNode, oldNode) {\n var oldNodeHasDifferentId = exists(oldNode) && (rowNode.id !== oldNode.id);\n if (oldNodeHasDifferentId && oldNode) {\n var id = oldNode.id;\n var oldNodeSelected = this.selectedNodes[id] == rowNode;\n if (oldNodeSelected) {\n this.selectedNodes[oldNode.id] = oldNode;\n }\n }\n };\n SelectionService.prototype.syncInNewRowNode = function (rowNode) {\n if (exists(this.selectedNodes[rowNode.id])) {\n rowNode.setSelectedInitialValue(true);\n this.selectedNodes[rowNode.id] = rowNode;\n }\n else {\n rowNode.setSelectedInitialValue(false);\n }\n };\n SelectionService.prototype.reset = function () {\n this.logger.log('reset');\n this.selectedNodes = {};\n this.lastSelectedNode = null;\n };\n // returns a list of all nodes at 'best cost' - a feature to be used\n // with groups / trees. if a group has all it's children selected,\n // then the group appears in the result, but not the children.\n // Designed for use with 'children' as the group selection type,\n // where groups don't actually appear in the selection normally.\n SelectionService.prototype.getBestCostNodeSelection = function () {\n if (this.rowModel.getType() !== Constants.ROW_MODEL_TYPE_CLIENT_SIDE) {\n console.warn('AG Grid: `getBestCostNodeSelection` is only available when using normal row model');\n return;\n }\n var clientSideRowModel = this.rowModel;\n var topLevelNodes = clientSideRowModel.getTopLevelNodes();\n if (topLevelNodes === null) {\n console.warn('AG Grid: `selectAll` not available doing `rowModel=virtual`');\n return;\n }\n var result = [];\n // recursive function, to find the selected nodes\n function traverse(nodes) {\n for (var i = 0, l = nodes.length; i < l; i++) {\n var node = nodes[i];\n if (node.isSelected()) {\n result.push(node);\n }\n else {\n // if not selected, then if it's a group, and the group\n // has children, continue to search for selections\n var maybeGroup = node;\n if (maybeGroup.group && maybeGroup.children) {\n traverse(maybeGroup.children);\n }\n }\n }\n }\n traverse(topLevelNodes);\n return result;\n };\n SelectionService.prototype.setRowModel = function (rowModel) {\n this.rowModel = rowModel;\n };\n SelectionService.prototype.isEmpty = function () {\n var count = 0;\n iterateObject(this.selectedNodes, function (nodeId, rowNode) {\n if (rowNode) {\n count++;\n }\n });\n return count === 0;\n };\n SelectionService.prototype.deselectAllRowNodes = function (justFiltered) {\n if (justFiltered === void 0) { justFiltered = false; }\n var callback = function (rowNode) { return rowNode.selectThisNode(false); };\n var rowModelClientSide = this.rowModel.getType() === Constants.ROW_MODEL_TYPE_CLIENT_SIDE;\n if (justFiltered) {\n if (!rowModelClientSide) {\n console.error('AG Grid: selecting just filtered only works with In Memory Row Model');\n return;\n }\n var clientSideRowModel = this.rowModel;\n clientSideRowModel.forEachNodeAfterFilter(callback);\n }\n else {\n iterateObject(this.selectedNodes, function (id, rowNode) {\n // remember the reference can be to null, as we never 'delete' from the map\n if (rowNode) {\n callback(rowNode);\n }\n });\n // this clears down the map (whereas above only sets the items in map to 'undefined')\n this.reset();\n }\n // the above does not clean up the parent rows if they are selected\n if (rowModelClientSide && this.groupSelectsChildren) {\n this.updateGroupsFromChildrenSelections();\n }\n var event = {\n type: Events.EVENT_SELECTION_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n SelectionService.prototype.selectAllRowNodes = function (justFiltered) {\n if (justFiltered === void 0) { justFiltered = false; }\n if (this.rowModel.getType() !== Constants.ROW_MODEL_TYPE_CLIENT_SIDE) {\n throw new Error(\"selectAll only available with normal row model, ie not \" + this.rowModel.getType());\n }\n var clientSideRowModel = this.rowModel;\n var callback = function (rowNode) { return rowNode.selectThisNode(true); };\n if (justFiltered) {\n clientSideRowModel.forEachNodeAfterFilter(callback);\n }\n else {\n clientSideRowModel.forEachNode(callback);\n }\n // the above does not clean up the parent rows if they are selected\n if (this.rowModel.getType() === Constants.ROW_MODEL_TYPE_CLIENT_SIDE && this.groupSelectsChildren) {\n this.updateGroupsFromChildrenSelections();\n }\n var event = {\n type: Events.EVENT_SELECTION_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n /**\n * @method\n * @deprecated\n */\n SelectionService.prototype.selectNode = function (rowNode, tryMulti) {\n if (rowNode) {\n rowNode.setSelectedParams({ newValue: true, clearSelection: !tryMulti });\n }\n };\n /**\n * @method\n * @deprecated\n */\n SelectionService.prototype.deselectIndex = function (rowIndex) {\n var node = this.rowModel.getRow(rowIndex);\n this.deselectNode(node);\n };\n /**\n * @method\n * @deprecated\n */\n SelectionService.prototype.deselectNode = function (rowNode) {\n if (rowNode) {\n rowNode.setSelectedParams({ newValue: false, clearSelection: false });\n }\n };\n /**\n * @method\n * @deprecated\n */\n SelectionService.prototype.selectIndex = function (index, tryMulti) {\n var node = this.rowModel.getRow(index);\n this.selectNode(node, tryMulti);\n };\n __decorate([\n Autowired('rowModel')\n ], SelectionService.prototype, \"rowModel\", void 0);\n __decorate([\n Autowired('columnApi')\n ], SelectionService.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], SelectionService.prototype, \"gridApi\", void 0);\n __decorate([\n __param(0, Qualifier('loggerFactory'))\n ], SelectionService.prototype, \"setBeans\", null);\n __decorate([\n PostConstruct\n ], SelectionService.prototype, \"init\", null);\n SelectionService = __decorate([\n Bean('selectionService')\n ], SelectionService);\n return SelectionService;\n}(BeanStub));\nexport { SelectionService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Bean, PreDestroy } from \"../context/context\";\nimport { _ } from \"../utils\";\nvar ColumnApi = /** @class */ (function () {\n function ColumnApi() {\n }\n /** Gets the grid to size the columns to the specified width in pixels, e.g. `sizeColumnsToFit(900)`. To have the grid fit the columns to the grid's width, use the Grid API `gridApi.sizeColumnsToFit()` instead. */\n ColumnApi.prototype.sizeColumnsToFit = function (gridWidth) {\n // AG-3403 validate that gridWidth is provided because this method has the same name as\n // a method on the grid API that takes no arguments, and it's easy to confuse the two\n if (typeof gridWidth === \"undefined\") {\n console.error('AG Grid: missing parameter to columnApi.sizeColumnsToFit(gridWidth)');\n }\n this.columnModel.sizeColumnsToFit(gridWidth, 'api');\n };\n /** Call this if you want to open or close a column group. */\n ColumnApi.prototype.setColumnGroupOpened = function (group, newValue) { this.columnModel.setColumnGroupOpened(group, newValue, 'api'); };\n /** Returns the column group with the given name. */\n ColumnApi.prototype.getColumnGroup = function (name, instanceId) { return this.columnModel.getColumnGroup(name, instanceId); };\n /** Returns the provided column group with the given name. */\n ColumnApi.prototype.getProvidedColumnGroup = function (name) { return this.columnModel.getProvidedColumnGroup(name); };\n /** Returns the display name for a column. Useful if you are doing your own header rendering and want the grid to work out if `headerValueGetter` is used, or if you are doing your own column management GUI, to know what to show as the column name. */\n ColumnApi.prototype.getDisplayNameForColumn = function (column, location) { return this.columnModel.getDisplayNameForColumn(column, location) || ''; };\n /** Returns the display name for a column group (when grouping columns). */\n ColumnApi.prototype.getDisplayNameForColumnGroup = function (columnGroup, location) { return this.columnModel.getDisplayNameForColumnGroup(columnGroup, location) || ''; };\n /** Returns the column with the given `colKey`, which can either be the `colId` (a string) or the `colDef` (an object). */\n ColumnApi.prototype.getColumn = function (key) { return this.columnModel.getPrimaryColumn(key); };\n /** Applies the state of the columns from a previous state. Returns `false` if one or more columns could not be found. */\n ColumnApi.prototype.applyColumnState = function (params) { return this.columnModel.applyColumnState(params, 'api'); };\n /** Gets the state of the columns. Typically used when saving column state. */\n ColumnApi.prototype.getColumnState = function () { return this.columnModel.getColumnState(); };\n /** Sets the state back to match the originally provided column definitions. */\n ColumnApi.prototype.resetColumnState = function () { this.columnModel.resetColumnState('api'); };\n /** Gets the state of the column groups. Typically used when saving column group state. */\n ColumnApi.prototype.getColumnGroupState = function () { return this.columnModel.getColumnGroupState(); };\n /** Sets the state of the column group state from a previous state. */\n ColumnApi.prototype.setColumnGroupState = function (stateItems) { this.columnModel.setColumnGroupState(stateItems, 'api'); };\n /** Sets the state back to match the originally provided column definitions. */\n ColumnApi.prototype.resetColumnGroupState = function () { this.columnModel.resetColumnGroupState('api'); };\n /** Returns `true` if pinning left or right, otherwise `false`. */\n ColumnApi.prototype.isPinning = function () { return this.columnModel.isPinningLeft() || this.columnModel.isPinningRight(); };\n /** Returns `true` if pinning left, otherwise `false`. */\n ColumnApi.prototype.isPinningLeft = function () { return this.columnModel.isPinningLeft(); };\n /** Returns `true` if pinning right, otherwise `false`. */\n ColumnApi.prototype.isPinningRight = function () { return this.columnModel.isPinningRight(); };\n /** Returns the column to the right of the provided column, taking into consideration open / closed column groups and visible columns. This is useful if you need to know what column is beside yours e.g. if implementing your own cell navigation. */\n ColumnApi.prototype.getDisplayedColAfter = function (col) { return this.columnModel.getDisplayedColAfter(col); };\n /** Same as `getVisibleColAfter` except gives column to the left. */\n ColumnApi.prototype.getDisplayedColBefore = function (col) { return this.columnModel.getDisplayedColBefore(col); };\n /** Sets the visibility of a column. Key can be the column ID or `Column` object. */\n ColumnApi.prototype.setColumnVisible = function (key, visible) { this.columnModel.setColumnVisible(key, visible, 'api'); };\n /** Same as `setColumnVisible`, but provide a list of column keys. */\n ColumnApi.prototype.setColumnsVisible = function (keys, visible) { this.columnModel.setColumnsVisible(keys, visible, 'api'); };\n /** Sets the column pinned / unpinned. Key can be the column ID, field, `ColDef` object or `Column` object. */\n ColumnApi.prototype.setColumnPinned = function (key, pinned) { this.columnModel.setColumnPinned(key, pinned, 'api'); };\n /** Same as `setColumnPinned`, but provide a list of column keys. */\n ColumnApi.prototype.setColumnsPinned = function (keys, pinned) { this.columnModel.setColumnsPinned(keys, pinned, 'api'); };\n /** Returns all the columns, regardless of visible or not. */\n ColumnApi.prototype.getAllColumns = function () { return this.columnModel.getAllPrimaryColumns(); };\n /**\n * Returns all the grid columns, same as `getAllColumns()`, except\n *\n * a) it has the order of the columns that are presented in the grid\n *\n * b) it's after the 'pivot' step, so if pivoting, has the value columns for the pivot.\n */\n ColumnApi.prototype.getAllGridColumns = function () { return this.columnModel.getAllGridColumns(); };\n /** Same as `getAllDisplayedColumns` but just for the pinned left portion of the grid. */\n ColumnApi.prototype.getDisplayedLeftColumns = function () { return this.columnModel.getDisplayedLeftColumns(); };\n /** Same as `getAllDisplayedColumns` but just for the center portion of the grid. */\n ColumnApi.prototype.getDisplayedCenterColumns = function () { return this.columnModel.getDisplayedCenterColumns(); };\n /** Same as `getAllDisplayedColumns` but just for the pinned right portion of the grid. */\n ColumnApi.prototype.getDisplayedRightColumns = function () { return this.columnModel.getDisplayedRightColumns(); };\n /** Returns all columns currently displayed (e.g. are visible and if in a group, the group is showing the columns) for the pinned left, centre and pinned right portions of the grid. */\n ColumnApi.prototype.getAllDisplayedColumns = function () { return this.columnModel.getAllDisplayedColumns(); };\n /** Same as `getAllGridColumns()`, except only returns rendered columns, i.e. columns that are not within the viewport and therefore not rendered, due to column virtualisation, are not displayed. */\n ColumnApi.prototype.getAllDisplayedVirtualColumns = function () { return this.columnModel.getViewportColumns(); };\n /** Moves a column to `toIndex`. The column is first removed, then added at the `toIndex` location, thus index locations will change to the right of the column after the removal. */\n ColumnApi.prototype.moveColumn = function (key, toIndex) {\n if (typeof key === 'number') {\n // moveColumn used to take indexes, so this is advising user who hasn't moved to new method name\n console.warn('AG Grid: you are using moveColumn(fromIndex, toIndex) - moveColumn takes a column key and a destination index, not two indexes, to move with indexes use moveColumnByIndex(from,to) instead');\n this.columnModel.moveColumnByIndex(key, toIndex, 'api');\n }\n else {\n this.columnModel.moveColumn(key, toIndex, 'api');\n }\n };\n /** Same as `moveColumn` but works on index locations. */\n ColumnApi.prototype.moveColumnByIndex = function (fromIndex, toIndex) { this.columnModel.moveColumnByIndex(fromIndex, toIndex, 'api'); };\n /** Same as `moveColumn` but works on list. */\n ColumnApi.prototype.moveColumns = function (columnsToMoveKeys, toIndex) { this.columnModel.moveColumns(columnsToMoveKeys, toIndex, 'api'); };\n /** Move the column to a new position in the row grouping order. */\n ColumnApi.prototype.moveRowGroupColumn = function (fromIndex, toIndex) { this.columnModel.moveRowGroupColumn(fromIndex, toIndex); };\n /** Sets the agg function for a column. `aggFunc` can be one of `'min' | 'max' | 'sum'`. */\n ColumnApi.prototype.setColumnAggFunc = function (key, aggFunc) { this.columnModel.setColumnAggFunc(key, aggFunc); };\n /** Sets the column width on a single column. The finished flag gets included in the resulting event and not used internally by the grid. The finished flag is intended for dragging, where a dragging action will produce many `columnWidth` events, so the consumer of events knows when it receives the last event in a stream. The finished parameter is optional, and defaults to `true`. */\n ColumnApi.prototype.setColumnWidth = function (key, newWidth, finished, source) {\n if (finished === void 0) { finished = true; }\n this.columnModel.setColumnWidths([{ key: key, newWidth: newWidth }], false, finished, source);\n };\n /** Sets the column widths on multiple columns. This method offers better performance than calling `setColumnWidth` multiple times. The finished flag gets included in the resulting event and not used internally by the grid. The finished flag is intended for dragging, where a dragging action will produce many `columnWidth` events, so the consumer of events knows when it receives the last event in a stream. The finished parameter is optional, and defaults to `true`. */\n ColumnApi.prototype.setColumnWidths = function (columnWidths, finished, source) {\n if (finished === void 0) { finished = true; }\n this.columnModel.setColumnWidths(columnWidths, false, finished, source);\n };\n /** Set the pivot mode. */\n ColumnApi.prototype.setPivotMode = function (pivotMode) { this.columnModel.setPivotMode(pivotMode); };\n /** Get the pivot mode. */\n ColumnApi.prototype.isPivotMode = function () { return this.columnModel.isPivotMode(); };\n /** Returns the pivot column for the given `pivotKeys` and `valueColId`. Useful to then call operations on the pivot column. */\n ColumnApi.prototype.getSecondaryPivotColumn = function (pivotKeys, valueColKey) { return this.columnModel.getSecondaryPivotColumn(pivotKeys, valueColKey); };\n /** Set the value columns. */\n ColumnApi.prototype.setValueColumns = function (colKeys) { this.columnModel.setValueColumns(colKeys, 'api'); };\n /** Get value columns. */\n ColumnApi.prototype.getValueColumns = function () { return this.columnModel.getValueColumns(); };\n /** Remove a value column. */\n ColumnApi.prototype.removeValueColumn = function (colKey) { this.columnModel.removeValueColumn(colKey, 'api'); };\n /** Same as `removeValueColumns` but provide a list. */\n ColumnApi.prototype.removeValueColumns = function (colKeys) { this.columnModel.removeValueColumns(colKeys, 'api'); };\n /** Add a value column. */\n ColumnApi.prototype.addValueColumn = function (colKey) { this.columnModel.addValueColumn(colKey, 'api'); };\n /** Same as `addValueColumn` but provide a list. */\n ColumnApi.prototype.addValueColumns = function (colKeys) { this.columnModel.addValueColumns(colKeys, 'api'); };\n /** Set the row group columns. */\n ColumnApi.prototype.setRowGroupColumns = function (colKeys) { this.columnModel.setRowGroupColumns(colKeys, 'api'); };\n /** Remove a column from the row groups. */\n ColumnApi.prototype.removeRowGroupColumn = function (colKey) { this.columnModel.removeRowGroupColumn(colKey, 'api'); };\n /** Same as `removeRowGroupColumn` but provide a list of columns. */\n ColumnApi.prototype.removeRowGroupColumns = function (colKeys) { this.columnModel.removeRowGroupColumns(colKeys, 'api'); };\n /** Add a column to the row groups. */\n ColumnApi.prototype.addRowGroupColumn = function (colKey) { this.columnModel.addRowGroupColumn(colKey, 'api'); };\n /** Same as `addRowGroupColumn` but provide a list of columns. */\n ColumnApi.prototype.addRowGroupColumns = function (colKeys) { this.columnModel.addRowGroupColumns(colKeys, 'api'); };\n /** Get row group columns. */\n ColumnApi.prototype.getRowGroupColumns = function () { return this.columnModel.getRowGroupColumns(); };\n /** Set the pivot columns. */\n ColumnApi.prototype.setPivotColumns = function (colKeys) { this.columnModel.setPivotColumns(colKeys, 'api'); };\n /** Remove a pivot column. */\n ColumnApi.prototype.removePivotColumn = function (colKey) { this.columnModel.removePivotColumn(colKey, 'api'); };\n /** Same as `removePivotColumn` but provide a list of columns. */\n ColumnApi.prototype.removePivotColumns = function (colKeys) { this.columnModel.removePivotColumns(colKeys, 'api'); };\n /** Add a pivot column. */\n ColumnApi.prototype.addPivotColumn = function (colKey) { this.columnModel.addPivotColumn(colKey, 'api'); };\n /** Same as `addPivotColumn` but provide a list of columns. */\n ColumnApi.prototype.addPivotColumns = function (colKeys) { this.columnModel.addPivotColumns(colKeys, 'api'); };\n /** Get the pivot columns. */\n ColumnApi.prototype.getPivotColumns = function () { return this.columnModel.getPivotColumns(); };\n /** Same as `getAllDisplayedColumnGroups` but just for the pinned left portion of the grid. */\n ColumnApi.prototype.getLeftDisplayedColumnGroups = function () { return this.columnModel.getDisplayedTreeLeft(); };\n /** Same as `getAllDisplayedColumnGroups` but just for the center portion of the grid. */\n ColumnApi.prototype.getCenterDisplayedColumnGroups = function () { return this.columnModel.getDisplayedTreeCentre(); };\n /** Same as `getAllDisplayedColumnGroups` but just for the pinned right portion of the grid. */\n ColumnApi.prototype.getRightDisplayedColumnGroups = function () { return this.columnModel.getDisplayedTreeRight(); };\n /** Returns all 'root' column headers. If you are not grouping columns, these return the columns. If you are grouping, these return the top level groups - you can navigate down through each one to get the other lower level headers and finally the columns at the bottom. */\n ColumnApi.prototype.getAllDisplayedColumnGroups = function () { return this.columnModel.getAllDisplayedTrees(); };\n /** Auto-sizes a column based on its contents. */\n ColumnApi.prototype.autoSizeColumn = function (key, skipHeader) { return this.columnModel.autoSizeColumn(key, skipHeader, 'api'); };\n /** Same as `autoSizeColumn`, but provide a list of column keys. */\n ColumnApi.prototype.autoSizeColumns = function (keys, skipHeader) {\n this.columnModel.autoSizeColumns({ columns: keys, skipHeader: skipHeader });\n };\n /** Calls `autoSizeColumns` on all displayed columns. */\n ColumnApi.prototype.autoSizeAllColumns = function (skipHeader) { this.columnModel.autoSizeAllColumns(skipHeader, 'api'); };\n /** Set the secondary pivot columns. */\n ColumnApi.prototype.setSecondaryColumns = function (colDefs) { this.columnModel.setSecondaryColumns(colDefs, 'api'); };\n /** Returns the grid's secondary columns. */\n ColumnApi.prototype.getSecondaryColumns = function () { return this.columnModel.getSecondaryColumns(); };\n /** Returns the grid's primary columns. */\n ColumnApi.prototype.getPrimaryColumns = function () { return this.columnModel.getAllPrimaryColumns(); };\n ColumnApi.prototype.cleanDownReferencesToAvoidMemoryLeakInCaseApplicationIsKeepingReferenceToDestroyedGrid = function () {\n // some users were raising support issues with regards memory leaks. the problem was the customers applications\n // were keeping references to the API. trying to educate them all would be difficult, easier to just remove\n // all references in the API so at least the core grid can be garbage collected.\n //\n // wait about 100ms before clearing down the references, in case user has some cleanup to do,\n // and needs to deference the API first\n setTimeout(_.removeAllReferences.bind(window, this, 'Column API'), 100);\n };\n // below goes through deprecated items, prints message to user, then calls the new version of the same method\n // public getColumnDefs(): (ColDef | ColGroupDef)[] {\n // this.setColumnGroupOpened(group, newValue);\n // return null;\n // }\n /** @deprecated columnGroupOpened no longer exists, use setColumnGroupOpened */\n ColumnApi.prototype.columnGroupOpened = function (group, newValue) {\n console.error('AG Grid: columnGroupOpened no longer exists, use setColumnGroupOpened');\n this.setColumnGroupOpened(group, newValue);\n };\n /** @deprecated hideColumns is deprecated, use setColumnsVisible */\n ColumnApi.prototype.hideColumns = function (colIds, hide) {\n console.error('AG Grid: hideColumns is deprecated, use setColumnsVisible');\n this.columnModel.setColumnsVisible(colIds, !hide, 'api');\n };\n /** @deprecated hideColumn is deprecated, use setColumnVisible */\n ColumnApi.prototype.hideColumn = function (colId, hide) {\n console.error('AG Grid: hideColumn is deprecated, use setColumnVisible');\n this.columnModel.setColumnVisible(colId, !hide, 'api');\n };\n /** @deprecated setState is deprecated, use setColumnState */\n ColumnApi.prototype.setState = function (columnState) {\n console.error('AG Grid: setState is deprecated, use setColumnState');\n return this.setColumnState(columnState);\n };\n /** @deprecated getState is deprecated, use getColumnState */\n ColumnApi.prototype.getState = function () {\n console.error('AG Grid: getState is deprecated, use getColumnState');\n return this.getColumnState();\n };\n /** @deprecated resetState is deprecated, use resetColumnState */\n ColumnApi.prototype.resetState = function () {\n console.error('AG Grid: resetState is deprecated, use resetColumnState');\n this.resetColumnState();\n };\n /** @deprecated getAggregationColumns is deprecated, use getValueColumns */\n ColumnApi.prototype.getAggregationColumns = function () {\n console.error('AG Grid: getAggregationColumns is deprecated, use getValueColumns');\n return this.columnModel.getValueColumns();\n };\n /** @deprecated removeAggregationColumn is deprecated, use removeValueColumn */\n ColumnApi.prototype.removeAggregationColumn = function (colKey) {\n console.error('AG Grid: removeAggregationColumn is deprecated, use removeValueColumn');\n this.columnModel.removeValueColumn(colKey, 'api');\n };\n /** @deprecated removeAggregationColumns is deprecated, use removeValueColumns */\n ColumnApi.prototype.removeAggregationColumns = function (colKeys) {\n console.error('AG Grid: removeAggregationColumns is deprecated, use removeValueColumns');\n this.columnModel.removeValueColumns(colKeys, 'api');\n };\n /** @deprecated addAggregationColumn is deprecated, use addValueColumn */\n ColumnApi.prototype.addAggregationColumn = function (colKey) {\n console.error('AG Grid: addAggregationColumn is deprecated, use addValueColumn');\n this.columnModel.addValueColumn(colKey, 'api');\n };\n /** @deprecated addAggregationColumns is deprecated, use addValueColumns */\n ColumnApi.prototype.addAggregationColumns = function (colKeys) {\n console.error('AG Grid: addAggregationColumns is deprecated, use addValueColumns');\n this.columnModel.addValueColumns(colKeys, 'api');\n };\n /** @deprecated setColumnAggFunction is deprecated, use setColumnAggFunc */\n ColumnApi.prototype.setColumnAggFunction = function (column, aggFunc) {\n console.error('AG Grid: setColumnAggFunction is deprecated, use setColumnAggFunc');\n this.columnModel.setColumnAggFunc(column, aggFunc, 'api');\n };\n /** @deprecated getDisplayNameForCol is deprecated, use getDisplayNameForColumn */\n ColumnApi.prototype.getDisplayNameForCol = function (column) {\n console.error('AG Grid: getDisplayNameForCol is deprecated, use getDisplayNameForColumn');\n return this.getDisplayNameForColumn(column, null);\n };\n /** @deprecated setColumnState is deprecated, use applyColumnState. */\n ColumnApi.prototype.setColumnState = function (columnState) {\n console.error('AG Grid: setColumnState is deprecated, use applyColumnState');\n return this.columnModel.applyColumnState({ state: columnState, applyOrder: true }, 'api');\n };\n /** @deprecated getOriginalColumnGroup is deprecated, use getProvidedColumnGroup. */\n ColumnApi.prototype.getOriginalColumnGroup = function (name) {\n console.error('AG Grid: getOriginalColumnGroup is deprecated, use getProvidedColumnGroup');\n return this.columnModel.getProvidedColumnGroup(name);\n };\n __decorate([\n Autowired('columnModel')\n ], ColumnApi.prototype, \"columnModel\", void 0);\n __decorate([\n PreDestroy\n ], ColumnApi.prototype, \"cleanDownReferencesToAvoidMemoryLeakInCaseApplicationIsKeepingReferenceToDestroyedGrid\", null);\n ColumnApi = __decorate([\n Bean('columnApi')\n ], ColumnApi);\n return ColumnApi;\n}());\nexport { ColumnApi };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nexport var SelectionHandleType;\n(function (SelectionHandleType) {\n SelectionHandleType[SelectionHandleType[\"FILL\"] = 0] = \"FILL\";\n SelectionHandleType[SelectionHandleType[\"RANGE\"] = 1] = \"RANGE\";\n})(SelectionHandleType || (SelectionHandleType = {}));\nexport var CellRangeType;\n(function (CellRangeType) {\n CellRangeType[CellRangeType[\"VALUE\"] = 0] = \"VALUE\";\n CellRangeType[CellRangeType[\"DIMENSION\"] = 1] = \"DIMENSION\";\n})(CellRangeType || (CellRangeType = {}));\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nimport { includes, last } from \"../../utils/array\";\nimport { CellRangeType, SelectionHandleType } from \"../../interfaces/IRangeService\";\nimport { missing } from \"../../utils/generic\";\nimport { setAriaSelected } from \"../../utils/aria\";\nvar CSS_CELL_RANGE_SELECTED = 'ag-cell-range-selected';\nvar CSS_CELL_RANGE_CHART = 'ag-cell-range-chart';\nvar CSS_CELL_RANGE_SINGLE_CELL = 'ag-cell-range-single-cell';\nvar CSS_CELL_RANGE_CHART_CATEGORY = 'ag-cell-range-chart-category';\nvar CSS_CELL_RANGE_HANDLE = 'ag-cell-range-handle';\nvar CSS_CELL_RANGE_TOP = 'ag-cell-range-top';\nvar CSS_CELL_RANGE_RIGHT = 'ag-cell-range-right';\nvar CSS_CELL_RANGE_BOTTOM = 'ag-cell-range-bottom';\nvar CSS_CELL_RANGE_LEFT = 'ag-cell-range-left';\nvar CellRangeFeature = /** @class */ (function () {\n function CellRangeFeature(beans, ctrl) {\n this.beans = beans;\n this.cellCtrl = ctrl;\n }\n CellRangeFeature.prototype.setComp = function (cellComp, eGui) {\n this.cellComp = cellComp;\n this.eGui = eGui;\n this.onRangeSelectionChanged();\n };\n CellRangeFeature.prototype.onRangeSelectionChanged = function () {\n // when using reactUi, given UI is async, it's possible this method is called before the comp is registered\n if (!this.cellComp) {\n return;\n }\n this.rangeCount = this.beans.rangeService.getCellRangeCount(this.cellCtrl.getCellPosition());\n this.hasChartRange = this.getHasChartRange();\n this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_SELECTED, this.rangeCount !== 0);\n this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_SELECTED + \"-1\", this.rangeCount === 1);\n this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_SELECTED + \"-2\", this.rangeCount === 2);\n this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_SELECTED + \"-3\", this.rangeCount === 3);\n this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_SELECTED + \"-4\", this.rangeCount >= 4);\n this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_CHART, this.hasChartRange);\n setAriaSelected(this.eGui, this.rangeCount > 0 ? true : undefined);\n this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_SINGLE_CELL, this.isSingleCell());\n this.updateRangeBorders();\n this.refreshHandle();\n };\n CellRangeFeature.prototype.updateRangeBorders = function () {\n var rangeBorders = this.getRangeBorders();\n var isSingleCell = this.isSingleCell();\n var isTop = !isSingleCell && rangeBorders.top;\n var isRight = !isSingleCell && rangeBorders.right;\n var isBottom = !isSingleCell && rangeBorders.bottom;\n var isLeft = !isSingleCell && rangeBorders.left;\n this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_TOP, isTop);\n this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_RIGHT, isRight);\n this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_BOTTOM, isBottom);\n this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_LEFT, isLeft);\n };\n CellRangeFeature.prototype.isSingleCell = function () {\n var rangeService = this.beans.rangeService;\n return this.rangeCount === 1 && rangeService && !rangeService.isMoreThanOneCell();\n };\n CellRangeFeature.prototype.getHasChartRange = function () {\n var rangeService = this.beans.rangeService;\n if (!this.rangeCount || !rangeService) {\n return false;\n }\n var cellRanges = rangeService.getCellRanges();\n return cellRanges.length > 0 && cellRanges.every(function (range) { return includes([CellRangeType.DIMENSION, CellRangeType.VALUE], range.type); });\n };\n CellRangeFeature.prototype.updateRangeBordersIfRangeCount = function () {\n // we only need to update range borders if we are in a range\n if (this.rangeCount > 0) {\n this.updateRangeBorders();\n this.refreshHandle();\n }\n };\n CellRangeFeature.prototype.getRangeBorders = function () {\n var _this = this;\n var isRtl = this.beans.gridOptionsWrapper.isEnableRtl();\n var top = false;\n var right = false;\n var bottom = false;\n var left = false;\n var thisCol = this.cellCtrl.getCellPosition().column;\n var _a = this.beans, rangeService = _a.rangeService, columnModel = _a.columnModel;\n var leftCol;\n var rightCol;\n if (isRtl) {\n leftCol = columnModel.getDisplayedColAfter(thisCol);\n rightCol = columnModel.getDisplayedColBefore(thisCol);\n }\n else {\n leftCol = columnModel.getDisplayedColBefore(thisCol);\n rightCol = columnModel.getDisplayedColAfter(thisCol);\n }\n var ranges = rangeService.getCellRanges().filter(function (range) { return rangeService.isCellInSpecificRange(_this.cellCtrl.getCellPosition(), range); });\n // this means we are the first column in the grid\n if (!leftCol) {\n left = true;\n }\n // this means we are the last column in the grid\n if (!rightCol) {\n right = true;\n }\n for (var i = 0; i < ranges.length; i++) {\n if (top && right && bottom && left) {\n break;\n }\n var range = ranges[i];\n var startRow = rangeService.getRangeStartRow(range);\n var endRow = rangeService.getRangeEndRow(range);\n if (!top && this.beans.rowPositionUtils.sameRow(startRow, this.cellCtrl.getCellPosition())) {\n top = true;\n }\n if (!bottom && this.beans.rowPositionUtils.sameRow(endRow, this.cellCtrl.getCellPosition())) {\n bottom = true;\n }\n if (!left && leftCol && range.columns.indexOf(leftCol) < 0) {\n left = true;\n }\n if (!right && rightCol && range.columns.indexOf(rightCol) < 0) {\n right = true;\n }\n }\n return { top: top, right: right, bottom: bottom, left: left };\n };\n CellRangeFeature.prototype.refreshHandle = function () {\n if (!this.beans.rangeService) {\n return;\n }\n var shouldHaveSelectionHandle = this.shouldHaveSelectionHandle();\n if (this.selectionHandle && !shouldHaveSelectionHandle) {\n this.selectionHandle = this.beans.context.destroyBean(this.selectionHandle);\n }\n if (shouldHaveSelectionHandle) {\n this.addSelectionHandle();\n }\n this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_HANDLE, !!this.selectionHandle);\n };\n CellRangeFeature.prototype.shouldHaveSelectionHandle = function () {\n var _a = this.beans, gridOptionsWrapper = _a.gridOptionsWrapper, rangeService = _a.rangeService;\n var cellRanges = rangeService.getCellRanges();\n var rangesLen = cellRanges.length;\n if (this.rangeCount < 1 || rangesLen < 1) {\n return false;\n }\n var cellRange = last(cellRanges);\n var cellPosition = this.cellCtrl.getCellPosition();\n var isFillHandleAvailable = gridOptionsWrapper.isEnableFillHandle() && !this.cellCtrl.isSuppressFillHandle();\n var isRangeHandleAvailable = gridOptionsWrapper.isEnableRangeHandle();\n var handleIsAvailable = rangesLen === 1 && !this.cellCtrl.isEditing() && (isFillHandleAvailable || isRangeHandleAvailable);\n if (this.hasChartRange) {\n var hasCategoryRange = cellRanges[0].type === CellRangeType.DIMENSION;\n var isCategoryCell = hasCategoryRange && rangeService.isCellInSpecificRange(cellPosition, cellRanges[0]);\n this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_CHART_CATEGORY, isCategoryCell);\n handleIsAvailable = cellRange.type === CellRangeType.VALUE;\n }\n return handleIsAvailable &&\n cellRange.endRow != null &&\n rangeService.isContiguousRange(cellRange) &&\n rangeService.isBottomRightCell(cellRange, cellPosition);\n };\n CellRangeFeature.prototype.addSelectionHandle = function () {\n var _a = this.beans, gridOptionsWrapper = _a.gridOptionsWrapper, rangeService = _a.rangeService;\n var cellRangeType = last(rangeService.getCellRanges()).type;\n var selectionHandleFill = gridOptionsWrapper.isEnableFillHandle() && missing(cellRangeType);\n var type = selectionHandleFill ? SelectionHandleType.FILL : SelectionHandleType.RANGE;\n if (this.selectionHandle && this.selectionHandle.getType() !== type) {\n this.selectionHandle = this.beans.context.destroyBean(this.selectionHandle);\n }\n if (!this.selectionHandle) {\n this.selectionHandle = this.beans.selectionHandleFactory.createSelectionHandle(type);\n }\n this.selectionHandle.refresh(this.cellCtrl);\n };\n CellRangeFeature.prototype.destroy = function () {\n this.beans.context.destroyBean(this.selectionHandle);\n };\n return CellRangeFeature;\n}());\nexport { CellRangeFeature };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { areEqual, last } from \"../../utils/array\";\nimport { Events } from \"../../eventKeys\";\nimport { missing } from \"../../utils/generic\";\nimport { Constants } from \"../../constants/constants\";\nimport { BeanStub } from \"../../context/beanStub\";\n/**\n * Takes care of:\n * #) Cell Width (including when doing cell spanning, which makes width cover many columns)\n * #) Cell Height (when doing row span, otherwise we don't touch the height as it's just row height)\n * #) Cell Left (the horizontal positioning of the cell, the vertical positioning is on the row)\n */\nvar CellPositionFeature = /** @class */ (function (_super) {\n __extends(CellPositionFeature, _super);\n function CellPositionFeature(ctrl, beans) {\n var _this = _super.call(this) || this;\n _this.cellCtrl = ctrl;\n _this.beans = beans;\n _this.column = ctrl.getColumn();\n _this.rowNode = ctrl.getRowNode();\n _this.setupColSpan();\n _this.setupRowSpan();\n return _this;\n }\n CellPositionFeature.prototype.setupRowSpan = function () {\n this.rowSpan = this.column.getRowSpan(this.rowNode);\n };\n CellPositionFeature.prototype.setComp = function (eGui) {\n this.eGui = eGui;\n this.onLeftChanged();\n this.onWidthChanged();\n this.applyRowSpan();\n };\n CellPositionFeature.prototype.onDisplayColumnsChanged = function () {\n var colsSpanning = this.getColSpanningList();\n if (!areEqual(this.colsSpanning, colsSpanning)) {\n this.colsSpanning = colsSpanning;\n this.onWidthChanged();\n this.onLeftChanged(); // left changes when doing RTL\n }\n };\n CellPositionFeature.prototype.setupColSpan = function () {\n // if no col span is active, then we don't set it up, as it would be wasteful of CPU\n if (this.column.getColDef().colSpan == null) {\n return;\n }\n this.colsSpanning = this.getColSpanningList();\n // because we are col spanning, a reorder of the cols can change what cols we are spanning over\n this.addManagedListener(this.beans.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayColumnsChanged.bind(this));\n // because we are spanning over multiple cols, we check for width any time any cols width changes.\n // this is expensive - really we should be explicitly checking only the cols we are spanning over\n // instead of every col, however it would be tricky code to track the cols we are spanning over, so\n // because hardly anyone will be using colSpan, am favouring this easier way for more maintainable code.\n this.addManagedListener(this.beans.eventService, Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, this.onWidthChanged.bind(this));\n };\n CellPositionFeature.prototype.onWidthChanged = function () {\n if (!this.eGui) {\n return;\n }\n var width = this.getCellWidth();\n this.eGui.style.width = width + \"px\";\n };\n CellPositionFeature.prototype.getCellWidth = function () {\n if (!this.colsSpanning) {\n return this.column.getActualWidth();\n }\n return this.colsSpanning.reduce(function (width, col) { return width + col.getActualWidth(); }, 0);\n };\n CellPositionFeature.prototype.getColSpanningList = function () {\n var colSpan = this.column.getColSpan(this.rowNode);\n var colsSpanning = [];\n // if just one col, the col span is just the column we are in\n if (colSpan === 1) {\n colsSpanning.push(this.column);\n }\n else {\n var pointer = this.column;\n var pinned = this.column.getPinned();\n for (var i = 0; pointer && i < colSpan; i++) {\n colsSpanning.push(pointer);\n pointer = this.beans.columnModel.getDisplayedColAfter(pointer);\n if (!pointer || missing(pointer)) {\n break;\n }\n // we do not allow col spanning to span outside of pinned areas\n if (pinned !== pointer.getPinned()) {\n break;\n }\n }\n }\n return colsSpanning;\n };\n CellPositionFeature.prototype.onLeftChanged = function () {\n if (!this.eGui) {\n return;\n }\n var left = this.modifyLeftForPrintLayout(this.getCellLeft());\n this.eGui.style.left = left + 'px';\n };\n CellPositionFeature.prototype.getCellLeft = function () {\n var mostLeftCol;\n if (this.beans.gridOptionsWrapper.isEnableRtl() && this.colsSpanning) {\n mostLeftCol = last(this.colsSpanning);\n }\n else {\n mostLeftCol = this.column;\n }\n return mostLeftCol.getLeft();\n };\n CellPositionFeature.prototype.modifyLeftForPrintLayout = function (leftPosition) {\n if (!this.cellCtrl.isPrintLayout() || this.column.getPinned() === Constants.PINNED_LEFT) {\n return leftPosition;\n }\n var leftWidth = this.beans.columnModel.getDisplayedColumnsLeftWidth();\n if (this.column.getPinned() === Constants.PINNED_RIGHT) {\n var bodyWidth = this.beans.columnModel.getBodyContainerWidth();\n return leftWidth + bodyWidth + (leftPosition || 0);\n }\n // is in body\n return leftWidth + (leftPosition || 0);\n };\n CellPositionFeature.prototype.applyRowSpan = function () {\n if (this.rowSpan === 1) {\n return;\n }\n var singleRowHeight = this.beans.gridOptionsWrapper.getRowHeightAsNumber();\n var totalRowHeight = singleRowHeight * this.rowSpan;\n this.eGui.style.height = totalRowHeight + \"px\";\n this.eGui.style.zIndex = '1';\n };\n // overriding to make public, as we don't dispose this bean via context\n CellPositionFeature.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n return CellPositionFeature;\n}(BeanStub));\nexport { CellPositionFeature };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { BeanStub } from \"../../context/beanStub\";\nvar CellCustomStyleFeature = /** @class */ (function (_super) {\n __extends(CellCustomStyleFeature, _super);\n function CellCustomStyleFeature(ctrl, beans) {\n var _this = _super.call(this) || this;\n _this.staticClasses = [];\n _this.cellCtrl = ctrl;\n _this.beans = beans;\n _this.column = ctrl.getColumn();\n _this.rowNode = ctrl.getRowNode();\n return _this;\n }\n CellCustomStyleFeature.prototype.setComp = function (comp, scope) {\n this.cellComp = comp;\n this.scope = scope;\n this.applyUserStyles();\n this.applyCellClassRules();\n this.applyClassesFromColDef();\n };\n CellCustomStyleFeature.prototype.applyCellClassRules = function () {\n var _this = this;\n var colDef = this.column.getColDef();\n var cellClassParams = {\n value: this.cellCtrl.getValue(),\n data: this.rowNode.data,\n node: this.rowNode,\n colDef: colDef,\n rowIndex: this.rowNode.rowIndex,\n api: this.beans.gridOptionsWrapper.getApi(),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n $scope: this.scope,\n context: this.beans.gridOptionsWrapper.getContext()\n };\n this.beans.stylingService.processClassRules(colDef.cellClassRules, cellClassParams, function (className) { return _this.cellComp.addOrRemoveCssClass(className, true); }, function (className) { return _this.cellComp.addOrRemoveCssClass(className, false); });\n };\n CellCustomStyleFeature.prototype.applyUserStyles = function () {\n var colDef = this.column.getColDef();\n if (!colDef.cellStyle) {\n return;\n }\n var styles;\n if (typeof colDef.cellStyle === 'function') {\n var cellStyleParams = {\n column: this.column,\n value: this.cellCtrl.getValue(),\n colDef: colDef,\n data: this.rowNode.data,\n node: this.rowNode,\n rowIndex: this.rowNode.rowIndex,\n $scope: this.scope,\n api: this.beans.gridOptionsWrapper.getApi(),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n context: this.beans.gridOptionsWrapper.getContext(),\n };\n var cellStyleFunc = colDef.cellStyle;\n styles = cellStyleFunc(cellStyleParams);\n }\n else {\n styles = colDef.cellStyle;\n }\n this.cellComp.setUserStyles(styles);\n };\n CellCustomStyleFeature.prototype.applyClassesFromColDef = function () {\n var _this = this;\n var colDef = this.column.getColDef();\n var cellClassParams = {\n value: this.cellCtrl.getValue(),\n data: this.rowNode.data,\n node: this.rowNode,\n colDef: colDef,\n rowIndex: this.rowNode.rowIndex,\n $scope: this.scope,\n api: this.beans.gridOptionsWrapper.getApi(),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n context: this.beans.gridOptionsWrapper.getContext()\n };\n if (this.staticClasses.length) {\n this.staticClasses.forEach(function (className) { return _this.cellComp.addOrRemoveCssClass(className, false); });\n }\n this.staticClasses = this.beans.stylingService.getStaticCellClasses(colDef, cellClassParams);\n if (this.staticClasses.length) {\n this.staticClasses.forEach(function (className) { return _this.cellComp.addOrRemoveCssClass(className, true); });\n }\n };\n // overriding to make public, as we don't dispose this bean via context\n CellCustomStyleFeature.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n return CellCustomStyleFeature;\n}(BeanStub));\nexport { CellCustomStyleFeature };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { BeanStub } from \"../context/beanStub\";\nimport { CustomTooltipFeature } from \"./customTooltipFeature\";\nvar TooltipFeature = /** @class */ (function (_super) {\n __extends(TooltipFeature, _super);\n function TooltipFeature(ctrl, beans) {\n var _this = _super.call(this) || this;\n _this.ctrl = ctrl;\n _this.beans = beans;\n return _this;\n }\n TooltipFeature.prototype.setComp = function (comp) {\n this.comp = comp;\n this.setupTooltip();\n };\n TooltipFeature.prototype.setupTooltip = function () {\n this.browserTooltips = this.beans.gridOptionsWrapper.isEnableBrowserTooltips();\n this.updateTooltipText();\n if (this.browserTooltips) {\n this.comp.setTitle(this.tooltip != null ? this.tooltip : undefined);\n }\n else {\n this.createTooltipFeatureIfNeeded();\n }\n };\n TooltipFeature.prototype.updateTooltipText = function () {\n this.tooltip = this.ctrl.getTooltipValue();\n };\n TooltipFeature.prototype.createTooltipFeatureIfNeeded = function () {\n var _this = this;\n if (this.genericTooltipFeature != null) {\n return;\n }\n var parent = {\n getTooltipParams: function () { return _this.getTooltipParams(); },\n getGui: function () { return _this.ctrl.getGui(); }\n };\n this.genericTooltipFeature = this.createManagedBean(new CustomTooltipFeature(parent), this.beans.context);\n };\n TooltipFeature.prototype.refreshToolTip = function () {\n this.updateTooltipText();\n if (this.browserTooltips) {\n this.comp.setTitle(this.tooltip != null ? this.tooltip : undefined);\n }\n };\n TooltipFeature.prototype.getTooltipParams = function () {\n var ctrl = this.ctrl;\n var column = ctrl.getColumn ? ctrl.getColumn() : undefined;\n var colDef = ctrl.getColDef ? ctrl.getColDef() : undefined;\n var rowNode = ctrl.getRowNode ? ctrl.getRowNode() : undefined;\n return {\n location: ctrl.getLocation(),\n colDef: colDef,\n column: column,\n rowIndex: ctrl.getRowIndex ? ctrl.getRowIndex() : undefined,\n node: rowNode,\n data: rowNode ? rowNode.data : undefined,\n value: this.getTooltipText(),\n valueFormatted: ctrl.getValueFormatted ? ctrl.getValueFormatted() : undefined\n };\n };\n TooltipFeature.prototype.getTooltipText = function () {\n return this.tooltip;\n };\n // overriding to make public, as we don't dispose this bean via context\n TooltipFeature.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n return TooltipFeature;\n}(BeanStub));\nexport { TooltipFeature };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Bean, Optional, PostConstruct } from \"../context/context\";\n/** Using the IoC has a slight performance consideration, which is no problem most of the\n * time, unless we are trashing objects - which is the case when scrolling and rowComp\n * and cellComp. So for performance reasons, RowComp and CellComp do not get autowired\n * with the IoC. Instead they get passed this object which is all the beans the RowComp\n * and CellComp need. Not autowiring all the cells gives performance improvement. */\nvar Beans = /** @class */ (function () {\n function Beans() {\n }\n Beans.prototype.postConstruct = function () {\n this.doingMasterDetail = this.gridOptionsWrapper.isMasterDetail();\n if (this.gridOptionsWrapper.isRowModelDefault()) {\n this.clientSideRowModel = this.rowModel;\n }\n if (this.gridOptionsWrapper.isRowModelServerSide()) {\n this.serverSideRowModel = this.rowModel;\n }\n };\n __decorate([\n Autowired('resizeObserverService')\n ], Beans.prototype, \"resizeObserverService\", void 0);\n __decorate([\n Autowired('paginationProxy')\n ], Beans.prototype, \"paginationProxy\", void 0);\n __decorate([\n Autowired('context')\n ], Beans.prototype, \"context\", void 0);\n __decorate([\n Autowired('columnApi')\n ], Beans.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], Beans.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], Beans.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('expressionService')\n ], Beans.prototype, \"expressionService\", void 0);\n __decorate([\n Autowired('rowRenderer')\n ], Beans.prototype, \"rowRenderer\", void 0);\n __decorate([\n Autowired('$compile')\n ], Beans.prototype, \"$compile\", void 0);\n __decorate([\n Autowired('templateService')\n ], Beans.prototype, \"templateService\", void 0);\n __decorate([\n Autowired('valueService')\n ], Beans.prototype, \"valueService\", void 0);\n __decorate([\n Autowired('eventService')\n ], Beans.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('columnModel')\n ], Beans.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('headerNavigationService')\n ], Beans.prototype, \"headerNavigationService\", void 0);\n __decorate([\n Autowired('navigationService')\n ], Beans.prototype, \"navigationService\", void 0);\n __decorate([\n Autowired('columnAnimationService')\n ], Beans.prototype, \"columnAnimationService\", void 0);\n __decorate([\n Optional('rangeService')\n ], Beans.prototype, \"rangeService\", void 0);\n __decorate([\n Autowired('focusService')\n ], Beans.prototype, \"focusService\", void 0);\n __decorate([\n Optional('contextMenuFactory')\n ], Beans.prototype, \"contextMenuFactory\", void 0);\n __decorate([\n Autowired('popupService')\n ], Beans.prototype, \"popupService\", void 0);\n __decorate([\n Autowired('valueFormatterService')\n ], Beans.prototype, \"valueFormatterService\", void 0);\n __decorate([\n Autowired('stylingService')\n ], Beans.prototype, \"stylingService\", void 0);\n __decorate([\n Autowired('columnHoverService')\n ], Beans.prototype, \"columnHoverService\", void 0);\n __decorate([\n Autowired('userComponentFactory')\n ], Beans.prototype, \"userComponentFactory\", void 0);\n __decorate([\n Autowired('userComponentRegistry')\n ], Beans.prototype, \"userComponentRegistry\", void 0);\n __decorate([\n Autowired('animationFrameService')\n ], Beans.prototype, \"animationFrameService\", void 0);\n __decorate([\n Autowired('dragAndDropService')\n ], Beans.prototype, \"dragAndDropService\", void 0);\n __decorate([\n Autowired('sortController')\n ], Beans.prototype, \"sortController\", void 0);\n __decorate([\n Autowired('filterManager')\n ], Beans.prototype, \"filterManager\", void 0);\n __decorate([\n Autowired('rowContainerHeightService')\n ], Beans.prototype, \"rowContainerHeightService\", void 0);\n __decorate([\n Autowired('frameworkOverrides')\n ], Beans.prototype, \"frameworkOverrides\", void 0);\n __decorate([\n Autowired('cellPositionUtils')\n ], Beans.prototype, \"cellPositionUtils\", void 0);\n __decorate([\n Autowired('rowPositionUtils')\n ], Beans.prototype, \"rowPositionUtils\", void 0);\n __decorate([\n Autowired('selectionService')\n ], Beans.prototype, \"selectionService\", void 0);\n __decorate([\n Optional('selectionHandleFactory')\n ], Beans.prototype, \"selectionHandleFactory\", void 0);\n __decorate([\n Autowired('rowCssClassCalculator')\n ], Beans.prototype, \"rowCssClassCalculator\", void 0);\n __decorate([\n Autowired('rowModel')\n ], Beans.prototype, \"rowModel\", void 0);\n __decorate([\n Autowired('ctrlsService')\n ], Beans.prototype, \"ctrlsService\", void 0);\n __decorate([\n Autowired('ctrlsFactory')\n ], Beans.prototype, \"ctrlsFactory\", void 0);\n __decorate([\n Autowired('agStackComponentsRegistry')\n ], Beans.prototype, \"agStackComponentsRegistry\", void 0);\n __decorate([\n Autowired('valueCache')\n ], Beans.prototype, \"valueCache\", void 0);\n __decorate([\n Autowired('rowNodeEventThrottle')\n ], Beans.prototype, \"rowNodeEventThrottle\", void 0);\n __decorate([\n PostConstruct\n ], Beans.prototype, \"postConstruct\", null);\n Beans = __decorate([\n Bean('beans')\n ], Beans);\n return Beans;\n}());\nexport { Beans };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Events } from \"../../events\";\nimport { isBrowserEdge, isIOSUserAgent } from \"../../utils/browser\";\nimport { isElementChildOfClass, isFocusableFormField } from \"../../utils/dom\";\nimport { isEventSupported, isStopPropagationForAgGrid } from \"../../utils/event\";\nimport { Beans } from \"../beans\";\nvar CellMouseListenerFeature = /** @class */ (function (_super) {\n __extends(CellMouseListenerFeature, _super);\n function CellMouseListenerFeature(ctrl, beans, column) {\n var _this = _super.call(this) || this;\n _this.cellCtrl = ctrl;\n _this.beans = beans;\n _this.column = column;\n return _this;\n }\n CellMouseListenerFeature.prototype.onMouseEvent = function (eventName, mouseEvent) {\n if (isStopPropagationForAgGrid(mouseEvent)) {\n return;\n }\n switch (eventName) {\n case 'click':\n this.onCellClicked(mouseEvent);\n break;\n case 'mousedown':\n case 'touchstart':\n this.onMouseDown(mouseEvent);\n break;\n case 'dblclick':\n this.onCellDoubleClicked(mouseEvent);\n break;\n case 'mouseout':\n this.onMouseOut(mouseEvent);\n break;\n case 'mouseover':\n this.onMouseOver(mouseEvent);\n break;\n }\n };\n CellMouseListenerFeature.prototype.onCellClicked = function (mouseEvent) {\n // iPad doesn't have double click - so we need to mimic it to enable editing for iPad.\n if (this.isDoubleClickOnIPad()) {\n this.onCellDoubleClicked(mouseEvent);\n mouseEvent.preventDefault(); // if we don't do this, then iPad zooms in\n return;\n }\n var _a = this.beans, eventService = _a.eventService, gridOptionsWrapper = _a.gridOptionsWrapper;\n var cellClickedEvent = this.cellCtrl.createEvent(mouseEvent, Events.EVENT_CELL_CLICKED);\n eventService.dispatchEvent(cellClickedEvent);\n var colDef = this.column.getColDef();\n if (colDef.onCellClicked) {\n // to make callback async, do in a timeout\n window.setTimeout(function () { return colDef.onCellClicked(cellClickedEvent); }, 0);\n }\n var editOnSingleClick = (gridOptionsWrapper.isSingleClickEdit() || colDef.singleClickEdit)\n && !gridOptionsWrapper.isSuppressClickEdit();\n if (editOnSingleClick) {\n this.cellCtrl.startRowOrCellEdit();\n }\n };\n // returns true if on iPad and this is second 'click' event in 200ms\n CellMouseListenerFeature.prototype.isDoubleClickOnIPad = function () {\n if (!isIOSUserAgent() || isEventSupported('dblclick')) {\n return false;\n }\n var nowMillis = new Date().getTime();\n var res = nowMillis - this.lastIPadMouseClickEvent < 200;\n this.lastIPadMouseClickEvent = nowMillis;\n return res;\n };\n CellMouseListenerFeature.prototype.onCellDoubleClicked = function (mouseEvent) {\n var colDef = this.column.getColDef();\n // always dispatch event to eventService\n var cellDoubleClickedEvent = this.cellCtrl.createEvent(mouseEvent, Events.EVENT_CELL_DOUBLE_CLICKED);\n this.beans.eventService.dispatchEvent(cellDoubleClickedEvent);\n // check if colDef also wants to handle event\n if (typeof colDef.onCellDoubleClicked === 'function') {\n // to make the callback async, do in a timeout\n window.setTimeout(function () { return colDef.onCellDoubleClicked(cellDoubleClickedEvent); }, 0);\n }\n var editOnDoubleClick = !this.beans.gridOptionsWrapper.isSingleClickEdit()\n && !this.beans.gridOptionsWrapper.isSuppressClickEdit();\n if (editOnDoubleClick) {\n this.cellCtrl.startRowOrCellEdit(null, null, mouseEvent);\n }\n };\n CellMouseListenerFeature.prototype.onMouseDown = function (mouseEvent) {\n var ctrlKey = mouseEvent.ctrlKey, metaKey = mouseEvent.metaKey, shiftKey = mouseEvent.shiftKey;\n var target = mouseEvent.target;\n var _a = this.beans, eventService = _a.eventService, rangeService = _a.rangeService;\n // do not change the range for right-clicks inside an existing range\n if (this.isRightClickInExistingRange(mouseEvent)) {\n return;\n }\n var ranges = rangeService && rangeService.getCellRanges().length != 0;\n if (!shiftKey || !ranges) {\n // We only need to pass true to focusCell when the browser is IE/Edge and we are trying\n // to focus the cell itself. This should never be true if the mousedown was triggered\n // due to a click on a cell editor for example.\n var forceBrowserFocus = (isBrowserEdge()) && !this.cellCtrl.isEditing() && !isFocusableFormField(target);\n this.cellCtrl.focusCell(forceBrowserFocus);\n }\n // if shift clicking, and a range exists, we keep the focus on the cell that started the\n // range as the user then changes the range selection.\n if (shiftKey && ranges) {\n // this stops the cell from getting focused\n mouseEvent.preventDefault();\n }\n // if we are clicking on a checkbox, we need to make sure the cell wrapping that checkbox\n // is focused but we don't want to change the range selection, so return here.\n if (this.containsWidget(target)) {\n return;\n }\n if (rangeService) {\n var thisCell = this.cellCtrl.getCellPosition();\n if (shiftKey) {\n rangeService.extendLatestRangeToCell(thisCell);\n }\n else {\n var ctrlKeyPressed = ctrlKey || metaKey;\n rangeService.setRangeToCell(thisCell, ctrlKeyPressed);\n }\n }\n eventService.dispatchEvent(this.cellCtrl.createEvent(mouseEvent, Events.EVENT_CELL_MOUSE_DOWN));\n };\n CellMouseListenerFeature.prototype.isRightClickInExistingRange = function (mouseEvent) {\n var rangeService = this.beans.rangeService;\n if (rangeService) {\n var cellInRange = rangeService.isCellInAnyRange(this.cellCtrl.getCellPosition());\n if (cellInRange && mouseEvent.button === 2) {\n return true;\n }\n }\n return false;\n };\n CellMouseListenerFeature.prototype.containsWidget = function (target) {\n return isElementChildOfClass(target, 'ag-selection-checkbox', 3);\n };\n CellMouseListenerFeature.prototype.onMouseOut = function (mouseEvent) {\n if (this.mouseStayingInsideCell(mouseEvent)) {\n return;\n }\n var cellMouseOutEvent = this.cellCtrl.createEvent(mouseEvent, Events.EVENT_CELL_MOUSE_OUT);\n this.beans.eventService.dispatchEvent(cellMouseOutEvent);\n this.beans.columnHoverService.clearMouseOver();\n };\n CellMouseListenerFeature.prototype.onMouseOver = function (mouseEvent) {\n if (this.mouseStayingInsideCell(mouseEvent)) {\n return;\n }\n var cellMouseOverEvent = this.cellCtrl.createEvent(mouseEvent, Events.EVENT_CELL_MOUSE_OVER);\n this.beans.eventService.dispatchEvent(cellMouseOverEvent);\n this.beans.columnHoverService.setMouseOver([this.column]);\n };\n CellMouseListenerFeature.prototype.mouseStayingInsideCell = function (e) {\n if (!e.target || !e.relatedTarget) {\n return false;\n }\n var eGui = this.cellCtrl.getGui();\n var cellContainsTarget = eGui.contains(e.target);\n var cellContainsRelatedTarget = eGui.contains(e.relatedTarget);\n return cellContainsTarget && cellContainsRelatedTarget;\n };\n CellMouseListenerFeature.prototype.destroy = function () {\n };\n return CellMouseListenerFeature;\n}(Beans));\nexport { CellMouseListenerFeature };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { BeanStub } from \"../../context/beanStub\";\nimport { KeyCode } from \"../../constants/keyCode\";\nimport { isEventFromPrintableCharacter } from \"../../utils/keyboard\";\nvar CellKeyboardListenerFeature = /** @class */ (function (_super) {\n __extends(CellKeyboardListenerFeature, _super);\n function CellKeyboardListenerFeature(ctrl, beans, column, rowNode, scope, rowCtrl) {\n var _this = _super.call(this) || this;\n _this.cellCtrl = ctrl;\n _this.beans = beans;\n _this.rowNode = rowNode;\n _this.rowCtrl = rowCtrl;\n return _this;\n }\n CellKeyboardListenerFeature.prototype.setComp = function (eGui) {\n this.eGui = eGui;\n };\n CellKeyboardListenerFeature.prototype.onKeyDown = function (event) {\n var key = event.key;\n switch (key) {\n case KeyCode.ENTER:\n this.onEnterKeyDown(event);\n break;\n case KeyCode.F2:\n this.onF2KeyDown(event);\n break;\n case KeyCode.ESCAPE:\n this.onEscapeKeyDown(event);\n break;\n case KeyCode.TAB:\n this.onTabKeyDown(event);\n break;\n case KeyCode.BACKSPACE:\n case KeyCode.DELETE:\n this.onBackspaceOrDeleteKeyPressed(key, event);\n break;\n case KeyCode.DOWN:\n case KeyCode.UP:\n case KeyCode.RIGHT:\n case KeyCode.LEFT:\n this.onNavigationKeyPressed(event, key);\n break;\n }\n };\n CellKeyboardListenerFeature.prototype.onNavigationKeyPressed = function (event, key) {\n if (this.cellCtrl.isEditing()) {\n return;\n }\n if (event.shiftKey && this.cellCtrl.isRangeSelectionEnabled()) {\n this.onShiftRangeSelect(key);\n }\n else {\n this.beans.navigationService.navigateToNextCell(event, key, this.cellCtrl.getCellPosition(), true);\n }\n // if we don't prevent default, the grid will scroll with the navigation keys\n event.preventDefault();\n };\n CellKeyboardListenerFeature.prototype.onShiftRangeSelect = function (key) {\n if (!this.beans.rangeService) {\n return;\n }\n var endCell = this.beans.rangeService.extendLatestRangeInDirection(key);\n if (endCell) {\n this.beans.navigationService.ensureCellVisible(endCell);\n }\n };\n CellKeyboardListenerFeature.prototype.onTabKeyDown = function (event) {\n this.beans.navigationService.onTabKeyDown(this.cellCtrl, event);\n };\n CellKeyboardListenerFeature.prototype.onBackspaceOrDeleteKeyPressed = function (key, event) {\n if (!this.cellCtrl.isEditing()) {\n this.cellCtrl.startRowOrCellEdit(key, undefined, event);\n }\n };\n CellKeyboardListenerFeature.prototype.onEnterKeyDown = function (e) {\n if (this.cellCtrl.isEditing() || this.rowCtrl.isEditing()) {\n this.cellCtrl.stopEditingAndFocus();\n }\n else {\n if (this.beans.gridOptionsWrapper.isEnterMovesDown()) {\n this.beans.navigationService.navigateToNextCell(null, KeyCode.DOWN, this.cellCtrl.getCellPosition(), false);\n }\n else {\n this.cellCtrl.startRowOrCellEdit(KeyCode.ENTER, undefined, e);\n if (this.cellCtrl.isEditing()) {\n // if we started editing, then we need to prevent default, otherwise the Enter action can get\n // applied to the cell editor. this happened, for example, with largeTextCellEditor where not\n // preventing default results in a 'new line' character getting inserted in the text area\n // when the editing was started\n e.preventDefault();\n }\n }\n }\n };\n CellKeyboardListenerFeature.prototype.onF2KeyDown = function (event) {\n if (!this.cellCtrl.isEditing()) {\n this.cellCtrl.startRowOrCellEdit(KeyCode.F2, undefined, event);\n }\n };\n CellKeyboardListenerFeature.prototype.onEscapeKeyDown = function (event) {\n if (this.cellCtrl.isEditing()) {\n this.cellCtrl.stopRowOrCellEdit(true);\n this.cellCtrl.focusCell(true);\n }\n };\n CellKeyboardListenerFeature.prototype.onKeyPress = function (event) {\n // check this, in case focus is on a (for example) a text field inside the cell,\n // in which cse we should not be listening for these key pressed\n var eventTarget = event.target;\n var eventOnChildComponent = eventTarget !== this.eGui;\n if (eventOnChildComponent || this.cellCtrl.isEditing()) {\n return;\n }\n var pressedChar = String.fromCharCode(event.charCode);\n if (pressedChar === ' ') {\n this.onSpaceKeyPressed(event);\n }\n else if (isEventFromPrintableCharacter(event)) {\n this.cellCtrl.startRowOrCellEdit(null, pressedChar, event);\n // if we don't prevent default, then the keypress also gets applied to the text field\n // (at least when doing the default editor), but we need to allow the editor to decide\n // what it wants to do. we only do this IF editing was started - otherwise it messes\n // up when the use is not doing editing, but using rendering with text fields in cellRenderer\n // (as it would block the the user from typing into text fields).\n event.preventDefault();\n }\n };\n CellKeyboardListenerFeature.prototype.onSpaceKeyPressed = function (event) {\n var gridOptionsWrapper = this.beans.gridOptionsWrapper;\n if (!this.cellCtrl.isEditing() && gridOptionsWrapper.isRowSelection()) {\n var currentSelection = this.rowNode.isSelected();\n var newSelection = !currentSelection;\n if (newSelection || !gridOptionsWrapper.isSuppressRowDeselection()) {\n var groupSelectsFiltered = this.beans.gridOptionsWrapper.isGroupSelectsFiltered();\n var updatedCount = this.rowNode.setSelectedParams({\n newValue: newSelection,\n rangeSelect: event.shiftKey,\n groupSelectsFiltered: groupSelectsFiltered\n });\n if (currentSelection === undefined && updatedCount === 0) {\n this.rowNode.setSelectedParams({\n newValue: false,\n rangeSelect: event.shiftKey,\n groupSelectsFiltered: groupSelectsFiltered\n });\n }\n }\n }\n // prevent default as space key, by default, moves browser scroll down\n event.preventDefault();\n };\n CellKeyboardListenerFeature.prototype.destroy = function () {\n };\n return CellKeyboardListenerFeature;\n}(BeanStub));\nexport { CellKeyboardListenerFeature };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component } from \"../widgets/component\";\nimport { PostConstruct } from \"../context/context\";\nimport { createIconNoSpan } from \"../utils/icon\";\nvar DndSourceComp = /** @class */ (function (_super) {\n __extends(DndSourceComp, _super);\n function DndSourceComp(rowNode, column, beans, eCell) {\n var _this = _super.call(this, \"
    \") || this;\n _this.rowNode = rowNode;\n _this.column = column;\n _this.beans = beans;\n _this.eCell = eCell;\n return _this;\n }\n DndSourceComp.prototype.postConstruct = function () {\n var eGui = this.getGui();\n eGui.appendChild(createIconNoSpan('rowDrag', this.beans.gridOptionsWrapper, null));\n // we need to stop the event propagation here to avoid starting a range selection while dragging\n this.addGuiEventListener('mousedown', function (e) {\n e.stopPropagation();\n });\n this.addDragSource();\n this.checkVisibility();\n };\n DndSourceComp.prototype.addDragSource = function () {\n this.addGuiEventListener('dragstart', this.onDragStart.bind(this));\n };\n DndSourceComp.prototype.onDragStart = function (dragEvent) {\n var _this = this;\n var providedOnRowDrag = this.column.getColDef().dndSourceOnRowDrag;\n dragEvent.dataTransfer.setDragImage(this.eCell, 0, 0);\n // default behaviour is to convert data to json and set into drag component\n var defaultOnRowDrag = function () {\n try {\n var jsonData = JSON.stringify(_this.rowNode.data);\n dragEvent.dataTransfer.setData('application/json', jsonData);\n dragEvent.dataTransfer.setData('text/plain', jsonData);\n }\n catch (e) {\n // if we cannot convert the data to json, then we do not set the type\n }\n };\n if (providedOnRowDrag) {\n providedOnRowDrag({ rowNode: this.rowNode, dragEvent: dragEvent });\n }\n else {\n defaultOnRowDrag();\n }\n };\n DndSourceComp.prototype.checkVisibility = function () {\n var visible = this.column.isDndSource(this.rowNode);\n this.setDisplayed(visible);\n };\n __decorate([\n PostConstruct\n ], DndSourceComp.prototype, \"postConstruct\", null);\n return DndSourceComp;\n}(Component));\nexport { DndSourceComp };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __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};\nimport { RowNode } from \"../../entities/rowNode\";\nimport { Events } from \"../../events\";\nimport { CellRangeFeature } from \"./cellRangeFeature\";\nimport { exists } from \"../../utils/generic\";\nimport { BeanStub } from \"../../context/beanStub\";\nimport { CellPositionFeature } from \"./cellPositionFeature\";\nimport { escapeString } from \"../../utils/string\";\nimport { CellCustomStyleFeature } from \"./cellCustomStyleFeature\";\nimport { TooltipFeature } from \"../../widgets/tooltipFeature\";\nimport { CellMouseListenerFeature } from \"./cellMouseListenerFeature\";\nimport { CellKeyboardListenerFeature } from \"./cellKeyboardListenerFeature\";\nimport { KeyCode } from \"../../constants/keyCode\";\nimport { CheckboxSelectionComponent } from \"../checkboxSelectionComponent\";\nimport { DndSourceComp } from \"../dndSourceComp\";\nimport { doOnce } from \"../../utils/function\";\nimport { RowDragComp } from \"../row/rowDragComp\";\nimport { getValueUsingField } from \"../../utils/object\";\nimport { getElementSize } from \"../../utils/dom\";\nimport { setAriaColIndex, setAriaExpanded } from \"../../utils/aria\";\nvar CSS_CELL = 'ag-cell';\nvar CSS_AUTO_HEIGHT = 'ag-cell-auto-height';\nvar CSS_NORMAL_HEIGHT = 'ag-cell-normal-height';\nvar CSS_CELL_FOCUS = 'ag-cell-focus';\nvar CSS_CELL_FIRST_RIGHT_PINNED = 'ag-cell-first-right-pinned';\nvar CSS_CELL_LAST_LEFT_PINNED = 'ag-cell-last-left-pinned';\nvar CSS_CELL_NOT_INLINE_EDITING = 'ag-cell-not-inline-editing';\nvar CSS_CELL_INLINE_EDITING = 'ag-cell-inline-editing';\nvar CSS_CELL_POPUP_EDITING = 'ag-cell-popup-editing';\nvar CSS_COLUMN_HOVER = 'ag-column-hover';\nvar CSS_CELL_WRAP_TEXT = 'ag-cell-wrap-text';\nvar instanceIdSequence = 0;\nvar CellCtrl = /** @class */ (function (_super) {\n __extends(CellCtrl, _super);\n function CellCtrl(column, rowNode, beans, rowCtrl) {\n var _this = _super.call(this) || this;\n _this.suppressRefreshCell = false;\n _this.column = column;\n _this.rowNode = rowNode;\n _this.beans = beans;\n _this.rowCtrl = rowCtrl;\n // unique id to this instance, including the column ID to help with debugging in React as it's used in 'key'\n _this.instanceId = column.getId() + '-' + instanceIdSequence++;\n _this.createCellPosition();\n _this.addFeatures();\n return _this;\n }\n CellCtrl.prototype.addFeatures = function () {\n var _this = this;\n this.cellPositionFeature = new CellPositionFeature(this, this.beans);\n this.addDestroyFunc(function () { return _this.cellPositionFeature.destroy(); });\n this.cellCustomStyleFeature = new CellCustomStyleFeature(this, this.beans);\n this.addDestroyFunc(function () { return _this.cellCustomStyleFeature.destroy(); });\n this.cellMouseListenerFeature = new CellMouseListenerFeature(this, this.beans, this.column);\n this.addDestroyFunc(function () { return _this.cellMouseListenerFeature.destroy(); });\n this.cellKeyboardListenerFeature = new CellKeyboardListenerFeature(this, this.beans, this.column, this.rowNode, this.scope, this.rowCtrl);\n this.addDestroyFunc(function () { return _this.cellKeyboardListenerFeature.destroy(); });\n var rangeSelectionEnabled = this.beans.rangeService && this.beans.gridOptionsWrapper.isEnableRangeSelection();\n if (rangeSelectionEnabled) {\n this.cellRangeFeature = new CellRangeFeature(this.beans, this);\n this.addDestroyFunc(function () { return _this.cellRangeFeature.destroy(); });\n }\n this.addTooltipFeature();\n };\n CellCtrl.prototype.addTooltipFeature = function () {\n var _this = this;\n var getTooltipValue = function () {\n var colDef = _this.column.getColDef();\n var data = _this.rowNode.data;\n if (colDef.tooltipField && exists(data)) {\n return getValueUsingField(data, colDef.tooltipField, _this.column.isTooltipFieldContainsDots());\n }\n var valueGetter = colDef.tooltipValueGetter;\n if (valueGetter) {\n return valueGetter({\n location: 'cell',\n api: _this.beans.gridOptionsWrapper.getApi(),\n columnApi: _this.beans.gridOptionsWrapper.getColumnApi(),\n context: _this.beans.gridOptionsWrapper.getContext(),\n colDef: _this.column.getColDef(),\n column: _this.column,\n rowIndex: _this.cellPosition.rowIndex,\n node: _this.rowNode,\n data: _this.rowNode.data,\n value: _this.value,\n valueFormatted: _this.valueFormatted,\n });\n }\n return null;\n };\n var tooltipCtrl = {\n getColumn: function () { return _this.column; },\n getColDef: function () { return _this.column.getColDef(); },\n getRowIndex: function () { return _this.cellPosition.rowIndex; },\n getRowNode: function () { return _this.rowNode; },\n getGui: function () { return _this.getGui(); },\n getLocation: function () { return 'cell'; },\n getTooltipValue: getTooltipValue,\n // this makes no sense, why is the cell formatted value passed to the tooltip???\n getValueFormatted: function () { return _this.valueFormatted; }\n };\n this.tooltipFeature = new TooltipFeature(tooltipCtrl, this.beans);\n this.addDestroyFunc(function () { return _this.tooltipFeature.destroy(); });\n };\n CellCtrl.prototype.setComp = function (comp, scope, eGui, eCellWrapper, printLayout, startEditing) {\n this.cellComp = comp;\n this.gow = this.beans.gridOptionsWrapper;\n this.scope = scope;\n this.eGui = eGui;\n this.eCellWrapper = eCellWrapper;\n this.printLayout = printLayout;\n // we force to make sure formatter gets called at least once,\n // even if value has not changed (is is undefined)\n this.updateAndFormatValue(true);\n this.addDomData();\n this.onCellFocused();\n this.applyStaticCssClasses();\n this.setWrapText();\n this.onFirstRightPinnedChanged();\n this.onLastLeftPinnedChanged();\n this.onColumnHover();\n this.setupControlComps();\n this.setupAriaExpanded();\n this.setupAutoHeight();\n this.setAriaColIndex();\n if (!this.gow.isSuppressCellFocus()) {\n this.cellComp.setTabIndex(-1);\n }\n var colIdSanitised = escapeString(this.column.getId());\n this.cellComp.setColId(colIdSanitised);\n this.cellComp.setRole('gridcell');\n this.cellPositionFeature.setComp(eGui);\n this.cellCustomStyleFeature.setComp(comp, scope);\n this.tooltipFeature.setComp(comp);\n this.cellKeyboardListenerFeature.setComp(this.eGui);\n if (this.cellRangeFeature) {\n this.cellRangeFeature.setComp(comp, eGui);\n }\n if (startEditing && this.isCellEditable()) {\n this.startEditing();\n }\n else {\n this.showValue();\n }\n };\n CellCtrl.prototype.setupAutoHeight = function () {\n var _this = this;\n if (!this.column.isAutoHeight()) {\n return;\n }\n var eAutoHeightContainer = this.eCellWrapper;\n var eParentCell = eAutoHeightContainer.parentElement;\n var minRowHeight = this.beans.gridOptionsWrapper.getRowHeightAsNumber();\n var measureHeight = function (timesCalled) {\n if (_this.editing) {\n return;\n }\n // if not in doc yet, means framework not yet inserted, so wait for next VM turn,\n // maybe it will be ready next VM turn\n var doc = _this.beans.gridOptionsWrapper.getDocument();\n if ((!doc || !doc.contains(eAutoHeightContainer)) && timesCalled < 5) {\n _this.beans.frameworkOverrides.setTimeout(function () { return measureHeight(timesCalled + 1); }, 0);\n return;\n }\n var _a = getElementSize(eParentCell), paddingTop = _a.paddingTop, paddingBottom = _a.paddingBottom;\n var wrapperHeight = eAutoHeightContainer.offsetHeight;\n var autoHeight = wrapperHeight + paddingTop + paddingBottom;\n var newHeight = Math.max(autoHeight, minRowHeight);\n _this.rowNode.setRowAutoHeight(newHeight, _this.column);\n };\n var listener = function () { return measureHeight(0); };\n // do once to set size in case size doesn't change, common when cell is blank\n listener();\n var destroyResizeObserver = this.beans.resizeObserverService.observeResize(eAutoHeightContainer, listener);\n this.addDestroyFunc(function () {\n destroyResizeObserver();\n _this.rowNode.setRowAutoHeight(undefined, _this.column);\n });\n };\n CellCtrl.prototype.getInstanceId = function () {\n return this.instanceId;\n };\n CellCtrl.prototype.showValue = function (forceNewCellRendererInstance) {\n if (forceNewCellRendererInstance === void 0) { forceNewCellRendererInstance = false; }\n var valueToDisplay = this.valueFormatted != null ? this.valueFormatted : this.value;\n var params = this.createCellRendererParams();\n var compDetails = this.beans.userComponentFactory.getCellRendererDetails(this.column.getColDef(), params);\n this.cellComp.setRenderDetails(compDetails, valueToDisplay, forceNewCellRendererInstance);\n this.refreshHandle();\n };\n CellCtrl.prototype.setupControlComps = function () {\n var colDef = this.column.getColDef();\n this.includeSelection = this.isIncludeControl(colDef.checkboxSelection);\n this.includeRowDrag = this.isIncludeControl(colDef.rowDrag);\n this.includeDndSource = this.isIncludeControl(colDef.dndSource);\n this.cellComp.setIncludeSelection(this.includeSelection);\n this.cellComp.setIncludeDndSource(this.includeDndSource);\n this.cellComp.setIncludeRowDrag(this.includeRowDrag);\n };\n CellCtrl.prototype.isForceWrapper = function () {\n // text selection requires the value to be wrapped in another element\n var forceWrapper = this.beans.gridOptionsWrapper.isEnableCellTextSelection() || this.column.isAutoHeight();\n return forceWrapper;\n };\n CellCtrl.prototype.isIncludeControl = function (value) {\n var rowNodePinned = this.rowNode.rowPinned != null;\n var isFunc = typeof value === 'function';\n var res = rowNodePinned ? false : isFunc || value === true;\n return res;\n };\n CellCtrl.prototype.setupAriaExpanded = function () {\n var _this = this;\n var colDef = this.column.getColDef();\n if (!this.rowNode.isExpandable()) {\n return;\n }\n var showRowGroup = colDef.showRowGroup;\n var rowGroupColumn = this.rowNode.rowGroupColumn;\n var showingAllGroups = showRowGroup === true;\n var showingThisGroup = rowGroupColumn && rowGroupColumn.getColId() === showRowGroup;\n var colMatches = showingAllGroups || showingThisGroup;\n if (!colMatches) {\n return;\n }\n var listener = function () {\n // for react, we don't use JSX, as setting attributes via jsx is slower\n setAriaExpanded(_this.eGui, !!_this.rowNode.expanded);\n };\n this.addManagedListener(this.rowNode, RowNode.EVENT_EXPANDED_CHANGED, listener);\n listener();\n };\n CellCtrl.prototype.refreshShouldDestroy = function () {\n var colDef = this.column.getColDef();\n var selectionChanged = this.includeSelection != this.isIncludeControl(colDef.checkboxSelection);\n var rowDragChanged = this.includeRowDrag != this.isIncludeControl(colDef.rowDrag);\n var dndSourceChanged = this.includeDndSource != this.isIncludeControl(colDef.dndSource);\n return selectionChanged || rowDragChanged || dndSourceChanged;\n };\n // either called internally if single cell editing, or called by rowRenderer if row editing\n CellCtrl.prototype.startEditing = function (key, charPress, cellStartedEdit, event) {\n if (key === void 0) { key = null; }\n if (charPress === void 0) { charPress = null; }\n if (cellStartedEdit === void 0) { cellStartedEdit = false; }\n if (event === void 0) { event = null; }\n var _a, _b;\n if (!this.isCellEditable() || this.editing) {\n return;\n }\n var editorParams = this.createCellEditorParams(key, charPress, cellStartedEdit);\n var colDef = this.column.getColDef();\n var compDetails = this.beans.userComponentFactory.getCellEditorDetails(colDef, editorParams);\n // if cellEditorSelector was used, we give preference to popup and popupPosition from the selector\n var popup = ((_a = compDetails) === null || _a === void 0 ? void 0 : _a.popupFromSelector) != null ? compDetails.popupFromSelector : !!colDef.cellEditorPopup;\n var position = ((_b = compDetails) === null || _b === void 0 ? void 0 : _b.popupPositionFromSelector) != null ? compDetails.popupPositionFromSelector : colDef.cellEditorPopupPosition;\n this.setEditing(true, popup);\n this.cellComp.setEditDetails(compDetails, popup, position);\n var e = this.createEvent(event, Events.EVENT_CELL_EDITING_STARTED);\n this.beans.eventService.dispatchEvent(e);\n };\n CellCtrl.prototype.setEditing = function (editing, inPopup) {\n if (inPopup === void 0) { inPopup = false; }\n if (this.editing === editing) {\n return;\n }\n this.editing = editing;\n this.editingInPopup = inPopup;\n this.setInlineEditingClass();\n };\n // pass in 'true' to cancel the editing.\n CellCtrl.prototype.stopRowOrCellEdit = function (cancel) {\n if (cancel === void 0) { cancel = false; }\n if (this.beans.gridOptionsWrapper.isFullRowEdit()) {\n this.rowCtrl.stopRowEditing(cancel);\n }\n else {\n this.stopEditing(cancel);\n }\n };\n CellCtrl.prototype.onPopupEditorClosed = function () {\n if (!this.isEditing()) {\n return;\n }\n // note: this happens because of a click outside of the grid or if the popupEditor\n // is closed with `Escape` key. if another cell was clicked, then the editing will\n // have already stopped and returned on the conditional above.\n this.stopEditingAndFocus();\n };\n CellCtrl.prototype.takeValueFromCellEditor = function (cancel) {\n var noValueResult = { newValueExists: false };\n if (cancel) {\n return noValueResult;\n }\n var cellEditor = this.cellComp.getCellEditor();\n if (!cellEditor) {\n return noValueResult;\n }\n var userWantsToCancel = cellEditor.isCancelAfterEnd && cellEditor.isCancelAfterEnd();\n if (userWantsToCancel) {\n return noValueResult;\n }\n var newValue = cellEditor.getValue();\n return {\n newValue: newValue,\n newValueExists: true\n };\n };\n CellCtrl.prototype.saveNewValue = function (oldValue, newValue) {\n if (newValue === oldValue) {\n return;\n }\n if (this.beans.gridOptionsWrapper.isReadOnlyEdit()) {\n this.dispatchEventForSaveValueReadOnly(oldValue, newValue);\n return;\n }\n // we suppressRefreshCell because the call to rowNode.setDataValue() results in change detection\n // getting triggered, which results in all cells getting refreshed. we do not want this refresh\n // to happen on this call as we want to call it explicitly below. otherwise refresh gets called twice.\n // if we only did this refresh (and not the one below) then the cell would flash and not be forced.\n this.suppressRefreshCell = true;\n this.rowNode.setDataValue(this.column, newValue);\n this.suppressRefreshCell = false;\n };\n CellCtrl.prototype.dispatchEventForSaveValueReadOnly = function (oldValue, newValue) {\n var rowNode = this.rowNode;\n var event = {\n type: Events.EVENT_CELL_EDIT_REQUEST,\n event: null,\n rowIndex: rowNode.rowIndex,\n rowPinned: rowNode.rowPinned,\n column: this.column,\n api: this.beans.gridApi,\n columnApi: this.beans.columnApi,\n colDef: this.column.getColDef(),\n context: this.beans.gridOptionsWrapper.getContext(),\n data: rowNode.data,\n node: rowNode,\n oldValue: oldValue,\n newValue: newValue,\n value: newValue,\n source: undefined\n };\n this.beans.eventService.dispatchEvent(event);\n };\n CellCtrl.prototype.stopEditing = function (cancel) {\n if (cancel === void 0) { cancel = false; }\n if (!this.editing) {\n return;\n }\n var _a = this.takeValueFromCellEditor(cancel), newValue = _a.newValue, newValueExists = _a.newValueExists;\n var oldValue = this.getValueFromValueService();\n if (newValueExists) {\n this.saveNewValue(oldValue, newValue);\n }\n this.setEditing(false);\n this.cellComp.setEditDetails(); // passing nothing stops editing\n this.updateAndFormatValue();\n this.refreshCell({ forceRefresh: true, suppressFlash: true });\n this.dispatchEditingStoppedEvent(oldValue, newValue);\n };\n CellCtrl.prototype.dispatchEditingStoppedEvent = function (oldValue, newValue) {\n var editingStoppedEvent = __assign(__assign({}, this.createEvent(null, Events.EVENT_CELL_EDITING_STOPPED)), { oldValue: oldValue,\n newValue: newValue });\n this.beans.eventService.dispatchEvent(editingStoppedEvent);\n };\n // if we are editing inline, then we don't have the padding in the cell (set in the themes)\n // to allow the text editor full access to the entire cell\n CellCtrl.prototype.setInlineEditingClass = function () {\n if (!this.isAlive()) {\n return;\n }\n // ag-cell-inline-editing - appears when user is inline editing\n // ag-cell-not-inline-editing - appears when user is no inline editing\n // ag-cell-popup-editing - appears when user is editing cell in popup (appears on the cell, not on the popup)\n // note: one of {ag-cell-inline-editing, ag-cell-not-inline-editing} is always present, they toggle.\n // however {ag-cell-popup-editing} shows when popup, so you have both {ag-cell-popup-editing}\n // and {ag-cell-not-inline-editing} showing at the same time.\n var editingInline = this.editing && !this.editingInPopup;\n var popupEditorShowing = this.editing && this.editingInPopup;\n this.cellComp.addOrRemoveCssClass(CSS_CELL_INLINE_EDITING, editingInline);\n this.cellComp.addOrRemoveCssClass(CSS_CELL_NOT_INLINE_EDITING, !editingInline);\n this.cellComp.addOrRemoveCssClass(CSS_CELL_POPUP_EDITING, popupEditorShowing);\n this.rowCtrl.setInlineEditingCss(this.editing);\n };\n // this is needed as the JS CellComp still allows isPopup() on the CellEditor class, so\n // it's possible the editor is in a popup even though it's not configured via the colDef as so\n CellCtrl.prototype.hackSayEditingInPopup = function () {\n if (this.editingInPopup) {\n return;\n }\n this.editingInPopup = true;\n this.setInlineEditingClass();\n };\n CellCtrl.prototype.createCellEditorParams = function (key, charPress, cellStartedEdit) {\n var res = {\n value: this.getValueFromValueService(),\n key: key,\n eventKey: key,\n charPress: charPress,\n column: this.column,\n colDef: this.column.getColDef(),\n rowIndex: this.getCellPosition().rowIndex,\n node: this.rowNode,\n data: this.rowNode.data,\n api: this.beans.gridOptionsWrapper.getApi(),\n cellStartedEdit: cellStartedEdit,\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n context: this.beans.gridOptionsWrapper.getContext(),\n onKeyDown: this.onKeyDown.bind(this),\n stopEditing: this.stopEditingAndFocus.bind(this),\n eGridCell: this.getGui(),\n parseValue: this.parseValue.bind(this),\n formatValue: this.formatValue.bind(this)\n };\n if (this.scope) {\n res.$scope = this.scope;\n }\n return res;\n };\n CellCtrl.prototype.createCellRendererParams = function () {\n var _this = this;\n var addRowCompListener = function (eventType, listener) {\n console.warn('AG Grid: since AG Grid v26, params.addRowCompListener() is deprecated. If you need this functionality, please contact AG Grid support and advise why so that we can revert with an appropriate workaround, as we dont have any valid use cases for it. This method was originally provided as a work around to know when cells were destroyed in AG Grid before custom Cell Renderers could be provided.');\n _this.rowCtrl.addEventListener(eventType, listener);\n };\n var res = {\n value: this.value,\n valueFormatted: this.valueFormatted,\n getValue: this.getValueFromValueService.bind(this),\n setValue: function (value) { return _this.beans.valueService.setValue(_this.rowNode, _this.column, value); },\n formatValue: this.formatValue.bind(this),\n data: this.rowNode.data,\n node: this.rowNode,\n colDef: this.column.getColDef(),\n column: this.column,\n rowIndex: this.getCellPosition().rowIndex,\n api: this.beans.gridOptionsWrapper.getApi(),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n context: this.beans.gridOptionsWrapper.getContext(),\n refreshCell: this.refreshCell.bind(this),\n eGridCell: this.getGui(),\n eParentOfValue: this.cellComp.getParentOfValue(),\n registerRowDragger: function (rowDraggerElement, dragStartPixels, value, suppressVisibilityChange) { return _this.registerRowDragger(rowDraggerElement, dragStartPixels, suppressVisibilityChange); },\n // this function is not documented anywhere, so we could drop it\n // it was in the olden days to allow user to register for when rendered\n // row was removed (the row comp was removed), however now that the user\n // can provide components for cells, the destroy method gets call when this\n // happens so no longer need to fire event.\n addRowCompListener: addRowCompListener\n };\n if (this.scope) {\n res.$scope = this.scope;\n }\n return res;\n };\n CellCtrl.prototype.parseValue = function (newValue) {\n var colDef = this.column.getColDef();\n var params = {\n node: this.rowNode,\n data: this.rowNode.data,\n oldValue: this.getValue(),\n newValue: newValue,\n colDef: colDef,\n column: this.column,\n api: this.beans.gridOptionsWrapper.getApi(),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n context: this.beans.gridOptionsWrapper.getContext()\n };\n var valueParser = colDef.valueParser;\n return exists(valueParser) ? this.beans.expressionService.evaluate(valueParser, params) : newValue;\n };\n CellCtrl.prototype.setFocusOutOnEditor = function () {\n if (!this.editing) {\n return;\n }\n var cellEditor = this.cellComp.getCellEditor();\n if (cellEditor && cellEditor.focusOut) {\n cellEditor.focusOut();\n }\n };\n CellCtrl.prototype.setFocusInOnEditor = function () {\n if (!this.editing) {\n return;\n }\n var cellEditor = this.cellComp.getCellEditor();\n if (cellEditor && cellEditor.focusIn) {\n // if the editor is present, then we just focus it\n cellEditor.focusIn();\n }\n else {\n // if the editor is not present, it means async cell editor (eg React fibre)\n // and we are trying to set focus before the cell editor is present, so we\n // focus the cell instead\n this.focusCell(true);\n }\n };\n CellCtrl.prototype.onCellChanged = function (event) {\n // because of async in React, the cellComp may not be set yet, if no cellComp then we are\n // yet to initialise the cell, so no need to refresh.\n if (!this.cellComp) {\n return;\n }\n var eventImpactsThisCell = event.column === this.column;\n if (eventImpactsThisCell) {\n this.refreshCell({});\n }\n };\n // + stop editing {forceRefresh: true, suppressFlash: true}\n // + event cellChanged {}\n // + cellRenderer.params.refresh() {} -> method passes 'as is' to the cellRenderer, so params could be anything\n // + rowCtrl: event dataChanged {suppressFlash: !update, newData: !update}\n // + rowCtrl: api refreshCells() {animate: true/false}\n // + rowRenderer: api softRefreshView() {}\n CellCtrl.prototype.refreshCell = function (params) {\n // if we are in the middle of 'stopEditing', then we don't refresh here, as refresh gets called explicitly\n if (this.suppressRefreshCell || this.editing) {\n return;\n }\n var colDef = this.column.getColDef();\n var newData = params != null && !!params.newData;\n var suppressFlash = (params != null && !!params.suppressFlash) || !!colDef.suppressCellFlash;\n // we always refresh if cell has no value - this can happen when user provides Cell Renderer and the\n // cell renderer doesn't rely on a value, instead it could be looking directly at the data, or maybe\n // printing the current time (which would be silly)???. Generally speaking\n // non of {field, valueGetter, showRowGroup} is bad in the users application, however for this edge case, it's\n // best always refresh and take the performance hit rather than never refresh and users complaining in support\n // that cells are not updating.\n var noValueProvided = colDef.field == null && colDef.valueGetter == null && colDef.showRowGroup == null;\n var forceRefresh = (params && params.forceRefresh) || noValueProvided || newData;\n var valuesDifferent = this.updateAndFormatValue();\n var dataNeedsUpdating = forceRefresh || valuesDifferent;\n if (dataNeedsUpdating) {\n // if it's 'new data', then we don't refresh the cellRenderer, even if refresh method is available.\n // this is because if the whole data is new (ie we are showing stock price 'BBA' now and not 'SSD')\n // then we are not showing a movement in the stock price, rather we are showing different stock.\n this.showValue(newData);\n // we don't want to flash the cells when processing a filter change, as otherwise the UI would\n // be to busy. see comment in FilterManager with regards processingFilterChange\n var processingFilterChange = this.beans.filterManager.isSuppressFlashingCellsBecauseFiltering();\n var flashCell = !suppressFlash && !processingFilterChange &&\n (this.beans.gridOptionsWrapper.isEnableCellChangeFlash() || colDef.enableCellChangeFlash);\n if (flashCell) {\n this.flashCell();\n }\n this.cellCustomStyleFeature.applyUserStyles();\n this.cellCustomStyleFeature.applyClassesFromColDef();\n }\n // we can't readily determine if the data in an angularjs template has changed, so here we just update\n // and recompile (if applicable)\n this.refreshToolTip();\n // we do cellClassRules even if the value has not changed, so that users who have rules that\n // look at other parts of the row (where the other part of the row might of changed) will work.\n this.cellCustomStyleFeature.applyCellClassRules();\n };\n // cell editors call this, when they want to stop for reasons other\n // than what we pick up on. eg selecting from a dropdown ends editing.\n CellCtrl.prototype.stopEditingAndFocus = function (suppressNavigateAfterEdit) {\n if (suppressNavigateAfterEdit === void 0) { suppressNavigateAfterEdit = false; }\n this.stopRowOrCellEdit();\n this.focusCell(true);\n if (!suppressNavigateAfterEdit) {\n this.navigateAfterEdit();\n }\n };\n CellCtrl.prototype.navigateAfterEdit = function () {\n var fullRowEdit = this.beans.gridOptionsWrapper.isFullRowEdit();\n if (fullRowEdit) {\n return;\n }\n var enterMovesDownAfterEdit = this.beans.gridOptionsWrapper.isEnterMovesDownAfterEdit();\n if (enterMovesDownAfterEdit) {\n this.beans.navigationService.navigateToNextCell(null, KeyCode.DOWN, this.getCellPosition(), false);\n }\n };\n // user can also call this via API\n CellCtrl.prototype.flashCell = function (delays) {\n var flashDelay = delays && delays.flashDelay;\n var fadeDelay = delays && delays.fadeDelay;\n this.animateCell('data-changed', flashDelay, fadeDelay);\n };\n CellCtrl.prototype.animateCell = function (cssName, flashDelay, fadeDelay) {\n var _this = this;\n var fullName = \"ag-cell-\" + cssName;\n var animationFullName = \"ag-cell-\" + cssName + \"-animation\";\n var gridOptionsWrapper = this.beans.gridOptionsWrapper;\n if (!flashDelay) {\n flashDelay = gridOptionsWrapper.getCellFlashDelay();\n }\n if (!exists(fadeDelay)) {\n fadeDelay = gridOptionsWrapper.getCellFadeDelay();\n }\n // we want to highlight the cells, without any animation\n this.cellComp.addOrRemoveCssClass(fullName, true);\n this.cellComp.addOrRemoveCssClass(animationFullName, false);\n // then once that is applied, we remove the highlight with animation\n window.setTimeout(function () {\n _this.cellComp.addOrRemoveCssClass(fullName, false);\n _this.cellComp.addOrRemoveCssClass(animationFullName, true);\n _this.eGui.style.transition = \"background-color \" + fadeDelay + \"ms\";\n window.setTimeout(function () {\n // and then to leave things as we got them, we remove the animation\n _this.cellComp.addOrRemoveCssClass(animationFullName, false);\n _this.eGui.style.transition = '';\n }, fadeDelay);\n }, flashDelay);\n };\n CellCtrl.prototype.onFlashCells = function (event) {\n if (!this.cellComp) {\n return;\n }\n var cellId = this.beans.cellPositionUtils.createId(this.getCellPosition());\n var shouldFlash = event.cells[cellId];\n if (shouldFlash) {\n this.animateCell('highlight');\n }\n };\n CellCtrl.prototype.isCellEditable = function () {\n return this.column.isCellEditable(this.rowNode);\n };\n CellCtrl.prototype.isSuppressFillHandle = function () {\n return this.column.isSuppressFillHandle();\n };\n CellCtrl.prototype.formatValue = function (value) {\n var res = this.callValueFormatter(value);\n return res != null ? res : value;\n };\n CellCtrl.prototype.callValueFormatter = function (value) {\n return this.beans.valueFormatterService.formatValue(this.column, this.rowNode, this.scope, value);\n };\n CellCtrl.prototype.updateAndFormatValue = function (force) {\n if (force === void 0) { force = false; }\n var oldValue = this.value;\n var oldValueFormatted = this.valueFormatted;\n this.value = this.getValueFromValueService();\n this.valueFormatted = this.callValueFormatter(this.value);\n var valuesDifferent = force ? true :\n !this.valuesAreEqual(oldValue, this.value) || this.valueFormatted != oldValueFormatted;\n return valuesDifferent;\n };\n CellCtrl.prototype.valuesAreEqual = function (val1, val2) {\n // if the user provided an equals method, use that, otherwise do simple comparison\n var colDef = this.column.getColDef();\n return colDef.equals ? colDef.equals(val1, val2) : val1 === val2;\n };\n CellCtrl.prototype.getComp = function () {\n return this.cellComp;\n };\n CellCtrl.prototype.getValueFromValueService = function () {\n // if we don't check this, then the grid will render leaf groups as open even if we are not\n // allowing the user to open leaf groups. confused? remember for pivot mode we don't allow\n // opening leaf groups, so we have to force leafGroups to be closed in case the user expanded\n // them via the API, or user user expanded them in the UI before turning on pivot mode\n var lockedClosedGroup = this.rowNode.leafGroup && this.beans.columnModel.isPivotMode();\n var isOpenGroup = this.rowNode.group && this.rowNode.expanded && !this.rowNode.footer && !lockedClosedGroup;\n // are we showing group footers\n var groupFootersEnabled = this.beans.gridOptionsWrapper.isGroupIncludeFooter();\n // if doing footers, we normally don't show agg data at group level when group is open\n var groupAlwaysShowAggData = this.beans.gridOptionsWrapper.isGroupSuppressBlankHeader();\n // if doing grouping and footers, we don't want to include the agg value\n // in the header when the group is open\n var ignoreAggData = (isOpenGroup && groupFootersEnabled) && !groupAlwaysShowAggData;\n var value = this.beans.valueService.getValue(this.column, this.rowNode, false, ignoreAggData);\n return value;\n };\n CellCtrl.prototype.getValue = function () {\n return this.value;\n };\n CellCtrl.prototype.getValueFormatted = function () {\n return this.valueFormatted;\n };\n CellCtrl.prototype.addDomData = function () {\n var _this = this;\n var element = this.getGui();\n this.beans.gridOptionsWrapper.setDomData(element, CellCtrl.DOM_DATA_KEY_CELL_CTRL, this);\n this.addDestroyFunc(function () { return _this.beans.gridOptionsWrapper.setDomData(element, CellCtrl.DOM_DATA_KEY_CELL_CTRL, null); });\n };\n CellCtrl.prototype.createEvent = function (domEvent, eventType) {\n var event = {\n type: eventType,\n node: this.rowNode,\n data: this.rowNode.data,\n value: this.value,\n column: this.column,\n colDef: this.column.getColDef(),\n context: this.beans.gridOptionsWrapper.getContext(),\n api: this.beans.gridApi,\n columnApi: this.beans.columnApi,\n rowPinned: this.rowNode.rowPinned,\n event: domEvent,\n rowIndex: this.rowNode.rowIndex\n };\n // because we are hacking in $scope for angular 1, we have to de-reference\n if (this.scope) {\n event.$scope = this.scope;\n }\n return event;\n };\n CellCtrl.prototype.onKeyPress = function (event) {\n this.cellKeyboardListenerFeature.onKeyPress(event);\n };\n CellCtrl.prototype.onKeyDown = function (event) {\n this.cellKeyboardListenerFeature.onKeyDown(event);\n };\n CellCtrl.prototype.onMouseEvent = function (eventName, mouseEvent) {\n this.cellMouseListenerFeature.onMouseEvent(eventName, mouseEvent);\n };\n CellCtrl.prototype.getGui = function () {\n return this.eGui;\n };\n CellCtrl.prototype.refreshToolTip = function () {\n this.tooltipFeature.refreshToolTip();\n };\n CellCtrl.prototype.getColSpanningList = function () {\n return this.cellPositionFeature.getColSpanningList();\n };\n CellCtrl.prototype.onLeftChanged = function () {\n if (!this.cellComp) {\n return;\n }\n this.cellPositionFeature.onLeftChanged();\n };\n CellCtrl.prototype.onDisplayedColumnsChanged = function () {\n if (!this.eGui) {\n return;\n }\n this.setAriaColIndex();\n };\n CellCtrl.prototype.setAriaColIndex = function () {\n var colIdx = this.beans.columnModel.getAriaColumnIndex(this.column);\n setAriaColIndex(this.getGui(), colIdx); // for react, we don't use JSX, as it slowed down column moving\n };\n CellCtrl.prototype.isSuppressNavigable = function () {\n return this.column.isSuppressNavigable(this.rowNode);\n };\n CellCtrl.prototype.onWidthChanged = function () {\n return this.cellPositionFeature.onWidthChanged();\n };\n CellCtrl.prototype.getColumn = function () {\n return this.column;\n };\n CellCtrl.prototype.getRowNode = function () {\n return this.rowNode;\n };\n CellCtrl.prototype.getBeans = function () {\n return this.beans;\n };\n CellCtrl.prototype.isPrintLayout = function () {\n return this.printLayout;\n };\n CellCtrl.prototype.appendChild = function (htmlElement) {\n this.eGui.appendChild(htmlElement);\n };\n CellCtrl.prototype.refreshHandle = function () {\n if (this.editing) {\n return;\n }\n if (this.cellRangeFeature) {\n this.cellRangeFeature.refreshHandle();\n }\n };\n CellCtrl.prototype.getCellPosition = function () {\n return this.cellPosition;\n };\n CellCtrl.prototype.isEditing = function () {\n return this.editing;\n };\n // called by rowRenderer when user navigates via tab key\n CellCtrl.prototype.startRowOrCellEdit = function (key, charPress, event) {\n if (event === void 0) { event = null; }\n if (this.beans.gridOptionsWrapper.isFullRowEdit()) {\n this.rowCtrl.startRowEditing(key, charPress, this);\n }\n else {\n this.startEditing(key, charPress, true, event);\n }\n };\n CellCtrl.prototype.getRowCtrl = function () {\n return this.rowCtrl;\n };\n CellCtrl.prototype.getRowPosition = function () {\n return {\n rowIndex: this.cellPosition.rowIndex,\n rowPinned: this.cellPosition.rowPinned\n };\n };\n CellCtrl.prototype.updateRangeBordersIfRangeCount = function () {\n if (!this.cellComp) {\n return;\n }\n if (this.cellRangeFeature) {\n this.cellRangeFeature.updateRangeBordersIfRangeCount();\n }\n };\n CellCtrl.prototype.onRangeSelectionChanged = function () {\n if (!this.cellComp) {\n return;\n }\n if (this.cellRangeFeature) {\n this.cellRangeFeature.onRangeSelectionChanged();\n }\n };\n CellCtrl.prototype.isRangeSelectionEnabled = function () {\n return this.cellRangeFeature != null;\n };\n CellCtrl.prototype.focusCell = function (forceBrowserFocus) {\n if (forceBrowserFocus === void 0) { forceBrowserFocus = false; }\n this.beans.focusService.setFocusedCell(this.getCellPosition().rowIndex, this.column, this.rowNode.rowPinned, forceBrowserFocus);\n };\n CellCtrl.prototype.onRowIndexChanged = function () {\n // when index changes, this influences items that need the index, so we update the\n // grid cell so they are working off the new index.\n this.createCellPosition();\n // when the index of the row changes, ie means the cell may have lost or gained focus\n this.onCellFocused();\n // check range selection\n if (this.cellRangeFeature) {\n this.cellRangeFeature.onRangeSelectionChanged();\n }\n };\n CellCtrl.prototype.onFirstRightPinnedChanged = function () {\n if (!this.cellComp) {\n return;\n }\n var firstRightPinned = this.column.isFirstRightPinned();\n this.cellComp.addOrRemoveCssClass(CSS_CELL_FIRST_RIGHT_PINNED, firstRightPinned);\n };\n CellCtrl.prototype.onLastLeftPinnedChanged = function () {\n if (!this.cellComp) {\n return;\n }\n var lastLeftPinned = this.column.isLastLeftPinned();\n this.cellComp.addOrRemoveCssClass(CSS_CELL_LAST_LEFT_PINNED, lastLeftPinned);\n };\n CellCtrl.prototype.onCellFocused = function (event) {\n if (!this.cellComp || this.gow.isSuppressCellFocus()) {\n return;\n }\n var cellFocused = this.beans.focusService.isCellFocused(this.cellPosition);\n this.cellComp.addOrRemoveCssClass(CSS_CELL_FOCUS, cellFocused);\n // see if we need to force browser focus - this can happen if focus is programmatically set\n if (cellFocused && event && event.forceBrowserFocus) {\n var focusEl = this.cellComp.getFocusableElement();\n focusEl.focus();\n }\n // if another cell was focused, and we are editing, then stop editing\n var fullRowEdit = this.beans.gridOptionsWrapper.isFullRowEdit();\n if (!cellFocused && !fullRowEdit && this.editing) {\n this.stopRowOrCellEdit();\n }\n };\n CellCtrl.prototype.createCellPosition = function () {\n this.cellPosition = {\n rowIndex: this.rowNode.rowIndex,\n rowPinned: this.rowNode.rowPinned,\n column: this.column\n };\n };\n // CSS Classes that only get applied once, they never change\n CellCtrl.prototype.applyStaticCssClasses = function () {\n this.cellComp.addOrRemoveCssClass(CSS_CELL, true);\n this.cellComp.addOrRemoveCssClass(CSS_CELL_NOT_INLINE_EDITING, true);\n // normal cells fill the height of the row. autoHeight cells have no height to let them\n // fit the height of content.\n var autoHeight = this.column.isAutoHeight() == true;\n this.cellComp.addOrRemoveCssClass(CSS_AUTO_HEIGHT, autoHeight);\n this.cellComp.addOrRemoveCssClass(CSS_NORMAL_HEIGHT, !autoHeight);\n };\n CellCtrl.prototype.onColumnHover = function () {\n if (!this.cellComp) {\n return;\n }\n if (!this.beans.gridOptionsWrapper.isColumnHoverHighlight()) {\n return;\n }\n var isHovered = this.beans.columnHoverService.isHovered(this.column);\n this.cellComp.addOrRemoveCssClass(CSS_COLUMN_HOVER, isHovered);\n };\n CellCtrl.prototype.onNewColumnsLoaded = function () {\n if (!this.cellComp) {\n return;\n }\n this.setWrapText();\n if (!this.editing) {\n this.refreshCell({ forceRefresh: true, suppressFlash: true });\n }\n };\n CellCtrl.prototype.setWrapText = function () {\n var value = this.column.getColDef().wrapText == true;\n this.cellComp.addOrRemoveCssClass(CSS_CELL_WRAP_TEXT, value);\n };\n CellCtrl.prototype.dispatchCellContextMenuEvent = function (event) {\n var colDef = this.column.getColDef();\n var cellContextMenuEvent = this.createEvent(event, Events.EVENT_CELL_CONTEXT_MENU);\n this.beans.eventService.dispatchEvent(cellContextMenuEvent);\n if (colDef.onCellContextMenu) {\n // to make the callback async, do in a timeout\n window.setTimeout(function () { return colDef.onCellContextMenu(cellContextMenuEvent); }, 0);\n }\n };\n CellCtrl.prototype.getCellRenderer = function () {\n return this.cellComp ? this.cellComp.getCellRenderer() : null;\n };\n CellCtrl.prototype.getCellEditor = function () {\n return this.cellComp ? this.cellComp.getCellEditor() : null;\n };\n CellCtrl.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n CellCtrl.prototype.createSelectionCheckbox = function () {\n var cbSelectionComponent = new CheckboxSelectionComponent();\n this.beans.context.createBean(cbSelectionComponent);\n cbSelectionComponent.init({ rowNode: this.rowNode, column: this.column });\n // put the checkbox in before the value\n return cbSelectionComponent;\n };\n CellCtrl.prototype.createDndSource = function () {\n var dndSourceComp = new DndSourceComp(this.rowNode, this.column, this.beans, this.eGui);\n this.beans.context.createBean(dndSourceComp);\n return dndSourceComp;\n };\n CellCtrl.prototype.registerRowDragger = function (customElement, dragStartPixels, suppressVisibilityChange) {\n var _this = this;\n // if previously existed, then we are only updating\n if (this.customRowDragComp) {\n this.customRowDragComp.setDragElement(customElement, dragStartPixels);\n return;\n }\n var newComp = this.createRowDragComp(customElement, dragStartPixels, suppressVisibilityChange);\n if (newComp) {\n this.customRowDragComp = newComp;\n this.addDestroyFunc(function () { return _this.beans.context.destroyBean(newComp); });\n }\n };\n CellCtrl.prototype.createRowDragComp = function (customElement, dragStartPixels, suppressVisibilityChange) {\n var _this = this;\n var pagination = this.beans.gridOptionsWrapper.isPagination();\n var rowDragManaged = this.beans.gridOptionsWrapper.isRowDragManaged();\n var clientSideRowModelActive = this.beans.gridOptionsWrapper.isRowModelDefault();\n if (rowDragManaged) {\n // row dragging only available in default row model\n if (!clientSideRowModelActive) {\n doOnce(function () { return console.warn('AG Grid: managed row dragging is only allowed in the Client Side Row Model'); }, 'CellComp.addRowDragging');\n return;\n }\n if (pagination) {\n doOnce(function () { return console.warn('AG Grid: managed row dragging is not possible when doing pagination'); }, 'CellComp.addRowDragging');\n return;\n }\n }\n // otherwise (normal case) we are creating a RowDraggingComp for the first time\n var rowDragComp = new RowDragComp(function () { return _this.value; }, this.rowNode, this.column, customElement, dragStartPixels, suppressVisibilityChange);\n this.beans.context.createBean(rowDragComp);\n return rowDragComp;\n };\n CellCtrl.DOM_DATA_KEY_CELL_CTRL = 'cellCtrl';\n return CellCtrl;\n}(BeanStub));\nexport { CellCtrl };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __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};\nvar AngularRowUtils = /** @class */ (function () {\n function AngularRowUtils() {\n }\n AngularRowUtils.createChildScopeOrNull = function (rowNode, parentScope, gridOptionsWrapper) {\n var isAngularCompileRows = gridOptionsWrapper.isAngularCompileRows();\n if (!isAngularCompileRows) {\n return null;\n }\n var newChildScope = parentScope.$new();\n newChildScope.data = __assign({}, rowNode.data);\n newChildScope.rowNode = rowNode;\n newChildScope.context = gridOptionsWrapper.getContext();\n var destroyFunc = function () {\n newChildScope.$destroy();\n newChildScope.data = null;\n newChildScope.rowNode = null;\n newChildScope.context = null;\n };\n return {\n scope: newChildScope,\n scopeDestroyFunc: destroyFunc\n };\n };\n return AngularRowUtils;\n}());\nexport { AngularRowUtils };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nimport { BeanStub } from \"../../context/beanStub\";\nimport { getCtrlForEvent, isStopPropagationForAgGrid, isEventSupported } from \"../../utils/event\";\nimport { Autowired, Optional, PostConstruct } from \"../../context/context\";\nimport { RowCtrl } from \"../../rendering/row/rowCtrl\";\nimport { isIOSUserAgent } from \"../../utils/browser\";\nimport { TouchListener } from \"../../widgets/touchListener\";\nimport { isUserSuppressingKeyboardEvent } from \"../../utils/keyboard\";\nimport { Events } from \"../../events\";\nimport { KeyCode } from \"../../constants/keyCode\";\nimport { Constants } from \"../../constants/constants\";\nimport { missingOrEmpty } from \"../../utils/generic\";\nimport { last } from \"../../utils/array\";\nimport { ModuleRegistry } from \"../../modules/moduleRegistry\";\nimport { ModuleNames } from \"../../modules/moduleNames\";\nimport { CellCtrl } from \"../../rendering/cell/cellCtrl\";\nvar RowContainerEventsFeature = /** @class */ (function (_super) {\n __extends(RowContainerEventsFeature, _super);\n function RowContainerEventsFeature(element) {\n var _this = _super.call(this) || this;\n _this.element = element;\n return _this;\n }\n RowContainerEventsFeature.prototype.postConstruct = function () {\n this.addMouseListeners();\n this.mockContextMenuForIPad();\n this.addKeyboardEvents();\n };\n RowContainerEventsFeature.prototype.addKeyboardEvents = function () {\n var _this = this;\n var eventNames = ['keydown', 'keypress'];\n eventNames.forEach(function (eventName) {\n var listener = _this.processKeyboardEvent.bind(_this, eventName);\n _this.addManagedListener(_this.element, eventName, listener);\n });\n };\n RowContainerEventsFeature.prototype.addMouseListeners = function () {\n var _this = this;\n var mouseDownEvent = isEventSupported('touchstart') ? 'touchstart' : 'mousedown';\n var eventNames = ['dblclick', 'contextmenu', 'mouseover', 'mouseout', 'click', mouseDownEvent];\n eventNames.forEach(function (eventName) {\n var listener = _this.processMouseEvent.bind(_this, eventName);\n _this.addManagedListener(_this.element, eventName, listener);\n });\n };\n RowContainerEventsFeature.prototype.processMouseEvent = function (eventName, mouseEvent) {\n if (!this.mouseEventService.isEventFromThisGrid(mouseEvent) ||\n isStopPropagationForAgGrid(mouseEvent)) {\n return;\n }\n var rowComp = this.getRowForEvent(mouseEvent);\n var cellCtrl = this.mouseEventService.getRenderedCellForEvent(mouseEvent);\n if (eventName === \"contextmenu\") {\n this.handleContextMenuMouseEvent(mouseEvent, null, rowComp, cellCtrl);\n }\n else {\n if (cellCtrl) {\n cellCtrl.onMouseEvent(eventName, mouseEvent);\n }\n if (rowComp) {\n rowComp.onMouseEvent(eventName, mouseEvent);\n }\n }\n };\n RowContainerEventsFeature.prototype.mockContextMenuForIPad = function () {\n var _this = this;\n // we do NOT want this when not in iPad, otherwise we will be doing\n if (!isIOSUserAgent()) {\n return;\n }\n var touchListener = new TouchListener(this.element);\n var longTapListener = function (event) {\n var rowComp = _this.getRowForEvent(event.touchEvent);\n var cellComp = _this.mouseEventService.getRenderedCellForEvent(event.touchEvent);\n _this.handleContextMenuMouseEvent(null, event.touchEvent, rowComp, cellComp);\n };\n this.addManagedListener(touchListener, TouchListener.EVENT_LONG_TAP, longTapListener);\n this.addDestroyFunc(function () { return touchListener.destroy(); });\n };\n RowContainerEventsFeature.prototype.getRowForEvent = function (event) {\n var sourceElement = event.target;\n while (sourceElement) {\n var rowCon = this.gridOptionsWrapper.getDomData(sourceElement, RowCtrl.DOM_DATA_KEY_ROW_CTRL);\n if (rowCon) {\n return rowCon;\n }\n sourceElement = sourceElement.parentElement;\n }\n return null;\n };\n RowContainerEventsFeature.prototype.handleContextMenuMouseEvent = function (mouseEvent, touchEvent, rowComp, cellCtrl) {\n var rowNode = rowComp ? rowComp.getRowNode() : null;\n var column = cellCtrl ? cellCtrl.getColumn() : null;\n var value = null;\n if (column) {\n var event_1 = mouseEvent ? mouseEvent : touchEvent;\n cellCtrl.dispatchCellContextMenuEvent(event_1);\n value = this.valueService.getValue(column, rowNode);\n }\n // if user clicked on a cell, anchor to that cell, otherwise anchor to the grid panel\n var gridBodyCon = this.ctrlsService.getGridBodyCtrl();\n var anchorToElement = cellCtrl ? cellCtrl.getGui() : gridBodyCon.getGridBodyElement();\n if (this.contextMenuFactory) {\n this.contextMenuFactory.onContextMenu(mouseEvent, touchEvent, rowNode, column, value, anchorToElement);\n }\n };\n RowContainerEventsFeature.prototype.processKeyboardEvent = function (eventName, keyboardEvent) {\n var cellComp = getCtrlForEvent(this.gridOptionsWrapper, keyboardEvent, CellCtrl.DOM_DATA_KEY_CELL_CTRL);\n var rowComp = getCtrlForEvent(this.gridOptionsWrapper, keyboardEvent, RowCtrl.DOM_DATA_KEY_ROW_CTRL);\n if (keyboardEvent.defaultPrevented) {\n return;\n }\n if (cellComp) {\n this.processCellKeyboardEvent(cellComp, eventName, keyboardEvent);\n }\n else if (rowComp && rowComp.isFullWidth()) {\n this.processFullWidthRowKeyboardEvent(rowComp, eventName, keyboardEvent);\n }\n };\n RowContainerEventsFeature.prototype.processCellKeyboardEvent = function (cellCtrl, eventName, keyboardEvent) {\n var rowNode = cellCtrl.getRowNode();\n var column = cellCtrl.getColumn();\n var editing = cellCtrl.isEditing();\n var gridProcessingAllowed = !isUserSuppressingKeyboardEvent(this.gridOptionsWrapper, keyboardEvent, rowNode, column, editing);\n if (gridProcessingAllowed) {\n switch (eventName) {\n case 'keydown':\n // first see if it's a scroll key, page up / down, home / end etc\n var wasScrollKey = !editing && this.navigationService.handlePageScrollingKey(keyboardEvent);\n // if not a scroll key, then we pass onto cell\n if (!wasScrollKey) {\n cellCtrl.onKeyDown(keyboardEvent);\n }\n // perform clipboard and undo / redo operations\n this.doGridOperations(keyboardEvent, cellCtrl.isEditing());\n break;\n case 'keypress':\n cellCtrl.onKeyPress(keyboardEvent);\n break;\n }\n }\n if (eventName === 'keydown') {\n var cellKeyDownEvent = cellCtrl.createEvent(keyboardEvent, Events.EVENT_CELL_KEY_DOWN);\n this.eventService.dispatchEvent(cellKeyDownEvent);\n }\n if (eventName === 'keypress') {\n var cellKeyPressEvent = cellCtrl.createEvent(keyboardEvent, Events.EVENT_CELL_KEY_PRESS);\n this.eventService.dispatchEvent(cellKeyPressEvent);\n }\n };\n RowContainerEventsFeature.prototype.processFullWidthRowKeyboardEvent = function (rowComp, eventName, keyboardEvent) {\n var rowNode = rowComp.getRowNode();\n var focusedCell = this.focusService.getFocusedCell();\n var column = (focusedCell && focusedCell.column);\n var gridProcessingAllowed = !isUserSuppressingKeyboardEvent(this.gridOptionsWrapper, keyboardEvent, rowNode, column, false);\n if (gridProcessingAllowed) {\n var key = keyboardEvent.key;\n if (eventName === 'keydown') {\n switch (key) {\n case KeyCode.UP:\n case KeyCode.DOWN:\n rowComp.onKeyboardNavigate(keyboardEvent);\n break;\n case KeyCode.TAB:\n rowComp.onTabKeyDown(keyboardEvent);\n default:\n }\n }\n }\n if (eventName === 'keydown') {\n var cellKeyDownEvent = rowComp.createRowEvent(Events.EVENT_CELL_KEY_DOWN, keyboardEvent);\n this.eventService.dispatchEvent(cellKeyDownEvent);\n }\n if (eventName === 'keypress') {\n var cellKeyPressEvent = rowComp.createRowEvent(Events.EVENT_CELL_KEY_PRESS, keyboardEvent);\n this.eventService.dispatchEvent(cellKeyPressEvent);\n }\n };\n RowContainerEventsFeature.prototype.doGridOperations = function (keyboardEvent, editing) {\n // check if ctrl or meta key pressed\n if (!keyboardEvent.ctrlKey && !keyboardEvent.metaKey) {\n return;\n }\n // if the cell the event came from is editing, then we do not\n // want to do the default shortcut keys, otherwise the editor\n // (eg a text field) would not be able to do the normal cut/copy/paste\n if (editing) {\n return;\n }\n // for copy / paste, we don't want to execute when the event\n // was from a child grid (happens in master detail)\n if (!this.mouseEventService.isEventFromThisGrid(keyboardEvent)) {\n return;\n }\n switch (keyboardEvent.key.toUpperCase()) {\n case KeyCode.A:\n return this.onCtrlAndA(keyboardEvent);\n case KeyCode.C:\n return this.onCtrlAndC(keyboardEvent);\n case KeyCode.V:\n return this.onCtrlAndV();\n case KeyCode.D:\n return this.onCtrlAndD(keyboardEvent);\n case KeyCode.Z:\n return keyboardEvent.shiftKey ? this.undoRedoService.redo() : this.undoRedoService.undo();\n case KeyCode.Y:\n return this.undoRedoService.redo();\n }\n };\n RowContainerEventsFeature.prototype.onCtrlAndA = function (event) {\n var _a = this, pinnedRowModel = _a.pinnedRowModel, paginationProxy = _a.paginationProxy, rangeService = _a.rangeService;\n var PINNED_BOTTOM = Constants.PINNED_BOTTOM, PINNED_TOP = Constants.PINNED_TOP;\n if (rangeService && paginationProxy.isRowsToRender()) {\n var _b = __read([\n pinnedRowModel.isEmpty(PINNED_TOP),\n pinnedRowModel.isEmpty(PINNED_BOTTOM)\n ], 2), isEmptyPinnedTop = _b[0], isEmptyPinnedBottom = _b[1];\n var floatingStart = isEmptyPinnedTop ? null : PINNED_TOP;\n var floatingEnd = void 0;\n var rowEnd = void 0;\n if (isEmptyPinnedBottom) {\n floatingEnd = null;\n rowEnd = this.paginationProxy.getRowCount() - 1;\n }\n else {\n floatingEnd = PINNED_BOTTOM;\n rowEnd = pinnedRowModel.getPinnedBottomRowData().length - 1;\n }\n var allDisplayedColumns = this.columnModel.getAllDisplayedColumns();\n if (missingOrEmpty(allDisplayedColumns)) {\n return;\n }\n rangeService.setCellRange({\n rowStartIndex: 0,\n rowStartPinned: floatingStart,\n rowEndIndex: rowEnd,\n rowEndPinned: floatingEnd,\n columnStart: allDisplayedColumns[0],\n columnEnd: last(allDisplayedColumns)\n });\n }\n event.preventDefault();\n };\n RowContainerEventsFeature.prototype.onCtrlAndC = function (event) {\n if (!this.clipboardService || this.gridOptionsWrapper.isEnableCellTextSelection()) {\n return;\n }\n this.clipboardService.copyToClipboard();\n event.preventDefault();\n };\n RowContainerEventsFeature.prototype.onCtrlAndV = function () {\n if (ModuleRegistry.isRegistered(ModuleNames.ClipboardModule) && !this.gridOptionsWrapper.isSuppressClipboardPaste()) {\n this.clipboardService.pasteFromClipboard();\n }\n };\n RowContainerEventsFeature.prototype.onCtrlAndD = function (event) {\n if (ModuleRegistry.isRegistered(ModuleNames.ClipboardModule) && !this.gridOptionsWrapper.isSuppressClipboardPaste()) {\n this.clipboardService.copyRangeDown();\n }\n event.preventDefault();\n };\n __decorate([\n Autowired('mouseEventService')\n ], RowContainerEventsFeature.prototype, \"mouseEventService\", void 0);\n __decorate([\n Autowired('valueService')\n ], RowContainerEventsFeature.prototype, \"valueService\", void 0);\n __decorate([\n Optional('contextMenuFactory')\n ], RowContainerEventsFeature.prototype, \"contextMenuFactory\", void 0);\n __decorate([\n Autowired('ctrlsService')\n ], RowContainerEventsFeature.prototype, \"ctrlsService\", void 0);\n __decorate([\n Autowired('navigationService')\n ], RowContainerEventsFeature.prototype, \"navigationService\", void 0);\n __decorate([\n Autowired('focusService')\n ], RowContainerEventsFeature.prototype, \"focusService\", void 0);\n __decorate([\n Autowired('undoRedoService')\n ], RowContainerEventsFeature.prototype, \"undoRedoService\", void 0);\n __decorate([\n Autowired('columnModel')\n ], RowContainerEventsFeature.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('paginationProxy')\n ], RowContainerEventsFeature.prototype, \"paginationProxy\", void 0);\n __decorate([\n Autowired('pinnedRowModel')\n ], RowContainerEventsFeature.prototype, \"pinnedRowModel\", void 0);\n __decorate([\n Optional('rangeService')\n ], RowContainerEventsFeature.prototype, \"rangeService\", void 0);\n __decorate([\n Optional('clipboardService')\n ], RowContainerEventsFeature.prototype, \"clipboardService\", void 0);\n __decorate([\n PostConstruct\n ], RowContainerEventsFeature.prototype, \"postConstruct\", null);\n return RowContainerEventsFeature;\n}(BeanStub));\nexport { RowContainerEventsFeature };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { BeanStub } from \"../context/beanStub\";\nimport { Autowired, PostConstruct } from \"../context/context\";\nimport { Events } from \"../events\";\nimport { getInnerHeight } from \"../utils/dom\";\n// listens to changes in the center viewport size, for column and row virtualisation,\n// and adjusts grid as necessary. there are two viewports, one for horizontal and one for\n// vertical scrolling.\nvar ViewportSizeFeature = /** @class */ (function (_super) {\n __extends(ViewportSizeFeature, _super);\n function ViewportSizeFeature(centerContainer) {\n var _this = _super.call(this) || this;\n _this.centerContainerCon = centerContainer;\n return _this;\n }\n ViewportSizeFeature.prototype.postConstruct = function () {\n var _this = this;\n this.ctrlsService.whenReady(function () {\n _this.gridBodyCon = _this.ctrlsService.getGridBodyCtrl();\n _this.listenForResize();\n });\n this.addManagedListener(this.eventService, Events.EVENT_SCROLLBAR_WIDTH_CHANGED, this.onScrollbarWidthChanged.bind(this));\n };\n ViewportSizeFeature.prototype.listenForResize = function () {\n var listener = this.onCenterViewportResized.bind(this);\n // centerContainer gets horizontal resizes\n this.centerContainerCon.registerViewportResizeListener(listener);\n // eBodyViewport gets vertical resizes\n this.gridBodyCon.registerBodyViewportResizeListener(listener);\n };\n ViewportSizeFeature.prototype.onScrollbarWidthChanged = function () {\n this.checkViewportAndScrolls();\n };\n ViewportSizeFeature.prototype.onCenterViewportResized = function () {\n if (this.centerContainerCon.isViewportVisible()) {\n this.checkViewportAndScrolls();\n var newWidth = this.centerContainerCon.getCenterWidth();\n if (newWidth !== this.centerWidth) {\n this.centerWidth = newWidth;\n this.columnModel.refreshFlexedColumns({ viewportWidth: this.centerWidth, updateBodyWidths: true, fireResizedEvent: true });\n }\n }\n else {\n this.bodyHeight = 0;\n }\n };\n // gets called every time the viewport size changes. we use this to check visibility of scrollbars\n // in the grid panel, and also to check size and position of viewport for row and column virtualisation.\n ViewportSizeFeature.prototype.checkViewportAndScrolls = function () {\n // results in updating anything that depends on scroll showing\n this.updateScrollVisibleService();\n // fires event if height changes, used by PaginationService, HeightScalerService, RowRenderer\n this.checkBodyHeight();\n // check for virtual columns for ColumnController\n this.onHorizontalViewportChanged();\n this.gridBodyCon.getScrollFeature().checkScrollLeft();\n };\n ViewportSizeFeature.prototype.getBodyHeight = function () {\n return this.bodyHeight;\n };\n ViewportSizeFeature.prototype.checkBodyHeight = function () {\n var eBodyViewport = this.gridBodyCon.getBodyViewportElement();\n var bodyHeight = getInnerHeight(eBodyViewport);\n if (this.bodyHeight !== bodyHeight) {\n this.bodyHeight = bodyHeight;\n var event_1 = {\n type: Events.EVENT_BODY_HEIGHT_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event_1);\n }\n };\n ViewportSizeFeature.prototype.updateScrollVisibleService = function () {\n // because of column animation (which takes 200ms), we have to do this twice.\n // eg if user removes cols anywhere except at the RHS, then the cols on the RHS\n // will animate to the left to fill the gap. this animation means just after\n // the cols are removed, the remaining cols are still in the original location\n // at the start of the animation, so pre animation the H scrollbar is still needed,\n // but post animation it is not.\n this.updateScrollVisibleServiceImpl();\n setTimeout(this.updateScrollVisibleServiceImpl.bind(this), 500);\n };\n ViewportSizeFeature.prototype.updateScrollVisibleServiceImpl = function () {\n var params = {\n horizontalScrollShowing: this.isHorizontalScrollShowing(),\n verticalScrollShowing: this.gridBodyCon.isVerticalScrollShowing()\n };\n this.scrollVisibleService.setScrollsVisible(params);\n // fix - gridComp should just listen to event from above\n this.gridBodyCon.setVerticalScrollPaddingVisible(params.verticalScrollShowing);\n };\n ViewportSizeFeature.prototype.isHorizontalScrollShowing = function () {\n var isAlwaysShowHorizontalScroll = this.gridOptionsWrapper.isAlwaysShowHorizontalScroll();\n return isAlwaysShowHorizontalScroll || this.centerContainerCon.isViewportHScrollShowing();\n };\n // this gets called whenever a change in the viewport, so we can inform column controller it has to work\n // out the virtual columns again. gets called from following locations:\n // + ensureColVisible, scroll, init, layoutChanged, displayedColumnsChanged, API (doLayout)\n ViewportSizeFeature.prototype.onHorizontalViewportChanged = function () {\n var scrollWidth = this.centerContainerCon.getCenterWidth();\n var scrollPosition = this.centerContainerCon.getViewportScrollLeft();\n this.columnModel.setViewportPosition(scrollWidth, scrollPosition);\n };\n __decorate([\n Autowired('ctrlsService')\n ], ViewportSizeFeature.prototype, \"ctrlsService\", void 0);\n __decorate([\n Autowired('columnModel')\n ], ViewportSizeFeature.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('scrollVisibleService')\n ], ViewportSizeFeature.prototype, \"scrollVisibleService\", void 0);\n __decorate([\n Autowired('columnApi')\n ], ViewportSizeFeature.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], ViewportSizeFeature.prototype, \"gridApi\", void 0);\n __decorate([\n PostConstruct\n ], ViewportSizeFeature.prototype, \"postConstruct\", null);\n return ViewportSizeFeature;\n}(BeanStub));\nexport { ViewportSizeFeature };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { BeanStub } from \"../../context/beanStub\";\nimport { Autowired, PostConstruct } from \"../../context/context\";\nimport { Events } from \"../../eventKeys\";\nimport { setDisplayed, setFixedWidth } from \"../../utils/dom\";\nvar SetPinnedLeftWidthFeature = /** @class */ (function (_super) {\n __extends(SetPinnedLeftWidthFeature, _super);\n function SetPinnedLeftWidthFeature(element) {\n var _this = _super.call(this) || this;\n _this.element = element;\n return _this;\n }\n SetPinnedLeftWidthFeature.prototype.postConstruct = function () {\n this.addManagedListener(this.eventService, Events.EVENT_LEFT_PINNED_WIDTH_CHANGED, this.onPinnedLeftWidthChanged.bind(this));\n };\n SetPinnedLeftWidthFeature.prototype.onPinnedLeftWidthChanged = function () {\n var leftWidth = this.pinnedWidthService.getPinnedLeftWidth();\n var displayed = leftWidth > 0;\n setDisplayed(this.element, displayed);\n if (displayed) {\n setFixedWidth(this.element, leftWidth);\n }\n };\n __decorate([\n Autowired('pinnedWidthService')\n ], SetPinnedLeftWidthFeature.prototype, \"pinnedWidthService\", void 0);\n __decorate([\n PostConstruct\n ], SetPinnedLeftWidthFeature.prototype, \"postConstruct\", null);\n return SetPinnedLeftWidthFeature;\n}(BeanStub));\nexport { SetPinnedLeftWidthFeature };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, PostConstruct } from \"../../context/context\";\nimport { Events } from \"../../eventKeys\";\nimport { setDisplayed, setFixedWidth } from \"../../utils/dom\";\nimport { BeanStub } from \"../../context/beanStub\";\nvar SetPinnedRightWidthFeature = /** @class */ (function (_super) {\n __extends(SetPinnedRightWidthFeature, _super);\n function SetPinnedRightWidthFeature(element) {\n var _this = _super.call(this) || this;\n _this.element = element;\n return _this;\n }\n SetPinnedRightWidthFeature.prototype.postConstruct = function () {\n this.addManagedListener(this.eventService, Events.EVENT_RIGHT_PINNED_WIDTH_CHANGED, this.onPinnedRightWidthChanged.bind(this));\n };\n SetPinnedRightWidthFeature.prototype.onPinnedRightWidthChanged = function () {\n var rightWidth = this.pinnedWidthService.getPinnedRightWidth();\n var displayed = rightWidth > 0;\n setDisplayed(this.element, displayed);\n if (displayed) {\n setFixedWidth(this.element, rightWidth);\n }\n };\n __decorate([\n Autowired('pinnedWidthService')\n ], SetPinnedRightWidthFeature.prototype, \"pinnedWidthService\", void 0);\n __decorate([\n PostConstruct\n ], SetPinnedRightWidthFeature.prototype, \"postConstruct\", null);\n return SetPinnedRightWidthFeature;\n}(BeanStub));\nexport { SetPinnedRightWidthFeature };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { BeanStub } from \"../../context/beanStub\";\nimport { Autowired, PostConstruct } from \"../../context/context\";\nimport { Events } from \"../../eventKeys\";\nvar SetHeightFeature = /** @class */ (function (_super) {\n __extends(SetHeightFeature, _super);\n function SetHeightFeature(eContainer, eWrapper) {\n var _this = _super.call(this) || this;\n _this.eContainer = eContainer;\n _this.eWrapper = eWrapper;\n return _this;\n }\n SetHeightFeature.prototype.postConstruct = function () {\n this.addManagedListener(this.eventService, Events.EVENT_ROW_CONTAINER_HEIGHT_CHANGED, this.onHeightChanged.bind(this));\n };\n SetHeightFeature.prototype.onHeightChanged = function () {\n var height = this.maxDivHeightScaler.getUiContainerHeight();\n var heightString = height != null ? height + \"px\" : \"\";\n this.eContainer.style.height = heightString;\n if (this.eWrapper) {\n this.eWrapper.style.height = heightString;\n }\n };\n __decorate([\n Autowired(\"rowContainerHeightService\")\n ], SetHeightFeature.prototype, \"maxDivHeightScaler\", void 0);\n __decorate([\n PostConstruct\n ], SetHeightFeature.prototype, \"postConstruct\", null);\n return SetHeightFeature;\n}(BeanStub));\nexport { SetHeightFeature };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { BeanStub } from \"../../context/beanStub\";\nimport { missing } from \"../../utils/generic\";\nimport { Autowired, Optional, PostConstruct } from \"../../context/context\";\nvar DragListenerFeature = /** @class */ (function (_super) {\n __extends(DragListenerFeature, _super);\n function DragListenerFeature(eContainer) {\n var _this = _super.call(this) || this;\n _this.eContainer = eContainer;\n return _this;\n }\n DragListenerFeature.prototype.postConstruct = function () {\n var _this = this;\n if (!this.gridOptionsWrapper.isEnableRangeSelection() || // no range selection if no property\n missing(this.rangeService) // no range selection if not enterprise version\n ) {\n return;\n }\n var params = {\n dragStartPixels: 0,\n eElement: this.eContainer,\n onDragStart: this.rangeService.onDragStart.bind(this.rangeService),\n onDragStop: this.rangeService.onDragStop.bind(this.rangeService),\n onDragging: this.rangeService.onDragging.bind(this.rangeService)\n };\n this.dragService.addDragSource(params);\n this.addDestroyFunc(function () { return _this.dragService.removeDragSource(params); });\n };\n __decorate([\n Optional('rangeService')\n ], DragListenerFeature.prototype, \"rangeService\", void 0);\n __decorate([\n Autowired('dragService')\n ], DragListenerFeature.prototype, \"dragService\", void 0);\n __decorate([\n PostConstruct\n ], DragListenerFeature.prototype, \"postConstruct\", null);\n return DragListenerFeature;\n}(BeanStub));\nexport { DragListenerFeature };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { BeanStub } from \"../context/beanStub\";\nimport { Autowired, PostConstruct } from \"../context/context\";\nimport { GridOptionsWrapper } from \"../gridOptionsWrapper\";\nimport { Constants } from \"../constants/constants\";\nimport { Events } from \"../eventKeys\";\nvar CenterWidthFeature = /** @class */ (function (_super) {\n __extends(CenterWidthFeature, _super);\n function CenterWidthFeature(callback) {\n var _this = _super.call(this) || this;\n _this.callback = callback;\n return _this;\n }\n CenterWidthFeature.prototype.postConstruct = function () {\n var listener = this.setWidth.bind(this);\n this.addManagedListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_DOM_LAYOUT, listener);\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, listener);\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, listener);\n this.setWidth();\n };\n CenterWidthFeature.prototype.setWidth = function () {\n var columnModel = this.columnModel;\n var printLayout = this.gridOptionsWrapper.getDomLayout() === Constants.DOM_LAYOUT_PRINT;\n var centerWidth = columnModel.getBodyContainerWidth();\n var leftWidth = columnModel.getDisplayedColumnsLeftWidth();\n var rightWidth = columnModel.getDisplayedColumnsRightWidth();\n var totalWidth = printLayout ? centerWidth + leftWidth + rightWidth : centerWidth;\n this.callback(totalWidth);\n };\n __decorate([\n Autowired('columnModel')\n ], CenterWidthFeature.prototype, \"columnModel\", void 0);\n __decorate([\n PostConstruct\n ], CenterWidthFeature.prototype, \"postConstruct\", null);\n return CenterWidthFeature;\n}(BeanStub));\nexport { CenterWidthFeature };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nimport { BeanStub } from \"../../context/beanStub\";\nimport { Autowired, PostConstruct } from \"../../context/context\";\nimport { Events } from \"../../eventKeys\";\nimport { RowContainerEventsFeature } from \"./rowContainerEventsFeature\";\nimport { getInnerWidth, getScrollLeft, isHorizontalScrollShowing, isVisible, setScrollLeft } from \"../../utils/dom\";\nimport { ViewportSizeFeature } from \"../viewportSizeFeature\";\nimport { convertToMap } from \"../../utils/map\";\nimport { SetPinnedLeftWidthFeature } from \"./setPinnedLeftWidthFeature\";\nimport { SetPinnedRightWidthFeature } from \"./setPinnedRightWidthFeature\";\nimport { SetHeightFeature } from \"./setHeightFeature\";\nimport { DragListenerFeature } from \"./dragListenerFeature\";\nimport { CenterWidthFeature } from \"../centerWidthFeature\";\nimport { Constants } from \"../../constants/constants\";\nimport { GridOptionsWrapper } from \"../../gridOptionsWrapper\";\nexport var RowContainerName;\n(function (RowContainerName) {\n RowContainerName[\"LEFT\"] = \"left\";\n RowContainerName[\"RIGHT\"] = \"right\";\n RowContainerName[\"CENTER\"] = \"center\";\n RowContainerName[\"FULL_WIDTH\"] = \"fullWidth\";\n RowContainerName[\"TOP_LEFT\"] = \"topLeft\";\n RowContainerName[\"TOP_RIGHT\"] = \"topRight\";\n RowContainerName[\"TOP_CENTER\"] = \"topCenter\";\n RowContainerName[\"TOP_FULL_WIDTH\"] = \"topFullWidth\";\n RowContainerName[\"BOTTOM_LEFT\"] = \"bottomLeft\";\n RowContainerName[\"BOTTOM_RIGHT\"] = \"bottomRight\";\n RowContainerName[\"BOTTOM_CENTER\"] = \"bottomCenter\";\n RowContainerName[\"BOTTOM_FULL_WIDTH\"] = \"bottomFullWidth\";\n})(RowContainerName || (RowContainerName = {}));\nexport var RowContainerType;\n(function (RowContainerType) {\n RowContainerType[\"LEFT\"] = \"left\";\n RowContainerType[\"RIGHT\"] = \"right\";\n RowContainerType[\"CENTER\"] = \"center\";\n RowContainerType[\"FULL_WIDTH\"] = \"fullWidth\";\n})(RowContainerType || (RowContainerType = {}));\nexport function getRowContainerTypeForName(name) {\n switch (name) {\n case RowContainerName.CENTER:\n case RowContainerName.TOP_CENTER:\n case RowContainerName.BOTTOM_CENTER:\n return RowContainerType.CENTER;\n case RowContainerName.LEFT:\n case RowContainerName.TOP_LEFT:\n case RowContainerName.BOTTOM_LEFT:\n return RowContainerType.LEFT;\n case RowContainerName.RIGHT:\n case RowContainerName.TOP_RIGHT:\n case RowContainerName.BOTTOM_RIGHT:\n return RowContainerType.RIGHT;\n case RowContainerName.FULL_WIDTH:\n case RowContainerName.TOP_FULL_WIDTH:\n case RowContainerName.BOTTOM_FULL_WIDTH:\n return RowContainerType.FULL_WIDTH;\n default:\n throw Error('Invalid Row Container Type');\n }\n}\nvar ContainerCssClasses = convertToMap([\n [RowContainerName.CENTER, 'ag-center-cols-container'],\n [RowContainerName.LEFT, 'ag-pinned-left-cols-container'],\n [RowContainerName.RIGHT, 'ag-pinned-right-cols-container'],\n [RowContainerName.FULL_WIDTH, 'ag-full-width-container'],\n [RowContainerName.TOP_CENTER, 'ag-floating-top-container'],\n [RowContainerName.TOP_LEFT, 'ag-pinned-left-floating-top'],\n [RowContainerName.TOP_RIGHT, 'ag-pinned-right-floating-top'],\n [RowContainerName.TOP_FULL_WIDTH, 'ag-floating-top-full-width-container'],\n [RowContainerName.BOTTOM_CENTER, 'ag-floating-bottom-container'],\n [RowContainerName.BOTTOM_LEFT, 'ag-pinned-left-floating-bottom'],\n [RowContainerName.BOTTOM_RIGHT, 'ag-pinned-right-floating-bottom'],\n [RowContainerName.BOTTOM_FULL_WIDTH, 'ag-floating-bottom-full-width-container'],\n]);\nvar ViewportCssClasses = convertToMap([\n [RowContainerName.CENTER, 'ag-center-cols-viewport'],\n [RowContainerName.TOP_CENTER, 'ag-floating-top-viewport'],\n [RowContainerName.BOTTOM_CENTER, 'ag-floating-bottom-viewport'],\n]);\nvar WrapperCssClasses = convertToMap([\n [RowContainerName.CENTER, 'ag-center-cols-clipper'],\n]);\nvar RowContainerCtrl = /** @class */ (function (_super) {\n __extends(RowContainerCtrl, _super);\n function RowContainerCtrl(name) {\n var _this = _super.call(this) || this;\n _this.name = name;\n return _this;\n }\n RowContainerCtrl.getRowContainerCssClasses = function (name) {\n var containerClass = ContainerCssClasses.get(name);\n var viewportClass = ViewportCssClasses.get(name);\n var wrapperClass = WrapperCssClasses.get(name);\n return { container: containerClass, viewport: viewportClass, wrapper: wrapperClass };\n };\n RowContainerCtrl.getPinned = function (name) {\n switch (name) {\n case RowContainerName.BOTTOM_LEFT:\n case RowContainerName.TOP_LEFT:\n case RowContainerName.LEFT:\n return Constants.PINNED_LEFT;\n case RowContainerName.BOTTOM_RIGHT:\n case RowContainerName.TOP_RIGHT:\n case RowContainerName.RIGHT:\n return Constants.PINNED_RIGHT;\n default:\n return null;\n }\n };\n RowContainerCtrl.prototype.postConstruct = function () {\n var _this = this;\n this.enableRtl = this.gridOptionsWrapper.isEnableRtl();\n this.embedFullWidthRows = this.gridOptionsWrapper.isEmbedFullWidthRows();\n this.addManagedListener(this.eventService, Events.EVENT_SCROLL_VISIBILITY_CHANGED, this.onScrollVisibilityChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, this.onDisplayedColumnsWidthChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_ROWS_CHANGED, this.onDisplayedRowsChanged.bind(this));\n this.forContainers([RowContainerName.CENTER], function () { return _this.viewportSizeFeature = _this.createManagedBean(new ViewportSizeFeature(_this)); });\n this.registerWithCtrlsService();\n };\n RowContainerCtrl.prototype.registerWithCtrlsService = function () {\n switch (this.name) {\n case RowContainerName.CENTER:\n this.ctrlsService.registerCenterRowContainerCtrl(this);\n break;\n case RowContainerName.LEFT:\n this.ctrlsService.registerLeftRowContainerCtrl(this);\n break;\n case RowContainerName.RIGHT:\n this.ctrlsService.registerRightRowContainerCtrl(this);\n break;\n case RowContainerName.TOP_CENTER:\n this.ctrlsService.registerTopCenterRowContainerCtrl(this);\n break;\n case RowContainerName.TOP_LEFT:\n this.ctrlsService.registerTopLeftRowContainerCon(this);\n break;\n case RowContainerName.TOP_RIGHT:\n this.ctrlsService.registerTopRightRowContainerCtrl(this);\n break;\n case RowContainerName.BOTTOM_CENTER:\n this.ctrlsService.registerBottomCenterRowContainerCtrl(this);\n break;\n case RowContainerName.BOTTOM_LEFT:\n this.ctrlsService.registerBottomLeftRowContainerCtrl(this);\n break;\n case RowContainerName.BOTTOM_RIGHT:\n this.ctrlsService.registerBottomRightRowContainerCtrl(this);\n break;\n }\n };\n RowContainerCtrl.prototype.forContainers = function (names, callback) {\n if (names.indexOf(this.name) >= 0) {\n callback();\n }\n };\n RowContainerCtrl.prototype.getContainerElement = function () {\n return this.eContainer;\n };\n RowContainerCtrl.prototype.getViewportSizeFeature = function () {\n return this.viewportSizeFeature;\n };\n RowContainerCtrl.prototype.setComp = function (view, eContainer, eViewport, eWrapper) {\n var _this = this;\n this.comp = view;\n this.eContainer = eContainer;\n this.eViewport = eViewport;\n this.eWrapper = eWrapper;\n this.createManagedBean(new RowContainerEventsFeature(this.eContainer));\n this.addPreventScrollWhileDragging();\n this.listenOnDomOrder();\n this.stopHScrollOnPinnedRows();\n var allTopNoFW = [RowContainerName.TOP_CENTER, RowContainerName.TOP_LEFT, RowContainerName.TOP_RIGHT];\n var allBottomNoFW = [RowContainerName.BOTTOM_CENTER, RowContainerName.BOTTOM_LEFT, RowContainerName.BOTTOM_RIGHT];\n var allMiddleNoFW = [RowContainerName.CENTER, RowContainerName.LEFT, RowContainerName.RIGHT];\n var allNoFW = __spread(allTopNoFW, allBottomNoFW, allMiddleNoFW);\n var allMiddle = [RowContainerName.CENTER, RowContainerName.LEFT, RowContainerName.RIGHT, RowContainerName.FULL_WIDTH];\n var allCenter = [RowContainerName.CENTER, RowContainerName.TOP_CENTER, RowContainerName.BOTTOM_CENTER];\n var allLeft = [RowContainerName.LEFT, RowContainerName.BOTTOM_LEFT, RowContainerName.TOP_LEFT];\n var allRight = [RowContainerName.RIGHT, RowContainerName.BOTTOM_RIGHT, RowContainerName.TOP_RIGHT];\n this.forContainers(allLeft, function () { return _this.createManagedBean(new SetPinnedLeftWidthFeature(_this.eContainer)); });\n this.forContainers(allRight, function () { return _this.createManagedBean(new SetPinnedRightWidthFeature(_this.eContainer)); });\n this.forContainers(allMiddle, function () { return _this.createManagedBean(new SetHeightFeature(_this.eContainer, _this.eWrapper)); });\n this.forContainers(allNoFW, function () { return _this.createManagedBean(new DragListenerFeature(_this.eContainer)); });\n this.forContainers(allCenter, function () { return _this.createManagedBean(new CenterWidthFeature(function (width) { return _this.comp.setContainerWidth(width + \"px\"); })); });\n };\n RowContainerCtrl.prototype.listenOnDomOrder = function () {\n var _this = this;\n var listener = function () { return _this.comp.setDomOrder(_this.gridOptionsWrapper.isEnsureDomOrder()); };\n this.addManagedListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_DOM_LAYOUT, listener);\n listener();\n };\n // when editing a pinned row, if the cell is half outside the scrollable area, the browser can\n // scroll the column into view. we do not want this, the pinned sections should never scroll.\n // so we listen to scrolls on these containers and reset the scroll if we find one.\n RowContainerCtrl.prototype.stopHScrollOnPinnedRows = function () {\n var _this = this;\n this.forContainers([RowContainerName.TOP_CENTER, RowContainerName.BOTTOM_CENTER], function () {\n var resetScrollLeft = function () { return _this.eViewport.scrollLeft = 0; };\n _this.addManagedListener(_this.eViewport, 'scroll', resetScrollLeft);\n });\n };\n RowContainerCtrl.prototype.onDisplayedColumnsChanged = function () {\n var _this = this;\n this.forContainers([RowContainerName.CENTER], function () { return _this.onHorizontalViewportChanged(); });\n };\n RowContainerCtrl.prototype.onDisplayedColumnsWidthChanged = function () {\n var _this = this;\n this.forContainers([RowContainerName.CENTER], function () { return _this.onHorizontalViewportChanged(); });\n };\n RowContainerCtrl.prototype.onScrollVisibilityChanged = function () {\n if (this.name !== RowContainerName.CENTER) {\n return;\n }\n var visible = this.scrollVisibleService.isHorizontalScrollShowing();\n var scrollbarWidth = visible ? (this.gridOptionsWrapper.getScrollbarWidth() || 0) : 0;\n var height = scrollbarWidth == 0 ? '100%' : \"calc(100% + \" + scrollbarWidth + \"px)\";\n this.comp.setViewportHeight(height);\n };\n // this methods prevents the grid views from being scrolled while the dragService is being used\n // eg. the view should not scroll up and down while dragging rows using the rowDragComp.\n RowContainerCtrl.prototype.addPreventScrollWhileDragging = function () {\n var _this = this;\n var preventScroll = function (e) {\n if (_this.dragService.isDragging()) {\n if (e.cancelable) {\n e.preventDefault();\n }\n }\n };\n this.eContainer.addEventListener('touchmove', preventScroll, { passive: false });\n this.addDestroyFunc(function () { return _this.eContainer.removeEventListener('touchmove', preventScroll); });\n };\n // this gets called whenever a change in the viewport, so we can inform column controller it has to work\n // out the virtual columns again. gets called from following locations:\n // + ensureColVisible, scroll, init, layoutChanged, displayedColumnsChanged, API (doLayout)\n RowContainerCtrl.prototype.onHorizontalViewportChanged = function () {\n var scrollWidth = this.getCenterWidth();\n var scrollPosition = this.getCenterViewportScrollLeft();\n this.columnModel.setViewportPosition(scrollWidth, scrollPosition);\n };\n RowContainerCtrl.prototype.getCenterWidth = function () {\n return getInnerWidth(this.eViewport);\n };\n RowContainerCtrl.prototype.getCenterViewportScrollLeft = function () {\n // we defer to a util, as how you calculated scrollLeft when doing RTL depends on the browser\n return getScrollLeft(this.eViewport, this.enableRtl);\n };\n RowContainerCtrl.prototype.registerViewportResizeListener = function (listener) {\n var unsubscribeFromResize = this.resizeObserverService.observeResize(this.eViewport, listener);\n this.addDestroyFunc(function () { return unsubscribeFromResize(); });\n };\n RowContainerCtrl.prototype.isViewportVisible = function () {\n return isVisible(this.eViewport);\n };\n RowContainerCtrl.prototype.isViewportHScrollShowing = function () {\n return isHorizontalScrollShowing(this.eViewport);\n };\n RowContainerCtrl.prototype.getViewportScrollLeft = function () {\n return getScrollLeft(this.eViewport, this.enableRtl);\n };\n RowContainerCtrl.prototype.isHorizontalScrollShowing = function () {\n var isAlwaysShowHorizontalScroll = this.gridOptionsWrapper.isAlwaysShowHorizontalScroll();\n return isAlwaysShowHorizontalScroll || isHorizontalScrollShowing(this.eViewport);\n };\n RowContainerCtrl.prototype.getViewportElement = function () {\n return this.eViewport;\n };\n RowContainerCtrl.prototype.setContainerTranslateX = function (amount) {\n this.eContainer.style.transform = \"translateX(\" + amount + \"px)\";\n };\n RowContainerCtrl.prototype.getHScrollPosition = function () {\n var res = {\n left: this.eViewport.scrollLeft,\n right: this.eViewport.scrollLeft + this.eViewport.offsetWidth\n };\n return res;\n };\n RowContainerCtrl.prototype.setCenterViewportScrollLeft = function (value) {\n // we defer to a util, as how you calculated scrollLeft when doing RTL depends on the browser\n setScrollLeft(this.eViewport, value, this.enableRtl);\n };\n RowContainerCtrl.prototype.onDisplayedRowsChanged = function () {\n var _this = this;\n var fullWithContainer = this.name === RowContainerName.TOP_FULL_WIDTH\n || this.name === RowContainerName.BOTTOM_FULL_WIDTH\n || this.name === RowContainerName.FULL_WIDTH;\n var doesRowMatch = function (rowCtrl) {\n var fullWidthRow = rowCtrl.isFullWidth();\n var printLayout = _this.gridOptionsWrapper.getDomLayout() === Constants.DOM_LAYOUT_PRINT;\n var embedFW = _this.embedFullWidthRows || printLayout;\n var match = fullWithContainer ?\n !embedFW && fullWidthRow\n : embedFW || !fullWidthRow;\n return match;\n };\n // this list contains either all pinned top, center or pinned bottom rows\n var allRowsRegardlessOfFullWidth = this.getRowCtrls();\n // this filters out rows not for this container, eg if it's a full with row, but we are not full with container\n var rowsThisContainer = allRowsRegardlessOfFullWidth.filter(doesRowMatch);\n this.comp.setRowCtrls(rowsThisContainer);\n };\n RowContainerCtrl.prototype.getRowCtrls = function () {\n switch (this.name) {\n case RowContainerName.TOP_CENTER:\n case RowContainerName.TOP_LEFT:\n case RowContainerName.TOP_RIGHT:\n case RowContainerName.TOP_FULL_WIDTH:\n return this.rowRenderer.getTopRowCtrls();\n case RowContainerName.BOTTOM_CENTER:\n case RowContainerName.BOTTOM_LEFT:\n case RowContainerName.BOTTOM_RIGHT:\n case RowContainerName.BOTTOM_FULL_WIDTH:\n return this.rowRenderer.getBottomRowCtrls();\n default:\n return this.rowRenderer.getRowCtrls();\n }\n };\n __decorate([\n Autowired('scrollVisibleService')\n ], RowContainerCtrl.prototype, \"scrollVisibleService\", void 0);\n __decorate([\n Autowired('dragService')\n ], RowContainerCtrl.prototype, \"dragService\", void 0);\n __decorate([\n Autowired('ctrlsService')\n ], RowContainerCtrl.prototype, \"ctrlsService\", void 0);\n __decorate([\n Autowired('columnModel')\n ], RowContainerCtrl.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('resizeObserverService')\n ], RowContainerCtrl.prototype, \"resizeObserverService\", void 0);\n __decorate([\n Autowired('rowRenderer')\n ], RowContainerCtrl.prototype, \"rowRenderer\", void 0);\n __decorate([\n PostConstruct\n ], RowContainerCtrl.prototype, \"postConstruct\", null);\n return RowContainerCtrl;\n}(BeanStub));\nexport { RowContainerCtrl };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nimport { Constants } from \"../../constants/constants\";\nimport { BeanStub } from \"../../context/beanStub\";\nimport { RowHighlightPosition, RowNode } from \"../../entities/rowNode\";\nimport { Events } from \"../../events\";\nimport { ModuleNames } from \"../../modules/moduleNames\";\nimport { ModuleRegistry } from \"../../modules/moduleRegistry\";\nimport { isElementChildOfClass } from \"../../utils/dom\";\nimport { isStopPropagationForAgGrid } from \"../../utils/event\";\nimport { doOnce, executeNextVMTurn } from \"../../utils/function\";\nimport { exists } from \"../../utils/generic\";\nimport { escapeString } from \"../../utils/string\";\nimport { CellCtrl } from \"../cell/cellCtrl\";\nimport { AngularRowUtils } from \"./angularRowUtils\";\nimport { RowDragComp } from \"./rowDragComp\";\nimport { RowContainerType } from \"../../gridBodyComp/rowContainer/rowContainerCtrl\";\nimport { setAriaExpanded, setAriaSelected, setAriaLabel, setAriaRowIndex } from \"../../utils/aria\";\nexport var RowType;\n(function (RowType) {\n RowType[\"Normal\"] = \"Normal\";\n RowType[\"FullWidth\"] = \"FullWidth\";\n RowType[\"FullWidthLoading\"] = \"FullWidthLoading\";\n RowType[\"FullWidthGroup\"] = \"FullWidthGroup\";\n RowType[\"FullWidthDetail\"] = \"FullWidthDetail\";\n})(RowType || (RowType = {}));\nvar instanceIdSequence = 0;\nvar RowCtrl = /** @class */ (function (_super) {\n __extends(RowCtrl, _super);\n function RowCtrl(parentScope, rowNode, beans, animateIn, useAnimationFrameForCreate, printLayout) {\n var _this = _super.call(this) || this;\n _this.allRowGuis = [];\n _this.active = true;\n _this.centerCellCtrls = { list: [], map: {} };\n _this.leftCellCtrls = { list: [], map: {} };\n _this.rightCellCtrls = { list: [], map: {} };\n _this.lastMouseDownOnDragger = false;\n _this.updateColumnListsPending = false;\n _this.parentScope = parentScope;\n _this.beans = beans;\n _this.rowNode = rowNode;\n _this.paginationPage = _this.beans.paginationProxy.getCurrentPage();\n _this.useAnimationFrameForCreate = useAnimationFrameForCreate;\n _this.printLayout = printLayout;\n _this.instanceId = rowNode.id + '-' + instanceIdSequence++;\n _this.setAnimateFlags(animateIn);\n _this.rowFocused = _this.beans.focusService.isRowFocused(_this.rowNode.rowIndex, _this.rowNode.rowPinned);\n _this.setupAngular1Scope();\n _this.rowLevel = _this.beans.rowCssClassCalculator.calculateRowLevel(_this.rowNode);\n _this.setRowType();\n _this.addListeners();\n _this.setInitialRowTop();\n return _this;\n }\n RowCtrl.prototype.getBeans = function () {\n return this.beans;\n };\n RowCtrl.prototype.getInstanceId = function () {\n return this.instanceId;\n };\n RowCtrl.prototype.setComp = function (rowComp, element, containerType) {\n var gui = { rowComp: rowComp, element: element, containerType: containerType };\n this.allRowGuis.push(gui);\n if (containerType === RowContainerType.LEFT) {\n this.leftGui = gui;\n }\n else if (containerType === RowContainerType.RIGHT) {\n this.rightGui = gui;\n }\n else if (containerType === RowContainerType.FULL_WIDTH) {\n this.fullWidthGui = gui;\n }\n else {\n this.centerGui = gui;\n }\n var allNormalPresent = this.leftGui != null && this.rightGui != null && this.centerGui != null;\n var fullWidthPresent = this.fullWidthGui != null;\n if (allNormalPresent || fullWidthPresent) {\n this.initialiseRowComps();\n }\n };\n RowCtrl.prototype.isCacheable = function () {\n return this.rowType === RowType.FullWidthDetail\n && this.beans.gridOptionsWrapper.isKeepDetailRows();\n };\n RowCtrl.prototype.setCached = function (cached) {\n var displayValue = cached ? 'none' : '';\n this.allRowGuis.forEach(function (rg) { return rg.element.style.display = displayValue; });\n };\n RowCtrl.prototype.initialiseRowComps = function () {\n var _this = this;\n var gow = this.beans.gridOptionsWrapper;\n this.onRowHeightChanged();\n this.updateRowIndexes();\n this.setFocusedClasses();\n this.setStylesFromGridOptions();\n if (gow.isRowSelection() && this.rowNode.selectable) {\n this.onRowSelected();\n }\n this.updateColumnLists(!this.useAnimationFrameForCreate);\n if (this.slideRowIn) {\n executeNextVMTurn(this.onTopChanged.bind(this));\n }\n if (this.fadeRowIn) {\n executeNextVMTurn(function () {\n _this.allRowGuis.forEach(function (gui) { return gui.rowComp.addOrRemoveCssClass('ag-opacity-zero', false); });\n });\n }\n var businessKey = this.getRowBusinessKey();\n var rowIdSanitised = escapeString(this.rowNode.id);\n var businessKeySanitised = escapeString(businessKey);\n this.allRowGuis.forEach(function (gui) {\n var comp = gui.rowComp;\n comp.setRole('row');\n var initialRowClasses = _this.getInitialRowClasses(gui.containerType);\n initialRowClasses.forEach(function (name) { return comp.addOrRemoveCssClass(name, true); });\n if (_this.rowNode.group) {\n setAriaExpanded(gui.element, _this.rowNode.expanded == true);\n }\n if (rowIdSanitised != null) {\n comp.setRowId(rowIdSanitised);\n }\n if (businessKeySanitised != null) {\n comp.setRowBusinessKey(businessKeySanitised);\n }\n if (_this.isFullWidth() && !_this.beans.gridOptionsWrapper.isSuppressCellFocus()) {\n comp.setTabIndex(-1);\n }\n // DOM DATA\n gow.setDomData(gui.element, RowCtrl.DOM_DATA_KEY_ROW_CTRL, _this);\n _this.addDestroyFunc(function () { return gow.setDomData(gui.element, RowCtrl.DOM_DATA_KEY_ROW_CTRL, null); });\n // adding hover functionality adds listener to this row, so we\n // do it lazily in an animation frame\n if (_this.useAnimationFrameForCreate) {\n _this.beans.animationFrameService.createTask(_this.addHoverFunctionality.bind(_this, gui.element), _this.rowNode.rowIndex, 'createTasksP2');\n }\n else {\n _this.addHoverFunctionality(gui.element);\n }\n if (_this.isFullWidth()) {\n _this.setupFullWidth(gui);\n }\n if (gow.isRowDragEntireRow()) {\n _this.addRowDraggerToRow(gui);\n }\n if (_this.useAnimationFrameForCreate) {\n // the height animation we only want active after the row is alive for 1 second.\n // this stops the row animation working when rows are initially crated. otherwise\n // auto-height rows get inserted into the dom and resized immediately, which gives\n // very bad UX (eg 10 rows get inserted, then all 10 expand, look particularly bad\n // when scrolling). so this makes sure when rows are shown for the first time, they\n // are resized immediately without animation.\n _this.beans.animationFrameService.addDestroyTask(function () {\n if (!_this.isAlive()) {\n return;\n }\n gui.rowComp.addOrRemoveCssClass('ag-after-created', true);\n });\n }\n });\n this.executeProcessRowPostCreateFunc();\n };\n RowCtrl.prototype.addRowDraggerToRow = function (gui) {\n var gow = this.beans.gridOptionsWrapper;\n if (gow.isEnableRangeSelection()) {\n doOnce(function () {\n console.warn('AG Grid: Setting `rowDragEntireRow: true` in the gridOptions doesn\\'t work with `enableRangeSelection: true`');\n }, 'rowDragAndRangeSelectionEnabled');\n return;\n }\n var rowDragComp = new RowDragComp(function () { return '1 row'; }, this.rowNode, undefined, gui.element, undefined, true);\n this.createManagedBean(rowDragComp, this.beans.context);\n };\n RowCtrl.prototype.setupFullWidth = function (gui) {\n var pinned = this.getPinnedForContainer(gui.containerType);\n var params = this.createFullWidthParams(gui.element, pinned);\n var masterDetailModuleLoaded = ModuleRegistry.isRegistered(ModuleNames.MasterDetailModule);\n if (this.rowType == RowType.FullWidthDetail && !masterDetailModuleLoaded) {\n if (ModuleRegistry.isPackageBased()) {\n console.warn(\"AG Grid: cell renderer 'agDetailCellRenderer' (for master detail) not found. Can only be used with ag-grid-enterprise package.\");\n }\n else {\n console.warn(\"AG Grid: cell renderer 'agDetailCellRenderer' (for master detail) not found. Can only be used with AG Grid Enterprise Module \" + ModuleNames.MasterDetailModule);\n }\n return;\n }\n var compDetails;\n switch (this.rowType) {\n case RowType.FullWidthDetail:\n compDetails = this.beans.userComponentFactory.getFullWidthDetailCellRendererDetails(params);\n break;\n case RowType.FullWidthGroup:\n compDetails = this.beans.userComponentFactory.getFullWidthGroupCellRendererDetails(params);\n break;\n case RowType.FullWidthLoading:\n compDetails = this.beans.userComponentFactory.getFullWidthLoadingCellRendererDetails(params);\n break;\n default:\n compDetails = this.beans.userComponentFactory.getFullWidthCellRendererDetails(params);\n break;\n }\n gui.rowComp.showFullWidth(compDetails);\n };\n RowCtrl.prototype.getScope = function () {\n return this.scope;\n };\n RowCtrl.prototype.isPrintLayout = function () {\n return this.printLayout;\n };\n RowCtrl.prototype.setupAngular1Scope = function () {\n var scopeResult = AngularRowUtils.createChildScopeOrNull(this.rowNode, this.parentScope, this.beans.gridOptionsWrapper);\n if (scopeResult) {\n this.scope = scopeResult.scope;\n this.addDestroyFunc(scopeResult.scopeDestroyFunc);\n }\n };\n // use by autoWidthCalculator, as it clones the elements\n RowCtrl.prototype.getCellElement = function (column) {\n var cellCtrl = this.getCellCtrl(column);\n return cellCtrl ? cellCtrl.getGui() : null;\n };\n RowCtrl.prototype.executeProcessRowPostCreateFunc = function () {\n var func = this.beans.gridOptionsWrapper.getProcessRowPostCreateFunc();\n if (!func) {\n return;\n }\n var params = {\n eRow: this.centerGui ? this.centerGui.element : undefined,\n ePinnedLeftRow: this.leftGui ? this.leftGui.element : undefined,\n ePinnedRightRow: this.rightGui ? this.rightGui.element : undefined,\n node: this.rowNode,\n api: this.beans.gridOptionsWrapper.getApi(),\n rowIndex: this.rowNode.rowIndex,\n addRenderedRowListener: this.addEventListener.bind(this),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n context: this.beans.gridOptionsWrapper.getContext()\n };\n func(params);\n };\n RowCtrl.prototype.setRowType = function () {\n var isStub = this.rowNode.stub;\n var isFullWidthCell = this.rowNode.isFullWidthCell();\n var isDetailCell = this.beans.doingMasterDetail && this.rowNode.detail;\n var pivotMode = this.beans.columnModel.isPivotMode();\n // we only use full width for groups, not footers. it wouldn't make sense to include footers if not looking\n // for totals. if users complain about this, then we should introduce a new property 'footerUseEntireRow'\n // so each can be set independently (as a customer complained about footers getting full width, hence\n // introducing this logic)\n var isGroupRow = !!this.rowNode.group && !this.rowNode.footer;\n var isFullWidthGroup = isGroupRow && this.beans.gridOptionsWrapper.isGroupUseEntireRow(pivotMode);\n if (isStub) {\n this.rowType = RowType.FullWidthLoading;\n }\n else if (isDetailCell) {\n this.rowType = RowType.FullWidthDetail;\n }\n else if (isFullWidthCell) {\n this.rowType = RowType.FullWidth;\n }\n else if (isFullWidthGroup) {\n this.rowType = RowType.FullWidthGroup;\n }\n else {\n this.rowType = RowType.Normal;\n }\n };\n RowCtrl.prototype.updateColumnLists = function (suppressAnimationFrame) {\n var _this = this;\n if (suppressAnimationFrame === void 0) { suppressAnimationFrame = false; }\n if (this.isFullWidth()) {\n return;\n }\n var noAnimation = suppressAnimationFrame\n || this.beans.gridOptionsWrapper.isSuppressAnimationFrame()\n || this.printLayout;\n if (noAnimation) {\n this.updateColumnListsImpl();\n return;\n }\n if (this.updateColumnListsPending) {\n return;\n }\n this.beans.animationFrameService.createTask(function () {\n if (!_this.active) {\n return;\n }\n _this.updateColumnListsImpl();\n }, this.rowNode.rowIndex, 'createTasksP1');\n this.updateColumnListsPending = true;\n };\n RowCtrl.prototype.createCellCtrls = function (prev, cols, pinned) {\n var _this = this;\n if (pinned === void 0) { pinned = null; }\n var res = {\n list: [],\n map: {}\n };\n var addCell = function (colInstanceId, cellCtrl) {\n res.list.push(cellCtrl);\n res.map[colInstanceId] = cellCtrl;\n };\n cols.forEach(function (col) {\n // we use instanceId's rather than colId as it's possible there is a Column with same Id,\n // but it's referring to a different column instance. Happens a lot with pivot, as pivot col id's are\n // reused eg pivot_0, pivot_1 etc\n var colInstanceId = col.getInstanceId();\n var cellCtrl = prev.map[colInstanceId];\n if (!cellCtrl) {\n cellCtrl = new CellCtrl(col, _this.rowNode, _this.beans, _this);\n }\n addCell(colInstanceId, cellCtrl);\n });\n prev.list.forEach(function (prevCellCtrl) {\n var cellInResult = res.map[prevCellCtrl.getColumn().getInstanceId()] != null;\n if (cellInResult) {\n return;\n }\n var keepCell = !_this.isCellEligibleToBeRemoved(prevCellCtrl, pinned);\n if (keepCell) {\n addCell(prevCellCtrl.getColumn().getInstanceId(), prevCellCtrl);\n return;\n }\n prevCellCtrl.destroy();\n });\n return res;\n };\n RowCtrl.prototype.updateColumnListsImpl = function () {\n var _this = this;\n this.updateColumnListsPending = false;\n var columnModel = this.beans.columnModel;\n if (this.printLayout) {\n this.centerCellCtrls = this.createCellCtrls(this.centerCellCtrls, columnModel.getAllDisplayedColumns());\n this.leftCellCtrls = { list: [], map: {} };\n this.rightCellCtrls = { list: [], map: {} };\n }\n else {\n var centerCols = columnModel.getViewportCenterColumnsForRow(this.rowNode);\n this.centerCellCtrls = this.createCellCtrls(this.centerCellCtrls, centerCols);\n var leftCols = columnModel.getDisplayedLeftColumnsForRow(this.rowNode);\n this.leftCellCtrls = this.createCellCtrls(this.leftCellCtrls, leftCols, Constants.PINNED_LEFT);\n var rightCols = columnModel.getDisplayedRightColumnsForRow(this.rowNode);\n this.rightCellCtrls = this.createCellCtrls(this.rightCellCtrls, rightCols, Constants.PINNED_RIGHT);\n }\n this.allRowGuis.forEach(function (item) {\n var cellControls = item.containerType === RowContainerType.LEFT ? _this.leftCellCtrls :\n item.containerType === RowContainerType.RIGHT ? _this.rightCellCtrls : _this.centerCellCtrls;\n item.rowComp.setCellCtrls(cellControls.list);\n });\n };\n RowCtrl.prototype.isCellEligibleToBeRemoved = function (cellCtrl, nextContainerPinned) {\n var REMOVE_CELL = true;\n var KEEP_CELL = false;\n // always remove the cell if it's not rendered or if it's in the wrong pinned location\n var column = cellCtrl.getColumn();\n if (column.getPinned() != nextContainerPinned) {\n return REMOVE_CELL;\n }\n // we want to try and keep editing and focused cells\n var editing = cellCtrl.isEditing();\n var focused = this.beans.focusService.isCellFocused(cellCtrl.getCellPosition());\n var mightWantToKeepCell = editing || focused;\n if (mightWantToKeepCell) {\n var column_1 = cellCtrl.getColumn();\n var displayedColumns = this.beans.columnModel.getAllDisplayedColumns();\n var cellStillDisplayed = displayedColumns.indexOf(column_1) >= 0;\n return cellStillDisplayed ? KEEP_CELL : REMOVE_CELL;\n }\n return REMOVE_CELL;\n };\n RowCtrl.prototype.setAnimateFlags = function (animateIn) {\n if (animateIn) {\n var oldRowTopExists = exists(this.rowNode.oldRowTop);\n // if the row had a previous position, we slide it in (animate row top)\n this.slideRowIn = oldRowTopExists;\n // if the row had no previous position, we fade it in (animate\n this.fadeRowIn = !oldRowTopExists;\n }\n else {\n this.slideRowIn = false;\n this.fadeRowIn = false;\n }\n };\n RowCtrl.prototype.isEditing = function () {\n return this.editingRow;\n };\n RowCtrl.prototype.stopRowEditing = function (cancel) {\n this.stopEditing(cancel);\n };\n RowCtrl.prototype.isFullWidth = function () {\n return this.rowType !== RowType.Normal;\n };\n RowCtrl.prototype.getRowType = function () {\n return this.rowType;\n };\n RowCtrl.prototype.refreshFullWidth = function () {\n var _this = this;\n // returns 'true' if refresh succeeded\n var tryRefresh = function (gui, pinned) {\n if (!gui) {\n return true;\n } // no refresh needed\n var cellRenderer = gui.rowComp.getFullWidthCellRenderer();\n // no cell renderer, either means comp not yet ready, or comp ready but now reference\n // to it (happens in react when comp is stateless). if comp not ready, we don't need to\n // refresh, however we don't know which one, so we refresh to cover the case where it's\n // react comp without reference so need to force a refresh\n if (!cellRenderer) {\n return false;\n }\n // no refresh method present, so can't refresh, hard refresh needed\n if (!cellRenderer.refresh) {\n return false;\n }\n var params = _this.createFullWidthParams(gui.element, pinned);\n var refreshSucceeded = cellRenderer.refresh(params);\n return refreshSucceeded;\n };\n var fullWidthSuccess = tryRefresh(this.fullWidthGui, null);\n var centerSuccess = tryRefresh(this.centerGui, null);\n var leftSuccess = tryRefresh(this.leftGui, Constants.PINNED_LEFT);\n var rightSuccess = tryRefresh(this.rightGui, Constants.PINNED_RIGHT);\n var allFullWidthRowsRefreshed = fullWidthSuccess && centerSuccess && leftSuccess && rightSuccess;\n return allFullWidthRowsRefreshed;\n };\n RowCtrl.prototype.addListeners = function () {\n this.addManagedListener(this.rowNode, RowNode.EVENT_HEIGHT_CHANGED, this.onRowHeightChanged.bind(this));\n this.addManagedListener(this.rowNode, RowNode.EVENT_ROW_SELECTED, this.onRowSelected.bind(this));\n this.addManagedListener(this.rowNode, RowNode.EVENT_ROW_INDEX_CHANGED, this.onRowIndexChanged.bind(this));\n this.addManagedListener(this.rowNode, RowNode.EVENT_TOP_CHANGED, this.onTopChanged.bind(this));\n this.addManagedListener(this.rowNode, RowNode.EVENT_EXPANDED_CHANGED, this.updateExpandedCss.bind(this));\n this.addManagedListener(this.rowNode, RowNode.EVENT_HAS_CHILDREN_CHANGED, this.updateExpandedCss.bind(this));\n this.addManagedListener(this.rowNode, RowNode.EVENT_DATA_CHANGED, this.onRowNodeDataChanged.bind(this));\n this.addManagedListener(this.rowNode, RowNode.EVENT_CELL_CHANGED, this.onRowNodeCellChanged.bind(this));\n this.addManagedListener(this.rowNode, RowNode.EVENT_HIGHLIGHT_CHANGED, this.onRowNodeHighlightChanged.bind(this));\n this.addManagedListener(this.rowNode, RowNode.EVENT_DRAGGING_CHANGED, this.onRowNodeDraggingChanged.bind(this));\n this.addManagedListener(this.rowNode, RowNode.EVENT_UI_LEVEL_CHANGED, this.onUiLevelChanged.bind(this));\n var eventService = this.beans.eventService;\n this.addManagedListener(eventService, Events.EVENT_PAGINATION_PIXEL_OFFSET_CHANGED, this.onPaginationPixelOffsetChanged.bind(this));\n this.addManagedListener(eventService, Events.EVENT_HEIGHT_SCALE_CHANGED, this.onTopChanged.bind(this));\n this.addManagedListener(eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));\n this.addManagedListener(eventService, Events.EVENT_VIRTUAL_COLUMNS_CHANGED, this.onVirtualColumnsChanged.bind(this));\n this.addManagedListener(eventService, Events.EVENT_CELL_FOCUSED, this.onCellFocusChanged.bind(this));\n this.addManagedListener(eventService, Events.EVENT_PAGINATION_CHANGED, this.onPaginationChanged.bind(this));\n this.addManagedListener(eventService, Events.EVENT_MODEL_UPDATED, this.onModelUpdated.bind(this));\n this.addManagedListener(eventService, Events.EVENT_COLUMN_MOVED, this.onColumnMoved.bind(this));\n this.addListenersForCellComps();\n };\n RowCtrl.prototype.onColumnMoved = function () {\n this.updateColumnLists();\n };\n RowCtrl.prototype.addListenersForCellComps = function () {\n var _this = this;\n this.addManagedListener(this.rowNode, RowNode.EVENT_ROW_INDEX_CHANGED, function () {\n _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.onRowIndexChanged(); });\n });\n this.addManagedListener(this.rowNode, RowNode.EVENT_CELL_CHANGED, function (event) {\n _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.onCellChanged(event); });\n });\n };\n RowCtrl.prototype.onRowNodeDataChanged = function (event) {\n // if this is an update, we want to refresh, as this will allow the user to put in a transition\n // into the cellRenderer refresh method. otherwise this might be completely new data, in which case\n // we will want to completely replace the cells\n this.getAllCellCtrls().forEach(function (cellCtrl) {\n return cellCtrl.refreshCell({\n suppressFlash: !event.update,\n newData: !event.update\n });\n });\n // check for selected also, as this could be after lazy loading of the row data, in which case\n // the id might of just gotten set inside the row and the row selected state may of changed\n // as a result. this is what happens when selected rows are loaded in virtual pagination.\n // - niall note - since moving to the stub component, this may no longer be true, as replacing\n // the stub component now replaces the entire row\n this.onRowSelected();\n // as data has changed, then the style and class needs to be recomputed\n this.postProcessCss();\n };\n RowCtrl.prototype.onRowNodeCellChanged = function () {\n // as data has changed, then the style and class needs to be recomputed\n this.postProcessCss();\n };\n RowCtrl.prototype.postProcessCss = function () {\n this.setStylesFromGridOptions();\n this.postProcessClassesFromGridOptions();\n this.postProcessRowClassRules();\n this.postProcessRowDragging();\n };\n RowCtrl.prototype.onRowNodeHighlightChanged = function () {\n var highlighted = this.rowNode.highlighted;\n this.allRowGuis.forEach(function (gui) {\n var aboveOn = highlighted === RowHighlightPosition.Above;\n var belowOn = highlighted === RowHighlightPosition.Below;\n gui.rowComp.addOrRemoveCssClass('ag-row-highlight-above', aboveOn);\n gui.rowComp.addOrRemoveCssClass('ag-row-highlight-below', belowOn);\n });\n };\n RowCtrl.prototype.onRowNodeDraggingChanged = function () {\n this.postProcessRowDragging();\n };\n RowCtrl.prototype.postProcessRowDragging = function () {\n var dragging = this.rowNode.dragging;\n this.allRowGuis.forEach(function (gui) { return gui.rowComp.addOrRemoveCssClass('ag-row-dragging', dragging); });\n };\n RowCtrl.prototype.updateExpandedCss = function () {\n var expandable = this.rowNode.isExpandable();\n var expanded = this.rowNode.expanded == true;\n this.allRowGuis.forEach(function (gui) {\n gui.rowComp.addOrRemoveCssClass('ag-row-group', expandable);\n gui.rowComp.addOrRemoveCssClass('ag-row-group-expanded', expandable && expanded);\n gui.rowComp.addOrRemoveCssClass('ag-row-group-contracted', expandable && !expanded);\n setAriaExpanded(gui.element, expandable && expanded);\n });\n };\n RowCtrl.prototype.onDisplayedColumnsChanged = function () {\n // we skip animations for onDisplayedColumnChanged, as otherwise the client could remove columns and\n // then set data, and any old valueGetter's (ie from cols that were removed) would still get called.\n this.updateColumnLists(true);\n if (this.beans.columnModel.wasAutoRowHeightEverActive()) {\n this.rowNode.checkAutoHeights();\n }\n };\n RowCtrl.prototype.onVirtualColumnsChanged = function () {\n this.updateColumnLists();\n };\n RowCtrl.prototype.getRowPosition = function () {\n return {\n rowPinned: this.rowNode.rowPinned,\n rowIndex: this.rowNode.rowIndex\n };\n };\n RowCtrl.prototype.onKeyboardNavigate = function (keyboardEvent) {\n var currentFullWidthComp = this.allRowGuis.find(function (c) { return c.element.contains(keyboardEvent.target); });\n var currentFullWidthContainer = currentFullWidthComp ? currentFullWidthComp.element : null;\n var isFullWidthContainerFocused = currentFullWidthContainer === keyboardEvent.target;\n if (!isFullWidthContainerFocused) {\n return;\n }\n var node = this.rowNode;\n var lastFocusedCell = this.beans.focusService.getFocusedCell();\n var cellPosition = {\n rowIndex: node.rowIndex,\n rowPinned: node.rowPinned,\n column: (lastFocusedCell && lastFocusedCell.column)\n };\n this.beans.navigationService.navigateToNextCell(keyboardEvent, keyboardEvent.key, cellPosition, true);\n keyboardEvent.preventDefault();\n };\n RowCtrl.prototype.onTabKeyDown = function (keyboardEvent) {\n if (keyboardEvent.defaultPrevented || isStopPropagationForAgGrid(keyboardEvent)) {\n return;\n }\n var currentFullWidthComp = this.allRowGuis.find(function (c) { return c.element.contains(keyboardEvent.target); });\n var currentFullWidthContainer = currentFullWidthComp ? currentFullWidthComp.element : null;\n var isFullWidthContainerFocused = currentFullWidthContainer === keyboardEvent.target;\n var nextEl = null;\n if (!isFullWidthContainerFocused) {\n nextEl = this.beans.focusService.findNextFocusableElement(currentFullWidthContainer, false, keyboardEvent.shiftKey);\n }\n if ((this.isFullWidth() && isFullWidthContainerFocused) || !nextEl) {\n this.beans.navigationService.onTabKeyDown(this, keyboardEvent);\n }\n };\n RowCtrl.prototype.onFullWidthRowFocused = function (event) {\n var _a;\n var node = this.rowNode;\n var isFocused = this.isFullWidth() && event.rowIndex === node.rowIndex && event.rowPinned == node.rowPinned;\n var element = this.fullWidthGui ? this.fullWidthGui.element : (_a = this.centerGui) === null || _a === void 0 ? void 0 : _a.element;\n if (!element) {\n return;\n } // can happen with react ui, comp not yet ready\n element.classList.toggle('ag-full-width-focus', isFocused);\n if (isFocused) {\n // we don't scroll normal rows into view when we focus them, so we don't want\n // to scroll Full Width rows either.\n element.focus({ preventScroll: true });\n }\n };\n RowCtrl.prototype.refreshCell = function (cellCtrl) {\n this.centerCellCtrls = this.removeCellCtrl(this.centerCellCtrls, cellCtrl);\n this.leftCellCtrls = this.removeCellCtrl(this.leftCellCtrls, cellCtrl);\n this.rightCellCtrls = this.removeCellCtrl(this.rightCellCtrls, cellCtrl);\n this.updateColumnLists();\n };\n RowCtrl.prototype.removeCellCtrl = function (prev, cellCtrlToRemove) {\n var res = {\n list: [],\n map: {}\n };\n prev.list.forEach(function (cellCtrl) {\n if (cellCtrl === cellCtrlToRemove) {\n return;\n }\n res.list.push(cellCtrl);\n res.map[cellCtrl.getInstanceId()] = cellCtrl;\n });\n return res;\n };\n RowCtrl.prototype.onMouseEvent = function (eventName, mouseEvent) {\n switch (eventName) {\n case 'dblclick':\n this.onRowDblClick(mouseEvent);\n break;\n case 'click':\n this.onRowClick(mouseEvent);\n break;\n case 'touchstart':\n case 'mousedown':\n this.onRowMouseDown(mouseEvent);\n break;\n }\n };\n RowCtrl.prototype.createRowEvent = function (type, domEvent) {\n return {\n type: type,\n node: this.rowNode,\n data: this.rowNode.data,\n rowIndex: this.rowNode.rowIndex,\n rowPinned: this.rowNode.rowPinned,\n context: this.beans.gridOptionsWrapper.getContext(),\n api: this.beans.gridOptionsWrapper.getApi(),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n event: domEvent\n };\n };\n RowCtrl.prototype.createRowEventWithSource = function (type, domEvent) {\n var event = this.createRowEvent(type, domEvent);\n // when first developing this, we included the rowComp in the event.\n // this seems very weird. so when introducing the event types, i left the 'source'\n // out of the type, and just include the source in the two places where this event\n // was fired (rowClicked and rowDoubleClicked). it doesn't make sense for any\n // users to be using this, as the rowComp isn't an object we expose, so would be\n // very surprising if a user was using it.\n event.source = this;\n return event;\n };\n RowCtrl.prototype.onRowDblClick = function (mouseEvent) {\n if (isStopPropagationForAgGrid(mouseEvent)) {\n return;\n }\n var agEvent = this.createRowEventWithSource(Events.EVENT_ROW_DOUBLE_CLICKED, mouseEvent);\n this.beans.eventService.dispatchEvent(agEvent);\n };\n RowCtrl.prototype.onRowMouseDown = function (mouseEvent) {\n this.lastMouseDownOnDragger = isElementChildOfClass(mouseEvent.target, 'ag-row-drag', 3);\n if (!this.isFullWidth()) {\n return;\n }\n var node = this.rowNode;\n var columnModel = this.beans.columnModel;\n this.beans.focusService.setFocusedCell(node.rowIndex, columnModel.getAllDisplayedColumns()[0], node.rowPinned, true);\n };\n RowCtrl.prototype.onRowClick = function (mouseEvent) {\n var stop = isStopPropagationForAgGrid(mouseEvent) || this.lastMouseDownOnDragger;\n if (stop) {\n return;\n }\n var agEvent = this.createRowEventWithSource(Events.EVENT_ROW_CLICKED, mouseEvent);\n this.beans.eventService.dispatchEvent(agEvent);\n // ctrlKey for windows, metaKey for Apple\n var multiSelectKeyPressed = mouseEvent.ctrlKey || mouseEvent.metaKey;\n var shiftKeyPressed = mouseEvent.shiftKey;\n // we do not allow selecting the group by clicking, when groupSelectChildren, as the logic to\n // handle this is broken. to observe, change the logic below and allow groups to be selected.\n // you will see the group gets selected, then all children get selected, then the grid unselects\n // the children (as the default behaviour when clicking is to unselect other rows) which results\n // in the group getting unselected (as all children are unselected). the correct thing would be\n // to change this, so that children of the selected group are not then subsequenly un-selected.\n var groupSelectsChildren = this.beans.gridOptionsWrapper.isGroupSelectsChildren();\n if (\n // we do not allow selecting groups by clicking (as the click here expands the group), or if it's a detail row,\n // so return if it's a group row\n (groupSelectsChildren && this.rowNode.group) ||\n // this is needed so we don't unselect other rows when we click this row, eg if this row is not selectable,\n // and we click it, the selection should not change (ie any currently selected row should stay selected)\n !this.rowNode.selectable ||\n // we also don't allow selection of pinned rows\n this.rowNode.rowPinned ||\n // if no selection method enabled, do nothing\n !this.beans.gridOptionsWrapper.isRowSelection() ||\n // if click selection suppressed, do nothing\n this.beans.gridOptionsWrapper.isSuppressRowClickSelection()) {\n return;\n }\n var multiSelectOnClick = this.beans.gridOptionsWrapper.isRowMultiSelectWithClick();\n var rowDeselectionWithCtrl = !this.beans.gridOptionsWrapper.isSuppressRowDeselection();\n if (this.rowNode.isSelected()) {\n if (multiSelectOnClick) {\n this.rowNode.setSelectedParams({ newValue: false });\n }\n else if (multiSelectKeyPressed) {\n if (rowDeselectionWithCtrl) {\n this.rowNode.setSelectedParams({ newValue: false });\n }\n }\n else {\n // selected with no multi key, must make sure anything else is unselected\n this.rowNode.setSelectedParams({ newValue: !shiftKeyPressed, clearSelection: !shiftKeyPressed, rangeSelect: shiftKeyPressed });\n }\n }\n else {\n var clearSelection = multiSelectOnClick ? false : !multiSelectKeyPressed;\n this.rowNode.setSelectedParams({ newValue: true, clearSelection: clearSelection, rangeSelect: shiftKeyPressed });\n }\n };\n RowCtrl.prototype.setupDetailRowAutoHeight = function (eDetailGui) {\n var _this = this;\n if (this.rowType !== RowType.FullWidthDetail) {\n return;\n }\n if (!this.beans.gridOptionsWrapper.isDetailRowAutoHeight()) {\n return;\n }\n var checkRowSizeFunc = function () {\n var clientHeight = eDetailGui.clientHeight;\n // if the UI is not ready, the height can be 0, which we ignore, as otherwise a flicker will occur\n // as UI goes from the default height, to 0, then to the real height as UI becomes ready. this means\n // it's not possible for have 0 as auto-height, however this is an improbable use case, as even an\n // empty detail grid would still have some styling around it giving at least a few pixels.\n if (clientHeight != null && clientHeight > 0) {\n // we do the update in a timeout, to make sure we are not calling from inside the grid\n // doing another update\n var updateRowHeightFunc = function () {\n _this.rowNode.setRowHeight(clientHeight);\n if (_this.beans.clientSideRowModel) {\n _this.beans.clientSideRowModel.onRowHeightChanged();\n }\n else if (_this.beans.serverSideRowModel) {\n _this.beans.serverSideRowModel.onRowHeightChanged();\n }\n };\n _this.beans.frameworkOverrides.setTimeout(updateRowHeightFunc, 0);\n }\n };\n var resizeObserverDestroyFunc = this.beans.resizeObserverService.observeResize(eDetailGui, checkRowSizeFunc);\n this.addDestroyFunc(resizeObserverDestroyFunc);\n checkRowSizeFunc();\n };\n RowCtrl.prototype.createFullWidthParams = function (eRow, pinned) {\n var _this = this;\n var params = {\n fullWidth: true,\n data: this.rowNode.data,\n node: this.rowNode,\n value: this.rowNode.key,\n valueFormatted: this.rowNode.key,\n $scope: this.scope ? this.scope : this.parentScope,\n $compile: this.beans.$compile,\n rowIndex: this.rowNode.rowIndex,\n api: this.beans.gridOptionsWrapper.getApi(),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n context: this.beans.gridOptionsWrapper.getContext(),\n // these need to be taken out, as part of 'afterAttached' now\n eGridCell: eRow,\n eParentOfValue: eRow,\n pinned: pinned,\n addRenderedRowListener: this.addEventListener.bind(this),\n registerRowDragger: function (rowDraggerElement, dragStartPixels, value, suppressVisibilityChange) { return _this.addFullWidthRowDragging(rowDraggerElement, dragStartPixels, value, suppressVisibilityChange); }\n };\n return params;\n };\n RowCtrl.prototype.addFullWidthRowDragging = function (rowDraggerElement, dragStartPixels, value, suppressVisibilityChange) {\n if (value === void 0) { value = ''; }\n if (!this.isFullWidth()) {\n return;\n }\n var rowDragComp = new RowDragComp(function () { return value; }, this.rowNode, undefined, rowDraggerElement, dragStartPixels, suppressVisibilityChange);\n this.createManagedBean(rowDragComp, this.beans.context);\n };\n RowCtrl.prototype.onUiLevelChanged = function () {\n var newLevel = this.beans.rowCssClassCalculator.calculateRowLevel(this.rowNode);\n if (this.rowLevel != newLevel) {\n var classToAdd_1 = 'ag-row-level-' + newLevel;\n var classToRemove_1 = 'ag-row-level-' + this.rowLevel;\n this.allRowGuis.forEach(function (gui) {\n gui.rowComp.addOrRemoveCssClass(classToAdd_1, true);\n gui.rowComp.addOrRemoveCssClass(classToRemove_1, false);\n });\n }\n this.rowLevel = newLevel;\n };\n RowCtrl.prototype.isFirstRowOnPage = function () {\n return this.rowNode.rowIndex === this.beans.paginationProxy.getPageFirstRow();\n };\n RowCtrl.prototype.isLastRowOnPage = function () {\n return this.rowNode.rowIndex === this.beans.paginationProxy.getPageLastRow();\n };\n RowCtrl.prototype.onModelUpdated = function () {\n this.refreshFirstAndLastRowStyles();\n };\n RowCtrl.prototype.refreshFirstAndLastRowStyles = function () {\n var newFirst = this.isFirstRowOnPage();\n var newLast = this.isLastRowOnPage();\n if (this.firstRowOnPage !== newFirst) {\n this.firstRowOnPage = newFirst;\n this.allRowGuis.forEach(function (gui) { return gui.rowComp.addOrRemoveCssClass('ag-row-first', newFirst); });\n }\n if (this.lastRowOnPage !== newLast) {\n this.lastRowOnPage = newLast;\n this.allRowGuis.forEach(function (gui) { return gui.rowComp.addOrRemoveCssClass('ag-row-last', newLast); });\n }\n };\n RowCtrl.prototype.stopEditing = function (cancel) {\n if (cancel === void 0) { cancel = false; }\n this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.stopEditing(cancel); });\n if (!this.editingRow) {\n return;\n }\n if (!cancel) {\n var event_1 = this.createRowEvent(Events.EVENT_ROW_VALUE_CHANGED);\n this.beans.eventService.dispatchEvent(event_1);\n }\n this.setEditingRow(false);\n };\n RowCtrl.prototype.setInlineEditingCss = function (editing) {\n this.allRowGuis.forEach(function (gui) {\n gui.rowComp.addOrRemoveCssClass(\"ag-row-inline-editing\", editing);\n gui.rowComp.addOrRemoveCssClass(\"ag-row-not-inline-editing\", !editing);\n });\n };\n RowCtrl.prototype.setEditingRow = function (value) {\n this.editingRow = value;\n this.allRowGuis.forEach(function (gui) { return gui.rowComp.addOrRemoveCssClass('ag-row-editing', value); });\n var event = value ?\n this.createRowEvent(Events.EVENT_ROW_EDITING_STARTED)\n : this.createRowEvent(Events.EVENT_ROW_EDITING_STOPPED);\n this.beans.eventService.dispatchEvent(event);\n };\n RowCtrl.prototype.startRowEditing = function (key, charPress, sourceRenderedCell, event) {\n if (key === void 0) { key = null; }\n if (charPress === void 0) { charPress = null; }\n if (sourceRenderedCell === void 0) { sourceRenderedCell = null; }\n if (event === void 0) { event = null; }\n // don't do it if already editing\n if (this.editingRow) {\n return;\n }\n this.getAllCellCtrls().forEach(function (cellCtrl) {\n var cellStartedEdit = cellCtrl === sourceRenderedCell;\n if (cellStartedEdit) {\n cellCtrl.startEditing(key, charPress, cellStartedEdit, event);\n }\n else {\n cellCtrl.startEditing(null, null, cellStartedEdit, event);\n }\n });\n this.setEditingRow(true);\n };\n RowCtrl.prototype.getAllCellCtrls = function () {\n var res = __spread(this.centerCellCtrls.list, this.leftCellCtrls.list, this.rightCellCtrls.list);\n return res;\n };\n RowCtrl.prototype.postProcessClassesFromGridOptions = function () {\n var _this = this;\n var cssClasses = this.beans.rowCssClassCalculator.processClassesFromGridOptions(this.rowNode, this.scope);\n if (!cssClasses || !cssClasses.length) {\n return;\n }\n cssClasses.forEach(function (classStr) {\n _this.allRowGuis.forEach(function (c) { return c.rowComp.addOrRemoveCssClass(classStr, true); });\n });\n };\n RowCtrl.prototype.postProcessRowClassRules = function () {\n var _this = this;\n this.beans.rowCssClassCalculator.processRowClassRules(this.rowNode, this.scope, function (className) {\n _this.allRowGuis.forEach(function (gui) { return gui.rowComp.addOrRemoveCssClass(className, true); });\n }, function (className) {\n _this.allRowGuis.forEach(function (gui) { return gui.rowComp.addOrRemoveCssClass(className, false); });\n });\n };\n RowCtrl.prototype.setStylesFromGridOptions = function () {\n var rowStyles = this.processStylesFromGridOptions();\n this.allRowGuis.forEach(function (gui) { return gui.rowComp.setUserStyles(rowStyles); });\n };\n RowCtrl.prototype.getRowBusinessKey = function () {\n var businessKeyForNodeFunc = this.beans.gridOptionsWrapper.getBusinessKeyForNodeFunc();\n if (typeof businessKeyForNodeFunc !== 'function') {\n return;\n }\n return businessKeyForNodeFunc(this.rowNode);\n };\n RowCtrl.prototype.getPinnedForContainer = function (rowContainerType) {\n var pinned = rowContainerType === RowContainerType.LEFT ? Constants.PINNED_LEFT :\n rowContainerType === RowContainerType.RIGHT ? Constants.PINNED_RIGHT : null;\n return pinned;\n };\n RowCtrl.prototype.getInitialRowClasses = function (rowContainerType) {\n var pinned = this.getPinnedForContainer(rowContainerType);\n var params = {\n rowNode: this.rowNode,\n rowFocused: this.rowFocused,\n fadeRowIn: this.fadeRowIn,\n rowIsEven: this.rowNode.rowIndex % 2 === 0,\n rowLevel: this.rowLevel,\n fullWidthRow: this.isFullWidth(),\n firstRowOnPage: this.isFirstRowOnPage(),\n lastRowOnPage: this.isLastRowOnPage(),\n printLayout: this.printLayout,\n expandable: this.rowNode.isExpandable(),\n scope: this.scope,\n pinned: pinned\n };\n return this.beans.rowCssClassCalculator.getInitialRowClasses(params);\n };\n RowCtrl.prototype.processStylesFromGridOptions = function () {\n // part 1 - rowStyle\n var rowStyle = this.beans.gridOptionsWrapper.getRowStyle();\n if (rowStyle && typeof rowStyle === 'function') {\n console.warn('AG Grid: rowStyle should be an object of key/value styles, not be a function, use getRowStyle() instead');\n return;\n }\n // part 1 - rowStyleFunc\n var rowStyleFunc = this.beans.gridOptionsWrapper.getRowStyleFunc();\n var rowStyleFuncResult;\n if (rowStyleFunc) {\n var params = {\n data: this.rowNode.data,\n node: this.rowNode,\n rowIndex: this.rowNode.rowIndex,\n $scope: this.scope,\n api: this.beans.gridOptionsWrapper.getApi(),\n columnApi: this.beans.gridOptionsWrapper.getColumnApi(),\n context: this.beans.gridOptionsWrapper.getContext()\n };\n rowStyleFuncResult = rowStyleFunc(params);\n }\n return Object.assign({}, rowStyle, rowStyleFuncResult);\n };\n RowCtrl.prototype.onRowSelected = function () {\n var _this = this;\n var selected = this.rowNode.isSelected();\n this.allRowGuis.forEach(function (gui) {\n gui.rowComp.addOrRemoveCssClass('ag-row-selected', selected);\n setAriaSelected(gui.element, selected ? true : undefined);\n var ariaLabel = _this.createAriaLabel();\n setAriaLabel(gui.element, ariaLabel == null ? '' : ariaLabel);\n });\n };\n RowCtrl.prototype.createAriaLabel = function () {\n var selected = this.rowNode.isSelected();\n if (selected && this.beans.gridOptionsWrapper.isSuppressRowDeselection()) {\n return undefined;\n }\n var translate = this.beans.gridOptionsWrapper.getLocaleTextFunc();\n var label = translate(selected ? 'ariaRowDeselect' : 'ariaRowSelect', \"Press SPACE to \" + (selected ? 'deselect' : 'select') + \" this row.\");\n return label;\n };\n RowCtrl.prototype.isUseAnimationFrameForCreate = function () {\n return this.useAnimationFrameForCreate;\n };\n RowCtrl.prototype.addHoverFunctionality = function (eRow) {\n var _this = this;\n // because we use animation frames to do this, it's possible the row no longer exists\n // by the time we get to add it\n if (!this.active) {\n return;\n }\n // because mouseenter and mouseleave do not propagate, we cannot listen on the gridPanel\n // like we do for all the other mouse events.\n // because of the pinning, we cannot simply add / remove the class based on the eRow. we\n // have to check all eRow's (body & pinned). so the trick is if any of the rows gets a\n // mouse hover, it sets such in the rowNode, and then all three reflect the change as\n // all are listening for event on the row node.\n // step 1 - add listener, to set flag on row node\n this.addManagedListener(eRow, 'mouseenter', function () { return _this.rowNode.onMouseEnter(); });\n this.addManagedListener(eRow, 'mouseleave', function () { return _this.rowNode.onMouseLeave(); });\n // step 2 - listen for changes on row node (which any eRow can trigger)\n this.addManagedListener(this.rowNode, RowNode.EVENT_MOUSE_ENTER, function () {\n // if hover turned off, we don't add the class. we do this here so that if the application\n // toggles this property mid way, we remove the hover form the last row, but we stop\n // adding hovers from that point onwards.\n if (!_this.beans.gridOptionsWrapper.isSuppressRowHoverHighlight()) {\n eRow.classList.add('ag-row-hover');\n }\n });\n this.addManagedListener(this.rowNode, RowNode.EVENT_MOUSE_LEAVE, function () {\n eRow.classList.remove('ag-row-hover');\n });\n };\n // for animation, we don't want to animate entry or exit to a very far away pixel,\n // otherwise the row would move so fast, it would appear to disappear. so this method\n // moves the row closer to the viewport if it is far away, so the row slide in / out\n // at a speed the user can see.\n RowCtrl.prototype.roundRowTopToBounds = function (rowTop) {\n var gridBodyCon = this.beans.ctrlsService.getGridBodyCtrl();\n var range = gridBodyCon.getScrollFeature().getVScrollPosition();\n var minPixel = this.applyPaginationOffset(range.top, true) - 100;\n var maxPixel = this.applyPaginationOffset(range.bottom, true) + 100;\n return Math.min(Math.max(minPixel, rowTop), maxPixel);\n };\n RowCtrl.prototype.getFrameworkOverrides = function () {\n return this.beans.frameworkOverrides;\n };\n RowCtrl.prototype.onRowHeightChanged = function () {\n // check for exists first - if the user is resetting the row height, then\n // it will be null (or undefined) momentarily until the next time the flatten\n // stage is called where the row will then update again with a new height\n if (this.rowNode.rowHeight == null) {\n return;\n }\n var fromFunction = this.beans.gridOptionsWrapper.isGetRowHeightFunction();\n var rowHeight = this.rowNode.rowHeight;\n var defaultRowHeight = this.beans.gridOptionsWrapper.getDefaultRowHeight();\n this.allRowGuis.forEach(function (gui) {\n gui.element.style.height = rowHeight + \"px\";\n if (fromFunction) {\n gui.element.style.setProperty('--ag-row-height', Math.min(defaultRowHeight, rowHeight) - 2 + \"px\");\n }\n });\n };\n RowCtrl.prototype.addEventListener = function (eventType, listener) {\n if (eventType === 'renderedRowRemoved' || eventType === 'rowRemoved') {\n eventType = Events.EVENT_VIRTUAL_ROW_REMOVED;\n console.warn('AG Grid: Since version 11, event renderedRowRemoved is now called ' + Events.EVENT_VIRTUAL_ROW_REMOVED);\n }\n _super.prototype.addEventListener.call(this, eventType, listener);\n };\n RowCtrl.prototype.removeEventListener = function (eventType, listener) {\n if (eventType === 'renderedRowRemoved' || eventType === 'rowRemoved') {\n eventType = Events.EVENT_VIRTUAL_ROW_REMOVED;\n console.warn('AG Grid: Since version 11, event renderedRowRemoved and rowRemoved is now called ' + Events.EVENT_VIRTUAL_ROW_REMOVED);\n }\n _super.prototype.removeEventListener.call(this, eventType, listener);\n };\n // note - this is NOT called by context, as we don't wire / unwire the CellComp for performance reasons.\n RowCtrl.prototype.destroyFirstPass = function () {\n this.active = false;\n // why do we have this method? shouldn't everything below be added as a destroy func beside\n // the corresponding create logic?\n this.setupRemoveAnimation();\n var event = this.createRowEvent(Events.EVENT_VIRTUAL_ROW_REMOVED);\n this.dispatchEvent(event);\n this.beans.eventService.dispatchEvent(event);\n _super.prototype.destroy.call(this);\n };\n RowCtrl.prototype.setupRemoveAnimation = function () {\n var rowStillVisibleJustNotInViewport = this.rowNode.rowTop != null;\n if (rowStillVisibleJustNotInViewport) {\n // if the row is not rendered, but in viewport, it means it has moved,\n // so we animate the row out. if the new location is very far away,\n // the animation will be so fast the row will look like it's just disappeared,\n // so instead we animate to a position just outside the viewport.\n var rowTop = this.roundRowTopToBounds(this.rowNode.rowTop);\n this.setRowTop(rowTop);\n }\n else {\n this.allRowGuis.forEach(function (gui) { return gui.rowComp.addOrRemoveCssClass('ag-opacity-zero', true); });\n }\n };\n RowCtrl.prototype.destroySecondPass = function () {\n this.allRowGuis.length = 0;\n var destroyCellCtrls = function (ctrls) {\n ctrls.list.forEach(function (c) { return c.destroy(); });\n return { list: [], map: {} };\n };\n this.centerCellCtrls = destroyCellCtrls(this.centerCellCtrls);\n this.leftCellCtrls = destroyCellCtrls(this.leftCellCtrls);\n this.rightCellCtrls = destroyCellCtrls(this.rightCellCtrls);\n };\n RowCtrl.prototype.setFocusedClasses = function () {\n var _this = this;\n this.allRowGuis.forEach(function (gui) {\n gui.rowComp.addOrRemoveCssClass('ag-row-focus', _this.rowFocused);\n gui.rowComp.addOrRemoveCssClass('ag-row-no-focus', !_this.rowFocused);\n });\n };\n RowCtrl.prototype.onCellFocusChanged = function () {\n var rowFocused = this.beans.focusService.isRowFocused(this.rowNode.rowIndex, this.rowNode.rowPinned);\n if (rowFocused !== this.rowFocused) {\n this.rowFocused = rowFocused;\n this.setFocusedClasses();\n }\n // if we are editing, then moving the focus out of a row will stop editing\n if (!rowFocused && this.editingRow) {\n this.stopEditing(false);\n }\n };\n RowCtrl.prototype.onPaginationChanged = function () {\n var currentPage = this.beans.paginationProxy.getCurrentPage();\n // it is possible this row is in the new page, but the page number has changed, which means\n // it needs to reposition itself relative to the new page\n if (this.paginationPage !== currentPage) {\n this.paginationPage = currentPage;\n this.onTopChanged();\n }\n this.refreshFirstAndLastRowStyles();\n };\n RowCtrl.prototype.onTopChanged = function () {\n this.setRowTop(this.rowNode.rowTop);\n };\n RowCtrl.prototype.onPaginationPixelOffsetChanged = function () {\n // the pixel offset is used when calculating rowTop to set on the row DIV\n this.onTopChanged();\n };\n // applies pagination offset, eg if on second page, and page height is 500px, then removes\n // 500px from the top position, so a row with rowTop 600px is displayed at location 100px.\n // reverse will take the offset away rather than add.\n RowCtrl.prototype.applyPaginationOffset = function (topPx, reverse) {\n if (reverse === void 0) { reverse = false; }\n if (this.rowNode.isRowPinned()) {\n return topPx;\n }\n var pixelOffset = this.beans.paginationProxy.getPixelOffset();\n var multiplier = reverse ? 1 : -1;\n return topPx + (pixelOffset * multiplier);\n };\n RowCtrl.prototype.setRowTop = function (pixels) {\n // print layout uses normal flow layout for row positioning\n if (this.printLayout) {\n return;\n }\n // need to make sure rowTop is not null, as this can happen if the node was once\n // visible (ie parent group was expanded) but is now not visible\n if (exists(pixels)) {\n var afterPaginationPixels = this.applyPaginationOffset(pixels);\n var afterScalingPixels = this.rowNode.isRowPinned() ? afterPaginationPixels : this.beans.rowContainerHeightService.getRealPixelPosition(afterPaginationPixels);\n var topPx = afterScalingPixels + \"px\";\n this.setRowTopStyle(topPx);\n }\n };\n RowCtrl.prototype.getInitialRowTop = function () {\n return this.initialTop;\n };\n RowCtrl.prototype.getInitialTransform = function () {\n return this.initialTransform;\n };\n RowCtrl.prototype.setInitialRowTop = function () {\n // print layout uses normal flow layout for row positioning\n if (this.printLayout) {\n return '';\n }\n // if sliding in, we take the old row top. otherwise we just set the current row top.\n var pixels = this.slideRowIn ? this.roundRowTopToBounds(this.rowNode.oldRowTop) : this.rowNode.rowTop;\n var afterPaginationPixels = this.applyPaginationOffset(pixels);\n // we don't apply scaling if row is pinned\n var afterScalingPixels = this.rowNode.isRowPinned() ? afterPaginationPixels : this.beans.rowContainerHeightService.getRealPixelPosition(afterPaginationPixels);\n var res = afterScalingPixels + 'px';\n var suppressRowTransform = this.beans.gridOptionsWrapper.isSuppressRowTransform();\n if (suppressRowTransform) {\n this.initialTop = res;\n }\n else {\n this.initialTransform = \"translateY(\" + res + \")\";\n }\n };\n RowCtrl.prototype.setRowTopStyle = function (topPx) {\n var suppressRowTransform = this.beans.gridOptionsWrapper.isSuppressRowTransform();\n this.allRowGuis.forEach(function (gui) { return suppressRowTransform ?\n gui.rowComp.setTop(topPx) :\n gui.rowComp.setTransform(\"translateY(\" + topPx + \")\"); });\n };\n RowCtrl.prototype.getRowNode = function () {\n return this.rowNode;\n };\n RowCtrl.prototype.getCellCtrl = function (column) {\n // first up, check for cell directly linked to this column\n var res = null;\n this.getAllCellCtrls().forEach(function (cellCtrl) {\n if (cellCtrl.getColumn() == column) {\n res = cellCtrl;\n }\n });\n if (res != null) {\n return res;\n }\n // second up, if not found, then check for spanned cols.\n // we do this second (and not at the same time) as this is\n // more expensive, as spanning cols is a\n // infrequently used feature so we don't need to do this most\n // of the time\n this.getAllCellCtrls().forEach(function (cellCtrl) {\n if (cellCtrl.getColSpanningList().indexOf(column) >= 0) {\n res = cellCtrl;\n }\n });\n return res;\n };\n RowCtrl.prototype.onRowIndexChanged = function () {\n // we only bother updating if the rowIndex is present. if it is not present, it means this row\n // is child of a group node, and the group node was closed, it's the only way to have no row index.\n // when this happens, row is about to be de-rendered, so we don't care, rowComp is about to die!\n if (this.rowNode.rowIndex != null) {\n this.onCellFocusChanged();\n this.updateRowIndexes();\n this.postProcessCss();\n }\n };\n RowCtrl.prototype.updateRowIndexes = function () {\n var rowIndexStr = this.rowNode.getRowIndexString();\n var headerRowCount = this.beans.headerNavigationService.getHeaderRowCount();\n var rowIsEven = this.rowNode.rowIndex % 2 === 0;\n var ariaRowIndex = headerRowCount + this.rowNode.rowIndex + 1;\n this.allRowGuis.forEach(function (c) {\n c.rowComp.setRowIndex(rowIndexStr);\n c.rowComp.addOrRemoveCssClass('ag-row-even', rowIsEven);\n c.rowComp.addOrRemoveCssClass('ag-row-odd', !rowIsEven);\n setAriaRowIndex(c.element, ariaRowIndex);\n });\n };\n // returns the pinned left container, either the normal one, or the embedded full with one if exists\n RowCtrl.prototype.getPinnedLeftRowElement = function () {\n return this.leftGui ? this.leftGui.element : undefined;\n };\n // returns the pinned right container, either the normal one, or the embedded full with one if exists\n RowCtrl.prototype.getPinnedRightRowElement = function () {\n return this.rightGui ? this.rightGui.element : undefined;\n };\n // returns the body container, either the normal one, or the embedded full with one if exists\n RowCtrl.prototype.getBodyRowElement = function () {\n return this.centerGui ? this.centerGui.element : undefined;\n };\n // returns the full width container\n RowCtrl.prototype.getFullWidthRowElement = function () {\n return this.fullWidthGui ? this.fullWidthGui.element : undefined;\n };\n RowCtrl.DOM_DATA_KEY_ROW_CTRL = 'renderedRow';\n return RowCtrl;\n}(BeanStub));\nexport { RowCtrl };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nimport { GridOptionsWrapper } from \"../gridOptionsWrapper\";\nimport { RowCtrl } from \"./row/rowCtrl\";\nimport { Column } from \"../entities/column\";\nimport { Events } from \"../events\";\nimport { Constants } from \"../constants/constants\";\nimport { Autowired, Bean, Optional, PostConstruct } from \"../context/context\";\nimport { BeanStub } from \"../context/beanStub\";\nimport { exists, missing } from \"../utils/generic\";\nimport { getAllValuesInObject, iterateObject } from \"../utils/object\";\nimport { createArrayOfNumbers } from \"../utils/number\";\nimport { executeInAWhile } from \"../utils/function\";\nimport { CellCtrl } from \"./cell/cellCtrl\";\nimport { removeFromArray } from \"../utils/array\";\nvar RowRenderer = /** @class */ (function (_super) {\n __extends(RowRenderer, _super);\n function RowRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.destroyFuncsForColumnListeners = [];\n // map of row ids to row objects. keeps track of which elements\n // are rendered for which rows in the dom.\n _this.rowCtrlsByRowIndex = {};\n _this.zombieRowCtrls = {};\n _this.allRowCtrls = [];\n _this.topRowCtrls = [];\n _this.bottomRowCtrls = [];\n // we only allow one refresh at a time, otherwise the internal memory structure here\n // will get messed up. this can happen if the user has a cellRenderer, and inside the\n // renderer they call an API method that results in another pass of the refresh,\n // then it will be trying to draw rows in the middle of a refresh.\n _this.refreshInProgress = false;\n return _this;\n }\n RowRenderer.prototype.postConstruct = function () {\n var _this = this;\n this.ctrlsService.whenReady(function () {\n _this.gridBodyCtrl = _this.ctrlsService.getGridBodyCtrl();\n _this.initialise();\n });\n };\n RowRenderer.prototype.initialise = function () {\n this.addManagedListener(this.eventService, Events.EVENT_PAGINATION_CHANGED, this.onPageLoaded.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_PINNED_ROW_DATA_CHANGED, this.onPinnedRowDataChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_BODY_SCROLL, this.redrawAfterScroll.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_BODY_HEIGHT_CHANGED, this.redrawAfterScroll.bind(this));\n this.addManagedListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_DOM_LAYOUT, this.onDomLayoutChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.onNewColumnsLoaded.bind(this));\n this.registerCellEventListeners();\n this.initialiseCache();\n this.printLayout = this.gridOptionsWrapper.getDomLayout() === Constants.DOM_LAYOUT_PRINT;\n this.embedFullWidthRows = this.printLayout || this.gridOptionsWrapper.isEmbedFullWidthRows();\n this.redrawAfterModelUpdate();\n };\n RowRenderer.prototype.initialiseCache = function () {\n if (this.gridOptionsWrapper.isKeepDetailRows()) {\n var countProp = this.gridOptionsWrapper.getKeepDetailRowsCount();\n var count = countProp != null ? countProp : 3;\n this.cachedRowCtrls = new RowCtrlCache(count);\n }\n };\n RowRenderer.prototype.getRowCtrls = function () {\n return this.allRowCtrls;\n };\n RowRenderer.prototype.updateAllRowCtrls = function () {\n var liveList = getAllValuesInObject(this.rowCtrlsByRowIndex);\n if (this.gridOptionsWrapper.isEnsureDomOrder()) {\n liveList.sort(function (a, b) { return a.getRowNode().rowIndex - b.getRowNode.rowIndex; });\n }\n var zombieList = getAllValuesInObject(this.zombieRowCtrls);\n var cachedList = this.cachedRowCtrls ? this.cachedRowCtrls.getEntries() : [];\n this.allRowCtrls = __spread(liveList, zombieList, cachedList);\n };\n // in a clean design, each cell would register for each of these events. however when scrolling, all the cells\n // registering and de-registering for events is a performance bottleneck. so we register here once and inform\n // all active cells.\n RowRenderer.prototype.registerCellEventListeners = function () {\n var _this = this;\n this.addManagedListener(this.eventService, Events.EVENT_CELL_FOCUSED, function (event) {\n _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.onCellFocused(event); });\n _this.getFullWidthRowCtrls().forEach(function (rowCtrl) {\n rowCtrl.onFullWidthRowFocused(event);\n });\n });\n this.addManagedListener(this.eventService, Events.EVENT_FLASH_CELLS, function (event) {\n _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.onFlashCells(event); });\n });\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_HOVER_CHANGED, function () {\n _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.onColumnHover(); });\n });\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, function () {\n _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.onDisplayedColumnsChanged(); });\n });\n // only for printLayout - because we are rendering all the cells in the same row, regardless of pinned state,\n // then changing the width of the containers will impact left position. eg the center cols all have their\n // left position adjusted by the width of the left pinned column, so if the pinned left column width changes,\n // all the center cols need to be shifted to accommodate this. when in normal layout, the pinned cols are\n // in different containers so doesn't impact.\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, function () {\n if (_this.printLayout) {\n _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.onLeftChanged(); });\n }\n });\n var rangeSelectionEnabled = this.gridOptionsWrapper.isEnableRangeSelection();\n if (rangeSelectionEnabled) {\n this.addManagedListener(this.eventService, Events.EVENT_RANGE_SELECTION_CHANGED, function () {\n _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.onRangeSelectionChanged(); });\n });\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_MOVED, function () {\n _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.updateRangeBordersIfRangeCount(); });\n });\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PINNED, function () {\n _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.updateRangeBordersIfRangeCount(); });\n });\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VISIBLE, function () {\n _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.updateRangeBordersIfRangeCount(); });\n });\n }\n // add listeners to the grid columns\n this.refreshListenersToColumnsForCellComps();\n // if the grid columns change, then refresh the listeners again\n this.addManagedListener(this.eventService, Events.EVENT_GRID_COLUMNS_CHANGED, this.refreshListenersToColumnsForCellComps.bind(this));\n this.addDestroyFunc(this.removeGridColumnListeners.bind(this));\n };\n // executes all functions in destroyFuncsForColumnListeners and then clears the list\n RowRenderer.prototype.removeGridColumnListeners = function () {\n this.destroyFuncsForColumnListeners.forEach(function (func) { return func(); });\n this.destroyFuncsForColumnListeners.length = 0;\n };\n // this function adds listeners onto all the grid columns, which are the column that we could have cellComps for.\n // when the grid columns change, we add listeners again. in an ideal design, each CellComp would just register to\n // the column it belongs to on creation, however this was a bottleneck with the number of cells, so do it here\n // once instead.\n RowRenderer.prototype.refreshListenersToColumnsForCellComps = function () {\n var _this = this;\n this.removeGridColumnListeners();\n var cols = this.columnModel.getAllGridColumns();\n if (!cols) {\n return;\n }\n cols.forEach(function (col) {\n var forEachCellWithThisCol = function (callback) {\n _this.getAllCellCtrls().forEach(function (cellCtrl) {\n if (cellCtrl.getColumn() === col) {\n callback(cellCtrl);\n }\n });\n };\n var leftChangedListener = function () {\n forEachCellWithThisCol(function (cellCtrl) { return cellCtrl.onLeftChanged(); });\n };\n var widthChangedListener = function () {\n forEachCellWithThisCol(function (cellCtrl) { return cellCtrl.onWidthChanged(); });\n };\n var firstRightPinnedChangedListener = function () {\n forEachCellWithThisCol(function (cellCtrl) { return cellCtrl.onFirstRightPinnedChanged(); });\n };\n var lastLeftPinnedChangedListener = function () {\n forEachCellWithThisCol(function (cellCtrl) { return cellCtrl.onLastLeftPinnedChanged(); });\n };\n col.addEventListener(Column.EVENT_LEFT_CHANGED, leftChangedListener);\n col.addEventListener(Column.EVENT_WIDTH_CHANGED, widthChangedListener);\n col.addEventListener(Column.EVENT_FIRST_RIGHT_PINNED_CHANGED, firstRightPinnedChangedListener);\n col.addEventListener(Column.EVENT_LAST_LEFT_PINNED_CHANGED, lastLeftPinnedChangedListener);\n _this.destroyFuncsForColumnListeners.push(function () {\n col.removeEventListener(Column.EVENT_LEFT_CHANGED, leftChangedListener);\n col.removeEventListener(Column.EVENT_WIDTH_CHANGED, widthChangedListener);\n col.removeEventListener(Column.EVENT_FIRST_RIGHT_PINNED_CHANGED, firstRightPinnedChangedListener);\n col.removeEventListener(Column.EVENT_LAST_LEFT_PINNED_CHANGED, lastLeftPinnedChangedListener);\n });\n });\n };\n RowRenderer.prototype.onDomLayoutChanged = function () {\n var printLayout = this.gridOptionsWrapper.getDomLayout() === Constants.DOM_LAYOUT_PRINT;\n var embedFullWidthRows = printLayout || this.gridOptionsWrapper.isEmbedFullWidthRows();\n // if moving towards or away from print layout, means we need to destroy all rows, as rows are not laid\n // out using absolute positioning when doing print layout\n var destroyRows = embedFullWidthRows !== this.embedFullWidthRows || this.printLayout !== printLayout;\n this.printLayout = printLayout;\n this.embedFullWidthRows = embedFullWidthRows;\n if (destroyRows) {\n this.redrawAfterModelUpdate();\n }\n };\n // for row models that have datasources, when we update the datasource, we need to force the rowRenderer\n // to redraw all rows. otherwise the old rows from the old datasource will stay displayed.\n RowRenderer.prototype.datasourceChanged = function () {\n this.firstRenderedRow = 0;\n this.lastRenderedRow = -1;\n var rowIndexesToRemove = Object.keys(this.rowCtrlsByRowIndex);\n this.removeRowCtrls(rowIndexesToRemove);\n };\n RowRenderer.prototype.onPageLoaded = function (event) {\n var params = {\n recycleRows: event.keepRenderedRows,\n animate: event.animate,\n newData: event.newData,\n newPage: event.newPage,\n // because this is a model updated event (not pinned rows), we\n // can skip updating the pinned rows. this is needed so that if user\n // is doing transaction updates, the pinned rows are not getting constantly\n // trashed - or editing cells in pinned rows are not refreshed and put into read mode\n onlyBody: true\n };\n this.redrawAfterModelUpdate(params);\n };\n RowRenderer.prototype.getAllCellsForColumn = function (column) {\n var res = [];\n this.getAllRowCtrls().forEach(function (rowCtrl) {\n var eCell = rowCtrl.getCellElement(column);\n if (eCell) {\n res.push(eCell);\n }\n });\n return res;\n };\n RowRenderer.prototype.refreshFloatingRowComps = function () {\n this.refreshFloatingRows(this.topRowCtrls, this.pinnedRowModel.getPinnedTopRowData());\n this.refreshFloatingRows(this.bottomRowCtrls, this.pinnedRowModel.getPinnedBottomRowData());\n };\n RowRenderer.prototype.getTopRowCtrls = function () {\n return this.topRowCtrls;\n };\n RowRenderer.prototype.getBottomRowCtrls = function () {\n return this.bottomRowCtrls;\n };\n RowRenderer.prototype.refreshFloatingRows = function (rowComps, rowNodes) {\n var _this = this;\n rowComps.forEach(function (row) {\n row.destroyFirstPass();\n row.destroySecondPass();\n });\n rowComps.length = 0;\n if (!rowNodes) {\n return;\n }\n rowNodes.forEach(function (rowNode) {\n var rowCon = new RowCtrl(_this.$scope, rowNode, _this.beans, false, false, _this.printLayout);\n rowComps.push(rowCon);\n });\n };\n RowRenderer.prototype.onPinnedRowDataChanged = function () {\n // recycling rows in order to ensure cell editing is not cancelled\n var params = {\n recycleRows: true\n };\n this.redrawAfterModelUpdate(params);\n };\n // if the row nodes are not rendered, no index is returned\n RowRenderer.prototype.getRenderedIndexesForRowNodes = function (rowNodes) {\n var result = [];\n if (missing(rowNodes)) {\n return result;\n }\n iterateObject(this.rowCtrlsByRowIndex, function (index, renderedRow) {\n var rowNode = renderedRow.getRowNode();\n if (rowNodes.indexOf(rowNode) >= 0) {\n result.push(index);\n }\n });\n return result;\n };\n RowRenderer.prototype.redrawRows = function (rowNodes) {\n // if no row nodes provided, then refresh everything\n var partialRefresh = rowNodes != null && rowNodes.length > 0;\n if (partialRefresh) {\n var indexesToRemove = this.getRenderedIndexesForRowNodes(rowNodes);\n // remove the rows\n this.removeRowCtrls(indexesToRemove);\n }\n // add draw them again\n this.redrawAfterModelUpdate({\n recycleRows: partialRefresh\n });\n };\n RowRenderer.prototype.getCellToRestoreFocusToAfterRefresh = function (params) {\n var focusedCell = params.suppressKeepFocus ? null : this.focusService.getFocusCellToUseAfterRefresh();\n if (focusedCell == null) {\n return null;\n }\n // if the dom is not actually focused on a cell, then we don't try to refocus. the problem this\n // solves is with editing - if the user is editing, eg focus is on a text field, and not on the\n // cell itself, then the cell can be registered as having focus, however it's the text field that\n // has the focus and not the cell div. therefore, when the refresh is finished, the grid will focus\n // the cell, and not the textfield. that means if the user is in a text field, and the grid refreshes,\n // the focus is lost from the text field. we do not want this.\n var eDocument = this.gridOptionsWrapper.getDocument();\n var activeElement = eDocument.activeElement;\n var cellDomData = this.gridOptionsWrapper.getDomData(activeElement, CellCtrl.DOM_DATA_KEY_CELL_CTRL);\n var rowDomData = this.gridOptionsWrapper.getDomData(activeElement, RowCtrl.DOM_DATA_KEY_ROW_CTRL);\n var gridElementFocused = cellDomData || rowDomData;\n return gridElementFocused ? focusedCell : null;\n };\n // gets called from:\n // +) initialisation (in registerGridComp) params = null\n // +) onDomLayoutChanged, params = null\n // +) onPageLoaded, recycleRows, animate, newData, newPage from event, onlyBody=true\n // +) onPinnedRowDataChanged, recycleRows = true\n // +) redrawRows (from Grid API), recycleRows = true/false\n RowRenderer.prototype.redrawAfterModelUpdate = function (params) {\n if (params === void 0) { params = {}; }\n this.getLockOnRefresh();\n var focusedCell = this.getCellToRestoreFocusToAfterRefresh(params);\n this.updateContainerHeights();\n this.scrollToTopIfNewData(params);\n // never recycle rows when print layout, we draw each row again from scratch. this is because print layout\n // uses normal dom layout to put cells into dom - it doesn't allow reordering rows.\n var recycleRows = !this.printLayout && !!params.recycleRows;\n var animate = params.animate && this.gridOptionsWrapper.isAnimateRows();\n // after modelUpdate, row indexes can change, so we clear out the rowsByIndex map,\n // however we can reuse the rows, so we keep them but index by rowNode.id\n var rowsToRecycle = recycleRows ? this.recycleRows() : null;\n if (!recycleRows) {\n this.removeAllRowComps();\n }\n var isFocusedCellGettingRecycled = function () {\n if (focusedCell == null || rowsToRecycle == null) {\n return false;\n }\n var res = false;\n iterateObject(rowsToRecycle, function (key, rowComp) {\n var rowNode = rowComp.getRowNode();\n var rowIndexEqual = rowNode.rowIndex == focusedCell.rowIndex;\n var pinnedEqual = rowNode.rowPinned == focusedCell.rowPinned;\n if (rowIndexEqual && pinnedEqual) {\n res = true;\n }\n });\n return res;\n };\n var focusedCellRecycled = isFocusedCellGettingRecycled();\n this.redraw(rowsToRecycle, animate);\n if (!params.onlyBody) {\n this.refreshFloatingRowComps();\n }\n this.dispatchDisplayedRowsChanged();\n // if we focus a cell that's already focused, then we get an unnecessary 'cellFocused' event fired.\n // this was happening when user clicked 'expand' on a rowGroup, then cellFocused was getting fired twice.\n if (!focusedCellRecycled) {\n this.restoreFocusedCell(focusedCell);\n }\n this.releaseLockOnRefresh();\n };\n RowRenderer.prototype.scrollToTopIfNewData = function (params) {\n var scrollToTop = params.newData || params.newPage;\n var suppressScrollToTop = this.gridOptionsWrapper.isSuppressScrollOnNewData();\n if (scrollToTop && !suppressScrollToTop) {\n this.gridBodyCtrl.getScrollFeature().scrollToTop();\n }\n };\n RowRenderer.prototype.updateContainerHeights = function () {\n // when doing print layout, we don't explicitly set height on the containers\n if (this.printLayout) {\n this.rowContainerHeightService.setModelHeight(null);\n return;\n }\n var containerHeight = this.paginationProxy.getCurrentPageHeight();\n // we need at least 1 pixel for the horizontal scroll to work. so if there are now rows,\n // we still want the scroll to be present, otherwise there would be no way to scroll the header\n // which might be needed us user wants to access columns\n // on the RHS - and if that was where the filter was that cause no rows to be presented, there\n // is no way to remove the filter.\n if (containerHeight === 0) {\n containerHeight = 1;\n }\n this.rowContainerHeightService.setModelHeight(containerHeight);\n };\n RowRenderer.prototype.getLockOnRefresh = function () {\n if (this.refreshInProgress) {\n throw new Error(\"AG Grid: cannot get grid to draw rows when it is in the middle of drawing rows. \" +\n \"Your code probably called a grid API method while the grid was in the render stage. To overcome \" +\n \"this, put the API call into a timeout, e.g. instead of api.redrawRows(), \" +\n \"call setTimeout(function() { api.redrawRows(); }, 0). To see what part of your code \" +\n \"that caused the refresh check this stacktrace.\");\n }\n this.refreshInProgress = true;\n };\n RowRenderer.prototype.releaseLockOnRefresh = function () {\n this.refreshInProgress = false;\n };\n // sets the focus to the provided cell, if the cell is provided. this way, the user can call refresh without\n // worry about the focus been lost. this is important when the user is using keyboard navigation to do edits\n // and the cellEditor is calling 'refresh' to get other cells to update (as other cells might depend on the\n // edited cell).\n RowRenderer.prototype.restoreFocusedCell = function (cellPosition) {\n if (cellPosition) {\n this.focusService.setFocusedCell(cellPosition.rowIndex, cellPosition.column, cellPosition.rowPinned, true);\n }\n };\n RowRenderer.prototype.stopEditing = function (cancel) {\n if (cancel === void 0) { cancel = false; }\n this.getAllRowCtrls().forEach(function (rowCtrl) {\n rowCtrl.stopEditing(cancel);\n });\n };\n RowRenderer.prototype.onNewColumnsLoaded = function () {\n // we don't want each cellComp to register for events, as would increase rendering time.\n // so for newColumnsLoaded, we register once here (in rowRenderer) and then inform\n // each cell if / when event was fired.\n this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.onNewColumnsLoaded(); });\n };\n RowRenderer.prototype.getAllCellCtrls = function () {\n var res = [];\n this.getAllRowCtrls().forEach(function (rowCtrl) { return res = res.concat(rowCtrl.getAllCellCtrls()); });\n return res;\n };\n RowRenderer.prototype.getAllRowCtrls = function () {\n var _this = this;\n var res = __spread(this.topRowCtrls, this.bottomRowCtrls);\n Object.keys(this.rowCtrlsByRowIndex).forEach(function (key) { return res.push(_this.rowCtrlsByRowIndex[key]); });\n return res;\n };\n RowRenderer.prototype.addRenderedRowListener = function (eventName, rowIndex, callback) {\n var rowComp = this.rowCtrlsByRowIndex[rowIndex];\n if (rowComp) {\n rowComp.addEventListener(eventName, callback);\n }\n };\n RowRenderer.prototype.flashCells = function (params) {\n if (params === void 0) { params = {}; }\n var flashDelay = params.flashDelay, fadeDelay = params.fadeDelay;\n this.getCellCtrls(params.rowNodes, params.columns)\n .forEach(function (cellCtrl) { return cellCtrl.flashCell({ flashDelay: flashDelay, fadeDelay: fadeDelay }); });\n };\n RowRenderer.prototype.refreshCells = function (params) {\n if (params === void 0) { params = {}; }\n var refreshCellParams = {\n forceRefresh: params.force,\n newData: false,\n suppressFlash: params.suppressFlash\n };\n this.getCellCtrls(params.rowNodes, params.columns)\n .forEach(function (cellCtrl) {\n if (cellCtrl.refreshShouldDestroy()) {\n var rowCtrl = cellCtrl.getRowCtrl();\n if (rowCtrl) {\n rowCtrl.refreshCell(cellCtrl);\n }\n }\n else {\n cellCtrl.refreshCell(refreshCellParams);\n }\n });\n this.getFullWidthRowCtrls(params.rowNodes).forEach(function (fullWidthRowCtrl) {\n fullWidthRowCtrl.refreshFullWidth();\n });\n };\n RowRenderer.prototype.getCellRendererInstances = function (params) {\n var res = this.getCellCtrls(params.rowNodes, params.columns)\n .map(function (cellCtrl) { return cellCtrl.getCellRenderer(); })\n .filter(function (renderer) { return renderer != null; });\n return res;\n };\n RowRenderer.prototype.getCellEditorInstances = function (params) {\n var res = [];\n this.getCellCtrls(params.rowNodes, params.columns).forEach(function (cellCtrl) {\n var cellEditor = cellCtrl.getCellEditor();\n if (cellEditor) {\n res.push(cellEditor);\n }\n });\n return res;\n };\n RowRenderer.prototype.getEditingCells = function () {\n var res = [];\n this.getAllCellCtrls().forEach(function (cellCtrl) {\n if (cellCtrl.isEditing()) {\n var cellPosition = cellCtrl.getCellPosition();\n res.push(cellPosition);\n }\n });\n return res;\n };\n RowRenderer.prototype.mapRowNodes = function (rowNodes) {\n if (!rowNodes) {\n return;\n }\n var res = {\n top: {},\n bottom: {},\n normal: {}\n };\n rowNodes.forEach(function (rowNode) {\n var id = rowNode.id;\n if (rowNode.rowPinned === Constants.PINNED_TOP) {\n res.top[id] = rowNode;\n }\n else if (rowNode.rowPinned === Constants.PINNED_BOTTOM) {\n res.bottom[id] = rowNode;\n }\n else {\n res.normal[id] = rowNode;\n }\n });\n return res;\n };\n RowRenderer.prototype.isRowInMap = function (rowNode, rowIdsMap) {\n // skip this row if it is missing from the provided list\n var id = rowNode.id;\n var floating = rowNode.rowPinned;\n if (floating === Constants.PINNED_BOTTOM) {\n return rowIdsMap.bottom[id] != null;\n }\n else if (floating === Constants.PINNED_TOP) {\n return rowIdsMap.top[id] != null;\n }\n else {\n return rowIdsMap.normal[id] != null;\n }\n };\n // returns CellCtrl's that match the provided rowNodes and columns. eg if one row node\n // and two columns provided, that identifies 4 cells, so 4 CellCtrl's returned.\n RowRenderer.prototype.getCellCtrls = function (rowNodes, columns) {\n var _this = this;\n var rowIdsMap = this.mapRowNodes(rowNodes);\n var res = [];\n var colIdsMap;\n if (exists(columns)) {\n colIdsMap = {};\n columns.forEach(function (colKey) {\n var column = _this.columnModel.getGridColumn(colKey);\n if (exists(column)) {\n colIdsMap[column.getId()] = true;\n }\n });\n }\n var processRow = function (rowComp) {\n var rowNode = rowComp.getRowNode();\n // skip this row if it is missing from the provided list\n if (rowIdsMap != null && !_this.isRowInMap(rowNode, rowIdsMap)) {\n return;\n }\n rowComp.getAllCellCtrls().forEach(function (cellCtrl) {\n var colId = cellCtrl.getColumn().getId();\n var excludeColFromRefresh = colIdsMap && !colIdsMap[colId];\n if (excludeColFromRefresh) {\n return;\n }\n res.push(cellCtrl);\n });\n };\n iterateObject(this.rowCtrlsByRowIndex, function (index, rowComp) {\n processRow(rowComp);\n });\n if (this.topRowCtrls) {\n this.topRowCtrls.forEach(processRow);\n }\n if (this.bottomRowCtrls) {\n this.bottomRowCtrls.forEach(processRow);\n }\n return res;\n };\n RowRenderer.prototype.destroy = function () {\n this.removeAllRowComps();\n _super.prototype.destroy.call(this);\n };\n RowRenderer.prototype.removeAllRowComps = function () {\n var rowIndexesToRemove = Object.keys(this.rowCtrlsByRowIndex);\n this.removeRowCtrls(rowIndexesToRemove);\n };\n RowRenderer.prototype.recycleRows = function () {\n // remove all stub nodes, they can't be reused, as no rowNode id\n var stubNodeIndexes = [];\n iterateObject(this.rowCtrlsByRowIndex, function (index, rowComp) {\n var stubNode = rowComp.getRowNode().id == null;\n if (stubNode) {\n stubNodeIndexes.push(index);\n }\n });\n this.removeRowCtrls(stubNodeIndexes);\n // then clear out rowCompsByIndex, but before that take a copy, but index by id, not rowIndex\n var nodesByIdMap = {};\n iterateObject(this.rowCtrlsByRowIndex, function (index, rowComp) {\n var rowNode = rowComp.getRowNode();\n nodesByIdMap[rowNode.id] = rowComp;\n });\n this.rowCtrlsByRowIndex = {};\n return nodesByIdMap;\n };\n // takes array of row indexes\n RowRenderer.prototype.removeRowCtrls = function (rowsToRemove) {\n var _this = this;\n // if no fromIndex then set to -1, which will refresh everything\n // let realFromIndex = -1;\n rowsToRemove.forEach(function (indexToRemove) {\n var rowCtrl = _this.rowCtrlsByRowIndex[indexToRemove];\n if (rowCtrl) {\n rowCtrl.destroyFirstPass();\n rowCtrl.destroySecondPass();\n }\n delete _this.rowCtrlsByRowIndex[indexToRemove];\n });\n };\n // gets called when rows don't change, but viewport does, so after:\n // 1) height of grid body changes, ie number of displayed rows has changed\n // 2) grid scrolled to new position\n // 3) ensure index visible (which is a scroll)\n RowRenderer.prototype.redrawAfterScroll = function () {\n this.getLockOnRefresh();\n this.redraw(null, false, true);\n this.releaseLockOnRefresh();\n this.dispatchDisplayedRowsChanged();\n };\n RowRenderer.prototype.removeRowCompsNotToDraw = function (indexesToDraw) {\n // for speedy lookup, dump into map\n var indexesToDrawMap = {};\n indexesToDraw.forEach(function (index) { return (indexesToDrawMap[index] = true); });\n var existingIndexes = Object.keys(this.rowCtrlsByRowIndex);\n var indexesNotToDraw = existingIndexes.filter(function (index) { return !indexesToDrawMap[index]; });\n this.removeRowCtrls(indexesNotToDraw);\n };\n RowRenderer.prototype.calculateIndexesToDraw = function (rowsToRecycle) {\n var _this = this;\n // all in all indexes in the viewport\n var indexesToDraw = createArrayOfNumbers(this.firstRenderedRow, this.lastRenderedRow);\n var checkRowToDraw = function (indexStr, rowComp) {\n var index = rowComp.getRowNode().rowIndex;\n if (index == null) {\n return;\n }\n if (index < _this.firstRenderedRow || index > _this.lastRenderedRow) {\n if (_this.doNotUnVirtualiseRow(rowComp)) {\n indexesToDraw.push(index);\n }\n }\n };\n // if we are redrawing due to scrolling change, then old rows are in this.rowCompsByIndex\n iterateObject(this.rowCtrlsByRowIndex, checkRowToDraw);\n // if we are redrawing due to model update, then old rows are in rowsToRecycle\n iterateObject(rowsToRecycle, checkRowToDraw);\n indexesToDraw.sort(function (a, b) { return a - b; });\n return indexesToDraw;\n };\n RowRenderer.prototype.redraw = function (rowsToRecycle, animate, afterScroll) {\n var _this = this;\n if (animate === void 0) { animate = false; }\n if (afterScroll === void 0) { afterScroll = false; }\n this.rowContainerHeightService.updateOffset();\n this.workOutFirstAndLastRowsToRender();\n // the row can already exist and be in the following:\n // rowsToRecycle -> if model change, then the index may be different, however row may\n // exist here from previous time (mapped by id).\n // this.rowCompsByIndex -> if just a scroll, then this will contain what is currently in the viewport\n // this is all the indexes we want, including those that already exist, so this method\n // will end up going through each index and drawing only if the row doesn't already exist\n var indexesToDraw = this.calculateIndexesToDraw(rowsToRecycle);\n this.removeRowCompsNotToDraw(indexesToDraw);\n // never animate when doing print layout - as we want to get things ready to print as quickly as possible,\n // otherwise we risk the printer printing a row that's half faded (half way through fading in)\n if (this.printLayout) {\n animate = false;\n }\n // add in new rows\n var rowCtrls = [];\n indexesToDraw.forEach(function (rowIndex) {\n var rowCtrl = _this.createOrUpdateRowCtrl(rowIndex, rowsToRecycle, animate, afterScroll);\n if (exists(rowCtrl)) {\n rowCtrls.push(rowCtrl);\n }\n });\n if (rowsToRecycle) {\n var useAnimationFrame = afterScroll && !this.gridOptionsWrapper.isSuppressAnimationFrame() && !this.printLayout;\n if (useAnimationFrame) {\n this.beans.animationFrameService.addDestroyTask(function () {\n _this.destroyRowCtrls(rowsToRecycle, animate);\n _this.updateAllRowCtrls();\n _this.dispatchDisplayedRowsChanged();\n });\n }\n else {\n this.destroyRowCtrls(rowsToRecycle, animate);\n }\n }\n this.updateAllRowCtrls();\n this.checkAngularCompile();\n this.gridBodyCtrl.updateRowCount();\n };\n RowRenderer.prototype.dispatchDisplayedRowsChanged = function () {\n var event = { type: Events.EVENT_DISPLAYED_ROWS_CHANGED };\n this.eventService.dispatchEvent(event);\n };\n RowRenderer.prototype.onDisplayedColumnsChanged = function () {\n var pinningLeft = this.columnModel.isPinningLeft();\n var pinningRight = this.columnModel.isPinningRight();\n var atLeastOneChanged = this.pinningLeft !== pinningLeft || pinningRight !== this.pinningRight;\n if (atLeastOneChanged) {\n this.pinningLeft = pinningLeft;\n this.pinningRight = pinningRight;\n if (this.embedFullWidthRows) {\n this.redrawFullWidthEmbeddedRows();\n }\n }\n };\n // when embedding, what gets showed in each section depends on what is pinned. eg if embedding group expand / collapse,\n // then it should go into the pinned left area if pinning left, or the center area if not pinning.\n RowRenderer.prototype.redrawFullWidthEmbeddedRows = function () {\n // if either of the pinned panels has shown / hidden, then need to redraw the fullWidth bits when\n // embedded, as what appears in each section depends on whether we are pinned or not\n var rowsToRemove = [];\n this.getFullWidthRowCtrls().forEach(function (fullWidthCtrl) {\n var rowIndex = fullWidthCtrl.getRowNode().rowIndex;\n rowsToRemove.push(rowIndex.toString());\n });\n this.refreshFloatingRowComps();\n this.removeRowCtrls(rowsToRemove);\n this.redrawAfterScroll();\n };\n RowRenderer.prototype.getFullWidthRowCtrls = function (rowNodes) {\n var _this = this;\n var rowNodesMap = this.mapRowNodes(rowNodes);\n return getAllValuesInObject(this.rowCtrlsByRowIndex).filter(function (rowCtrl) {\n // include just full width\n if (!rowCtrl.isFullWidth()) {\n return false;\n }\n // if Row Nodes provided, we exclude where Row Node is missing\n var rowNode = rowCtrl.getRowNode();\n if (rowNodesMap != null && !_this.isRowInMap(rowNode, rowNodesMap)) {\n return false;\n }\n return true;\n });\n };\n RowRenderer.prototype.refreshFullWidthRows = function (rowNodesToRefresh) {\n var rowsToRemove = [];\n var selectivelyRefreshing = !!rowNodesToRefresh;\n var idsToRefresh = selectivelyRefreshing ? {} : undefined;\n if (selectivelyRefreshing && idsToRefresh) {\n rowNodesToRefresh.forEach(function (r) { return idsToRefresh[r.id] = true; });\n }\n this.getFullWidthRowCtrls().forEach(function (fullWidthRowCtrl) {\n var rowNode = fullWidthRowCtrl.getRowNode();\n if (selectivelyRefreshing && idsToRefresh) {\n // we refresh if a) this node is present or b) this parents nodes is present. checking parent\n // node is important for master/detail, as we want detail to refresh on changes to parent node.\n // it's also possible, if user is provider their own fullWidth, that details panels contain\n // some info on the parent, eg if in tree data and child row shows some data from parent row also.\n var parentId = (rowNode.level > 0 && rowNode.parent) ? rowNode.parent.id : undefined;\n var skipThisNode = !idsToRefresh[rowNode.id] && !idsToRefresh[parentId];\n if (skipThisNode) {\n return;\n }\n }\n var fullWidthRowsRefreshed = fullWidthRowCtrl.refreshFullWidth();\n if (!fullWidthRowsRefreshed) {\n var rowIndex = fullWidthRowCtrl.getRowNode().rowIndex;\n rowsToRemove.push(rowIndex.toString());\n }\n });\n this.removeRowCtrls(rowsToRemove);\n this.redrawAfterScroll();\n };\n RowRenderer.prototype.createOrUpdateRowCtrl = function (rowIndex, rowsToRecycle, animate, afterScroll) {\n var rowNode;\n var rowCon = this.rowCtrlsByRowIndex[rowIndex];\n // if no row comp, see if we can get it from the previous rowComps\n if (!rowCon) {\n rowNode = this.paginationProxy.getRow(rowIndex);\n if (exists(rowNode) && exists(rowsToRecycle) && rowsToRecycle[rowNode.id] && rowNode.alreadyRendered) {\n rowCon = rowsToRecycle[rowNode.id];\n rowsToRecycle[rowNode.id] = null;\n }\n }\n var creatingNewRowCon = !rowCon;\n if (creatingNewRowCon) {\n // create a new one\n if (!rowNode) {\n rowNode = this.paginationProxy.getRow(rowIndex);\n }\n if (exists(rowNode)) {\n rowCon = this.createRowCon(rowNode, animate, afterScroll);\n }\n else {\n // this should never happen - if somehow we are trying to create\n // a row for a rowNode that does not exist.\n return;\n }\n }\n if (rowNode) {\n // set node as 'alreadyRendered' to ensure we only recycle rowComps that have been rendered, this ensures\n // we don't reuse rowComps that have been removed and then re-added in the same batch transaction.\n rowNode.alreadyRendered = true;\n }\n this.rowCtrlsByRowIndex[rowIndex] = rowCon;\n return rowCon;\n };\n RowRenderer.prototype.destroyRowCtrls = function (rowCtrlsMap, animate) {\n var _this = this;\n var executeInAWhileFuncs = [];\n iterateObject(rowCtrlsMap, function (nodeId, rowCtrl) {\n // if row was used, then it's null\n if (!rowCtrl) {\n return;\n }\n if (_this.cachedRowCtrls && rowCtrl.isCacheable()) {\n _this.cachedRowCtrls.addRow(rowCtrl);\n return;\n }\n rowCtrl.destroyFirstPass();\n if (animate) {\n _this.zombieRowCtrls[rowCtrl.getInstanceId()] = rowCtrl;\n executeInAWhileFuncs.push(function () {\n rowCtrl.destroySecondPass();\n delete _this.zombieRowCtrls[rowCtrl.getInstanceId()];\n });\n }\n else {\n rowCtrl.destroySecondPass();\n }\n });\n if (animate) {\n // this ensures we fire displayedRowsChanged AFTER all the 'executeInAWhileFuncs' get\n // executed, as we added it to the end of the list.\n executeInAWhileFuncs.push(function () {\n _this.updateAllRowCtrls();\n _this.dispatchDisplayedRowsChanged();\n });\n executeInAWhile(executeInAWhileFuncs);\n }\n };\n RowRenderer.prototype.checkAngularCompile = function () {\n var _this = this;\n // if we are doing angular compiling, then do digest the scope here\n if (this.gridOptionsWrapper.isAngularCompileRows()) {\n // we do it in a timeout, in case we are already in an apply\n window.setTimeout(function () {\n _this.$scope.$apply();\n }, 0);\n }\n };\n RowRenderer.prototype.workOutFirstAndLastRowsToRender = function () {\n var _this = this;\n var newFirst;\n var newLast;\n if (!this.paginationProxy.isRowsToRender()) {\n newFirst = 0;\n newLast = -1; // setting to -1 means nothing in range\n }\n else if (this.printLayout) {\n newFirst = this.paginationProxy.getPageFirstRow();\n newLast = this.paginationProxy.getPageLastRow();\n }\n else {\n var bufferPixels = this.gridOptionsWrapper.getRowBufferInPixels();\n var gridBodyCon = this.ctrlsService.getGridBodyCtrl();\n var suppressRowVirtualisation = this.gridOptionsWrapper.isSuppressRowVirtualisation();\n var rowHeightsChanged = false;\n var firstPixel = void 0;\n var lastPixel = void 0;\n do {\n var paginationOffset = this.paginationProxy.getPixelOffset();\n var _a = this.paginationProxy.getCurrentPagePixelRange(), pageFirstPixel = _a.pageFirstPixel, pageLastPixel = _a.pageLastPixel;\n var divStretchOffset = this.rowContainerHeightService.getDivStretchOffset();\n if (suppressRowVirtualisation) {\n firstPixel = pageFirstPixel + divStretchOffset;\n lastPixel = pageLastPixel + divStretchOffset;\n }\n else {\n var bodyVRange = gridBodyCon.getScrollFeature().getVScrollPosition();\n var bodyTopPixel = bodyVRange.top;\n var bodyBottomPixel = bodyVRange.bottom;\n firstPixel = Math.max(bodyTopPixel + paginationOffset - bufferPixels, pageFirstPixel) + divStretchOffset;\n lastPixel = Math.min(bodyBottomPixel + paginationOffset + bufferPixels, pageLastPixel) + divStretchOffset;\n }\n // if the rows we are about to display get their heights changed, then that upsets the calcs from above.\n rowHeightsChanged = this.ensureAllRowsInRangeHaveHeightsCalculated(firstPixel, lastPixel);\n } while (rowHeightsChanged);\n var firstRowIndex = this.paginationProxy.getRowIndexAtPixel(firstPixel);\n var lastRowIndex = this.paginationProxy.getRowIndexAtPixel(lastPixel);\n var pageFirstRow = this.paginationProxy.getPageFirstRow();\n var pageLastRow = this.paginationProxy.getPageLastRow();\n // adjust, in case buffer extended actual size\n if (firstRowIndex < pageFirstRow) {\n firstRowIndex = pageFirstRow;\n }\n if (lastRowIndex > pageLastRow) {\n lastRowIndex = pageLastRow;\n }\n newFirst = firstRowIndex;\n newLast = lastRowIndex;\n }\n // sometimes user doesn't set CSS right and ends up with grid with no height and grid ends up\n // trying to render all the rows, eg 10,000+ rows. this will kill the browser. so instead of\n // killing the browser, we limit the number of rows. just in case some use case we didn't think\n // of, we also have a property to not do this operation.\n var rowLayoutNormal = this.gridOptionsWrapper.getDomLayout() === Constants.DOM_LAYOUT_NORMAL;\n var suppressRowCountRestriction = this.gridOptionsWrapper.isSuppressMaxRenderedRowRestriction();\n var rowBufferMaxSize = Math.max(this.gridOptionsWrapper.getRowBuffer(), 500);\n if (rowLayoutNormal && !suppressRowCountRestriction) {\n if (newLast - newFirst > rowBufferMaxSize) {\n newLast = newFirst + rowBufferMaxSize;\n }\n }\n var firstDiffers = newFirst !== this.firstRenderedRow;\n var lastDiffers = newLast !== this.lastRenderedRow;\n if (firstDiffers || lastDiffers) {\n this.firstRenderedRow = newFirst;\n this.lastRenderedRow = newLast;\n var event_1 = {\n type: Events.EVENT_VIEWPORT_CHANGED,\n firstRow: newFirst,\n lastRow: newLast,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event_1);\n }\n // only dispatch firstDataRendered if we have actually rendered some data\n if (this.paginationProxy.isRowsToRender()) {\n var event_2 = {\n type: Events.EVENT_FIRST_DATA_RENDERED,\n firstRow: newFirst,\n lastRow: newLast,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n // added a small delay here because in some scenarios this can be fired\n // before the grid is actually rendered, causing component creation\n // on EVENT_FIRST_DATA_RENDERED to fail.\n window.setTimeout(function () { return _this.eventService.dispatchEventOnce(event_2); }, 50);\n }\n };\n RowRenderer.prototype.ensureAllRowsInRangeHaveHeightsCalculated = function (topPixel, bottomPixel) {\n // ensureRowHeightsVisible only works with CSRM, as it's the only row model that allows lazy row height calcs.\n // all the other row models just hard code so the method just returns back false\n var res = this.paginationProxy.ensureRowHeightsValid(topPixel, bottomPixel, -1, -1);\n if (res) {\n this.updateContainerHeights();\n }\n return res;\n };\n RowRenderer.prototype.getFirstVirtualRenderedRow = function () {\n return this.firstRenderedRow;\n };\n RowRenderer.prototype.getLastVirtualRenderedRow = function () {\n return this.lastRenderedRow;\n };\n // check that none of the rows to remove are editing or focused as:\n // a) if editing, we want to keep them, otherwise the user will loose the context of the edit,\n // eg user starts editing, enters some text, then scrolls down and then up, next time row rendered\n // the edit is reset - so we want to keep it rendered.\n // b) if focused, we want ot keep keyboard focus, so if user ctrl+c, it goes to clipboard,\n // otherwise the user can range select and drag (with focus cell going out of the viewport)\n // and then ctrl+c, nothing will happen if cell is removed from dom.\n // c) if detail record of master detail, as users complained that the context of detail rows\n // was getting lost when detail row out of view. eg user expands to show detail row,\n // then manipulates the detail panel (eg sorts the detail grid), then context is lost\n // after detail panel is scrolled out of / into view.\n RowRenderer.prototype.doNotUnVirtualiseRow = function (rowComp) {\n var REMOVE_ROW = false;\n var KEEP_ROW = true;\n var rowNode = rowComp.getRowNode();\n var rowHasFocus = this.focusService.isRowNodeFocused(rowNode);\n var rowIsEditing = rowComp.isEditing();\n var rowIsDetail = rowNode.detail;\n var mightWantToKeepRow = rowHasFocus || rowIsEditing || rowIsDetail;\n // if we deffo don't want to keep it,\n if (!mightWantToKeepRow) {\n return REMOVE_ROW;\n }\n // editing row, only remove if it is no longer rendered, eg filtered out or new data set.\n // the reason we want to keep is if user is scrolling up and down, we don't want to loose\n // the context of the editing in process.\n var rowNodePresent = this.paginationProxy.isRowPresent(rowNode);\n return rowNodePresent ? KEEP_ROW : REMOVE_ROW;\n };\n RowRenderer.prototype.createRowCon = function (rowNode, animate, afterScroll) {\n var rowCtrlFromCache = this.cachedRowCtrls ? this.cachedRowCtrls.getRow(rowNode) : null;\n if (rowCtrlFromCache) {\n return rowCtrlFromCache;\n }\n // we don't use animations frames for printing, so the user can put the grid into print mode\n // and immediately print - otherwise the user would have to wait for the rows to draw in the background\n // (via the animation frames) which is awkward to do from code.\n // we only do the animation frames after scrolling, as this is where we want the smooth user experience.\n // having animation frames for other times makes the grid look 'jumpy'.\n var suppressAnimationFrame = this.gridOptionsWrapper.isSuppressAnimationFrame();\n var useAnimationFrameForCreate = afterScroll && !suppressAnimationFrame && !this.printLayout;\n var res = new RowCtrl(this.$scope, rowNode, this.beans, animate, useAnimationFrameForCreate, this.printLayout);\n return res;\n };\n RowRenderer.prototype.getRenderedNodes = function () {\n var renderedRows = this.rowCtrlsByRowIndex;\n return Object.keys(renderedRows).map(function (key) { return renderedRows[key].getRowNode(); });\n };\n RowRenderer.prototype.getRowByPosition = function (rowPosition) {\n var rowComponent;\n switch (rowPosition.rowPinned) {\n case Constants.PINNED_TOP:\n rowComponent = this.topRowCtrls[rowPosition.rowIndex];\n break;\n case Constants.PINNED_BOTTOM:\n rowComponent = this.bottomRowCtrls[rowPosition.rowIndex];\n break;\n default:\n rowComponent = this.rowCtrlsByRowIndex[rowPosition.rowIndex];\n break;\n }\n return rowComponent;\n };\n RowRenderer.prototype.getRowNode = function (gridRow) {\n switch (gridRow.rowPinned) {\n case Constants.PINNED_TOP:\n return this.pinnedRowModel.getPinnedTopRowData()[gridRow.rowIndex];\n case Constants.PINNED_BOTTOM:\n return this.pinnedRowModel.getPinnedBottomRowData()[gridRow.rowIndex];\n default:\n return this.rowModel.getRow(gridRow.rowIndex);\n }\n };\n // returns true if any row between startIndex and endIndex is rendered. used by\n // SSRM or IRM, as they don't want to purge visible blocks from cache.\n RowRenderer.prototype.isRangeInRenderedViewport = function (startIndex, endIndex) {\n // parent closed means the parent node is not expanded, thus these blocks are not visible\n var parentClosed = startIndex == null || endIndex == null;\n if (parentClosed) {\n return false;\n }\n var blockAfterViewport = startIndex > this.lastRenderedRow;\n var blockBeforeViewport = endIndex < this.firstRenderedRow;\n var blockInsideViewport = !blockBeforeViewport && !blockAfterViewport;\n return blockInsideViewport;\n };\n __decorate([\n Autowired(\"paginationProxy\")\n ], RowRenderer.prototype, \"paginationProxy\", void 0);\n __decorate([\n Autowired(\"columnModel\")\n ], RowRenderer.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired(\"$scope\")\n ], RowRenderer.prototype, \"$scope\", void 0);\n __decorate([\n Autowired(\"pinnedRowModel\")\n ], RowRenderer.prototype, \"pinnedRowModel\", void 0);\n __decorate([\n Autowired(\"rowModel\")\n ], RowRenderer.prototype, \"rowModel\", void 0);\n __decorate([\n Autowired(\"focusService\")\n ], RowRenderer.prototype, \"focusService\", void 0);\n __decorate([\n Autowired(\"columnApi\")\n ], RowRenderer.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired(\"gridApi\")\n ], RowRenderer.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired(\"beans\")\n ], RowRenderer.prototype, \"beans\", void 0);\n __decorate([\n Autowired(\"rowContainerHeightService\")\n ], RowRenderer.prototype, \"rowContainerHeightService\", void 0);\n __decorate([\n Optional(\"ctrlsService\")\n ], RowRenderer.prototype, \"ctrlsService\", void 0);\n __decorate([\n PostConstruct\n ], RowRenderer.prototype, \"postConstruct\", null);\n RowRenderer = __decorate([\n Bean(\"rowRenderer\")\n ], RowRenderer);\n return RowRenderer;\n}(BeanStub));\nexport { RowRenderer };\nvar RowCtrlCache = /** @class */ (function () {\n function RowCtrlCache(maxCount) {\n // map for fast access\n this.entriesMap = {};\n // list for keeping order\n this.entriesList = [];\n this.maxCount = maxCount;\n }\n RowCtrlCache.prototype.addRow = function (rowCtrl) {\n this.entriesMap[rowCtrl.getRowNode().id] = rowCtrl;\n this.entriesList.push(rowCtrl);\n rowCtrl.setCached(true);\n if (this.entriesList.length > this.maxCount) {\n var rowCtrlToDestroy = this.entriesList[0];\n rowCtrlToDestroy.destroyFirstPass();\n rowCtrlToDestroy.destroySecondPass();\n this.removeFromCache(rowCtrlToDestroy);\n }\n };\n RowCtrlCache.prototype.getRow = function (rowNode) {\n if (rowNode == null || rowNode.id == null) {\n return null;\n }\n var res = this.entriesMap[rowNode.id];\n if (!res) {\n return null;\n }\n this.removeFromCache(res);\n res.setCached(false);\n // this can happen if user reloads data, and a new RowNode is reusing\n // the same ID as the old one\n var rowNodeMismatch = res.getRowNode() != rowNode;\n return rowNodeMismatch ? null : res;\n };\n RowCtrlCache.prototype.removeFromCache = function (rowCtrl) {\n var rowNodeId = rowCtrl.getRowNode().id;\n delete this.entriesMap[rowNodeId];\n removeFromArray(this.entriesList, rowCtrl);\n };\n RowCtrlCache.prototype.getEntries = function () {\n return this.entriesList;\n };\n return RowCtrlCache;\n}());\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Component } from \"../../../widgets/component\";\nvar AbstractHeaderCellComp = /** @class */ (function (_super) {\n __extends(AbstractHeaderCellComp, _super);\n function AbstractHeaderCellComp(template, ctrl) {\n var _this = _super.call(this, template) || this;\n _this.ctrl = ctrl;\n return _this;\n }\n AbstractHeaderCellComp.prototype.getCtrl = function () {\n return this.ctrl;\n };\n return AbstractHeaderCellComp;\n}(Component));\nexport { AbstractHeaderCellComp };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { PostConstruct, PreDestroy } from \"../../../context/context\";\nimport { removeAriaSort, setAriaDescribedBy, setAriaSort } from \"../../../utils/aria\";\nimport { RefSelector } from \"../../../widgets/componentAnnotations\";\nimport { AbstractHeaderCellComp } from \"../abstractCell/abstractHeaderCellComp\";\nvar HeaderCellComp = /** @class */ (function (_super) {\n __extends(HeaderCellComp, _super);\n function HeaderCellComp(ctrl) {\n var _this = _super.call(this, HeaderCellComp.TEMPLATE, ctrl) || this;\n _this.headerCompVersion = 0;\n _this.column = ctrl.getColumnGroupChild();\n _this.pinned = ctrl.getPinned();\n return _this;\n }\n HeaderCellComp.prototype.postConstruct = function () {\n var _this = this;\n var eGui = this.getGui();\n var setAttribute = function (name, value, element) {\n var actualElement = element ? element : eGui;\n if (value != null && value != '') {\n actualElement.setAttribute(name, value);\n }\n else {\n actualElement.removeAttribute(name);\n }\n };\n var compProxy = {\n setWidth: function (width) { return eGui.style.width = width; },\n addOrRemoveCssClass: function (cssClassName, on) { return _this.addOrRemoveCssClass(cssClassName, on); },\n setAriaSort: function (sort) { return sort ? setAriaSort(eGui, sort) : removeAriaSort(eGui); },\n setColId: function (id) { return setAttribute('col-id', id); },\n setTitle: function (title) { return setAttribute('title', title); },\n setAriaDescribedBy: function (value) { return setAriaDescribedBy(eGui, value); },\n setUserCompDetails: function (compDetails) { return _this.setUserCompDetails(compDetails); },\n getUserCompInstance: function () { return _this.headerComp; }\n };\n this.ctrl.setComp(compProxy, this.getGui(), this.eResize);\n var selectAllGui = this.ctrl.getSelectAllGui();\n this.eResize.insertAdjacentElement('afterend', selectAllGui);\n };\n HeaderCellComp.prototype.destroyHeaderComp = function () {\n if (this.headerComp) {\n this.getGui().removeChild(this.headerCompGui);\n this.headerComp = this.destroyBean(this.headerComp);\n this.headerCompGui = undefined;\n }\n };\n HeaderCellComp.prototype.setUserCompDetails = function (compDetails) {\n var _this = this;\n this.headerCompVersion++;\n var versionCopy = this.headerCompVersion;\n compDetails.newAgStackInstance().then(function (comp) { return _this.afterCompCreated(versionCopy, comp); });\n };\n HeaderCellComp.prototype.afterCompCreated = function (version, headerComp) {\n if (version != this.headerCompVersion || !this.isAlive()) {\n this.destroyBean(headerComp);\n return;\n }\n this.destroyHeaderComp();\n this.headerComp = headerComp;\n this.headerCompGui = headerComp.getGui();\n this.getGui().appendChild(this.headerCompGui);\n this.ctrl.setDragSource(this.headerCompGui);\n };\n HeaderCellComp.TEMPLATE = \"
    \\n
    \\n
    \";\n __decorate([\n RefSelector('eResize')\n ], HeaderCellComp.prototype, \"eResize\", void 0);\n __decorate([\n PostConstruct\n ], HeaderCellComp.prototype, \"postConstruct\", null);\n __decorate([\n PreDestroy\n ], HeaderCellComp.prototype, \"destroyHeaderComp\", null);\n return HeaderCellComp;\n}(AbstractHeaderCellComp));\nexport { HeaderCellComp };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, PostConstruct } from \"../../../context/context\";\nimport { RefSelector } from \"../../../widgets/componentAnnotations\";\nimport { AbstractHeaderCellComp } from \"../abstractCell/abstractHeaderCellComp\";\nvar HeaderGroupCellComp = /** @class */ (function (_super) {\n __extends(HeaderGroupCellComp, _super);\n function HeaderGroupCellComp(ctrl) {\n return _super.call(this, HeaderGroupCellComp.TEMPLATE, ctrl) || this;\n }\n HeaderGroupCellComp.prototype.postConstruct = function () {\n var _this = this;\n var eGui = this.getGui();\n var setAttribute = function (key, value) {\n return value != undefined ? eGui.setAttribute(key, value) : eGui.removeAttribute(key);\n };\n var compProxy = {\n addOrRemoveCssClass: function (cssClassName, on) { return _this.addOrRemoveCssClass(cssClassName, on); },\n addOrRemoveResizableCssClass: function (cssClassName, on) { return _this.eResize.classList.toggle(cssClassName, on); },\n setWidth: function (width) { return eGui.style.width = width; },\n setColId: function (id) { return eGui.setAttribute(\"col-id\", id); },\n setAriaExpanded: function (expanded) { return setAttribute('aria-expanded', expanded); },\n setTitle: function (title) { return setAttribute(\"title\", title); },\n setUserCompDetails: function (details) { return _this.setUserCompDetails(details); }\n };\n this.ctrl.setComp(compProxy, eGui, this.eResize);\n };\n HeaderGroupCellComp.prototype.setUserCompDetails = function (details) {\n var _this = this;\n details.newAgStackInstance().then(function (comp) { return _this.afterHeaderCompCreated(comp); });\n };\n HeaderGroupCellComp.prototype.afterHeaderCompCreated = function (headerGroupComp) {\n var _this = this;\n var destroyFunc = function () { return _this.destroyBean(headerGroupComp); };\n if (!this.isAlive()) {\n destroyFunc();\n return;\n }\n this.getGui().appendChild(headerGroupComp.getGui());\n this.addDestroyFunc(destroyFunc);\n this.ctrl.setDragSource(headerGroupComp.getGui());\n };\n HeaderGroupCellComp.TEMPLATE = \"
    \\n
    \\n
    \";\n __decorate([\n Autowired('userComponentFactory')\n ], HeaderGroupCellComp.prototype, \"userComponentFactory\", void 0);\n __decorate([\n RefSelector('eResize')\n ], HeaderGroupCellComp.prototype, \"eResize\", void 0);\n __decorate([\n PostConstruct\n ], HeaderGroupCellComp.prototype, \"postConstruct\", null);\n return HeaderGroupCellComp;\n}(AbstractHeaderCellComp));\nexport { HeaderGroupCellComp };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { PostConstruct } from '../../../context/context';\nimport { RefSelector } from '../../../widgets/componentAnnotations';\nimport { AbstractHeaderCellComp } from '../abstractCell/abstractHeaderCellComp';\nvar HeaderFilterCellComp = /** @class */ (function (_super) {\n __extends(HeaderFilterCellComp, _super);\n function HeaderFilterCellComp(ctrl) {\n return _super.call(this, HeaderFilterCellComp.TEMPLATE, ctrl) || this;\n }\n HeaderFilterCellComp.prototype.postConstruct = function () {\n var _this = this;\n var eGui = this.getGui();\n var compProxy = {\n addOrRemoveCssClass: function (cssClassName, on) { return _this.addOrRemoveCssClass(cssClassName, on); },\n addOrRemoveBodyCssClass: function (cssClassName, on) { return _this.eFloatingFilterBody.classList.toggle(cssClassName, on); },\n addOrRemoveButtonWrapperCssClass: function (cssClassName, on) { return _this.eButtonWrapper.classList.toggle(cssClassName, on); },\n setCompDetails: function (compDetails) { return _this.setCompDetails(compDetails); },\n getFloatingFilterComp: function () { return _this.compPromise; },\n setWidth: function (width) { return eGui.style.width = width; },\n setMenuIcon: function (eIcon) { return _this.eButtonShowMainFilter.appendChild(eIcon); }\n };\n this.ctrl.setComp(compProxy, eGui, this.eButtonShowMainFilter, this.eFloatingFilterBody);\n };\n HeaderFilterCellComp.prototype.setCompDetails = function (compDetails) {\n var _this = this;\n // because we are providing defaultFloatingFilterType, we know it will never be undefined;\n this.compPromise = compDetails.newAgStackInstance();\n this.compPromise.then(function (comp) { return _this.afterCompCreated(comp); });\n };\n HeaderFilterCellComp.prototype.afterCompCreated = function (comp) {\n var _this = this;\n if (!comp) {\n return;\n }\n this.addDestroyFunc(function () { return _this.context.destroyBean(comp); });\n if (!this.isAlive()) {\n return;\n }\n this.eFloatingFilterBody.appendChild(comp.getGui());\n if (comp.afterGuiAttached) {\n comp.afterGuiAttached();\n }\n };\n HeaderFilterCellComp.TEMPLATE = \"
    \\n
    \\n
    \\n \\n
    \\n
    \";\n __decorate([\n RefSelector('eFloatingFilterBody')\n ], HeaderFilterCellComp.prototype, \"eFloatingFilterBody\", void 0);\n __decorate([\n RefSelector('eButtonWrapper')\n ], HeaderFilterCellComp.prototype, \"eButtonWrapper\", void 0);\n __decorate([\n RefSelector('eButtonShowMainFilter')\n ], HeaderFilterCellComp.prototype, \"eButtonShowMainFilter\", void 0);\n __decorate([\n PostConstruct\n ], HeaderFilterCellComp.prototype, \"postConstruct\", null);\n return HeaderFilterCellComp;\n}(AbstractHeaderCellComp));\nexport { HeaderFilterCellComp };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { PostConstruct, PreDestroy } from '../../context/context';\nimport { setAriaRowIndex } from '../../utils/aria';\nimport { setDomChildOrder } from '../../utils/dom';\nimport { getAllValuesInObject, iterateObject } from '../../utils/object';\nimport { Component } from '../../widgets/component';\nimport { HeaderCellComp } from '../cells/column/headerCellComp';\nimport { HeaderGroupCellComp } from '../cells/columnGroup/headerGroupCellComp';\nimport { HeaderFilterCellComp } from '../cells/floatingFilter/headerFilterCellComp';\nexport var HeaderRowType;\n(function (HeaderRowType) {\n HeaderRowType[\"COLUMN_GROUP\"] = \"group\";\n HeaderRowType[\"COLUMN\"] = \"column\";\n HeaderRowType[\"FLOATING_FILTER\"] = \"filter\";\n})(HeaderRowType || (HeaderRowType = {}));\nvar HeaderRowComp = /** @class */ (function (_super) {\n __extends(HeaderRowComp, _super);\n function HeaderRowComp(ctrl) {\n var _this = _super.call(this) || this;\n _this.headerComps = {};\n var extraClass = ctrl.getType() == HeaderRowType.COLUMN_GROUP ? \"ag-header-row-column-group\" :\n ctrl.getType() == HeaderRowType.FLOATING_FILTER ? \"ag-header-row-column-filter\" : \"ag-header-row-column\";\n _this.setTemplate(/* html */ \"
    \");\n _this.ctrl = ctrl;\n return _this;\n }\n //noinspection JSUnusedLocalSymbols\n HeaderRowComp.prototype.init = function () {\n var _this = this;\n var compProxy = {\n setTransform: function (transform) { return _this.getGui().style.transform = transform; },\n setHeight: function (height) { return _this.getGui().style.height = height; },\n setTop: function (top) { return _this.getGui().style.top = top; },\n setHeaderCtrls: function (ctrls) { return _this.setHeaderCtrls(ctrls); },\n setWidth: function (width) { return _this.getGui().style.width = width; },\n setAriaRowIndex: function (rowIndex) { return setAriaRowIndex(_this.getGui(), rowIndex); }\n };\n this.ctrl.setComp(compProxy);\n };\n HeaderRowComp.prototype.destroyHeaderCtrls = function () {\n this.setHeaderCtrls([]);\n };\n HeaderRowComp.prototype.setHeaderCtrls = function (ctrls) {\n var _this = this;\n if (!this.isAlive()) {\n return;\n }\n var oldComps = this.headerComps;\n this.headerComps = {};\n ctrls.forEach(function (ctrl) {\n var id = ctrl.getInstanceId();\n var comp = oldComps[id];\n delete oldComps[id];\n if (comp == null) {\n comp = _this.createHeaderComp(ctrl);\n _this.getGui().appendChild(comp.getGui());\n }\n _this.headerComps[id] = comp;\n });\n iterateObject(oldComps, function (id, comp) {\n _this.getGui().removeChild(comp.getGui());\n _this.destroyBean(comp);\n });\n var ensureDomOrder = this.gridOptionsWrapper.isEnsureDomOrder();\n if (ensureDomOrder) {\n var comps = getAllValuesInObject(this.headerComps);\n // ordering the columns by left position orders them in the order they appear on the screen\n comps.sort(function (a, b) {\n var leftA = a.getCtrl().getColumnGroupChild().getLeft();\n var leftB = b.getCtrl().getColumnGroupChild().getLeft();\n return leftA - leftB;\n });\n var elementsInOrder = comps.map(function (c) { return c.getGui(); });\n setDomChildOrder(this.getGui(), elementsInOrder);\n }\n };\n HeaderRowComp.prototype.createHeaderComp = function (headerCtrl) {\n var result;\n switch (this.ctrl.getType()) {\n case HeaderRowType.COLUMN_GROUP:\n result = new HeaderGroupCellComp(headerCtrl);\n break;\n case HeaderRowType.FLOATING_FILTER:\n result = new HeaderFilterCellComp(headerCtrl);\n break;\n default:\n result = new HeaderCellComp(headerCtrl);\n break;\n }\n this.createBean(result);\n result.setParentComponent(this);\n return result;\n };\n __decorate([\n PostConstruct\n ], HeaderRowComp.prototype, \"init\", null);\n __decorate([\n PreDestroy\n ], HeaderRowComp.prototype, \"destroyHeaderCtrls\", null);\n return HeaderRowComp;\n}(Component));\nexport { HeaderRowComp };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { BeanStub } from \"../../context/beanStub\";\nimport { Autowired, Bean, PostConstruct } from \"../../context/context\";\nimport { ColumnGroup } from \"../../entities/columnGroup\";\nimport { last } from \"../../utils/array\";\nimport { HeaderRowType } from \"../row/headerRowComp\";\nexport var HeaderNavigationDirection;\n(function (HeaderNavigationDirection) {\n HeaderNavigationDirection[HeaderNavigationDirection[\"UP\"] = 0] = \"UP\";\n HeaderNavigationDirection[HeaderNavigationDirection[\"DOWN\"] = 1] = \"DOWN\";\n HeaderNavigationDirection[HeaderNavigationDirection[\"LEFT\"] = 2] = \"LEFT\";\n HeaderNavigationDirection[HeaderNavigationDirection[\"RIGHT\"] = 3] = \"RIGHT\";\n})(HeaderNavigationDirection || (HeaderNavigationDirection = {}));\nvar HeaderNavigationService = /** @class */ (function (_super) {\n __extends(HeaderNavigationService, _super);\n function HeaderNavigationService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n HeaderNavigationService.prototype.postConstruct = function () {\n var _this = this;\n this.ctrlsService.whenReady(function (p) {\n _this.gridBodyCon = p.gridBodyCtrl;\n });\n };\n HeaderNavigationService.prototype.getHeaderRowCount = function () {\n var centerHeaderContainer = this.ctrlsService.getHeaderRowContainerCtrl();\n return centerHeaderContainer ? centerHeaderContainer.getRowCount() : 0;\n };\n HeaderNavigationService.prototype.getHeaderRowType = function (rowIndex) {\n var centerHeaderContainer = this.ctrlsService.getHeaderRowContainerCtrl();\n if (centerHeaderContainer) {\n return centerHeaderContainer.getRowType(rowIndex);\n }\n };\n /*\n * This method navigates grid header vertically\n * @return {boolean} true to preventDefault on the event that caused this navigation.\n */\n HeaderNavigationService.prototype.navigateVertically = function (direction, fromHeader, event) {\n if (!fromHeader) {\n fromHeader = this.focusService.getFocusedHeader();\n }\n if (!fromHeader) {\n return false;\n }\n var headerRowIndex = fromHeader.headerRowIndex, column = fromHeader.column;\n var rowLen = this.getHeaderRowCount();\n var isUp = direction === HeaderNavigationDirection.UP;\n var nextRow = isUp ? headerRowIndex - 1 : headerRowIndex + 1;\n var nextFocusColumn = null;\n var skipColumn = false;\n if (nextRow < 0) {\n nextRow = 0;\n nextFocusColumn = column;\n skipColumn = true;\n }\n if (nextRow >= rowLen) {\n nextRow = -1; // -1 indicates the focus should move to grid rows.\n }\n var currentRowType = this.getHeaderRowType(headerRowIndex);\n if (!skipColumn) {\n if (currentRowType === HeaderRowType.COLUMN_GROUP) {\n var currentColumn = column;\n nextFocusColumn = isUp ? column.getParent() : currentColumn.getDisplayedChildren()[0];\n }\n else if (currentRowType === HeaderRowType.FLOATING_FILTER) {\n nextFocusColumn = column;\n }\n else {\n var currentColumn = column;\n nextFocusColumn = isUp ? currentColumn.getParent() : currentColumn;\n }\n if (!nextFocusColumn) {\n return false;\n }\n }\n return this.focusService.focusHeaderPosition({\n headerPosition: { headerRowIndex: nextRow, column: nextFocusColumn },\n allowUserOverride: true,\n event: event\n });\n };\n /*\n * This method navigates grid header horizontally\n * @return {boolean} true to preventDefault on the event that caused this navigation.\n */\n HeaderNavigationService.prototype.navigateHorizontally = function (direction, fromTab, event) {\n if (fromTab === void 0) { fromTab = false; }\n var focusedHeader = this.focusService.getFocusedHeader();\n var isLeft = direction === HeaderNavigationDirection.LEFT;\n var isRtl = this.gridOptionsWrapper.isEnableRtl();\n var nextHeader;\n var normalisedDirection;\n // either navigating to the left or isRtl (cannot be both)\n if (isLeft !== isRtl) {\n normalisedDirection = 'Before';\n nextHeader = this.headerPositionUtils.findHeader(focusedHeader, normalisedDirection);\n }\n else {\n normalisedDirection = 'After';\n nextHeader = this.headerPositionUtils.findHeader(focusedHeader, normalisedDirection);\n }\n if (nextHeader) {\n return this.focusService.focusHeaderPosition({\n headerPosition: nextHeader,\n direction: normalisedDirection,\n fromTab: fromTab,\n allowUserOverride: true,\n event: event\n });\n }\n if (!fromTab) {\n return true;\n }\n return this.focusNextHeaderRow(focusedHeader, normalisedDirection, event);\n };\n HeaderNavigationService.prototype.focusNextHeaderRow = function (focusedHeader, direction, event) {\n var currentIndex = focusedHeader.headerRowIndex;\n var nextPosition = null;\n var nextRowIndex;\n if (direction === 'Before') {\n if (currentIndex > 0) {\n nextRowIndex = currentIndex - 1;\n nextPosition = this.headerPositionUtils.findColAtEdgeForHeaderRow(nextRowIndex, 'end');\n }\n }\n else {\n nextRowIndex = currentIndex + 1;\n nextPosition = this.headerPositionUtils.findColAtEdgeForHeaderRow(nextRowIndex, 'start');\n }\n return this.focusService.focusHeaderPosition({\n headerPosition: nextPosition,\n direction: direction,\n fromTab: true,\n allowUserOverride: true,\n event: event\n });\n };\n HeaderNavigationService.prototype.scrollToColumn = function (column, direction) {\n if (direction === void 0) { direction = 'After'; }\n if (column.getPinned()) {\n return;\n }\n var columnToScrollTo;\n if (column instanceof ColumnGroup) {\n var columns = column.getDisplayedLeafColumns();\n columnToScrollTo = direction === 'Before' ? last(columns) : columns[0];\n }\n else {\n columnToScrollTo = column;\n }\n this.gridBodyCon.getScrollFeature().ensureColumnVisible(columnToScrollTo);\n // need to nudge the scrolls for the floating items. otherwise when we set focus on a non-visible\n // floating cell, the scrolls get out of sync\n this.gridBodyCon.getScrollFeature().horizontallyScrollHeaderCenterAndFloatingCenter();\n // need to flush frames, to make sure the correct cells are rendered\n this.animationFrameService.flushAllFrames();\n };\n __decorate([\n Autowired('focusService')\n ], HeaderNavigationService.prototype, \"focusService\", void 0);\n __decorate([\n Autowired('headerPositionUtils')\n ], HeaderNavigationService.prototype, \"headerPositionUtils\", void 0);\n __decorate([\n Autowired('animationFrameService')\n ], HeaderNavigationService.prototype, \"animationFrameService\", void 0);\n __decorate([\n Autowired('ctrlsService')\n ], HeaderNavigationService.prototype, \"ctrlsService\", void 0);\n __decorate([\n PostConstruct\n ], HeaderNavigationService.prototype, \"postConstruct\", null);\n HeaderNavigationService = __decorate([\n Bean('headerNavigationService')\n ], HeaderNavigationService);\n return HeaderNavigationService;\n}(BeanStub));\nexport { HeaderNavigationService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { KeyCode } from \"../constants/keyCode\";\nimport { BeanStub } from \"../context/beanStub\";\nimport { Autowired } from \"../context/context\";\nimport { Events } from \"../eventKeys\";\nimport { GridOptionsWrapper } from \"../gridOptionsWrapper\";\nimport { exists } from \"../utils/generic\";\nimport { ManagedFocusFeature } from \"../widgets/managedFocusFeature\";\nimport { HeaderNavigationDirection } from \"./common/headerNavigationService\";\nvar GridHeaderCtrl = /** @class */ (function (_super) {\n __extends(GridHeaderCtrl, _super);\n function GridHeaderCtrl() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n GridHeaderCtrl.prototype.setComp = function (comp, eGui, eFocusableElement) {\n this.comp = comp;\n this.eGui = eGui;\n this.createManagedBean(new ManagedFocusFeature(eFocusableElement, {\n onTabKeyDown: this.onTabKeyDown.bind(this),\n handleKeyDown: this.handleKeyDown.bind(this),\n onFocusOut: this.onFocusOut.bind(this)\n }));\n // for setting ag-pivot-on / ag-pivot-off CSS classes\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, this.onPivotModeChanged.bind(this));\n this.onPivotModeChanged();\n this.setupHeaderHeight();\n this.ctrlsService.registerGridHeaderCtrl(this);\n };\n GridHeaderCtrl.prototype.setupHeaderHeight = function () {\n var listener = this.setHeaderHeight.bind(this);\n listener();\n this.addManagedListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_HEADER_HEIGHT, listener);\n this.addManagedListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_PIVOT_HEADER_HEIGHT, listener);\n this.addManagedListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_GROUP_HEADER_HEIGHT, listener);\n this.addManagedListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_PIVOT_GROUP_HEADER_HEIGHT, listener);\n this.addManagedListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_FLOATING_FILTERS_HEIGHT, listener);\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, listener);\n };\n GridHeaderCtrl.prototype.setHeaderHeight = function () {\n var _a = this, columnModel = _a.columnModel, gridOptionsWrapper = _a.gridOptionsWrapper;\n var numberOfFloating = 0;\n var headerRowCount = columnModel.getHeaderRowCount();\n var totalHeaderHeight;\n var groupHeight;\n var headerHeight;\n if (columnModel.isPivotMode()) {\n groupHeight = gridOptionsWrapper.getPivotGroupHeaderHeight();\n headerHeight = gridOptionsWrapper.getPivotHeaderHeight();\n }\n else {\n var hasFloatingFilters = columnModel.hasFloatingFilters();\n if (hasFloatingFilters) {\n headerRowCount++;\n numberOfFloating = 1;\n }\n groupHeight = gridOptionsWrapper.getGroupHeaderHeight();\n headerHeight = gridOptionsWrapper.getHeaderHeight();\n }\n var numberOfNonGroups = 1 + numberOfFloating;\n var numberOfGroups = headerRowCount - numberOfNonGroups;\n totalHeaderHeight = numberOfFloating * gridOptionsWrapper.getFloatingFiltersHeight();\n totalHeaderHeight += numberOfGroups * groupHeight;\n totalHeaderHeight += headerHeight;\n // one extra pixel is needed here to account for the\n // height of the border\n var px = totalHeaderHeight + 1 + \"px\";\n this.comp.setHeightAndMinHeight(px);\n };\n GridHeaderCtrl.prototype.onPivotModeChanged = function () {\n var pivotMode = this.columnModel.isPivotMode();\n this.comp.addOrRemoveCssClass('ag-pivot-on', pivotMode);\n this.comp.addOrRemoveCssClass('ag-pivot-off', !pivotMode);\n };\n GridHeaderCtrl.prototype.onTabKeyDown = function (e) {\n var isRtl = this.gridOptionsWrapper.isEnableRtl();\n var direction = e.shiftKey !== isRtl\n ? HeaderNavigationDirection.LEFT\n : HeaderNavigationDirection.RIGHT;\n if (this.headerNavigationService.navigateHorizontally(direction, true, e) ||\n this.focusService.focusNextGridCoreContainer(e.shiftKey)) {\n e.preventDefault();\n }\n };\n GridHeaderCtrl.prototype.handleKeyDown = function (e) {\n var direction = null;\n switch (e.key) {\n case KeyCode.LEFT:\n direction = HeaderNavigationDirection.LEFT;\n case KeyCode.RIGHT:\n if (!exists(direction)) {\n direction = HeaderNavigationDirection.RIGHT;\n }\n this.headerNavigationService.navigateHorizontally(direction, false, e);\n break;\n case KeyCode.UP:\n direction = HeaderNavigationDirection.UP;\n case KeyCode.DOWN:\n if (!exists(direction)) {\n direction = HeaderNavigationDirection.DOWN;\n }\n if (this.headerNavigationService.navigateVertically(direction, null, e)) {\n e.preventDefault();\n }\n break;\n default:\n return;\n }\n };\n GridHeaderCtrl.prototype.onFocusOut = function (e) {\n var eDocument = this.gridOptionsWrapper.getDocument();\n var relatedTarget = e.relatedTarget;\n if (!relatedTarget && this.eGui.contains(eDocument.activeElement)) {\n return;\n }\n if (!this.eGui.contains(relatedTarget)) {\n this.focusService.clearFocusedHeader();\n }\n };\n __decorate([\n Autowired('headerNavigationService')\n ], GridHeaderCtrl.prototype, \"headerNavigationService\", void 0);\n __decorate([\n Autowired('focusService')\n ], GridHeaderCtrl.prototype, \"focusService\", void 0);\n __decorate([\n Autowired('columnModel')\n ], GridHeaderCtrl.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('ctrlsService')\n ], GridHeaderCtrl.prototype, \"ctrlsService\", void 0);\n return GridHeaderCtrl;\n}(BeanStub));\nexport { GridHeaderCtrl };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, PostConstruct } from \"../../context/context\";\nimport { Constants } from \"../../constants/constants\";\nimport { DragAndDropService, DragSourceType, HorizontalDirection } from \"../../dragAndDrop/dragAndDropService\";\nimport { missing, exists } from \"../../utils/generic\";\nimport { sortNumerically, last, includes } from \"../../utils/array\";\nvar MoveColumnFeature = /** @class */ (function () {\n function MoveColumnFeature(pinned, eContainer) {\n this.needToMoveLeft = false;\n this.needToMoveRight = false;\n this.pinned = pinned;\n this.eContainer = eContainer;\n this.centerContainer = !exists(pinned);\n }\n MoveColumnFeature.prototype.init = function () {\n var _this = this;\n this.ctrlsService.whenReady(function () {\n _this.gridBodyCon = _this.ctrlsService.getGridBodyCtrl();\n });\n };\n MoveColumnFeature.prototype.getIconName = function () {\n return this.pinned ? DragAndDropService.ICON_PINNED : DragAndDropService.ICON_MOVE;\n };\n MoveColumnFeature.prototype.onDragEnter = function (draggingEvent) {\n // we do dummy drag, so make sure column appears in the right location when first placed\n var columns = draggingEvent.dragItem.columns;\n var dragCameFromToolPanel = draggingEvent.dragSource.type === DragSourceType.ToolPanel;\n if (dragCameFromToolPanel) {\n // the if statement doesn't work if drag leaves grid, then enters again\n this.setColumnsVisible(columns, true, \"uiColumnDragged\");\n }\n else {\n // restore previous state of visible columns upon re-entering. this means if the user drags\n // a group out, and then drags the group back in, only columns that were originally visible\n // will be visible again. otherwise a group with three columns (but only two visible) could\n // be dragged out, then when it's dragged in again, all three are visible. this stops that.\n var visibleState_1 = draggingEvent.dragItem.visibleState;\n var visibleColumns = (columns || []).filter(function (column) { return visibleState_1[column.getId()]; });\n this.setColumnsVisible(visibleColumns, true, \"uiColumnDragged\");\n }\n this.setColumnsPinned(columns, this.pinned, \"uiColumnDragged\");\n this.onDragging(draggingEvent, true);\n };\n MoveColumnFeature.prototype.onDragLeave = function (draggingEvent) {\n var hideColumnOnExit = !this.gridOptionsWrapper.isSuppressDragLeaveHidesColumns() && !draggingEvent.fromNudge;\n if (hideColumnOnExit) {\n var dragItem = draggingEvent.dragSource.getDragItem();\n var columns = dragItem.columns;\n this.setColumnsVisible(columns, false, \"uiColumnDragged\");\n }\n this.ensureIntervalCleared();\n };\n MoveColumnFeature.prototype.setColumnsVisible = function (columns, visible, source) {\n if (source === void 0) { source = \"api\"; }\n if (columns) {\n var allowedCols = columns.filter(function (c) { return !c.getColDef().lockVisible; });\n this.columnModel.setColumnsVisible(allowedCols, visible, source);\n }\n };\n MoveColumnFeature.prototype.setColumnsPinned = function (columns, pinned, source) {\n if (source === void 0) { source = \"api\"; }\n if (columns) {\n var allowedCols = columns.filter(function (c) { return !c.getColDef().lockPinned; });\n this.columnModel.setColumnsPinned(allowedCols, pinned, source);\n }\n };\n MoveColumnFeature.prototype.onDragStop = function () {\n this.ensureIntervalCleared();\n };\n MoveColumnFeature.prototype.normaliseX = function (x) {\n // flip the coordinate if doing RTL\n if (this.gridOptionsWrapper.isEnableRtl()) {\n var clientWidth = this.eContainer.clientWidth;\n x = clientWidth - x;\n }\n // adjust for scroll only if centre container (the pinned containers don't scroll)\n if (this.centerContainer) {\n x += this.ctrlsService.getCenterRowContainerCtrl().getCenterViewportScrollLeft();\n }\n return x;\n };\n MoveColumnFeature.prototype.checkCenterForScrolling = function (xAdjustedForScroll) {\n if (this.centerContainer) {\n // scroll if the mouse has gone outside the grid (or just outside the scrollable part if pinning)\n // putting in 50 buffer, so even if user gets to edge of grid, a scroll will happen\n var firstVisiblePixel = this.ctrlsService.getCenterRowContainerCtrl().getCenterViewportScrollLeft();\n var lastVisiblePixel = firstVisiblePixel + this.ctrlsService.getCenterRowContainerCtrl().getCenterWidth();\n if (this.gridOptionsWrapper.isEnableRtl()) {\n this.needToMoveRight = xAdjustedForScroll < (firstVisiblePixel + 50);\n this.needToMoveLeft = xAdjustedForScroll > (lastVisiblePixel - 50);\n }\n else {\n this.needToMoveLeft = xAdjustedForScroll < (firstVisiblePixel + 50);\n this.needToMoveRight = xAdjustedForScroll > (lastVisiblePixel - 50);\n }\n if (this.needToMoveLeft || this.needToMoveRight) {\n this.ensureIntervalStarted();\n }\n else {\n this.ensureIntervalCleared();\n }\n }\n };\n MoveColumnFeature.prototype.onDragging = function (draggingEvent, fromEnter) {\n var _this = this;\n if (fromEnter === void 0) { fromEnter = false; }\n this.lastDraggingEvent = draggingEvent;\n // if moving up or down (ie not left or right) then do nothing\n if (missing(draggingEvent.hDirection)) {\n return;\n }\n var mouseXNormalised = this.normaliseX(draggingEvent.x);\n // if the user is dragging into the panel, ie coming from the side panel into the main grid,\n // we don't want to scroll the grid this time, it would appear like the table is jumping\n // each time a column is dragged in.\n if (!fromEnter) {\n this.checkCenterForScrolling(mouseXNormalised);\n }\n var hDirectionNormalised = this.normaliseDirection(draggingEvent.hDirection);\n var dragSourceType = draggingEvent.dragSource.type;\n var columnsToMove = draggingEvent.dragSource.getDragItem().columns;\n columnsToMove = columnsToMove.filter(function (col) {\n if (col.getColDef().lockPinned) {\n // if locked return true only if both col and container are same pin type.\n // double equals (==) here on purpose so that null==undefined is true (for not pinned options)\n return col.getPinned() == _this.pinned;\n }\n // if not pin locked, then always allowed to be in this container\n return true;\n });\n this.attemptMoveColumns(dragSourceType, columnsToMove, hDirectionNormalised, mouseXNormalised, fromEnter);\n };\n MoveColumnFeature.prototype.normaliseDirection = function (hDirection) {\n if (this.gridOptionsWrapper.isEnableRtl()) {\n switch (hDirection) {\n case HorizontalDirection.Left: return HorizontalDirection.Right;\n case HorizontalDirection.Right: return HorizontalDirection.Left;\n default: console.error(\"AG Grid: Unknown direction \" + hDirection);\n }\n }\n else {\n return hDirection;\n }\n };\n // returns the index of the first column in the list ONLY if the cols are all beside\n // each other. if the cols are not beside each other, then returns null\n MoveColumnFeature.prototype.calculateOldIndex = function (movingCols) {\n var gridCols = this.columnModel.getAllGridColumns();\n var indexes = sortNumerically(movingCols.map(function (col) { return gridCols.indexOf(col); }));\n var firstIndex = indexes[0];\n var lastIndex = last(indexes);\n var spread = lastIndex - firstIndex;\n var gapsExist = spread !== indexes.length - 1;\n return gapsExist ? null : firstIndex;\n };\n MoveColumnFeature.prototype.attemptMoveColumns = function (dragSourceType, allMovingColumns, hDirection, mouseX, fromEnter) {\n var draggingLeft = hDirection === HorizontalDirection.Left;\n var draggingRight = hDirection === HorizontalDirection.Right;\n // it is important to sort the moving columns as they are in grid columns, as the list of moving columns\n // could themselves be part of 'married children' groups, which means we need to maintain the order within\n // the moving list.\n var allMovingColumnsOrdered = allMovingColumns.slice();\n this.columnModel.sortColumnsLikeGridColumns(allMovingColumnsOrdered);\n var validMoves = this.calculateValidMoves(allMovingColumnsOrdered, draggingRight, mouseX);\n // if cols are not adjacent, then this returns null. when moving, we constrain the direction of the move\n // (ie left or right) to the mouse direction. however\n var oldIndex = this.calculateOldIndex(allMovingColumnsOrdered);\n if (validMoves.length === 0) {\n return;\n }\n var firstValidMove = validMoves[0];\n // the two check below stop an error when the user grabs a group my a middle column, then\n // it is possible the mouse pointer is to the right of a column while been dragged left.\n // so we need to make sure that the mouse pointer is actually left of the left most column\n // if moving left, and right of the right most column if moving right\n // we check 'fromEnter' below so we move the column to the new spot if the mouse is coming from\n // outside the grid, eg if the column is moving from side panel, mouse is moving left, then we should\n // place the column to the RHS even if the mouse is moving left and the column is already on\n // the LHS. otherwise we stick to the rule described above.\n var constrainDirection = oldIndex !== null && !fromEnter;\n // don't consider 'fromEnter' when dragging header cells, otherwise group can jump to opposite direction of drag\n if (dragSourceType == DragSourceType.HeaderCell) {\n constrainDirection = oldIndex !== null;\n }\n if (constrainDirection) {\n // only allow left drag if this column is moving left\n if (draggingLeft && firstValidMove >= oldIndex) {\n return;\n }\n // only allow right drag if this column is moving right\n if (draggingRight && firstValidMove <= oldIndex) {\n return;\n }\n }\n for (var i = 0; i < validMoves.length; i++) {\n var move = validMoves[i];\n if (!this.columnModel.doesMovePassRules(allMovingColumnsOrdered, move)) {\n continue;\n }\n this.columnModel.moveColumns(allMovingColumnsOrdered, move, \"uiColumnDragged\");\n // important to return here, so once we do the first valid move, we don't try do any more\n return;\n }\n };\n MoveColumnFeature.prototype.calculateValidMoves = function (movingCols, draggingRight, mouseX) {\n var isMoveBlocked = this.gridOptionsWrapper.isSuppressMovableColumns() || movingCols.some(function (col) { return col.getColDef().suppressMovable; });\n if (isMoveBlocked) {\n return [];\n }\n // this is the list of cols on the screen, so it's these we use when comparing the x mouse position\n var allDisplayedCols = this.columnModel.getDisplayedColumns(this.pinned);\n // but this list is the list of all cols, when we move a col it's the index within this list that gets used,\n // so the result we return has to be and index location for this list\n var allGridCols = this.columnModel.getAllGridColumns();\n var movingDisplayedCols = allDisplayedCols.filter(function (col) { return includes(movingCols, col); });\n var otherDisplayedCols = allDisplayedCols.filter(function (col) { return !includes(movingCols, col); });\n var otherGridCols = allGridCols.filter(function (col) { return !includes(movingCols, col); });\n // work out how many DISPLAYED columns fit before the 'x' position. this gives us the displayIndex.\n // for example, if cols are a,b,c,d and we find a,b fit before 'x', then we want to place the moving\n // col between b and c (so that it is under the mouse position).\n var displayIndex = 0;\n var availableWidth = mouseX;\n // if we are dragging right, then the columns will be to the left of the mouse, so we also want to\n // include the width of the moving columns\n if (draggingRight) {\n var widthOfMovingDisplayedCols_1 = 0;\n movingDisplayedCols.forEach(function (col) { return widthOfMovingDisplayedCols_1 += col.getActualWidth(); });\n availableWidth -= widthOfMovingDisplayedCols_1;\n }\n if (availableWidth > 0) {\n // now count how many of the displayed columns will fit to the left\n for (var i = 0; i < otherDisplayedCols.length; i++) {\n var col = otherDisplayedCols[i];\n availableWidth -= col.getActualWidth();\n if (availableWidth < 0) {\n break;\n }\n displayIndex++;\n }\n // trial and error, if going right, we adjust by one, i didn't manage to quantify why, but it works\n if (draggingRight) {\n displayIndex++;\n }\n }\n // the display index is with respect to all the showing columns, however when we move, it's with\n // respect to all grid columns, so we need to translate from display index to grid index\n var firstValidMove;\n if (displayIndex > 0) {\n var leftColumn = otherDisplayedCols[displayIndex - 1];\n firstValidMove = otherGridCols.indexOf(leftColumn) + 1;\n }\n else {\n firstValidMove = otherGridCols.indexOf(otherDisplayedCols[0]);\n if (firstValidMove === -1) {\n firstValidMove = 0;\n }\n }\n var validMoves = [firstValidMove];\n var numberComparator = function (a, b) { return a - b; };\n // add in other valid moves due to hidden columns and married children. for example, a particular\n // move might break a group that has married children (so move isn't valid), however there could\n // be hidden columns (not displayed) that we could jump over to make the move valid. because\n // they are hidden, user doesn't see any different, however it allows moves that would otherwise\n // not work. for example imagine a group with 9 columns and all columns are hidden except the\n // middle one (so 4 hidden to left, 4 hidden to right), then when moving 'firstValidMove' will\n // be relative to the not-shown column, however we need to consider the move jumping over all the\n // hidden children. if we didn't do this, then if the group just described was at the end (RHS) of the\n // grid, there would be no way to put a column after it (as the grid would only consider beside the\n // visible column, which would fail valid move rules).\n if (draggingRight) {\n // if dragging right, then we add all the additional moves to the right. so in other words\n // if the next move is not valid, find the next move to the right that is valid.\n var pointer = firstValidMove + 1;\n var lastIndex = allGridCols.length - 1;\n while (pointer <= lastIndex) {\n validMoves.push(pointer);\n pointer++;\n }\n // adding columns here means the order is now messed up\n validMoves.sort(numberComparator);\n }\n else {\n // if dragging left we do the reverse of dragging right, we add in all the valid moves to the\n // left. however we also have to consider moves to the right for all hidden columns first.\n // (this logic is hard to reason with, it was worked out with trial and error,\n // more observation rather than science).\n // add moves to the right\n var pointer = firstValidMove;\n var lastIndex = allGridCols.length - 1;\n var displacedCol = allGridCols[pointer];\n while (pointer <= lastIndex && this.isColumnHidden(allDisplayedCols, displacedCol)) {\n pointer++;\n validMoves.push(pointer);\n displacedCol = allGridCols[pointer];\n }\n // add moves to the left\n pointer = firstValidMove - 1;\n var firstDisplayIndex = 0;\n while (pointer >= firstDisplayIndex) {\n validMoves.push(pointer);\n pointer--;\n }\n // adding columns here means the order is now messed up\n validMoves.sort(numberComparator).reverse();\n }\n return validMoves;\n };\n // isHidden takes into account visible=false and group=closed, ie it is not displayed\n MoveColumnFeature.prototype.isColumnHidden = function (displayedColumns, col) {\n return displayedColumns.indexOf(col) < 0;\n };\n MoveColumnFeature.prototype.ensureIntervalStarted = function () {\n if (!this.movingIntervalId) {\n this.intervalCount = 0;\n this.failedMoveAttempts = 0;\n this.movingIntervalId = window.setInterval(this.moveInterval.bind(this), 100);\n if (this.needToMoveLeft) {\n this.dragAndDropService.setGhostIcon(DragAndDropService.ICON_LEFT, true);\n }\n else {\n this.dragAndDropService.setGhostIcon(DragAndDropService.ICON_RIGHT, true);\n }\n }\n };\n MoveColumnFeature.prototype.ensureIntervalCleared = function () {\n if (this.movingIntervalId) {\n window.clearInterval(this.movingIntervalId);\n this.movingIntervalId = null;\n this.dragAndDropService.setGhostIcon(DragAndDropService.ICON_MOVE);\n }\n };\n MoveColumnFeature.prototype.moveInterval = function () {\n // the amounts we move get bigger at each interval, so the speed accelerates, starting a bit slow\n // and getting faster. this is to give smoother user experience. we max at 100px to limit the speed.\n var pixelsToMove;\n this.intervalCount++;\n pixelsToMove = 10 + (this.intervalCount * 5);\n if (pixelsToMove > 100) {\n pixelsToMove = 100;\n }\n var pixelsMoved = null;\n var scrollFeature = this.gridBodyCon.getScrollFeature();\n if (this.needToMoveLeft) {\n pixelsMoved = scrollFeature.scrollHorizontally(-pixelsToMove);\n }\n else if (this.needToMoveRight) {\n pixelsMoved = scrollFeature.scrollHorizontally(pixelsToMove);\n }\n if (pixelsMoved !== 0) {\n this.onDragging(this.lastDraggingEvent);\n this.failedMoveAttempts = 0;\n }\n else {\n // we count the failed move attempts. if we fail to move 7 times, then we pin the column.\n // this is how we achieve pining by dragging the column to the edge of the grid.\n this.failedMoveAttempts++;\n var columns = this.lastDraggingEvent.dragItem.columns;\n var columnsThatCanPin = columns.filter(function (c) { return !c.getColDef().lockPinned; });\n if (columnsThatCanPin.length > 0) {\n this.dragAndDropService.setGhostIcon(DragAndDropService.ICON_PINNED);\n if (this.failedMoveAttempts > 7) {\n var pinType = this.needToMoveLeft ? Constants.PINNED_LEFT : Constants.PINNED_RIGHT;\n this.setColumnsPinned(columnsThatCanPin, pinType, \"uiColumnDragged\");\n this.dragAndDropService.nudge();\n }\n }\n }\n };\n __decorate([\n Autowired('columnModel')\n ], MoveColumnFeature.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('dragAndDropService')\n ], MoveColumnFeature.prototype, \"dragAndDropService\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], MoveColumnFeature.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('ctrlsService')\n ], MoveColumnFeature.prototype, \"ctrlsService\", void 0);\n __decorate([\n PostConstruct\n ], MoveColumnFeature.prototype, \"init\", null);\n return MoveColumnFeature;\n}());\nexport { MoveColumnFeature };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { DragAndDropService } from \"../../dragAndDrop/dragAndDropService\";\nimport { Autowired } from \"../../context/context\";\nvar BodyDropPivotTarget = /** @class */ (function () {\n function BodyDropPivotTarget(pinned) {\n this.columnsToAggregate = [];\n this.columnsToGroup = [];\n this.columnsToPivot = [];\n this.pinned = pinned;\n }\n /** Callback for when drag enters */\n BodyDropPivotTarget.prototype.onDragEnter = function (draggingEvent) {\n var _this = this;\n this.clearColumnsList();\n // in pivot mode, we don't accept any drops if functions are read only\n if (this.gridOptionsWrapper.isFunctionsReadOnly()) {\n return;\n }\n var dragColumns = draggingEvent.dragItem.columns;\n if (!dragColumns) {\n return;\n }\n dragColumns.forEach(function (column) {\n // we don't allow adding secondary columns\n if (!column.isPrimary()) {\n return;\n }\n if (column.isAnyFunctionActive()) {\n return;\n }\n if (column.isAllowValue()) {\n _this.columnsToAggregate.push(column);\n }\n else if (column.isAllowRowGroup()) {\n _this.columnsToGroup.push(column);\n }\n else if (column.isAllowPivot()) {\n _this.columnsToPivot.push(column);\n }\n });\n };\n BodyDropPivotTarget.prototype.getIconName = function () {\n var totalColumns = this.columnsToAggregate.length + this.columnsToGroup.length + this.columnsToPivot.length;\n if (totalColumns > 0) {\n return this.pinned ? DragAndDropService.ICON_PINNED : DragAndDropService.ICON_MOVE;\n }\n return null;\n };\n /** Callback for when drag leaves */\n BodyDropPivotTarget.prototype.onDragLeave = function (draggingEvent) {\n // if we are taking columns out of the center, then we remove them from the report\n this.clearColumnsList();\n };\n BodyDropPivotTarget.prototype.clearColumnsList = function () {\n this.columnsToAggregate.length = 0;\n this.columnsToGroup.length = 0;\n this.columnsToPivot.length = 0;\n };\n /** Callback for when dragging */\n BodyDropPivotTarget.prototype.onDragging = function (draggingEvent) {\n };\n /** Callback for when drag stops */\n BodyDropPivotTarget.prototype.onDragStop = function (draggingEvent) {\n if (this.columnsToAggregate.length > 0) {\n this.columnModel.addValueColumns(this.columnsToAggregate, \"toolPanelDragAndDrop\");\n }\n if (this.columnsToGroup.length > 0) {\n this.columnModel.addRowGroupColumns(this.columnsToGroup, \"toolPanelDragAndDrop\");\n }\n if (this.columnsToPivot.length > 0) {\n this.columnModel.addPivotColumns(this.columnsToPivot, \"toolPanelDragAndDrop\");\n }\n };\n __decorate([\n Autowired('columnModel')\n ], BodyDropPivotTarget.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], BodyDropPivotTarget.prototype, \"gridOptionsWrapper\", void 0);\n return BodyDropPivotTarget;\n}());\nexport { BodyDropPivotTarget };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { DragSourceType } from \"../../dragAndDrop/dragAndDropService\";\nimport { Autowired, PostConstruct } from \"../../context/context\";\nimport { MoveColumnFeature } from \"./moveColumnFeature\";\nimport { BodyDropPivotTarget } from \"./bodyDropPivotTarget\";\nimport { Constants } from \"../../constants/constants\";\nimport { BeanStub } from \"../../context/beanStub\";\nvar BodyDropTarget = /** @class */ (function (_super) {\n __extends(BodyDropTarget, _super);\n function BodyDropTarget(pinned, eContainer) {\n var _this = _super.call(this) || this;\n _this.pinned = pinned;\n _this.eContainer = eContainer;\n return _this;\n }\n BodyDropTarget.prototype.postConstruct = function () {\n var _this = this;\n this.ctrlsService.whenReady(function (p) {\n switch (_this.pinned) {\n case Constants.PINNED_LEFT:\n _this.eSecondaryContainers = [\n [p.gridBodyCtrl.getBodyViewportElement(), p.leftRowContainerCtrl.getContainerElement()],\n [p.bottomLeftRowContainerCtrl.getContainerElement()],\n [p.topLeftRowContainerCtrl.getContainerElement()]\n ];\n break;\n case Constants.PINNED_RIGHT:\n _this.eSecondaryContainers = [\n [p.gridBodyCtrl.getBodyViewportElement(), p.rightRowContainerCtrl.getContainerElement()],\n [p.bottomRightRowContainerCtrl.getContainerElement()],\n [p.topRightRowContainerCtrl.getContainerElement()]\n ];\n break;\n default:\n _this.eSecondaryContainers = [\n [p.gridBodyCtrl.getBodyViewportElement(), p.centerRowContainerCtrl.getViewportElement()],\n [p.bottomCenterRowContainerCtrl.getViewportElement()],\n [p.topCenterRowContainerCtrl.getViewportElement()]\n ];\n break;\n }\n });\n };\n BodyDropTarget.prototype.isInterestedIn = function (type) {\n return type === DragSourceType.HeaderCell ||\n (type === DragSourceType.ToolPanel && this.gridOptionsWrapper.isAllowDragFromColumnsToolPanel());\n };\n BodyDropTarget.prototype.getSecondaryContainers = function () {\n return this.eSecondaryContainers;\n };\n BodyDropTarget.prototype.getContainer = function () {\n return this.eContainer;\n };\n BodyDropTarget.prototype.init = function () {\n this.moveColumnFeature = this.createManagedBean(new MoveColumnFeature(this.pinned, this.eContainer));\n this.bodyDropPivotTarget = this.createManagedBean(new BodyDropPivotTarget(this.pinned));\n this.dragAndDropService.addDropTarget(this);\n };\n BodyDropTarget.prototype.getIconName = function () {\n return this.currentDropListener.getIconName();\n };\n // we want to use the bodyPivotTarget if the user is dragging columns in from the toolPanel\n // and we are in pivot mode, as it has to logic to set pivot/value/group on the columns when\n // dropped into the grid's body.\n BodyDropTarget.prototype.isDropColumnInPivotMode = function (draggingEvent) {\n // in pivot mode, then if moving a column (ie didn't come from toolpanel) then it's\n // a standard column move, however if it came from the toolpanel, then we are introducing\n // dimensions or values to the grid\n return this.columnModel.isPivotMode() && draggingEvent.dragSource.type === DragSourceType.ToolPanel;\n };\n BodyDropTarget.prototype.onDragEnter = function (draggingEvent) {\n // we pick the drop listener depending on whether we are in pivot mode are not. if we are\n // in pivot mode, then dropping cols changes the row group, pivot, value stats. otherwise\n // we change visibility state and position.\n this.currentDropListener = this.isDropColumnInPivotMode(draggingEvent) ? this.bodyDropPivotTarget : this.moveColumnFeature;\n this.currentDropListener.onDragEnter(draggingEvent);\n };\n BodyDropTarget.prototype.onDragLeave = function (params) {\n this.currentDropListener.onDragLeave(params);\n };\n BodyDropTarget.prototype.onDragging = function (params) {\n this.currentDropListener.onDragging(params);\n };\n BodyDropTarget.prototype.onDragStop = function (params) {\n this.currentDropListener.onDragStop(params);\n };\n __decorate([\n Autowired('dragAndDropService')\n ], BodyDropTarget.prototype, \"dragAndDropService\", void 0);\n __decorate([\n Autowired('columnModel')\n ], BodyDropTarget.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('ctrlsService')\n ], BodyDropTarget.prototype, \"ctrlsService\", void 0);\n __decorate([\n PostConstruct\n ], BodyDropTarget.prototype, \"postConstruct\", null);\n __decorate([\n PostConstruct\n ], BodyDropTarget.prototype, \"init\", null);\n return BodyDropTarget;\n}(BeanStub));\nexport { BodyDropTarget };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { BeanStub } from \"../../../context/beanStub\";\nimport { Autowired } from \"../../../context/context\";\nimport { isUserSuppressingHeaderKeyboardEvent } from \"../../../utils/keyboard\";\nvar instanceIdSequence = 0;\nvar AbstractHeaderCellCtrl = /** @class */ (function (_super) {\n __extends(AbstractHeaderCellCtrl, _super);\n function AbstractHeaderCellCtrl(columnGroupChild, parentRowCtrl) {\n var _this = _super.call(this) || this;\n _this.lastFocusEvent = null;\n _this.columnGroupChild = columnGroupChild;\n _this.parentRowCtrl = parentRowCtrl;\n // unique id to this instance, including the column ID to help with debugging in React as it's used in 'key'\n _this.instanceId = columnGroupChild.getUniqueId() + '-' + instanceIdSequence++;\n return _this;\n }\n AbstractHeaderCellCtrl.prototype.shouldStopEventPropagation = function (e) {\n var _a = this.focusService.getFocusedHeader(), headerRowIndex = _a.headerRowIndex, column = _a.column;\n return isUserSuppressingHeaderKeyboardEvent(this.gridOptionsWrapper, e, headerRowIndex, column);\n };\n AbstractHeaderCellCtrl.prototype.setGui = function (eGui) {\n this.eGui = eGui;\n this.addDomData();\n };\n AbstractHeaderCellCtrl.prototype.addDomData = function () {\n var _this = this;\n var key = AbstractHeaderCellCtrl.DOM_DATA_KEY_HEADER_CTRL;\n this.gridOptionsWrapper.setDomData(this.eGui, key, this);\n this.addDestroyFunc(function () { return _this.gridOptionsWrapper.setDomData(_this.eGui, key, null); });\n };\n AbstractHeaderCellCtrl.prototype.getGui = function () {\n return this.eGui;\n };\n AbstractHeaderCellCtrl.prototype.focus = function (event) {\n if (!this.eGui) {\n return false;\n }\n this.lastFocusEvent = event || null;\n this.eGui.focus();\n return true;\n };\n AbstractHeaderCellCtrl.prototype.getRowIndex = function () {\n return this.parentRowCtrl.getRowIndex();\n };\n AbstractHeaderCellCtrl.prototype.getParentRowCtrl = function () {\n return this.parentRowCtrl;\n };\n AbstractHeaderCellCtrl.prototype.getPinned = function () {\n return this.parentRowCtrl.getPinned();\n };\n AbstractHeaderCellCtrl.prototype.getInstanceId = function () {\n return this.instanceId;\n };\n AbstractHeaderCellCtrl.prototype.getColumnGroupChild = function () {\n return this.columnGroupChild;\n };\n AbstractHeaderCellCtrl.DOM_DATA_KEY_HEADER_CTRL = 'headerCtrl';\n __decorate([\n Autowired('focusService')\n ], AbstractHeaderCellCtrl.prototype, \"focusService\", void 0);\n return AbstractHeaderCellCtrl;\n}(BeanStub));\nexport { AbstractHeaderCellCtrl };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\n// Excel Export\nexport var ExcelFactoryMode;\n(function (ExcelFactoryMode) {\n ExcelFactoryMode[ExcelFactoryMode[\"SINGLE_SHEET\"] = 0] = \"SINGLE_SHEET\";\n ExcelFactoryMode[ExcelFactoryMode[\"MULTI_SHEET\"] = 1] = \"MULTI_SHEET\";\n})(ExcelFactoryMode || (ExcelFactoryMode = {}));\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nexport var ClientSideRowModelSteps;\n(function (ClientSideRowModelSteps) {\n ClientSideRowModelSteps[\"EVERYTHING\"] = \"group\";\n ClientSideRowModelSteps[\"FILTER\"] = \"filter\";\n ClientSideRowModelSteps[\"SORT\"] = \"sort\";\n ClientSideRowModelSteps[\"MAP\"] = \"map\";\n ClientSideRowModelSteps[\"AGGREGATE\"] = \"aggregate\";\n ClientSideRowModelSteps[\"PIVOT\"] = \"pivot\";\n ClientSideRowModelSteps[\"NOTHING\"] = \"nothing\";\n})(ClientSideRowModelSteps || (ClientSideRowModelSteps = {}));\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { GridOptionsWrapper } from \"./gridOptionsWrapper\";\nimport { Constants } from \"./constants/constants\";\nimport { Autowired, Bean, Optional, PostConstruct, PreDestroy } from \"./context/context\";\nimport { ExcelFactoryMode } from \"./interfaces/iExcelCreator\";\nimport { SideBarDefParser } from \"./entities/sideBar\";\nimport { ModuleNames } from \"./modules/moduleNames\";\nimport { ClientSideRowModelSteps } from \"./interfaces/iClientSideRowModel\";\nimport { ModuleRegistry } from \"./modules/moduleRegistry\";\nimport { iterateObject, removeAllReferences } from \"./utils/object\";\nimport { exists, missing } from \"./utils/generic\";\nimport { camelCaseToHumanText } from \"./utils/string\";\nimport { doOnce } from \"./utils/function\";\nexport function unwrapUserComp(comp) {\n var compAsAny = comp;\n var isProxy = compAsAny != null && compAsAny.getFrameworkComponentInstance != null;\n return isProxy ? compAsAny.getFrameworkComponentInstance() : comp;\n}\nvar GridApi = /** @class */ (function () {\n function GridApi() {\n this.detailGridInfoMap = {};\n this.destroyCalled = false;\n }\n GridApi.prototype.registerOverlayWrapperComp = function (overlayWrapperComp) {\n this.overlayWrapperComp = overlayWrapperComp;\n };\n GridApi.prototype.registerSideBarComp = function (sideBarComp) {\n this.sideBarComp = sideBarComp;\n };\n GridApi.prototype.init = function () {\n var _this = this;\n switch (this.rowModel.getType()) {\n case Constants.ROW_MODEL_TYPE_CLIENT_SIDE:\n this.clientSideRowModel = this.rowModel;\n break;\n case Constants.ROW_MODEL_TYPE_INFINITE:\n this.infiniteRowModel = this.rowModel;\n break;\n case Constants.ROW_MODEL_TYPE_SERVER_SIDE:\n this.serverSideRowModel = this.rowModel;\n break;\n }\n this.ctrlsService.whenReady(function () {\n _this.gridBodyCon = _this.ctrlsService.getGridBodyCtrl();\n });\n };\n /** Used internally by grid. Not intended to be used by the client. Interface may change between releases. */\n GridApi.prototype.__getAlignedGridService = function () {\n return this.alignedGridsService;\n };\n /** Used internally by grid. Not intended to be used by the client. Interface may change between releases. */\n GridApi.prototype.__getContext = function () {\n return this.context;\n };\n /** Register a detail grid with the master grid when it is created. */\n GridApi.prototype.addDetailGridInfo = function (id, gridInfo) {\n this.detailGridInfoMap[id] = gridInfo;\n };\n /** Unregister a detail grid from the master grid when it is destroyed. */\n GridApi.prototype.removeDetailGridInfo = function (id) {\n this.detailGridInfoMap[id] = undefined;\n };\n /** Returns the `DetailGridInfo` corresponding to the supplied `detailGridId`. */\n GridApi.prototype.getDetailGridInfo = function (id) {\n return this.detailGridInfoMap[id];\n };\n /** Iterates through each `DetailGridInfo` in the grid and calls the supplied callback on each. */\n GridApi.prototype.forEachDetailGridInfo = function (callback) {\n var index = 0;\n iterateObject(this.detailGridInfoMap, function (id, gridInfo) {\n // check for undefined, as old references will still be lying around\n if (exists(gridInfo)) {\n callback(gridInfo, index);\n index++;\n }\n });\n };\n /** Similar to `exportDataAsCsv`, except returns the result as a string rather than download it. */\n GridApi.prototype.getDataAsCsv = function (params) {\n if (ModuleRegistry.assertRegistered(ModuleNames.CsvExportModule, 'api.getDataAsCsv')) {\n return this.csvCreator.getDataAsCsv(params);\n }\n };\n /** Downloads a CSV export of the grid's data. */\n GridApi.prototype.exportDataAsCsv = function (params) {\n if (ModuleRegistry.assertRegistered(ModuleNames.CsvExportModule, 'api.exportDataAsCSv')) {\n this.csvCreator.exportDataAsCsv(params);\n }\n };\n GridApi.prototype.getExcelExportMode = function (params) {\n var baseParams = this.gridOptionsWrapper.getDefaultExportParams('excel');\n var mergedParams = Object.assign({ exportMode: 'xlsx' }, baseParams, params);\n return mergedParams.exportMode;\n };\n /** Similar to `exportDataAsExcel`, except instead of downloading a file, it will return a [Blob](https://developer.mozilla.org/en-US/docs/Web/API/Blob) to be processed by the user. */\n GridApi.prototype.getDataAsExcel = function (params) {\n if (!ModuleRegistry.assertRegistered(ModuleNames.ExcelExportModule, 'api.getDataAsExcel')) {\n return;\n }\n var exportMode = this.getExcelExportMode(params);\n if (this.excelCreator.getFactoryMode(exportMode) === ExcelFactoryMode.MULTI_SHEET) {\n console.warn('AG Grid: The Excel Exporter is currently on Multi Sheet mode. End that operation by calling `api.getMultipleSheetAsExcel()` or `api.exportMultipleSheetsAsExcel()`');\n return;\n }\n return this.excelCreator.getDataAsExcel(params);\n };\n /** Downloads an Excel export of the grid's data. */\n GridApi.prototype.exportDataAsExcel = function (params) {\n if (!ModuleRegistry.assertRegistered(ModuleNames.ExcelExportModule, 'api.exportDataAsExcel')) {\n return;\n }\n var exportMode = this.getExcelExportMode(params);\n if (this.excelCreator.getFactoryMode(exportMode) === ExcelFactoryMode.MULTI_SHEET) {\n console.warn('AG Grid: The Excel Exporter is currently on Multi Sheet mode. End that operation by calling `api.getMultipleSheetAsExcel()` or `api.exportMultipleSheetsAsExcel()`');\n return;\n }\n this.excelCreator.exportDataAsExcel(params);\n };\n /** This is method to be used to get the grid's data as a sheet, that will later be exported either by `getMultipleSheetsAsExcel()` or `exportMultipleSheetsAsExcel()`. */\n GridApi.prototype.getSheetDataForExcel = function (params) {\n if (!ModuleRegistry.assertRegistered(ModuleNames.ExcelExportModule, 'api.getSheetDataForExcel')) {\n return;\n }\n var exportMode = this.getExcelExportMode(params);\n this.excelCreator.setFactoryMode(ExcelFactoryMode.MULTI_SHEET, exportMode);\n return this.excelCreator.getSheetDataForExcel(params);\n };\n /** Similar to `exportMultipleSheetsAsExcel`, except instead of downloading a file, it will return a [Blob](https://developer.mozilla.org/en-US/docs/Web/API/Blob) to be processed by the user. */\n GridApi.prototype.getMultipleSheetsAsExcel = function (params) {\n if (ModuleRegistry.assertRegistered(ModuleNames.ExcelExportModule, 'api.getMultipleSheetsAsExcel')) {\n return this.excelCreator.getMultipleSheetsAsExcel(params);\n }\n };\n /** Downloads an Excel export of multiple sheets in one file. */\n GridApi.prototype.exportMultipleSheetsAsExcel = function (params) {\n if (ModuleRegistry.assertRegistered(ModuleNames.ExcelExportModule, 'api.exportMultipleSheetsAsExcel')) {\n return this.excelCreator.exportMultipleSheetsAsExcel(params);\n }\n };\n /** @deprecated */\n GridApi.prototype.setEnterpriseDatasource = function (datasource) {\n console.warn(\"AG Grid: since version 18.x, api.setEnterpriseDatasource() should be replaced with api.setServerSideDatasource()\");\n this.setServerSideDatasource(datasource);\n };\n /**\n * Sets an ARIA property in the grid panel (element with `role=\\\"grid\\\"`), and removes an ARIA property when the value is null.\n *\n * Example: `api.setGridAriaProperty('label', 'my grid')` will set `aria-label=\\\"my grid\\\"`.\n *\n * `api.setGridAriaProperty('label', null)` will remove the `aria-label` attribute from the grid element.\n */\n GridApi.prototype.setGridAriaProperty = function (property, value) {\n if (!property) {\n return;\n }\n var eGrid = this.ctrlsService.getGridBodyCtrl().getGui();\n var ariaProperty = \"aria-\" + property;\n if (value === null) {\n eGrid.removeAttribute(ariaProperty);\n }\n else {\n eGrid.setAttribute(ariaProperty, value);\n }\n };\n /** Set new datasource for Server-Side Row Model. */\n GridApi.prototype.setServerSideDatasource = function (datasource) {\n if (this.serverSideRowModel) {\n // should really have an IEnterpriseRowModel interface, so we are not casting to any\n this.serverSideRowModel.setDatasource(datasource);\n }\n else {\n console.warn(\"AG Grid: you can only use an enterprise datasource when gridOptions.rowModelType is '\" + Constants.ROW_MODEL_TYPE_SERVER_SIDE + \"'\");\n }\n };\n /** Set new datasource for Infinite Row Model. */\n GridApi.prototype.setDatasource = function (datasource) {\n if (this.gridOptionsWrapper.isRowModelInfinite()) {\n this.rowModel.setDatasource(datasource);\n }\n else {\n console.warn(\"AG Grid: you can only use a datasource when gridOptions.rowModelType is '\" + Constants.ROW_MODEL_TYPE_INFINITE + \"'\");\n }\n };\n /** Set new datasource for Viewport Row Model. */\n GridApi.prototype.setViewportDatasource = function (viewportDatasource) {\n if (this.gridOptionsWrapper.isRowModelViewport()) {\n // this is bad coding, because it's using an interface that's exposed in the enterprise.\n // really we should create an interface in the core for viewportDatasource and let\n // the enterprise implement it, rather than casting to 'any' here\n this.rowModel.setViewportDatasource(viewportDatasource);\n }\n else {\n console.warn(\"AG Grid: you can only use a viewport datasource when gridOptions.rowModelType is '\" + Constants.ROW_MODEL_TYPE_VIEWPORT + \"'\");\n }\n };\n /** Set the row data. */\n GridApi.prototype.setRowData = function (rowData) {\n // immutable service is part of the CSRM module, if missing, no CSRM\n var missingImmutableService = this.immutableService == null;\n if (missingImmutableService) {\n console.warn('AG Grid: you can only set rowData when using the Client Side Row Model');\n return;\n }\n // if no keys provided provided for rows, then we can tread the operation as Immutable\n if (this.immutableService.isActive()) {\n this.immutableService.setRowData(rowData);\n }\n else {\n this.selectionService.reset();\n this.clientSideRowModel.setRowData(rowData);\n }\n };\n /** @deprecated */\n GridApi.prototype.setFloatingTopRowData = function (rows) {\n console.warn('AG Grid: since v12, api.setFloatingTopRowData() is now api.setPinnedTopRowData()');\n this.setPinnedTopRowData(rows);\n };\n /** @deprecated */\n GridApi.prototype.setFloatingBottomRowData = function (rows) {\n console.warn('AG Grid: since v12, api.setFloatingBottomRowData() is now api.setPinnedBottomRowData()');\n this.setPinnedBottomRowData(rows);\n };\n /** @deprecated */\n GridApi.prototype.getFloatingTopRowCount = function () {\n console.warn('AG Grid: since v12, api.getFloatingTopRowCount() is now api.getPinnedTopRowCount()');\n return this.getPinnedTopRowCount();\n };\n /** @deprecated */\n GridApi.prototype.getFloatingBottomRowCount = function () {\n console.warn('AG Grid: since v12, api.getFloatingBottomRowCount() is now api.getPinnedBottomRowCount()');\n return this.getPinnedBottomRowCount();\n };\n /** @deprecated */\n GridApi.prototype.getFloatingTopRow = function (index) {\n console.warn('AG Grid: since v12, api.getFloatingTopRow() is now api.getPinnedTopRow()');\n return this.getPinnedTopRow(index);\n };\n /** @deprecated */\n GridApi.prototype.getFloatingBottomRow = function (index) {\n console.warn('AG Grid: since v12, api.getFloatingBottomRow() is now api.getPinnedBottomRow()');\n return this.getPinnedBottomRow(index);\n };\n /** Set the top pinned rows. Call with no rows / undefined to clear top pinned rows. */\n GridApi.prototype.setPinnedTopRowData = function (rows) {\n this.pinnedRowModel.setPinnedTopRowData(rows);\n };\n /** Set the bottom pinned rows. Call with no rows / undefined to clear bottom pinned rows. */\n GridApi.prototype.setPinnedBottomRowData = function (rows) {\n this.pinnedRowModel.setPinnedBottomRowData(rows);\n };\n /** Gets the number of top pinned rows. */\n GridApi.prototype.getPinnedTopRowCount = function () {\n return this.pinnedRowModel.getPinnedTopRowCount();\n };\n /** Gets the number of bottom pinned rows. */\n GridApi.prototype.getPinnedBottomRowCount = function () {\n return this.pinnedRowModel.getPinnedBottomRowCount();\n };\n /** Gets the top pinned row with the specified index. */\n GridApi.prototype.getPinnedTopRow = function (index) {\n return this.pinnedRowModel.getPinnedTopRow(index);\n };\n /** Gets the top pinned row with the specified index. */\n GridApi.prototype.getPinnedBottomRow = function (index) {\n return this.pinnedRowModel.getPinnedBottomRow(index);\n };\n /**\n * Call to set new column definitions. The grid will redraw all the column headers, and then redraw all of the rows.\n */\n GridApi.prototype.setColumnDefs = function (colDefs, source) {\n if (source === void 0) { source = \"api\"; }\n this.columnModel.setColumnDefs(colDefs, source);\n };\n /** Call to set new auto group column definition. The grid will recreate any auto-group columns if present. */\n GridApi.prototype.setAutoGroupColumnDef = function (colDef, source) {\n if (source === void 0) { source = \"api\"; }\n this.gridOptionsWrapper.setProperty('autoGroupColumnDef', colDef, true);\n };\n /** Call to set new Default Column Definition. */\n GridApi.prototype.setDefaultColDef = function (colDef, source) {\n if (source === void 0) { source = \"api\"; }\n this.gridOptionsWrapper.setProperty('defaultColDef', colDef, true);\n };\n GridApi.prototype.expireValueCache = function () {\n this.valueCache.expire();\n };\n /**\n * Returns an object with two properties:\n * - `top`: The top pixel position of the current scroll in the grid\n * - `bottom`: The bottom pixel position of the current scroll in the grid\n */\n GridApi.prototype.getVerticalPixelRange = function () {\n return this.gridBodyCon.getScrollFeature().getVScrollPosition();\n };\n /**\n * Returns an object with two properties:\n * - `left`: The left pixel position of the current scroll in the grid\n * - `right`: The right pixel position of the current scroll in the grid\n */\n GridApi.prototype.getHorizontalPixelRange = function () {\n return this.gridBodyCon.getScrollFeature().getHScrollPosition();\n };\n /** If `true`, the horizontal scrollbar will always be present, even if not required. Otherwise, it will only be displayed when necessary. */\n GridApi.prototype.setAlwaysShowHorizontalScroll = function (show) {\n this.gridOptionsWrapper.setProperty('alwaysShowHorizontalScroll', show);\n };\n /** If `true`, the vertical scrollbar will always be present, even if not required. Otherwise it will only be displayed when necessary. */\n GridApi.prototype.setAlwaysShowVerticalScroll = function (show) {\n this.gridOptionsWrapper.setProperty('alwaysShowVerticalScroll', show);\n };\n /** Force refresh all tool panels by calling their `refresh` method. */\n GridApi.prototype.refreshToolPanel = function () {\n if (!this.sideBarComp) {\n return;\n }\n this.sideBarComp.refresh();\n };\n /** Performs change detection on all cells, refreshing cells where required. */\n GridApi.prototype.refreshCells = function (params) {\n if (params === void 0) { params = {}; }\n if (Array.isArray(params)) {\n // the old version of refreshCells() took an array of rowNodes for the first argument\n console.warn('since AG Grid v11.1, refreshCells() now takes parameters, please see the documentation.');\n return;\n }\n this.rowRenderer.refreshCells(params);\n };\n /** Flash rows, columns or individual cells. */\n GridApi.prototype.flashCells = function (params) {\n if (params === void 0) { params = {}; }\n this.rowRenderer.flashCells(params);\n };\n /** Remove row(s) from the DOM and recreate them again from scratch. */\n GridApi.prototype.redrawRows = function (params) {\n if (params === void 0) { params = {}; }\n var rowNodes = params ? params.rowNodes : undefined;\n this.rowRenderer.redrawRows(rowNodes);\n };\n GridApi.prototype.setFunctionsReadOnly = function (readOnly) {\n this.gridOptionsWrapper.setProperty('functionsReadOnly', readOnly);\n };\n /** Redraws the header. Useful if a column name changes, or something else that changes how the column header is displayed. */\n GridApi.prototype.refreshHeader = function () {\n this.ctrlsService.getHeaderRowContainerCtrls().forEach(function (c) { return c.refresh(); });\n };\n /** Returns `true` if any filter is set. This includes quick filter, advanced filter or external filter. */\n GridApi.prototype.isAnyFilterPresent = function () {\n return this.filterManager.isAnyFilterPresent();\n };\n /** Returns `true` if any column filter is set, otherwise `false`. */\n GridApi.prototype.isColumnFilterPresent = function () {\n return this.filterManager.isAdvancedFilterPresent();\n };\n /** Returns `true` if the quick filter is set, otherwise `false`. */\n GridApi.prototype.isQuickFilterPresent = function () {\n return this.filterManager.isQuickFilterPresent();\n };\n /**\n * Returns the row model inside the table.\n * From here you can see the original rows, rows after filter has been applied,\n * rows after aggregation has been applied, and the final set of 'to be displayed' rows.\n */\n GridApi.prototype.getModel = function () {\n return this.rowModel;\n };\n /** Expand or collapse a specific row node. */\n GridApi.prototype.setRowNodeExpanded = function (rowNode, expanded) {\n if (rowNode) {\n rowNode.setExpanded(expanded);\n }\n };\n /**\n * If after getting the model, you expand or collapse a group, call this method to inform the grid.\n * It will work out the final set of 'to be displayed' rows again (i.e. expand or collapse the group visually).\n */\n GridApi.prototype.onGroupExpandedOrCollapsed = function (deprecated_refreshFromIndex) {\n if (missing(this.clientSideRowModel)) {\n console.warn('AG Grid: cannot call onGroupExpandedOrCollapsed unless using normal row model');\n }\n if (exists(deprecated_refreshFromIndex)) {\n console.warn('AG Grid: api.onGroupExpandedOrCollapsed - refreshFromIndex parameter is no longer used, the grid will refresh all rows');\n }\n // we don't really want the user calling this if only one rowNode was expanded, instead they should be\n // calling rowNode.setExpanded(boolean) - this way we do a 'keepRenderedRows=false' so that the whole\n // grid gets refreshed again - otherwise the row with the rowNodes that were changed won't get updated,\n // and thus the expand icon in the group cell won't get 'opened' or 'closed'.\n this.clientSideRowModel.refreshModel({ step: ClientSideRowModelSteps.MAP });\n };\n GridApi.prototype.refreshInMemoryRowModel = function (step) {\n console.warn(\"ag-grid: since version 18.x, api.refreshInMemoryRowModel() should be replaced with api.refreshClientSideRowModel()\");\n this.refreshClientSideRowModel(step);\n };\n /** Gets the Client-Side Row Model to refresh, executing the grouping, filtering and sorting again. */\n GridApi.prototype.refreshClientSideRowModel = function (step) {\n if (missing(this.clientSideRowModel)) {\n console.warn('cannot call refreshClientSideRowModel unless using normal row model');\n }\n var paramsStep = ClientSideRowModelSteps.EVERYTHING;\n var stepsMapped = {\n group: ClientSideRowModelSteps.EVERYTHING,\n filter: ClientSideRowModelSteps.FILTER,\n map: ClientSideRowModelSteps.MAP,\n aggregate: ClientSideRowModelSteps.AGGREGATE,\n sort: ClientSideRowModelSteps.SORT,\n pivot: ClientSideRowModelSteps.PIVOT\n };\n if (exists(step)) {\n paramsStep = stepsMapped[step];\n }\n if (missing(paramsStep)) {\n console.error(\"AG Grid: invalid step \" + step + \", available steps are \" + Object.keys(stepsMapped).join(', '));\n return;\n }\n var animate = !this.gridOptionsWrapper.isSuppressAnimationFrame();\n var modelParams = {\n step: paramsStep,\n keepRenderedRows: true,\n keepEditingRows: true,\n animate: animate\n };\n this.clientSideRowModel.refreshModel(modelParams);\n };\n /** Returns `true` when there are no more animation frames left to process. */\n GridApi.prototype.isAnimationFrameQueueEmpty = function () {\n return this.animationFrameService.isQueueEmpty();\n };\n GridApi.prototype.flushAllAnimationFrames = function () {\n this.animationFrameService.flushAllFrames();\n };\n /**\n * Returns the row node with the given ID.\n * The row node ID is the one you provide from the callback `getRowNodeId(data)`,\n * otherwise the ID is a number (cast as string) auto-generated by the grid when\n * the row data is set.\n */\n GridApi.prototype.getRowNode = function (id) {\n return this.rowModel.getRowNode(id);\n };\n /**\n * Gets the sizes that various UI elements will be rendered at with the current theme.\n * If you override the row or header height using `gridOptions`, the override value you provided will be returned.\n */\n GridApi.prototype.getSizesForCurrentTheme = function () {\n return {\n rowHeight: this.gridOptionsWrapper.getRowHeightAsNumber(),\n headerHeight: this.gridOptionsWrapper.getHeaderHeight()\n };\n };\n /** Expand all groups. */\n GridApi.prototype.expandAll = function () {\n if (this.clientSideRowModel) {\n this.clientSideRowModel.expandOrCollapseAll(true);\n }\n else if (this.serverSideRowModel) {\n this.serverSideRowModel.expandAll(true);\n }\n else {\n console.warn('AG Grid: expandAll only works with Client Side Row Model and Server Side Row Model');\n }\n };\n /** Collapse all groups. */\n GridApi.prototype.collapseAll = function () {\n if (this.clientSideRowModel) {\n this.clientSideRowModel.expandOrCollapseAll(false);\n }\n else if (this.serverSideRowModel) {\n this.serverSideRowModel.expandAll(false);\n }\n else {\n console.warn('AG Grid: collapseAll only works with Client Side Row Model and Server Side Row Model');\n }\n };\n /** Gets the tool panel instance corresponding to the supplied `id`. */\n GridApi.prototype.getToolPanelInstance = function (id) {\n if (!this.sideBarComp) {\n console.warn('AG Grid: toolPanel is only available in AG Grid Enterprise');\n return;\n }\n var comp = this.sideBarComp.getToolPanelInstance(id);\n return unwrapUserComp(comp);\n };\n GridApi.prototype.addVirtualRowListener = function (eventName, rowIndex, callback) {\n if (typeof eventName !== 'string') {\n console.warn('AG Grid: addVirtualRowListener is deprecated, please use addRenderedRowListener.');\n }\n this.addRenderedRowListener(eventName, rowIndex, callback);\n };\n /**\n * Registers a callback to a virtual row.\n * A virtual row is a row that is visually rendered on the screen (rows that are not visible because of the scroll position are not rendered).\n * Unlike normal events, you do not need to unregister rendered row listeners.\n * When the rendered row is removed from the grid, all associated rendered row listeners will also be removed.\n * Currently supports only one event, `virtualRowRemoved`;\n * listen for this event if your `cellRenderer` needs to do cleanup when the row no longer exists.\n */\n GridApi.prototype.addRenderedRowListener = function (eventName, rowIndex, callback) {\n if (eventName === 'virtualRowSelected') {\n console.warn(\"AG Grid: event virtualRowSelected is deprecated, to register for individual row\\n selection events, add a listener directly to the row node.\");\n }\n this.rowRenderer.addRenderedRowListener(eventName, rowIndex, callback);\n };\n /** Pass a quick filter text into the grid for filtering. */\n GridApi.prototype.setQuickFilter = function (newFilter) {\n this.filterManager.setQuickFilter(newFilter);\n };\n GridApi.prototype.selectIndex = function (index, tryMulti, suppressEvents) {\n console.warn('AG Grid: do not use api for selection, call node.setSelected(value) instead');\n if (suppressEvents) {\n console.warn('AG Grid: suppressEvents is no longer supported, stop listening for the event if you no longer want it');\n }\n this.selectionService.selectIndex(index, tryMulti);\n };\n GridApi.prototype.deselectIndex = function (index, suppressEvents) {\n if (suppressEvents === void 0) { suppressEvents = false; }\n console.warn('AG Grid: do not use api for selection, call node.setSelected(value) instead');\n if (suppressEvents) {\n console.warn('AG Grid: suppressEvents is no longer supported, stop listening for the event if you no longer want it');\n }\n this.selectionService.deselectIndex(index);\n };\n GridApi.prototype.selectNode = function (node, tryMulti, suppressEvents) {\n if (tryMulti === void 0) { tryMulti = false; }\n if (suppressEvents === void 0) { suppressEvents = false; }\n console.warn('AG Grid: API for selection is deprecated, call node.setSelected(value) instead');\n if (suppressEvents) {\n console.warn('AG Grid: suppressEvents is no longer supported, stop listening for the event if you no longer want it');\n }\n node.setSelectedParams({ newValue: true, clearSelection: !tryMulti });\n };\n GridApi.prototype.deselectNode = function (node, suppressEvents) {\n if (suppressEvents === void 0) { suppressEvents = false; }\n console.warn('AG Grid: API for selection is deprecated, call node.setSelected(value) instead');\n if (suppressEvents) {\n console.warn('AG Grid: suppressEvents is no longer supported, stop listening for the event if you no longer want it');\n }\n node.setSelectedParams({ newValue: false });\n };\n /** Select all rows, regardless of filtering and rows that are not visible due to grouping being enabled and their groups not expanded. */\n GridApi.prototype.selectAll = function () {\n this.selectionService.selectAllRowNodes();\n };\n /** Clear all row selections, regardless of filtering. */\n GridApi.prototype.deselectAll = function () {\n this.selectionService.deselectAllRowNodes();\n };\n /** Select all filtered rows. */\n GridApi.prototype.selectAllFiltered = function () {\n this.selectionService.selectAllRowNodes(true);\n };\n /** Clear all filtered selections. */\n GridApi.prototype.deselectAllFiltered = function () {\n this.selectionService.deselectAllRowNodes(true);\n };\n GridApi.prototype.recomputeAggregates = function () {\n if (missing(this.clientSideRowModel)) {\n console.warn('cannot call recomputeAggregates unless using normal row model');\n }\n console.warn(\"recomputeAggregates is deprecated, please call api.refreshClientSideRowModel('aggregate') instead\");\n this.clientSideRowModel.refreshModel({ step: ClientSideRowModelSteps.AGGREGATE });\n };\n /** Sets columns to adjust in size to fit the grid horizontally. */\n GridApi.prototype.sizeColumnsToFit = function () {\n this.gridBodyCon.sizeColumnsToFit();\n };\n /** Show the 'loading' overlay. */\n GridApi.prototype.showLoadingOverlay = function () {\n this.overlayWrapperComp.showLoadingOverlay();\n };\n /** Show the 'no rows' overlay. */\n GridApi.prototype.showNoRowsOverlay = function () {\n this.overlayWrapperComp.showNoRowsOverlay();\n };\n /** Hides the overlay if showing. */\n GridApi.prototype.hideOverlay = function () {\n this.overlayWrapperComp.hideOverlay();\n };\n GridApi.prototype.isNodeSelected = function (node) {\n console.warn('AG Grid: no need to call api.isNodeSelected(), just call node.isSelected() instead');\n return node.isSelected();\n };\n GridApi.prototype.getSelectedNodesById = function () {\n console.error('AG Grid: since version 3.4, getSelectedNodesById no longer exists, use getSelectedNodes() instead');\n return null;\n };\n /**\n * Returns a list of selected nodes.\n * Getting the underlying node (rather than the data) is useful when working with tree / aggregated data,\n * as the node can be traversed.\n */\n GridApi.prototype.getSelectedNodes = function () {\n return this.selectionService.getSelectedNodes();\n };\n /** Returns a list of selected rows (i.e. row data that you provided). */\n GridApi.prototype.getSelectedRows = function () {\n return this.selectionService.getSelectedRows();\n };\n /**\n * Returns a list of all selected nodes at 'best cost', a feature to be used with groups / trees.\n * If a group has all its children selected, then the group appears in the result, but not the children.\n * Designed for use with `'children'` as the group selection type, where groups don't actually appear in the selection normally.\n */\n GridApi.prototype.getBestCostNodeSelection = function () {\n return this.selectionService.getBestCostNodeSelection();\n };\n /** Retrieve rendered nodes. Due to virtualisation this will contain only the current visible rows and those in the buffer. */\n GridApi.prototype.getRenderedNodes = function () {\n return this.rowRenderer.getRenderedNodes();\n };\n GridApi.prototype.ensureColIndexVisible = function (index) {\n console.warn('AG Grid: ensureColIndexVisible(index) no longer supported, use ensureColumnVisible(colKey) instead.');\n };\n /**\n * Ensures the column is visible by scrolling the table if needed.\n * @param key - The column to ensure visible\n * @param position - Where the column will be positioned.\n * - `auto` - Scrolls the minimum amount to make sure the column is visible.\n * - `start` - Scrolls the column to the start of the viewport.\n * - `middle` - Scrolls the column to the middle of the viewport.\n * - `end` - Scrolls the column to the end of the viewport.\n */\n GridApi.prototype.ensureColumnVisible = function (key, position) {\n if (position === void 0) { position = 'auto'; }\n this.gridBodyCon.getScrollFeature().ensureColumnVisible(key, position);\n };\n /**\n * Ensures the row index is visible by vertically scrolling the grid.\n * If a position of `'top'`, `'middle'` or `'bottom'` is supplied, the grid will scroll the grid to place the row at the top, middle or bottom respectively.\n * Otherwise, the grid will do the minimum scrolling possible to show the row.\n * i.e.\n * - if the grid needs to scroll up then it will scroll so that the row is at the top,\n * - if the grid needs to scroll down then it will scroll so that the row is at the bottom,\n * - if the row is already in view then the grid will do nothing.\n */\n GridApi.prototype.ensureIndexVisible = function (index, position) {\n this.gridBodyCon.getScrollFeature().ensureIndexVisible(index, position);\n };\n /**\n * Ensures a row node is visible, scrolling the grid if needed.\n * Provide either:\n * - the node,\n * - the data object\n * - a comparator function (that takes the node as a parameter, and returns `true` for match or `false` for no match).\n */\n GridApi.prototype.ensureNodeVisible = function (comparator, position) {\n if (position === void 0) { position = null; }\n this.gridBodyCon.getScrollFeature().ensureNodeVisible(comparator, position);\n };\n /**\n * Similar to `forEachNode`, except lists all the leaf nodes.\n * This effectively goes through all the data that you provided to the grid before the grid performed any grouping.\n * If using tree data, goes through all the nodes for the data you provided, including nodes that have children,\n * but excluding groups the grid created where gaps were missing in the hierarchy.\n */\n GridApi.prototype.forEachLeafNode = function (callback) {\n if (missing(this.clientSideRowModel)) {\n console.warn('cannot call forEachNode unless using normal row model');\n }\n this.clientSideRowModel.forEachLeafNode(callback);\n };\n /**\n * Iterates through each node (row) in the grid and calls the callback for each node.\n * This works similar to the `forEach` method on a JavaScript array.\n * This is called for every node, ignoring any filtering or sorting applied within the grid.\n * If using the Infinite Row Model, then this gets called for each page loaded in the page cache.\n */\n GridApi.prototype.forEachNode = function (callback) {\n this.rowModel.forEachNode(callback);\n };\n /** Similar to `forEachNode`, except skips any filtered out data. */\n GridApi.prototype.forEachNodeAfterFilter = function (callback) {\n if (missing(this.clientSideRowModel)) {\n console.warn('cannot call forEachNodeAfterFilter unless using normal row model');\n }\n this.clientSideRowModel.forEachNodeAfterFilter(callback);\n };\n /** Similar to `forEachNodeAfterFilter`, except the callbacks are called in the order the rows are displayed in the grid. */\n GridApi.prototype.forEachNodeAfterFilterAndSort = function (callback) {\n if (missing(this.clientSideRowModel)) {\n console.warn('cannot call forEachNodeAfterFilterAndSort unless using normal row model');\n }\n this.clientSideRowModel.forEachNodeAfterFilterAndSort(callback);\n };\n /**\n * Returns the filter component instance for a column.\n * `key` can be a string field name or a ColDef object (matches on object reference, useful if field names are not unique).\n * If your filter is created asynchronously, `getFilterInstance` will return `null` so you will need to use the `callback` to access the filter instance instead.\n */\n GridApi.prototype.getFilterInstance = function (key, callback) {\n var res = this.getFilterInstanceImpl(key, function (instance) {\n if (!callback) {\n return;\n }\n var unwrapped = unwrapUserComp(instance);\n callback(unwrapped);\n });\n var unwrapped = unwrapUserComp(res);\n return unwrapped;\n };\n GridApi.prototype.getFilterInstanceImpl = function (key, callback) {\n var column = this.columnModel.getPrimaryColumn(key);\n if (!column) {\n return undefined;\n }\n var filterPromise = this.filterManager.getFilterComponent(column, 'NO_UI');\n var currentValue = filterPromise && filterPromise.resolveNow(null, function (filterComp) { return filterComp; });\n if (currentValue) {\n setTimeout(callback, 0, currentValue);\n }\n else if (filterPromise) {\n filterPromise.then(function (comp) {\n callback(comp);\n });\n }\n return currentValue;\n };\n /** Destroys a filter. Useful to force a particular filter to be created from scratch again. */\n GridApi.prototype.destroyFilter = function (key) {\n var column = this.columnModel.getPrimaryColumn(key);\n if (column) {\n return this.filterManager.destroyFilter(column, \"filterDestroyed\");\n }\n };\n /** Gets the status panel instance corresponding to the supplied `id`. */\n GridApi.prototype.getStatusPanel = function (key) {\n if (!this.statusBarService) {\n return;\n }\n var comp = this.statusBarService.getStatusPanel(key);\n return unwrapUserComp(comp);\n };\n GridApi.prototype.getColumnDef = function (key) {\n var column = this.columnModel.getPrimaryColumn(key);\n if (column) {\n return column.getColDef();\n }\n return null;\n };\n /**\n * Returns the current column definitions.\n */\n GridApi.prototype.getColumnDefs = function () { return this.columnModel.getColumnDefs(); };\n /** Informs the grid that a filter has changed. This is typically called after a filter change through one of the filter APIs. */\n GridApi.prototype.onFilterChanged = function () {\n this.filterManager.onFilterChanged();\n };\n /**\n * Gets the grid to act as if the sort was changed.\n * Useful if you update some values and want to get the grid to reorder them according to the new values.\n */\n GridApi.prototype.onSortChanged = function () {\n this.sortController.onSortChanged();\n };\n /** Sets the state of all the advanced filters. Provide it with what you get from `getFilterModel()` to restore filter state. */\n GridApi.prototype.setFilterModel = function (model) {\n this.filterManager.setFilterModel(model);\n };\n /** Gets the current state of all the advanced filters. Used for saving filter state. */\n GridApi.prototype.getFilterModel = function () {\n return this.filterManager.getFilterModel();\n };\n /** Returns the focused cell (or the last focused cell if the grid lost focus). */\n GridApi.prototype.getFocusedCell = function () {\n return this.focusService.getFocusedCell();\n };\n /** Clears the focused cell. */\n GridApi.prototype.clearFocusedCell = function () {\n return this.focusService.clearFocusedCell();\n };\n /** Sets the focus to the specified cell. `rowPinned` can be either 'top', 'bottom' or null (for not pinned). */\n GridApi.prototype.setFocusedCell = function (rowIndex, colKey, rowPinned) {\n this.focusService.setFocusedCell(rowIndex, colKey, rowPinned, true);\n };\n /** Sets the `suppressRowDrag` property. */\n GridApi.prototype.setSuppressRowDrag = function (value) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_SUPPRESS_ROW_DRAG, value);\n };\n /** Sets the `suppressMoveWhenRowDragging` property. */\n GridApi.prototype.setSuppressMoveWhenRowDragging = function (value) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_SUPPRESS_MOVE_WHEN_ROW_DRAG, value);\n };\n /** Sets the `suppressRowClickSelection` property. */\n GridApi.prototype.setSuppressRowClickSelection = function (value) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_SUPPRESS_ROW_CLICK_SELECTION, value);\n };\n /** Adds a drop zone outside of the grid where rows can be dropped. */\n GridApi.prototype.addRowDropZone = function (params) {\n this.gridBodyCon.getRowDragFeature().addRowDropZone(params);\n };\n /** Removes an external drop zone added by `addRowDropZone`. */\n GridApi.prototype.removeRowDropZone = function (params) {\n var activeDropTarget = this.dragAndDropService.findExternalZone(params);\n if (activeDropTarget) {\n this.dragAndDropService.removeDropTarget(activeDropTarget);\n }\n };\n /** Returns the `RowDropZoneParams` to be used by another grid's `addRowDropZone` method. */\n GridApi.prototype.getRowDropZoneParams = function (events) {\n return this.gridBodyCon.getRowDragFeature().getRowDropZone(events);\n };\n /** Sets the height in pixels for the row containing the column label header. */\n GridApi.prototype.setHeaderHeight = function (headerHeight) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_HEADER_HEIGHT, headerHeight);\n };\n /**\n * Switch between layout options: `normal`, `autoHeight`, `print`.\n * Defaults to `normal` if no domLayout provided.\n */\n GridApi.prototype.setDomLayout = function (domLayout) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_DOM_LAYOUT, domLayout);\n };\n /** Sets the `enableCellTextSelection` property. */\n GridApi.prototype.setEnableCellTextSelection = function (selectable) {\n this.gridBodyCon.setCellTextSelection(selectable);\n };\n /** Sets the preferred direction for the selection fill handle. */\n GridApi.prototype.setFillHandleDirection = function (direction) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_FILL_HANDLE_DIRECTION, direction);\n };\n /** Sets the height in pixels for the rows containing header column groups. */\n GridApi.prototype.setGroupHeaderHeight = function (headerHeight) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_GROUP_HEADER_HEIGHT, headerHeight);\n };\n /** Sets the height in pixels for the row containing the floating filters. */\n GridApi.prototype.setFloatingFiltersHeight = function (headerHeight) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_FLOATING_FILTERS_HEIGHT, headerHeight);\n };\n /** Sets the height in pixels for the row containing the columns when in pivot mode. */\n GridApi.prototype.setPivotHeaderHeight = function (headerHeight) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_PIVOT_HEADER_HEIGHT, headerHeight);\n };\n /** Sets the height in pixels for the row containing header column groups when in pivot mode. */\n GridApi.prototype.setPivotGroupHeaderHeight = function (headerHeight) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_PIVOT_GROUP_HEADER_HEIGHT, headerHeight);\n };\n GridApi.prototype.setIsExternalFilterPresent = function (isExternalFilterPresentFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_IS_EXTERNAL_FILTER_PRESENT, isExternalFilterPresentFunc);\n };\n GridApi.prototype.setDoesExternalFilterPass = function (doesExternalFilterPassFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_DOES_EXTERNAL_FILTER_PASS, doesExternalFilterPassFunc);\n };\n GridApi.prototype.setNavigateToNextCell = function (navigateToNextCellFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_NAVIGATE_TO_NEXT_CELL, navigateToNextCellFunc);\n };\n GridApi.prototype.setTabToNextCell = function (tabToNextCellFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_TAB_TO_NEXT_CELL, tabToNextCellFunc);\n };\n GridApi.prototype.setTabToNextHeader = function (tabToNextHeaderFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_TAB_TO_NEXT_HEADER, tabToNextHeaderFunc);\n };\n GridApi.prototype.setNavigateToNextHeader = function (navigateToNextHeaderFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_NAVIGATE_TO_NEXT_HEADER, navigateToNextHeaderFunc);\n };\n GridApi.prototype.setGroupRowAggNodes = function (groupRowAggNodesFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_GROUP_ROW_AGG_NODES, groupRowAggNodesFunc);\n };\n GridApi.prototype.setGetBusinessKeyForNode = function (getBusinessKeyForNodeFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_GET_BUSINESS_KEY_FOR_NODE, getBusinessKeyForNodeFunc);\n };\n GridApi.prototype.setGetChildCount = function (getChildCountFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_GET_CHILD_COUNT, getChildCountFunc);\n };\n GridApi.prototype.setProcessRowPostCreate = function (processRowPostCreateFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_PROCESS_ROW_POST_CREATE, processRowPostCreateFunc);\n };\n GridApi.prototype.setGetRowNodeId = function (getRowNodeIdFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_GET_ROW_NODE_ID, getRowNodeIdFunc);\n };\n GridApi.prototype.setGetRowClass = function (rowClassFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_GET_ROW_CLASS, rowClassFunc);\n };\n GridApi.prototype.setIsFullWidthCell = function (isFullWidthCellFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_IS_FULL_WIDTH_CELL, isFullWidthCellFunc);\n };\n GridApi.prototype.setIsRowSelectable = function (isRowSelectableFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_IS_ROW_SELECTABLE, isRowSelectableFunc);\n };\n GridApi.prototype.setIsRowMaster = function (isRowMasterFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_IS_ROW_MASTER, isRowMasterFunc);\n };\n GridApi.prototype.setPostSort = function (postSortFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_POST_SORT, postSortFunc);\n };\n GridApi.prototype.setGetDocument = function (getDocumentFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_GET_DOCUMENT, getDocumentFunc);\n };\n GridApi.prototype.setGetContextMenuItems = function (getContextMenuItemsFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_GET_CONTEXT_MENU_ITEMS, getContextMenuItemsFunc);\n };\n GridApi.prototype.setGetMainMenuItems = function (getMainMenuItemsFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_GET_MAIN_MENU_ITEMS, getMainMenuItemsFunc);\n };\n GridApi.prototype.setProcessCellForClipboard = function (processCellForClipboardFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_PROCESS_CELL_FOR_CLIPBOARD, processCellForClipboardFunc);\n };\n GridApi.prototype.setSendToClipboard = function (sendToClipboardFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_SEND_TO_CLIPBOARD, sendToClipboardFunc);\n };\n GridApi.prototype.setProcessCellFromClipboard = function (processCellFromClipboardFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_PROCESS_CELL_FROM_CLIPBOARD, processCellFromClipboardFunc);\n };\n GridApi.prototype.setProcessSecondaryColDef = function (processSecondaryColDefFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_PROCESS_TO_SECONDARY_COLDEF, processSecondaryColDefFunc);\n };\n GridApi.prototype.setProcessSecondaryColGroupDef = function (processSecondaryColGroupDefFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_PROCESS_SECONDARY_COL_GROUP_DEF, processSecondaryColGroupDefFunc);\n };\n GridApi.prototype.setPostProcessPopup = function (postProcessPopupFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_POST_PROCESS_POPUP, postProcessPopupFunc);\n };\n GridApi.prototype.setDefaultGroupOrderComparator = function (defaultGroupOrderComparatorFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_DEFAULT_GROUP_ORDER_COMPARATOR, defaultGroupOrderComparatorFunc);\n };\n GridApi.prototype.setGetChartToolbarItems = function (getChartToolbarItemsFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_GET_CHART_TOOLBAR_ITEMS, getChartToolbarItemsFunc);\n };\n GridApi.prototype.setPaginationNumberFormatter = function (paginationNumberFormatterFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_PAGINATION_NUMBER_FORMATTER, paginationNumberFormatterFunc);\n };\n GridApi.prototype.setGetServerSideStoreParams = function (getServerSideStoreParamsFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_GET_SERVER_SIDE_STORE_PARAMS, getServerSideStoreParamsFunc);\n };\n GridApi.prototype.setIsServerSideGroupOpenByDefault = function (isServerSideGroupOpenByDefaultFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_IS_SERVER_SIDE_GROUPS_OPEN_BY_DEFAULT, isServerSideGroupOpenByDefaultFunc);\n };\n GridApi.prototype.setIsApplyServerSideTransaction = function (isApplyServerSideTransactionFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_IS_APPLY_SERVER_SIDE_TRANSACTION, isApplyServerSideTransactionFunc);\n };\n GridApi.prototype.setIsServerSideGroup = function (isServerSideGroupFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_IS_SERVER_SIDE_GROUP, isServerSideGroupFunc);\n };\n GridApi.prototype.setGetServerSideGroupKey = function (getServerSideGroupKeyFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_GET_SERVER_SIDE_GROUP_KEY, getServerSideGroupKeyFunc);\n };\n GridApi.prototype.setGetRowStyle = function (rowStyleFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_GET_ROW_STYLE, rowStyleFunc);\n };\n GridApi.prototype.setGetRowHeight = function (rowHeightFunc) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_GET_ROW_HEIGHT, rowHeightFunc);\n };\n /** Returns `true` if the side bar is visible. */\n GridApi.prototype.isSideBarVisible = function () {\n return this.sideBarComp ? this.sideBarComp.isDisplayed() : false;\n };\n /** Show/hide the entire side bar, including any visible panel and the tab buttons. */\n GridApi.prototype.setSideBarVisible = function (show) {\n if (!this.sideBarComp) {\n if (show) {\n console.warn('AG Grid: sideBar is not loaded');\n }\n return;\n }\n this.sideBarComp.setDisplayed(show);\n };\n /** Sets the side bar position relative to the grid. Possible values are `'left'` or `'right'`. */\n GridApi.prototype.setSideBarPosition = function (position) {\n if (!this.sideBarComp) {\n console.warn('AG Grid: sideBar is not loaded');\n return;\n }\n this.sideBarComp.setSideBarPosition(position);\n };\n /** Opens a particular tool panel. Provide the ID of the tool panel to open. */\n GridApi.prototype.openToolPanel = function (key) {\n if (!this.sideBarComp) {\n console.warn('AG Grid: toolPanel is only available in AG Grid Enterprise');\n return;\n }\n this.sideBarComp.openToolPanel(key);\n };\n /** Closes the currently open tool panel (if any). */\n GridApi.prototype.closeToolPanel = function () {\n if (!this.sideBarComp) {\n console.warn('AG Grid: toolPanel is only available in AG Grid Enterprise');\n return;\n }\n this.sideBarComp.close();\n };\n /** Returns the ID of the currently shown tool panel if any, otherwise `null`. */\n GridApi.prototype.getOpenedToolPanel = function () {\n return this.sideBarComp ? this.sideBarComp.openedItem() : null;\n };\n /** Returns the current side bar configuration. If a shortcut was used, returns the detailed long form. */\n GridApi.prototype.getSideBar = function () {\n return this.gridOptionsWrapper.getSideBar();\n };\n /** Resets the side bar to the provided configuration. The parameter is the same as the sideBar grid property. The side bar is re-created from scratch with the new config. */\n GridApi.prototype.setSideBar = function (def) {\n this.gridOptionsWrapper.setProperty('sideBar', SideBarDefParser.parse(def));\n };\n GridApi.prototype.setSuppressClipboardPaste = function (value) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_SUPPRESS_CLIPBOARD_PASTE, value);\n };\n /** Returns `true` if the tool panel is showing, otherwise `false`. */\n GridApi.prototype.isToolPanelShowing = function () {\n return this.sideBarComp.isToolPanelShowing();\n };\n GridApi.prototype.doLayout = function () {\n var message = \"AG Grid - since version 25.1, doLayout was taken out, as it's not needed. The grid responds to grid size changes automatically\";\n doOnce(function () { return console.warn(message); }, 'doLayoutDeprecated');\n };\n /** Tells the grid to recalculate the row heights. */\n GridApi.prototype.resetRowHeights = function () {\n if (exists(this.clientSideRowModel)) {\n if (this.columnModel.isAutoRowHeightActive()) {\n console.warn('AG Grid: calling gridApi.resetRowHeights() makes no sense when using Auto Row Height.');\n return;\n }\n this.clientSideRowModel.resetRowHeights();\n }\n };\n GridApi.prototype.setGroupRemoveSingleChildren = function (value) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_GROUP_REMOVE_SINGLE_CHILDREN, value);\n };\n GridApi.prototype.setGroupRemoveLowestSingleChildren = function (value) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_GROUP_REMOVE_LOWEST_SINGLE_CHILDREN, value);\n };\n /** Tells the grid a row height has changed. To be used after calling `rowNode.setRowHeight(newHeight)`. */\n GridApi.prototype.onRowHeightChanged = function () {\n if (this.clientSideRowModel) {\n this.clientSideRowModel.onRowHeightChanged();\n }\n else if (this.serverSideRowModel) {\n this.serverSideRowModel.onRowHeightChanged();\n }\n };\n /**\n * Gets the value for a column for a particular `rowNode` (row).\n * This is useful if you want the raw value of a cell e.g. if implementing your own CSV export.\n */\n GridApi.prototype.getValue = function (colKey, rowNode) {\n var column = this.columnModel.getPrimaryColumn(colKey);\n if (missing(column)) {\n column = this.columnModel.getGridColumn(colKey);\n }\n if (missing(column)) {\n return null;\n }\n return this.valueService.getValue(column, rowNode);\n };\n /** Add an event listener for the specified `eventType`. Works similar to `addEventListener` for a browser DOM element. */\n GridApi.prototype.addEventListener = function (eventType, listener) {\n var async = this.gridOptionsWrapper.useAsyncEvents();\n this.eventService.addEventListener(eventType, listener, async);\n };\n /** Add an event listener for all event types coming from the grid. */\n GridApi.prototype.addGlobalListener = function (listener) {\n var async = this.gridOptionsWrapper.useAsyncEvents();\n this.eventService.addGlobalListener(listener, async);\n };\n /** Remove an event listener. */\n GridApi.prototype.removeEventListener = function (eventType, listener) {\n var async = this.gridOptionsWrapper.useAsyncEvents();\n this.eventService.removeEventListener(eventType, listener, async);\n };\n /** Remove a global event listener. */\n GridApi.prototype.removeGlobalListener = function (listener) {\n var async = this.gridOptionsWrapper.useAsyncEvents();\n this.eventService.removeGlobalListener(listener, async);\n };\n GridApi.prototype.dispatchEvent = function (event) {\n this.eventService.dispatchEvent(event);\n };\n /** Will destroy the grid and release resources. If you are using a framework you do not need to call this, as the grid links in with the framework lifecycle. However if you are using Web Components or native JavaScript, you do need to call this, to avoid a memory leak in your application. */\n GridApi.prototype.destroy = function () {\n // this is needed as GridAPI is a bean, and GridAPI.destroy() is called as part\n // of context.destroy(). so we need to stop the infinite loop.\n if (this.destroyCalled) {\n return;\n }\n this.destroyCalled = true;\n // destroy the UI first (as they use the services)\n var gridCtrl = this.ctrlsService.getGridCtrl();\n if (gridCtrl) {\n gridCtrl.destroyGridUi();\n }\n // destroy the services\n this.context.destroy();\n };\n GridApi.prototype.cleanDownReferencesToAvoidMemoryLeakInCaseApplicationIsKeepingReferenceToDestroyedGrid = function () {\n // some users were raising support issues with regards memory leaks. the problem was the customers applications\n // were keeping references to the API. trying to educate them all would be difficult, easier to just remove\n // all references in the API so at least the core grid can be garbage collected.\n //\n // wait about 100ms before clearing down the references, in case user has some cleanup to do,\n // and needs to deference the API first\n setTimeout(removeAllReferences.bind(window, this, 'Grid API'), 100);\n };\n GridApi.prototype.warnIfDestroyed = function (methodName) {\n if (this.destroyCalled) {\n console.warn(\"AG Grid: Grid API method \" + methodName + \" was called on a grid that was destroyed.\");\n }\n return this.destroyCalled;\n };\n /** Reset the quick filter cache text on every rowNode. */\n GridApi.prototype.resetQuickFilter = function () {\n if (this.warnIfDestroyed('resetQuickFilter')) {\n return;\n }\n this.rowModel.forEachNode(function (node) { return node.quickFilterAggregateText = null; });\n };\n GridApi.prototype.getRangeSelections = function () {\n console.warn(\"AG Grid: in v20.1.x, api.getRangeSelections() is gone, please use getCellRanges() instead.\\n We had to change how cell selections works a small bit to allow charting to integrate. The return type of\\n getCellRanges() is a bit different, please check the AG Grid documentation.\");\n return null;\n };\n /** Returns the list of selected cell ranges. */\n GridApi.prototype.getCellRanges = function () {\n if (this.rangeService) {\n return this.rangeService.getCellRanges();\n }\n console.warn('AG Grid: cell range selection is only available in AG Grid Enterprise');\n return null;\n };\n GridApi.prototype.camelCaseToHumanReadable = function (camelCase) {\n return camelCaseToHumanText(camelCase);\n };\n GridApi.prototype.addRangeSelection = function (deprecatedNoLongerUsed) {\n console.warn('AG Grid: As of version 21.x, range selection changed slightly to allow charting integration. Please call api.addCellRange() instead of api.addRangeSelection()');\n };\n /** Adds the provided cell range to the selected ranges. */\n GridApi.prototype.addCellRange = function (params) {\n if (!this.rangeService) {\n console.warn('AG Grid: cell range selection is only available in AG Grid Enterprise');\n }\n this.rangeService.addCellRange(params);\n };\n /** Clears the selected ranges. */\n GridApi.prototype.clearRangeSelection = function () {\n if (!this.rangeService) {\n console.warn('AG Grid: cell range selection is only available in AG Grid Enterprise');\n }\n this.rangeService.removeAllCellRanges();\n };\n /** Reverts the last cell edit. */\n GridApi.prototype.undoCellEditing = function () {\n this.undoRedoService.undo();\n };\n /** Re-applies the most recently undone cell edit. */\n GridApi.prototype.redoCellEditing = function () {\n this.undoRedoService.redo();\n };\n /** Returns current number of available cell edit undo operations. */\n GridApi.prototype.getCurrentUndoSize = function () {\n return this.undoRedoService.getCurrentUndoStackSize();\n };\n /** Returns current number of available cell edit redo operations. */\n GridApi.prototype.getCurrentRedoSize = function () {\n return this.undoRedoService.getCurrentRedoStackSize();\n };\n /** Returns a list of models with information about the charts that are currently rendered from the grid. */\n GridApi.prototype.getChartModels = function () {\n if (ModuleRegistry.assertRegistered(ModuleNames.RangeSelectionModule, 'api.getChartModels') &&\n ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, 'api.getChartModels')) {\n return this.chartService.getChartModels();\n }\n };\n /** Returns the `ChartRef` using the supplied `chartId`. */\n GridApi.prototype.getChartRef = function (chartId) {\n if (ModuleRegistry.assertRegistered(ModuleNames.RangeSelectionModule, 'api.getChartRef') &&\n ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, 'api.getChartRef')) {\n return this.chartService.getChartRef(chartId);\n }\n };\n /** Returns a string containing the requested data URL which contains a representation of the chart image. */\n GridApi.prototype.getChartImageDataURL = function (params) {\n if (ModuleRegistry.assertRegistered(ModuleNames.RangeSelectionModule, 'api.getChartImageDataURL') &&\n ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, 'api.getChartImageDataURL')) {\n return this.chartService.getChartImageDataURL(params);\n }\n };\n /** Used to programmatically create charts from a range. */\n GridApi.prototype.createRangeChart = function (params) {\n if (ModuleRegistry.assertRegistered(ModuleNames.RangeSelectionModule, 'api.createRangeChart') &&\n ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, 'api.createRangeChart')) {\n return this.chartService.createRangeChart(params);\n }\n };\n /** Used to programmatically create cross filter charts from a range. */\n GridApi.prototype.createCrossFilterChart = function (params) {\n if (ModuleRegistry.assertRegistered(ModuleNames.RangeSelectionModule, 'api.createCrossFilterChart') &&\n ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, 'api.createCrossFilterChart')) {\n return this.chartService.createCrossFilterChart(params);\n }\n };\n /** Restores a chart using the `ChartModel` that was previously obtained from `getChartModels()`. */\n GridApi.prototype.restoreChart = function (chartModel, chartContainer) {\n if (ModuleRegistry.assertRegistered(ModuleNames.RangeSelectionModule, 'api.restoreChart') &&\n ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, 'api.restoreChart')) {\n return this.chartService.restoreChart(chartModel, chartContainer);\n }\n };\n /** Used to programmatically create pivot charts from a grid. */\n GridApi.prototype.createPivotChart = function (params) {\n if (ModuleRegistry.assertRegistered(ModuleNames.RangeSelectionModule, 'api.createPivotChart') &&\n ModuleRegistry.assertRegistered(ModuleNames.GridChartsModule, 'api.createPivotChart')) {\n return this.chartService.createPivotChart(params);\n }\n };\n /** Copies the selected rows to the clipboard. */\n GridApi.prototype.copySelectedRowsToClipboard = function (params) {\n if (!this.clipboardService) {\n console.warn('AG Grid: clipboard is only available in AG Grid Enterprise');\n }\n this.clipboardService.copySelectedRowsToClipboard(params);\n };\n /** Copies the selected ranges to the clipboard. */\n GridApi.prototype.copySelectedRangeToClipboard = function (params) {\n if (!this.clipboardService) {\n console.warn('AG Grid: clipboard is only available in AG Grid Enterprise');\n }\n this.clipboardService.copySelectedRangeToClipboard(params);\n };\n /** Copies the selected range down, similar to `Ctrl + D` in Excel. */\n GridApi.prototype.copySelectedRangeDown = function () {\n if (!this.clipboardService) {\n console.warn('AG Grid: clipboard is only available in AG Grid Enterprise');\n }\n this.clipboardService.copyRangeDown();\n };\n /** Shows the column menu after and positions it relative to the provided button element. Use in conjunction with your own header template. */\n GridApi.prototype.showColumnMenuAfterButtonClick = function (colKey, buttonElement) {\n // use grid column so works with pivot mode\n var column = this.columnModel.getGridColumn(colKey);\n this.menuFactory.showMenuAfterButtonClick(column, buttonElement, 'columnMenu');\n };\n /** Shows the column menu after and positions it relative to the mouse event. Use in conjunction with your own header template. */\n GridApi.prototype.showColumnMenuAfterMouseClick = function (colKey, mouseEvent) {\n // use grid column so works with pivot mode\n var column = this.columnModel.getGridColumn(colKey);\n if (!column) {\n column = this.columnModel.getPrimaryColumn(colKey);\n }\n if (!column) {\n console.error(\"AG Grid: column '\" + colKey + \"' not found\");\n return;\n }\n this.menuFactory.showMenuAfterMouseEvent(column, mouseEvent);\n };\n /** Hides any visible context menu or column menu. */\n GridApi.prototype.hidePopupMenu = function () {\n // hide the context menu if in enterprise\n if (this.contextMenuFactory) {\n this.contextMenuFactory.hideActiveMenu();\n }\n // and hide the column menu always\n this.menuFactory.hideActiveMenu();\n };\n /** DOM element to use as the popup parent for grid popups (context menu, column menu etc). */\n GridApi.prototype.setPopupParent = function (ePopupParent) {\n this.gridOptionsWrapper.setProperty(GridOptionsWrapper.PROP_POPUP_PARENT, ePopupParent);\n };\n /** Navigates the grid focus to the next cell, as if tabbing. */\n GridApi.prototype.tabToNextCell = function (event) {\n return this.navigationService.tabToNextCell(false, event);\n };\n /** Navigates the grid focus to the previous cell, as if shift-tabbing. */\n GridApi.prototype.tabToPreviousCell = function (event) {\n return this.navigationService.tabToNextCell(true, event);\n };\n /** Returns the list of active cell renderer instances. */\n GridApi.prototype.getCellRendererInstances = function (params) {\n if (params === void 0) { params = {}; }\n var res = this.rowRenderer.getCellRendererInstances(params);\n var unwrapped = res.map(unwrapUserComp);\n return unwrapped;\n };\n /** Returns the list of active cell editor instances. Optionally provide parameters to restrict to certain columns / row nodes. */\n GridApi.prototype.getCellEditorInstances = function (params) {\n if (params === void 0) { params = {}; }\n var res = this.rowRenderer.getCellEditorInstances(params);\n var unwrapped = res.map(unwrapUserComp);\n return unwrapped;\n };\n /** If the grid is editing, returns back details of the editing cell(s). */\n GridApi.prototype.getEditingCells = function () {\n return this.rowRenderer.getEditingCells();\n };\n /** If a cell is editing, it stops the editing. Pass `true` if you want to cancel the editing (i.e. don't accept changes). */\n GridApi.prototype.stopEditing = function (cancel) {\n if (cancel === void 0) { cancel = false; }\n this.rowRenderer.stopEditing(cancel);\n };\n /** Start editing the provided cell. If another cell is editing, the editing will be stopped in that other cell. */\n GridApi.prototype.startEditingCell = function (params) {\n var column = this.columnModel.getGridColumn(params.colKey);\n if (!column) {\n console.warn(\"AG Grid: no column found for \" + params.colKey);\n return;\n }\n var cellPosition = {\n rowIndex: params.rowIndex,\n rowPinned: params.rowPinned || null,\n column: column\n };\n var notPinned = params.rowPinned == null;\n if (notPinned) {\n this.gridBodyCon.getScrollFeature().ensureIndexVisible(params.rowIndex);\n }\n var cell = this.navigationService.getCellByPosition(cellPosition);\n if (!cell) {\n return;\n }\n cell.startRowOrCellEdit(params.key, params.charPress);\n };\n /** Add an aggregation function with the specified key. */\n GridApi.prototype.addAggFunc = function (key, aggFunc) {\n if (this.aggFuncService) {\n this.aggFuncService.addAggFunc(key, aggFunc);\n }\n };\n /** Add aggregations function with the specified keys. */\n GridApi.prototype.addAggFuncs = function (aggFuncs) {\n if (this.aggFuncService) {\n this.aggFuncService.addAggFuncs(aggFuncs);\n }\n };\n /** Clears all aggregation functions (including those provided by the grid). */\n GridApi.prototype.clearAggFuncs = function () {\n if (this.aggFuncService) {\n this.aggFuncService.clear();\n }\n };\n /** Apply transactions to the server side row model. */\n GridApi.prototype.applyServerSideTransaction = function (transaction) {\n if (!this.serverSideTransactionManager) {\n console.warn('AG Grid: Cannot apply Server Side Transaction if not using the Server Side Row Model.');\n return;\n }\n return this.serverSideTransactionManager.applyTransaction(transaction);\n };\n GridApi.prototype.applyServerSideTransactionAsync = function (transaction, callback) {\n if (!this.serverSideTransactionManager) {\n console.warn('AG Grid: Cannot apply Server Side Transaction if not using the Server Side Row Model.');\n return;\n }\n return this.serverSideTransactionManager.applyTransactionAsync(transaction, callback);\n };\n /** Gets all failed server side loads to retry. */\n GridApi.prototype.retryServerSideLoads = function () {\n if (!this.serverSideRowModel) {\n console.warn('AG Grid: API retryServerSideLoads() can only be used when using Server-Side Row Model.');\n return;\n }\n this.serverSideRowModel.retryLoads();\n };\n GridApi.prototype.flushServerSideAsyncTransactions = function () {\n if (!this.serverSideTransactionManager) {\n console.warn('AG Grid: Cannot flush Server Side Transaction if not using the Server Side Row Model.');\n return;\n }\n return this.serverSideTransactionManager.flushAsyncTransactions();\n };\n /** Update row data. Pass a transaction object with lists for `add`, `remove` and `update`. */\n GridApi.prototype.applyTransaction = function (rowDataTransaction) {\n if (!this.clientSideRowModel) {\n console.error('AG Grid: updateRowData() only works with ClientSideRowModel. Working with InfiniteRowModel was deprecated in v23.1 and removed in v24.1');\n return;\n }\n var res = this.clientSideRowModel.updateRowData(rowDataTransaction);\n // refresh all the full width rows\n this.rowRenderer.refreshFullWidthRows(res.update);\n // do change detection for all present cells\n if (!this.gridOptionsWrapper.isSuppressChangeDetection()) {\n this.rowRenderer.refreshCells();\n }\n return res;\n };\n /** @deprecated */\n GridApi.prototype.updateRowData = function (rowDataTransaction) {\n var message = 'AG Grid: as of v23.1, grid API updateRowData(transaction) is now called applyTransaction(transaction). updateRowData is deprecated and will be removed in a future major release.';\n doOnce(function () { return console.warn(message); }, 'updateRowData deprecated');\n return this.applyTransaction(rowDataTransaction);\n };\n /** Same as `applyTransaction` except executes asynchronously for efficiency. */\n GridApi.prototype.applyTransactionAsync = function (rowDataTransaction, callback) {\n if (!this.clientSideRowModel) {\n console.error('AG Grid: api.applyTransactionAsync() only works with ClientSideRowModel.');\n return;\n }\n this.clientSideRowModel.batchUpdateRowData(rowDataTransaction, callback);\n };\n /** Executes any remaining asynchronous grid transactions, if any are waiting to be executed. */\n GridApi.prototype.flushAsyncTransactions = function () {\n if (!this.clientSideRowModel) {\n console.error('AG Grid: api.applyTransactionAsync() only works with ClientSideRowModel.');\n return;\n }\n this.clientSideRowModel.flushAsyncTransactions();\n };\n /** @deprecated */\n GridApi.prototype.batchUpdateRowData = function (rowDataTransaction, callback) {\n var message = 'AG Grid: as of v23.1, grid API batchUpdateRowData(transaction, callback) is now called applyTransactionAsync(transaction, callback). batchUpdateRowData is deprecated and will be removed in a future major release.';\n doOnce(function () { return console.warn(message); }, 'batchUpdateRowData deprecated');\n this.applyTransactionAsync(rowDataTransaction, callback);\n };\n GridApi.prototype.insertItemsAtIndex = function (index, items, skipRefresh) {\n if (skipRefresh === void 0) { skipRefresh = false; }\n console.warn('AG Grid: insertItemsAtIndex() is deprecated, use updateRowData(transaction) instead.');\n this.updateRowData({ add: items, addIndex: index, update: null, remove: null });\n };\n GridApi.prototype.removeItems = function (rowNodes, skipRefresh) {\n if (skipRefresh === void 0) { skipRefresh = false; }\n console.warn('AG Grid: removeItems() is deprecated, use updateRowData(transaction) instead.');\n var dataToRemove = rowNodes.map(function (rowNode) { return rowNode.data; });\n this.updateRowData({ add: null, addIndex: null, update: null, remove: dataToRemove });\n };\n GridApi.prototype.addItems = function (items, skipRefresh) {\n if (skipRefresh === void 0) { skipRefresh = false; }\n console.warn('AG Grid: addItems() is deprecated, use updateRowData(transaction) instead.');\n this.updateRowData({ add: items, addIndex: null, update: null, remove: null });\n };\n GridApi.prototype.refreshVirtualPageCache = function () {\n console.warn('AG Grid: refreshVirtualPageCache() is now called refreshInfiniteCache(), please call refreshInfiniteCache() instead');\n this.refreshInfiniteCache();\n };\n GridApi.prototype.refreshInfinitePageCache = function () {\n console.warn('AG Grid: refreshInfinitePageCache() is now called refreshInfiniteCache(), please call refreshInfiniteCache() instead');\n this.refreshInfiniteCache();\n };\n /**\n * Marks all the currently loaded blocks in the cache for reload.\n * If you have 10 blocks in the cache, all 10 will be marked for reload.\n * The old data will continue to be displayed until the new data is loaded.\n */\n GridApi.prototype.refreshInfiniteCache = function () {\n if (this.infiniteRowModel) {\n this.infiniteRowModel.refreshCache();\n }\n else {\n console.warn(\"AG Grid: api.refreshInfiniteCache is only available when rowModelType='infinite'.\");\n }\n };\n GridApi.prototype.purgeVirtualPageCache = function () {\n console.warn('AG Grid: purgeVirtualPageCache() is now called purgeInfiniteCache(), please call purgeInfiniteCache() instead');\n this.purgeInfinitePageCache();\n };\n GridApi.prototype.purgeInfinitePageCache = function () {\n console.warn('AG Grid: purgeInfinitePageCache() is now called purgeInfiniteCache(), please call purgeInfiniteCache() instead');\n this.purgeInfiniteCache();\n };\n /**\n * Purges the cache.\n * The grid is then told to refresh. Only the blocks required to display the current data on screen are fetched (typically no more than 2).\n * The grid will display nothing while the new blocks are loaded.\n * Use this to immediately remove the old data from the user.\n */\n GridApi.prototype.purgeInfiniteCache = function () {\n if (this.infiniteRowModel) {\n this.infiniteRowModel.purgeCache();\n }\n else {\n console.warn(\"AG Grid: api.purgeInfiniteCache is only available when rowModelType='infinite'.\");\n }\n };\n /** @deprecated */\n GridApi.prototype.purgeEnterpriseCache = function (route) {\n console.warn(\"ag-grid: since version 18.x, api.purgeEnterpriseCache() should be replaced with api.purgeServerSideCache()\");\n this.purgeServerSideCache(route);\n };\n /** @deprecated */\n GridApi.prototype.purgeServerSideCache = function (route) {\n if (route === void 0) { route = []; }\n if (this.serverSideRowModel) {\n console.warn(\"AG Grid: since v25.0, api.purgeServerSideCache is deprecated. Please use api.refreshServerSideStore({purge: true}) instead.\");\n this.refreshServerSideStore({\n route: route,\n purge: true\n });\n }\n else {\n console.warn(\"AG Grid: api.purgeServerSideCache is only available when rowModelType='serverSide'.\");\n }\n };\n /**\n * Refresh a server-side store.\n * If you pass no parameters, then the top level cache is purged.\n * To purge a child cache, pass in the string of keys to get to the child cache.\n */\n GridApi.prototype.refreshServerSideStore = function (params) {\n if (this.serverSideRowModel) {\n this.serverSideRowModel.refreshStore(params);\n }\n else {\n console.warn(\"AG Grid: api.refreshServerSideStore is only available when rowModelType='serverSide'.\");\n }\n };\n /** Returns info on all server side stores. */\n GridApi.prototype.getServerSideStoreState = function () {\n if (this.serverSideRowModel) {\n return this.serverSideRowModel.getStoreState();\n }\n else {\n console.warn(\"AG Grid: api.getServerSideStoreState is only available when rowModelType='serverSide'.\");\n return [];\n }\n };\n GridApi.prototype.getVirtualRowCount = function () {\n console.warn('AG Grid: getVirtualRowCount() is now called getInfiniteRowCount(), please call getInfiniteRowCount() instead');\n return this.getInfiniteRowCount();\n };\n /** The row count defines how many rows the grid allows scrolling to. */\n GridApi.prototype.getInfiniteRowCount = function () {\n if (this.infiniteRowModel) {\n return this.infiniteRowModel.getRowCount();\n }\n else {\n console.warn(\"AG Grid: api.getVirtualRowCount is only available when rowModelType='virtual'.\");\n }\n };\n GridApi.prototype.isMaxRowFound = function () {\n console.warn(\"AG Grid: api.isLastRowIndexKnown is deprecated, please use api.isLastRowIndexKnown()\");\n return this.isLastRowIndexKnown();\n };\n /** Returns `true` if grid allows for scrolling past the last row to load more rows, thus providing infinite scroll. */\n GridApi.prototype.isLastRowIndexKnown = function () {\n if (this.infiniteRowModel) {\n return this.infiniteRowModel.isLastRowIndexKnown();\n }\n else {\n console.warn(\"AG Grid: api.isMaxRowFound is only available when rowModelType='virtual'.\");\n }\n };\n GridApi.prototype.setVirtualRowCount = function (rowCount, maxRowFound) {\n console.warn('AG Grid: setVirtualRowCount() is now called setInfiniteRowCount(), please call setInfiniteRowCount() instead');\n this.setRowCount(rowCount, maxRowFound);\n };\n GridApi.prototype.setInfiniteRowCount = function (rowCount, maxRowFound) {\n console.warn('AG Grid: setInfiniteRowCount() is now called setRowCount(), please call setRowCount() instead');\n this.setRowCount(rowCount, maxRowFound);\n };\n /**\n * Sets the `rowCount` and `lastRowIndexKnown` properties.\n * The second parameter, `lastRowIndexKnown`, is optional and if left out, only `rowCount` is set.\n * Set `rowCount` to adjust the height of the vertical scroll.\n * Set `lastRowIndexKnown` to enable / disable searching for more rows.\n * Use this method if you add or remove rows into the dataset and need to reset the number of rows or put the data back into 'look for data' mode.\n */\n GridApi.prototype.setRowCount = function (rowCount, maxRowFound) {\n if (this.infiniteRowModel) {\n this.infiniteRowModel.setRowCount(rowCount, maxRowFound);\n }\n else {\n console.warn(\"AG Grid: api.setRowCount is only available for Infinite Row Model.\");\n }\n };\n GridApi.prototype.getVirtualPageState = function () {\n console.warn('AG Grid: getVirtualPageState() is now called getCacheBlockState(), please call getCacheBlockState() instead');\n return this.getCacheBlockState();\n };\n GridApi.prototype.getInfinitePageState = function () {\n console.warn('AG Grid: getInfinitePageState() is now called getCacheBlockState(), please call getCacheBlockState() instead');\n return this.getCacheBlockState();\n };\n /**\n * Returns an object representing the state of the cache. This is useful for debugging and understanding how the cache is working.\n */\n GridApi.prototype.getCacheBlockState = function () {\n return this.rowNodeBlockLoader.getBlockState();\n };\n GridApi.prototype.checkGridSize = function () {\n console.warn(\"in AG Grid v25.2.0, checkGridSize() was removed, as it was legacy and didn't do anything uesful.\");\n };\n GridApi.prototype.getFirstRenderedRow = function () {\n console.warn('in AG Grid v12, getFirstRenderedRow() was renamed to getFirstDisplayedRow()');\n return this.getFirstDisplayedRow();\n };\n /** Get the index of the first displayed row due to scrolling (includes invisible rendered rows in the buffer). */\n GridApi.prototype.getFirstDisplayedRow = function () {\n return this.rowRenderer.getFirstVirtualRenderedRow();\n };\n GridApi.prototype.getLastRenderedRow = function () {\n console.warn('in AG Grid v12, getLastRenderedRow() was renamed to getLastDisplayedRow()');\n return this.getLastDisplayedRow();\n };\n /** Get the index of the last displayed row due to scrolling (includes invisible rendered rows in the buffer). */\n GridApi.prototype.getLastDisplayedRow = function () {\n return this.rowRenderer.getLastVirtualRenderedRow();\n };\n /** Returns the displayed `RowNode` at the given `index`. */\n GridApi.prototype.getDisplayedRowAtIndex = function (index) {\n return this.rowModel.getRow(index);\n };\n /** Returns the total number of displayed rows. */\n GridApi.prototype.getDisplayedRowCount = function () {\n return this.rowModel.getRowCount();\n };\n /**\n * Returns `true` when the last page is known.\n * This will always be `true` if you are using the Client-Side Row Model for pagination.\n * Returns `false` when the last page is not known; this only happens when using Infinite Row Model.\n */\n GridApi.prototype.paginationIsLastPageFound = function () {\n return this.paginationProxy.isLastPageFound();\n };\n /** Returns how many rows are being shown per page. */\n GridApi.prototype.paginationGetPageSize = function () {\n return this.paginationProxy.getPageSize();\n };\n /** Sets the `paginationPageSize`, then re-paginates the grid so the changes are applied immediately. */\n GridApi.prototype.paginationSetPageSize = function (size) {\n this.gridOptionsWrapper.setProperty('paginationPageSize', size);\n };\n /** Returns the 0-based index of the page which is showing. */\n GridApi.prototype.paginationGetCurrentPage = function () {\n return this.paginationProxy.getCurrentPage();\n };\n /** Returns the total number of pages. Returns `null` if `paginationIsLastPageFound() === false`. */\n GridApi.prototype.paginationGetTotalPages = function () {\n return this.paginationProxy.getTotalPages();\n };\n /** The total number of rows. Returns `null` if `paginationIsLastPageFound() === false`. */\n GridApi.prototype.paginationGetRowCount = function () {\n return this.paginationProxy.getMasterRowCount();\n };\n /** Navigates to the next page. */\n GridApi.prototype.paginationGoToNextPage = function () {\n this.paginationProxy.goToNextPage();\n };\n /** Navigates to the previous page. */\n GridApi.prototype.paginationGoToPreviousPage = function () {\n this.paginationProxy.goToPreviousPage();\n };\n /** Navigates to the first page. */\n GridApi.prototype.paginationGoToFirstPage = function () {\n this.paginationProxy.goToFirstPage();\n };\n /** Navigates to the last page. */\n GridApi.prototype.paginationGoToLastPage = function () {\n this.paginationProxy.goToLastPage();\n };\n /** Goes to the specified page. If the page requested doesn't exist, it will go to the last page. */\n GridApi.prototype.paginationGoToPage = function (page) {\n this.paginationProxy.goToPage(page);\n };\n __decorate([\n Optional('immutableService')\n ], GridApi.prototype, \"immutableService\", void 0);\n __decorate([\n Optional('csvCreator')\n ], GridApi.prototype, \"csvCreator\", void 0);\n __decorate([\n Optional('excelCreator')\n ], GridApi.prototype, \"excelCreator\", void 0);\n __decorate([\n Autowired('rowRenderer')\n ], GridApi.prototype, \"rowRenderer\", void 0);\n __decorate([\n Autowired('navigationService')\n ], GridApi.prototype, \"navigationService\", void 0);\n __decorate([\n Autowired('filterManager')\n ], GridApi.prototype, \"filterManager\", void 0);\n __decorate([\n Autowired('columnModel')\n ], GridApi.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('selectionService')\n ], GridApi.prototype, \"selectionService\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], GridApi.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('valueService')\n ], GridApi.prototype, \"valueService\", void 0);\n __decorate([\n Autowired('alignedGridsService')\n ], GridApi.prototype, \"alignedGridsService\", void 0);\n __decorate([\n Autowired('eventService')\n ], GridApi.prototype, \"eventService\", void 0);\n __decorate([\n Autowired('pinnedRowModel')\n ], GridApi.prototype, \"pinnedRowModel\", void 0);\n __decorate([\n Autowired('context')\n ], GridApi.prototype, \"context\", void 0);\n __decorate([\n Autowired('rowModel')\n ], GridApi.prototype, \"rowModel\", void 0);\n __decorate([\n Autowired('sortController')\n ], GridApi.prototype, \"sortController\", void 0);\n __decorate([\n Autowired('paginationProxy')\n ], GridApi.prototype, \"paginationProxy\", void 0);\n __decorate([\n Autowired('focusService')\n ], GridApi.prototype, \"focusService\", void 0);\n __decorate([\n Autowired('dragAndDropService')\n ], GridApi.prototype, \"dragAndDropService\", void 0);\n __decorate([\n Optional('rangeService')\n ], GridApi.prototype, \"rangeService\", void 0);\n __decorate([\n Optional('clipboardService')\n ], GridApi.prototype, \"clipboardService\", void 0);\n __decorate([\n Optional('aggFuncService')\n ], GridApi.prototype, \"aggFuncService\", void 0);\n __decorate([\n Autowired('menuFactory')\n ], GridApi.prototype, \"menuFactory\", void 0);\n __decorate([\n Optional('contextMenuFactory')\n ], GridApi.prototype, \"contextMenuFactory\", void 0);\n __decorate([\n Autowired('valueCache')\n ], GridApi.prototype, \"valueCache\", void 0);\n __decorate([\n Autowired('animationFrameService')\n ], GridApi.prototype, \"animationFrameService\", void 0);\n __decorate([\n Optional('statusBarService')\n ], GridApi.prototype, \"statusBarService\", void 0);\n __decorate([\n Optional('chartService')\n ], GridApi.prototype, \"chartService\", void 0);\n __decorate([\n Optional('undoRedoService')\n ], GridApi.prototype, \"undoRedoService\", void 0);\n __decorate([\n Optional('rowNodeBlockLoader')\n ], GridApi.prototype, \"rowNodeBlockLoader\", void 0);\n __decorate([\n Optional('ssrmTransactionManager')\n ], GridApi.prototype, \"serverSideTransactionManager\", void 0);\n __decorate([\n Autowired('ctrlsService')\n ], GridApi.prototype, \"ctrlsService\", void 0);\n __decorate([\n Optional('frameworkComponentWrapper')\n ], GridApi.prototype, \"frameworkComponentWrapper\", void 0);\n __decorate([\n PostConstruct\n ], GridApi.prototype, \"init\", null);\n __decorate([\n PreDestroy\n ], GridApi.prototype, \"cleanDownReferencesToAvoidMemoryLeakInCaseApplicationIsKeepingReferenceToDestroyedGrid\", null);\n GridApi = __decorate([\n Bean('gridApi')\n ], GridApi);\n return GridApi;\n}());\nexport { GridApi };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Column } from \"../../entities/column\";\nimport { BeanStub } from \"../../context/beanStub\";\nimport { Constants } from \"../../constants/constants\";\nimport { PostConstruct } from \"../../context/context\";\nimport { setAriaColIndex, setAriaColSpan } from \"../../utils/aria\";\nimport { last } from \"../../utils/array\";\nimport { exists } from \"../../utils/generic\";\nimport { Events } from \"../../eventKeys\";\nimport { GridOptionsWrapper } from \"../../gridOptionsWrapper\";\nvar SetLeftFeature = /** @class */ (function (_super) {\n __extends(SetLeftFeature, _super);\n function SetLeftFeature(columnOrGroup, eCell, beans, colsSpanning) {\n var _this = _super.call(this) || this;\n _this.columnOrGroup = columnOrGroup;\n _this.eCell = eCell;\n _this.ariaEl = _this.eCell.querySelector('[role=columnheader]') || _this.eCell;\n _this.colsSpanning = colsSpanning;\n _this.beans = beans;\n return _this;\n }\n SetLeftFeature.prototype.setColsSpanning = function (colsSpanning) {\n this.colsSpanning = colsSpanning;\n this.onLeftChanged();\n };\n SetLeftFeature.prototype.getColumnOrGroup = function () {\n if (this.beans.gridOptionsWrapper.isEnableRtl() && this.colsSpanning) {\n return last(this.colsSpanning);\n }\n return this.columnOrGroup;\n };\n SetLeftFeature.prototype.postConstruct = function () {\n this.addManagedListener(this.columnOrGroup, Column.EVENT_LEFT_CHANGED, this.onLeftChanged.bind(this));\n this.setLeftFirstTime();\n // when in print layout, the left position is also dependent on the width of the pinned sections.\n // so additionally update left if any column width changes.\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, this.onLeftChanged.bind(this));\n // setting left has a dependency on print layout\n this.addManagedListener(this.beans.gridOptionsWrapper, GridOptionsWrapper.PROP_DOM_LAYOUT, this.onLeftChanged.bind(this));\n };\n SetLeftFeature.prototype.setLeftFirstTime = function () {\n var suppressMoveAnimation = this.beans.gridOptionsWrapper.isSuppressColumnMoveAnimation();\n var oldLeftExists = exists(this.columnOrGroup.getOldLeft());\n var animateColumnMove = this.beans.columnAnimationService.isActive() && oldLeftExists && !suppressMoveAnimation;\n if (animateColumnMove) {\n this.animateInLeft();\n }\n else {\n this.onLeftChanged();\n }\n };\n SetLeftFeature.prototype.animateInLeft = function () {\n var _this = this;\n var colOrGroup = this.getColumnOrGroup();\n var left = colOrGroup.getLeft();\n var oldLeft = colOrGroup.getOldLeft();\n var oldActualLeft = this.modifyLeftForPrintLayout(colOrGroup, oldLeft);\n var actualLeft = this.modifyLeftForPrintLayout(colOrGroup, left);\n this.setLeft(oldActualLeft);\n // we must keep track of the left we want to set to, as this would otherwise lead to a race\n // condition, if the user changed the left value many times in one VM turn, then we want to make\n // make sure the actualLeft we set in the timeout below (in the next VM turn) is the correct left\n // position. eg if user changes column position twice, then setLeft() below executes twice in next\n // VM turn, but only one (the correct one) should get applied.\n this.actualLeft = actualLeft;\n this.beans.columnAnimationService.executeNextVMTurn(function () {\n // test this left value is the latest one to be applied, and if not, do nothing\n if (_this.actualLeft === actualLeft) {\n _this.setLeft(actualLeft);\n }\n });\n };\n SetLeftFeature.prototype.onLeftChanged = function () {\n var colOrGroup = this.getColumnOrGroup();\n var left = colOrGroup.getLeft();\n this.actualLeft = this.modifyLeftForPrintLayout(colOrGroup, left);\n this.setLeft(this.actualLeft);\n };\n SetLeftFeature.prototype.modifyLeftForPrintLayout = function (colOrGroup, leftPosition) {\n var printLayout = this.beans.gridOptionsWrapper.getDomLayout() === Constants.DOM_LAYOUT_PRINT;\n if (!printLayout) {\n return leftPosition;\n }\n if (colOrGroup.getPinned() === Constants.PINNED_LEFT) {\n return leftPosition;\n }\n var leftWidth = this.beans.columnModel.getDisplayedColumnsLeftWidth();\n if (colOrGroup.getPinned() === Constants.PINNED_RIGHT) {\n var bodyWidth = this.beans.columnModel.getBodyContainerWidth();\n return leftWidth + bodyWidth + leftPosition;\n }\n // is in body\n return leftWidth + leftPosition;\n };\n SetLeftFeature.prototype.setLeft = function (value) {\n // if the value is null, then that means the column is no longer\n // displayed. there is logic in the rendering to fade these columns\n // out, so we don't try and change their left positions.\n if (exists(value)) {\n this.eCell.style.left = value + \"px\";\n }\n var indexColumn;\n if (this.columnOrGroup instanceof Column) {\n indexColumn = this.columnOrGroup;\n }\n else {\n var columnGroup = this.columnOrGroup;\n var children = columnGroup.getLeafColumns();\n if (!children.length) {\n return;\n }\n if (children.length > 1) {\n setAriaColSpan(this.ariaEl, children.length);\n }\n indexColumn = children[0];\n }\n var index = this.beans.columnModel.getAriaColumnIndex(indexColumn);\n setAriaColIndex(this.ariaEl, index);\n };\n __decorate([\n PostConstruct\n ], SetLeftFeature.prototype, \"postConstruct\", null);\n return SetLeftFeature;\n}(BeanStub));\nexport { SetLeftFeature };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { BeanStub } from \"../../context/beanStub\";\nimport { Autowired, PostConstruct } from \"../../context/context\";\nvar HoverFeature = /** @class */ (function (_super) {\n __extends(HoverFeature, _super);\n function HoverFeature(columns, element) {\n var _this = _super.call(this) || this;\n _this.columns = columns;\n _this.element = element;\n return _this;\n }\n HoverFeature.prototype.postConstruct = function () {\n if (this.gridOptionsWrapper.isColumnHoverHighlight()) {\n this.addMouseHoverListeners();\n }\n };\n HoverFeature.prototype.addMouseHoverListeners = function () {\n this.addManagedListener(this.element, 'mouseout', this.onMouseOut.bind(this));\n this.addManagedListener(this.element, 'mouseover', this.onMouseOver.bind(this));\n };\n HoverFeature.prototype.onMouseOut = function () {\n this.columnHoverService.clearMouseOver();\n };\n HoverFeature.prototype.onMouseOver = function () {\n this.columnHoverService.setMouseOver(this.columns);\n };\n __decorate([\n Autowired('columnHoverService')\n ], HoverFeature.prototype, \"columnHoverService\", void 0);\n __decorate([\n PostConstruct\n ], HoverFeature.prototype, \"postConstruct\", null);\n return HoverFeature;\n}(BeanStub));\nexport { HoverFeature };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { AbstractHeaderCellCtrl } from \"../abstractCell/abstractHeaderCellCtrl\";\nimport { KeyCode } from '../../../constants/keyCode';\nimport { Autowired } from '../../../context/context';\nimport { Column } from '../../../entities/column';\nimport { Events } from '../../../events';\nimport { unwrapUserComp } from '../../../gridApi';\nimport { SetLeftFeature } from '../../../rendering/features/setLeftFeature';\nimport { isElementChildOfClass } from '../../../utils/dom';\nimport { createIconNoSpan } from '../../../utils/icon';\nimport { ManagedFocusFeature } from '../../../widgets/managedFocusFeature';\nimport { HoverFeature } from '../hoverFeature';\nimport { FilterComponent } from \"../../../components/framework/componentTypes\";\nvar HeaderFilterCellCtrl = /** @class */ (function (_super) {\n __extends(HeaderFilterCellCtrl, _super);\n function HeaderFilterCellCtrl(column, parentRowCtrl) {\n var _this = _super.call(this, column, parentRowCtrl) || this;\n _this.column = column;\n return _this;\n }\n HeaderFilterCellCtrl.prototype.setComp = function (comp, eGui, eButtonShowMainFilter, eFloatingFilterBody) {\n _super.prototype.setGui.call(this, eGui);\n this.comp = comp;\n this.eButtonShowMainFilter = eButtonShowMainFilter;\n this.eFloatingFilterBody = eFloatingFilterBody;\n var colDef = this.column.getColDef();\n var filterExists = !!colDef.filter || !!colDef.filterFramework;\n var floatingFilterExists = !!colDef.floatingFilter;\n this.active = filterExists && floatingFilterExists;\n this.setupWidth();\n this.setupLeft();\n this.setupHover();\n this.setupFocus();\n this.setupUserComp();\n this.setupSyncWithFilter();\n this.setupUi();\n this.addManagedListener(this.eButtonShowMainFilter, 'click', this.showParentFilter.bind(this));\n };\n HeaderFilterCellCtrl.prototype.setupUi = function () {\n this.comp.addOrRemoveButtonWrapperCssClass('ag-hidden', !this.active || this.suppressFilterButton);\n if (!this.active) {\n return;\n }\n this.comp.addOrRemoveBodyCssClass('ag-floating-filter-full-body', this.suppressFilterButton);\n this.comp.addOrRemoveBodyCssClass('ag-floating-filter-body', !this.suppressFilterButton);\n var eMenuIcon = createIconNoSpan('filter', this.gridOptionsWrapper, this.column);\n if (eMenuIcon) {\n this.eButtonShowMainFilter.appendChild(eMenuIcon);\n }\n };\n HeaderFilterCellCtrl.prototype.setupFocus = function () {\n this.createManagedBean(new ManagedFocusFeature(this.eGui, {\n shouldStopEventPropagation: this.shouldStopEventPropagation.bind(this),\n onTabKeyDown: this.onTabKeyDown.bind(this),\n handleKeyDown: this.handleKeyDown.bind(this),\n onFocusIn: this.onFocusIn.bind(this)\n }));\n };\n HeaderFilterCellCtrl.prototype.onTabKeyDown = function (e) {\n var eDocument = this.gridOptionsWrapper.getDocument();\n var activeEl = eDocument.activeElement;\n var wrapperHasFocus = activeEl === this.eGui;\n if (wrapperHasFocus) {\n return;\n }\n var nextFocusableEl = this.focusService.findNextFocusableElement(this.eGui, null, e.shiftKey);\n if (nextFocusableEl) {\n this.beans.headerNavigationService.scrollToColumn(this.column);\n e.preventDefault();\n nextFocusableEl.focus();\n return;\n }\n var nextFocusableColumn = this.findNextColumnWithFloatingFilter(e.shiftKey);\n if (!nextFocusableColumn) {\n return;\n }\n if (this.focusService.focusHeaderPosition({\n headerPosition: {\n headerRowIndex: this.getParentRowCtrl().getRowIndex(),\n column: nextFocusableColumn\n },\n event: e\n })) {\n e.preventDefault();\n }\n };\n HeaderFilterCellCtrl.prototype.findNextColumnWithFloatingFilter = function (backwards) {\n var columModel = this.beans.columnModel;\n var nextCol = this.column;\n do {\n nextCol = backwards\n ? columModel.getDisplayedColBefore(nextCol)\n : columModel.getDisplayedColAfter(nextCol);\n if (!nextCol) {\n break;\n }\n } while (!nextCol.getColDef().filter || !nextCol.getColDef().floatingFilter);\n return nextCol;\n };\n HeaderFilterCellCtrl.prototype.handleKeyDown = function (e) {\n var eDocument = this.gridOptionsWrapper.getDocument();\n var activeEl = eDocument.activeElement;\n var wrapperHasFocus = activeEl === this.eGui;\n switch (e.key) {\n case KeyCode.UP:\n case KeyCode.DOWN:\n if (!wrapperHasFocus) {\n e.preventDefault();\n }\n case KeyCode.LEFT:\n case KeyCode.RIGHT:\n if (wrapperHasFocus) {\n return;\n }\n e.stopPropagation();\n case KeyCode.ENTER:\n if (wrapperHasFocus) {\n if (this.focusService.focusInto(this.eGui)) {\n e.preventDefault();\n }\n }\n break;\n case KeyCode.ESCAPE:\n if (!wrapperHasFocus) {\n this.eGui.focus();\n }\n }\n };\n HeaderFilterCellCtrl.prototype.onFocusIn = function (e) {\n var isRelatedWithin = this.eGui.contains(e.relatedTarget);\n // when the focus is already within the component,\n // we default to the browser's behavior\n if (isRelatedWithin) {\n return;\n }\n var notFromHeaderWrapper = !!e.relatedTarget && !e.relatedTarget.classList.contains('ag-floating-filter');\n var fromWithinHeader = !!e.relatedTarget && isElementChildOfClass(e.relatedTarget, 'ag-floating-filter');\n if (notFromHeaderWrapper && fromWithinHeader && e.target === this.eGui) {\n var lastFocusEvent = this.lastFocusEvent;\n var fromTab = !!(lastFocusEvent && lastFocusEvent.key === KeyCode.TAB);\n if (lastFocusEvent && fromTab) {\n var shouldFocusLast = lastFocusEvent.shiftKey;\n this.focusService.focusInto(this.eGui, shouldFocusLast);\n }\n }\n var rowIndex = this.getRowIndex();\n this.beans.focusService.setFocusedHeader(rowIndex, this.column);\n };\n HeaderFilterCellCtrl.prototype.setupHover = function () {\n var _this = this;\n this.createManagedBean(new HoverFeature([this.column], this.eGui));\n var listener = function () {\n if (!_this.gridOptionsWrapper.isColumnHoverHighlight()) {\n return;\n }\n var hovered = _this.columnHoverService.isHovered(_this.column);\n _this.comp.addOrRemoveCssClass('ag-column-hover', hovered);\n };\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_HOVER_CHANGED, listener);\n listener();\n };\n HeaderFilterCellCtrl.prototype.setupLeft = function () {\n var setLeftFeature = new SetLeftFeature(this.column, this.eGui, this.beans);\n this.createManagedBean(setLeftFeature);\n };\n HeaderFilterCellCtrl.prototype.setupUserComp = function () {\n var _this = this;\n if (!this.active) {\n return;\n }\n var colDef = this.column.getColDef();\n var filterParams = this.filterManager.createFilterParams(this.column, colDef);\n var finalFilterParams = this.userComponentFactory.mergeParamsWithApplicationProvidedParams(colDef, FilterComponent, filterParams);\n var defaultFloatingFilterType = this.userComponentFactory.getDefaultFloatingFilterType(colDef);\n if (defaultFloatingFilterType == null) {\n defaultFloatingFilterType = 'agReadOnlyFloatingFilter';\n }\n var params = {\n api: this.gridApi,\n column: this.column,\n filterParams: finalFilterParams,\n currentParentModel: function () { return _this.currentParentModel(); },\n parentFilterInstance: function (cb) { return _this.parentFilterInstance(cb); },\n showParentFilter: function () { return _this.showParentFilter(); },\n suppressFilterButton: false // This one might be overridden from the colDef\n };\n // this is unusual - we need a params value OUTSIDE the component the params are for.\n // the params are for the floating filter component, but this property is actually for the wrapper.\n this.suppressFilterButton = colDef.floatingFilterComponentParams ? !!colDef.floatingFilterComponentParams.suppressFilterButton : false;\n var compDetails = this.userComponentFactory.getFloatingFilterCompDetails(colDef, params, defaultFloatingFilterType);\n if (compDetails) {\n this.comp.setCompDetails(compDetails);\n }\n };\n HeaderFilterCellCtrl.prototype.currentParentModel = function () {\n var filterComponent = this.getFilterComponent(false);\n return filterComponent ? filterComponent.resolveNow(null, function (filter) { return filter && filter.getModel(); }) : null;\n };\n HeaderFilterCellCtrl.prototype.getFilterComponent = function (createIfDoesNotExist) {\n if (createIfDoesNotExist === void 0) { createIfDoesNotExist = true; }\n return this.filterManager.getFilterComponent(this.column, 'NO_UI', createIfDoesNotExist);\n };\n HeaderFilterCellCtrl.prototype.parentFilterInstance = function (callback) {\n var filterComponent = this.getFilterComponent();\n if (filterComponent == null) {\n return;\n }\n filterComponent.then(function (instance) {\n callback(unwrapUserComp(instance));\n });\n };\n HeaderFilterCellCtrl.prototype.showParentFilter = function () {\n var eventSource = this.suppressFilterButton ? this.eFloatingFilterBody : this.eButtonShowMainFilter;\n this.menuFactory.showMenuAfterButtonClick(this.column, eventSource, 'floatingFilter', 'filterMenuTab', ['filterMenuTab']);\n };\n HeaderFilterCellCtrl.prototype.setupSyncWithFilter = function () {\n var _this = this;\n if (!this.active) {\n return;\n }\n var syncWithFilter = function (filterChangedEvent) {\n var compPromise = _this.comp.getFloatingFilterComp();\n if (!compPromise) {\n return;\n }\n var parentModel = _this.currentParentModel();\n compPromise.then(function (comp) {\n if (comp) {\n comp.onParentModelChanged(parentModel, filterChangedEvent);\n }\n });\n };\n this.addManagedListener(this.column, Column.EVENT_FILTER_CHANGED, syncWithFilter);\n if (this.filterManager.isFilterActive(this.column)) {\n syncWithFilter(null);\n }\n };\n HeaderFilterCellCtrl.prototype.setupWidth = function () {\n var _this = this;\n var listener = function () {\n var width = _this.column.getActualWidth() + \"px\";\n _this.comp.setWidth(width);\n };\n this.addManagedListener(this.column, Column.EVENT_WIDTH_CHANGED, listener);\n listener();\n };\n __decorate([\n Autowired('userComponentFactory')\n ], HeaderFilterCellCtrl.prototype, \"userComponentFactory\", void 0);\n __decorate([\n Autowired('filterManager')\n ], HeaderFilterCellCtrl.prototype, \"filterManager\", void 0);\n __decorate([\n Autowired('columnHoverService')\n ], HeaderFilterCellCtrl.prototype, \"columnHoverService\", void 0);\n __decorate([\n Autowired('gridApi')\n ], HeaderFilterCellCtrl.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('menuFactory')\n ], HeaderFilterCellCtrl.prototype, \"menuFactory\", void 0);\n __decorate([\n Autowired('beans')\n ], HeaderFilterCellCtrl.prototype, \"beans\", void 0);\n return HeaderFilterCellCtrl;\n}(AbstractHeaderCellCtrl));\nexport { HeaderFilterCellCtrl };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nimport { missing } from \"../../utils/generic\";\nvar CssClassApplier = /** @class */ (function () {\n function CssClassApplier() {\n }\n CssClassApplier.getHeaderClassesFromColDef = function (abstractColDef, gridOptionsWrapper, column, columnGroup) {\n if (missing(abstractColDef)) {\n return [];\n }\n return this.getColumnClassesFromCollDef(abstractColDef.headerClass, abstractColDef, gridOptionsWrapper, column, columnGroup);\n };\n CssClassApplier.getToolPanelClassesFromColDef = function (abstractColDef, gridOptionsWrapper, column, columnGroup) {\n if (missing(abstractColDef)) {\n return [];\n }\n return this.getColumnClassesFromCollDef(abstractColDef.toolPanelClass, abstractColDef, gridOptionsWrapper, column, columnGroup);\n };\n CssClassApplier.getClassParams = function (abstractColDef, gridOptionsWrapper, column, columnGroup) {\n return {\n // bad naming, as colDef here can be a group or a column,\n // however most people won't appreciate the difference,\n // so keeping it as colDef to avoid confusion.\n colDef: abstractColDef,\n column: column,\n columnGroup: columnGroup,\n context: gridOptionsWrapper.getContext(),\n api: gridOptionsWrapper.getApi()\n };\n };\n CssClassApplier.getColumnClassesFromCollDef = function (classesOrFunc, abstractColDef, gridOptionsWrapper, column, columnGroup) {\n if (missing(classesOrFunc)) {\n return [];\n }\n var classToUse;\n if (typeof classesOrFunc === 'function') {\n var params = this.getClassParams(abstractColDef, gridOptionsWrapper, column, columnGroup);\n classToUse = classesOrFunc(params);\n }\n else {\n classToUse = classesOrFunc;\n }\n if (typeof classToUse === 'string') {\n return [classToUse];\n }\n if (Array.isArray(classToUse)) {\n return classToUse;\n }\n return [];\n };\n return CssClassApplier;\n}());\nexport { CssClassApplier };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Constants } from \"../../../constants/constants\";\nimport { BeanStub } from \"../../../context/beanStub\";\nimport { Autowired, PostConstruct } from \"../../../context/context\";\nimport { setDisplayed } from \"../../../utils/dom\";\nimport { TouchListener } from \"../../../widgets/touchListener\";\nvar ResizeFeature = /** @class */ (function (_super) {\n __extends(ResizeFeature, _super);\n function ResizeFeature(pinned, column, eResize, comp, ctrl) {\n var _this = _super.call(this) || this;\n _this.pinned = pinned;\n _this.column = column;\n _this.eResize = eResize;\n _this.comp = comp;\n _this.ctrl = ctrl;\n return _this;\n }\n ResizeFeature.prototype.postConstruct = function () {\n var _this = this;\n var colDef = this.column.getColDef();\n var destroyResizeFuncs = [];\n var canResize;\n var canAutosize;\n var addResize = function () {\n setDisplayed(_this.eResize, canResize);\n if (!canResize) {\n return;\n }\n var finishedWithResizeFunc = _this.horizontalResizeService.addResizeBar({\n eResizeBar: _this.eResize,\n onResizeStart: _this.onResizeStart.bind(_this),\n onResizing: _this.onResizing.bind(_this, false),\n onResizeEnd: _this.onResizing.bind(_this, true)\n });\n destroyResizeFuncs.push(finishedWithResizeFunc);\n if (canAutosize) {\n var skipHeaderOnAutoSize_1 = _this.gridOptionsWrapper.isSkipHeaderOnAutoSize();\n var autoSizeColListener_1 = function () {\n _this.columnModel.autoSizeColumn(_this.column, skipHeaderOnAutoSize_1, \"uiColumnResized\");\n };\n _this.eResize.addEventListener('dblclick', autoSizeColListener_1);\n var touchListener_1 = new TouchListener(_this.eResize);\n touchListener_1.addEventListener(TouchListener.EVENT_DOUBLE_TAP, autoSizeColListener_1);\n _this.addDestroyFunc(function () {\n _this.eResize.removeEventListener('dblclick', autoSizeColListener_1);\n touchListener_1.removeEventListener(TouchListener.EVENT_DOUBLE_TAP, autoSizeColListener_1);\n touchListener_1.destroy();\n });\n }\n };\n var removeResize = function () {\n destroyResizeFuncs.forEach(function (f) { return f(); });\n destroyResizeFuncs.length = 0;\n };\n var refresh = function () {\n var resize = _this.column.isResizable();\n var autoSize = !_this.gridOptionsWrapper.isSuppressAutoSize() && !colDef.suppressAutoSize;\n var propertyChange = resize !== canResize || autoSize !== canAutosize;\n if (propertyChange) {\n canResize = resize;\n canAutosize = autoSize;\n removeResize();\n addResize();\n }\n };\n refresh();\n this.addDestroyFunc(removeResize);\n this.ctrl.addRefreshFunction(refresh);\n };\n ResizeFeature.prototype.onResizing = function (finished, resizeAmount) {\n var resizeAmountNormalised = this.normaliseResizeAmount(resizeAmount);\n var columnWidths = [{ key: this.column, newWidth: this.resizeStartWidth + resizeAmountNormalised }];\n this.columnModel.setColumnWidths(columnWidths, this.resizeWithShiftKey, finished, \"uiColumnDragged\");\n if (finished) {\n this.comp.addOrRemoveCssClass('ag-column-resizing', false);\n }\n };\n ResizeFeature.prototype.onResizeStart = function (shiftKey) {\n this.resizeStartWidth = this.column.getActualWidth();\n this.resizeWithShiftKey = shiftKey;\n this.comp.addOrRemoveCssClass('ag-column-resizing', true);\n };\n // optionally inverts the drag, depending on pinned and RTL\n // note - this method is duplicated in RenderedHeaderGroupCell - should refactor out?\n ResizeFeature.prototype.normaliseResizeAmount = function (dragChange) {\n var result = dragChange;\n var notPinningLeft = this.pinned !== Constants.PINNED_LEFT;\n var pinningRight = this.pinned === Constants.PINNED_RIGHT;\n if (this.gridOptionsWrapper.isEnableRtl()) {\n // for RTL, dragging left makes the col bigger, except when pinning left\n if (notPinningLeft) {\n result *= -1;\n }\n }\n else {\n // for LTR (ie normal), dragging left makes the col smaller, except when pinning right\n if (pinningRight) {\n result *= -1;\n }\n }\n return result;\n };\n __decorate([\n Autowired('horizontalResizeService')\n ], ResizeFeature.prototype, \"horizontalResizeService\", void 0);\n __decorate([\n Autowired('columnModel')\n ], ResizeFeature.prototype, \"columnModel\", void 0);\n __decorate([\n PostConstruct\n ], ResizeFeature.prototype, \"postConstruct\", null);\n return ResizeFeature;\n}(BeanStub));\nexport { ResizeFeature };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Events } from \"../events\";\nimport { AgAbstractInputField } from './agAbstractInputField';\nvar AgCheckbox = /** @class */ (function (_super) {\n __extends(AgCheckbox, _super);\n function AgCheckbox(config, className, inputType) {\n if (className === void 0) { className = 'ag-checkbox'; }\n if (inputType === void 0) { inputType = 'checkbox'; }\n var _this = _super.call(this, config, className, inputType) || this;\n _this.labelAlignment = 'right';\n _this.selected = false;\n _this.readOnly = false;\n _this.passive = false;\n return _this;\n }\n AgCheckbox.prototype.addInputListeners = function () {\n this.addManagedListener(this.eInput, 'click', this.onCheckboxClick.bind(this));\n this.addManagedListener(this.eLabel, 'click', this.toggle.bind(this));\n };\n AgCheckbox.prototype.getNextValue = function () {\n return this.selected === undefined ? true : !this.selected;\n };\n AgCheckbox.prototype.setPassive = function (passive) {\n this.passive = passive;\n };\n AgCheckbox.prototype.isReadOnly = function () {\n return this.readOnly;\n };\n AgCheckbox.prototype.setReadOnly = function (readOnly) {\n this.eWrapper.classList.toggle('ag-disabled', readOnly);\n this.eInput.disabled = readOnly;\n this.readOnly = readOnly;\n };\n AgCheckbox.prototype.setDisabled = function (disabled) {\n this.eWrapper.classList.toggle('ag-disabled', disabled);\n return _super.prototype.setDisabled.call(this, disabled);\n };\n AgCheckbox.prototype.toggle = function () {\n if (this.eInput.disabled) {\n return;\n }\n var previousValue = this.isSelected();\n var nextValue = this.getNextValue();\n if (this.passive) {\n this.dispatchChange(nextValue, previousValue);\n }\n else {\n this.setValue(nextValue);\n }\n };\n AgCheckbox.prototype.getValue = function () {\n return this.isSelected();\n };\n AgCheckbox.prototype.setValue = function (value, silent) {\n this.refreshSelectedClass(value);\n this.setSelected(value, silent);\n return this;\n };\n AgCheckbox.prototype.setName = function (name) {\n var input = this.getInputElement();\n input.name = name;\n return this;\n };\n AgCheckbox.prototype.isSelected = function () {\n return this.selected;\n };\n AgCheckbox.prototype.setSelected = function (selected, silent) {\n if (this.isSelected() === selected) {\n return;\n }\n this.previousValue = this.isSelected();\n selected = this.selected = typeof selected === 'boolean' ? selected : undefined;\n this.eInput.checked = selected;\n this.eInput.indeterminate = selected === undefined;\n if (!silent) {\n this.dispatchChange(this.selected, this.previousValue);\n }\n };\n AgCheckbox.prototype.dispatchChange = function (selected, previousValue, event) {\n this.dispatchEvent({ type: AgCheckbox.EVENT_CHANGED, selected: selected, previousValue: previousValue, event: event });\n var input = this.getInputElement();\n var checkboxChangedEvent = {\n type: Events.EVENT_CHECKBOX_CHANGED,\n id: input.id,\n name: input.name,\n selected: selected,\n previousValue: previousValue\n };\n this.eventService.dispatchEvent(checkboxChangedEvent);\n };\n AgCheckbox.prototype.onCheckboxClick = function (e) {\n if (this.passive || this.eInput.disabled) {\n return;\n }\n var previousValue = this.isSelected();\n var selected = this.selected = e.target.checked;\n this.refreshSelectedClass(selected);\n this.dispatchChange(selected, previousValue, e);\n };\n AgCheckbox.prototype.refreshSelectedClass = function (value) {\n this.eWrapper.classList.toggle('ag-checked', value === true);\n this.eWrapper.classList.toggle('ag-indeterminate', value == null);\n };\n return AgCheckbox;\n}(AgAbstractInputField));\nexport { AgCheckbox };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { AgCheckbox } from \"../../../widgets/agCheckbox\";\nimport { BeanStub } from \"../../../context/beanStub\";\nimport { Autowired } from \"../../../context/context\";\nimport { Events } from \"../../../events\";\nimport { Constants } from \"../../../constants/constants\";\nimport { setAriaRole } from \"../../../utils/aria\";\nvar SelectAllFeature = /** @class */ (function (_super) {\n __extends(SelectAllFeature, _super);\n function SelectAllFeature(column) {\n var _this = _super.call(this) || this;\n _this.cbSelectAllVisible = false;\n _this.processingEventFromCheckbox = false;\n _this.column = column;\n var colDef = column.getColDef();\n _this.filteredOnly = colDef ? !!colDef.headerCheckboxSelectionFilteredOnly : false;\n return _this;\n }\n SelectAllFeature.prototype.onSpaceKeyPressed = function (e) {\n var checkbox = this.cbSelectAll;\n var eDocument = this.gridOptionsWrapper.getDocument();\n if (checkbox.isDisplayed() && !checkbox.getGui().contains(eDocument.activeElement)) {\n e.preventDefault();\n checkbox.setValue(!checkbox.getValue());\n }\n };\n SelectAllFeature.prototype.getCheckboxGui = function () {\n return this.cbSelectAll.getGui();\n };\n SelectAllFeature.prototype.setComp = function (comp) {\n this.comp = comp;\n this.cbSelectAll = this.createManagedBean(new AgCheckbox());\n this.cbSelectAll.addCssClass('ag-header-select-all');\n setAriaRole(this.cbSelectAll.getGui(), 'presentation');\n this.showOrHideSelectAll();\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.showOrHideSelectAll.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.showOrHideSelectAll.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_SELECTION_CHANGED, this.onSelectionChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_MODEL_UPDATED, this.onModelChanged.bind(this));\n this.addManagedListener(this.cbSelectAll, AgCheckbox.EVENT_CHANGED, this.onCbSelectAll.bind(this));\n this.cbSelectAll.getInputElement().setAttribute('tabindex', '-1');\n this.refreshSelectAllLabel();\n };\n SelectAllFeature.prototype.showOrHideSelectAll = function () {\n this.cbSelectAllVisible = this.isCheckboxSelection();\n this.cbSelectAll.setDisplayed(this.cbSelectAllVisible);\n if (this.cbSelectAllVisible) {\n // in case user is trying this feature with the wrong model type\n this.checkRightRowModelType();\n // make sure checkbox is showing the right state\n this.updateStateOfCheckbox();\n }\n this.refreshHeaderAriaDescribedBy(this.cbSelectAllVisible);\n };\n SelectAllFeature.prototype.refreshHeaderAriaDescribedBy = function (isSelectAllVisible) {\n var describedBy = isSelectAllVisible ? this.cbSelectAll.getInputElement().id : undefined;\n this.comp.setAriaDescribedBy(describedBy);\n };\n SelectAllFeature.prototype.onModelChanged = function () {\n if (!this.cbSelectAllVisible) {\n return;\n }\n this.updateStateOfCheckbox();\n };\n SelectAllFeature.prototype.onSelectionChanged = function () {\n if (!this.cbSelectAllVisible) {\n return;\n }\n this.updateStateOfCheckbox();\n };\n SelectAllFeature.prototype.getNextCheckboxState = function (selectionCount) {\n // if no rows, always have it unselected\n if (selectionCount.selected === 0 && selectionCount.notSelected === 0) {\n return false;\n }\n // if mix of selected and unselected, this is the tri-state\n if (selectionCount.selected > 0 && selectionCount.notSelected > 0) {\n return null;\n }\n // only selected\n if (selectionCount.selected > 0) {\n return true;\n }\n // nothing selected\n return false;\n };\n SelectAllFeature.prototype.updateStateOfCheckbox = function () {\n if (this.processingEventFromCheckbox) {\n return;\n }\n this.processingEventFromCheckbox = true;\n var selectionCount = this.getSelectionCount();\n var allSelected = this.getNextCheckboxState(selectionCount);\n this.cbSelectAll.setValue(allSelected);\n this.refreshSelectAllLabel();\n this.processingEventFromCheckbox = false;\n };\n SelectAllFeature.prototype.refreshSelectAllLabel = function () {\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var checked = this.cbSelectAll.getValue();\n var ariaStatus = checked ? translate('ariaChecked', 'checked') : translate('ariaUnchecked', 'unchecked');\n var ariaLabel = translate('ariaRowSelectAll', 'Press Space to toggle all rows selection');\n this.cbSelectAll.setInputAriaLabel(ariaLabel + \" (\" + ariaStatus + \")\");\n };\n SelectAllFeature.prototype.getSelectionCount = function () {\n var _this = this;\n var selectedCount = 0;\n var notSelectedCount = 0;\n var callback = function (node) {\n if (_this.gridOptionsWrapper.isGroupSelectsChildren() && node.group) {\n return;\n }\n if (node.isSelected()) {\n selectedCount++;\n }\n else if (!node.selectable) {\n // don't count non-selectable nodes!\n }\n else {\n notSelectedCount++;\n }\n };\n if (this.filteredOnly) {\n this.gridApi.forEachNodeAfterFilter(callback);\n }\n else {\n this.gridApi.forEachNode(callback);\n }\n return {\n notSelected: notSelectedCount,\n selected: selectedCount\n };\n };\n SelectAllFeature.prototype.checkRightRowModelType = function () {\n var rowModelType = this.rowModel.getType();\n var rowModelMatches = rowModelType === Constants.ROW_MODEL_TYPE_CLIENT_SIDE;\n if (!rowModelMatches) {\n console.warn(\"AG Grid: selectAllCheckbox is only available if using normal row model, you are using \" + rowModelType);\n }\n };\n SelectAllFeature.prototype.onCbSelectAll = function () {\n if (this.processingEventFromCheckbox) {\n return;\n }\n if (!this.cbSelectAllVisible) {\n return;\n }\n var value = this.cbSelectAll.getValue();\n if (value) {\n this.selectionService.selectAllRowNodes(this.filteredOnly);\n }\n else {\n this.selectionService.deselectAllRowNodes(this.filteredOnly);\n }\n };\n SelectAllFeature.prototype.isCheckboxSelection = function () {\n var result = this.column.getColDef().headerCheckboxSelection;\n if (typeof result === 'function') {\n var func = result;\n result = func({\n column: this.column,\n colDef: this.column.getColDef(),\n columnApi: this.columnApi,\n api: this.gridApi\n });\n }\n if (result) {\n if (this.gridOptionsWrapper.isRowModelServerSide()) {\n console.warn('AG Grid: headerCheckboxSelection is not supported for Server Side Row Model');\n return false;\n }\n if (this.gridOptionsWrapper.isRowModelInfinite()) {\n console.warn('AG Grid: headerCheckboxSelection is not supported for Infinite Row Model');\n return false;\n }\n if (this.gridOptionsWrapper.isRowModelViewport()) {\n console.warn('AG Grid: headerCheckboxSelection is not supported for Viewport Row Model');\n return false;\n }\n // otherwise the row model is compatible, so return true\n return true;\n }\n return false;\n };\n __decorate([\n Autowired('gridApi')\n ], SelectAllFeature.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('columnApi')\n ], SelectAllFeature.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('rowModel')\n ], SelectAllFeature.prototype, \"rowModel\", void 0);\n __decorate([\n Autowired('selectionService')\n ], SelectAllFeature.prototype, \"selectionService\", void 0);\n return SelectAllFeature;\n}(BeanStub));\nexport { SelectAllFeature };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { KeyCode } from '../../../constants/keyCode';\nimport { Autowired, PreDestroy } from \"../../../context/context\";\nimport { DragAndDropService, DragSourceType } from \"../../../dragAndDrop/dragAndDropService\";\nimport { Column } from \"../../../entities/column\";\nimport { Events } from \"../../../eventKeys\";\nimport { SetLeftFeature } from \"../../../rendering/features/setLeftFeature\";\nimport { getAriaSortState } from \"../../../utils/aria\";\nimport { ManagedFocusFeature } from \"../../../widgets/managedFocusFeature\";\nimport { TooltipFeature } from \"../../../widgets/tooltipFeature\";\nimport { AbstractHeaderCellCtrl } from \"../abstractCell/abstractHeaderCellCtrl\";\nimport { CssClassApplier } from \"../cssClassApplier\";\nimport { HoverFeature } from \"../hoverFeature\";\nimport { ResizeFeature } from \"./resizeFeature\";\nimport { SelectAllFeature } from \"./selectAllFeature\";\nvar HeaderCellCtrl = /** @class */ (function (_super) {\n __extends(HeaderCellCtrl, _super);\n function HeaderCellCtrl(column, parentRowCtrl) {\n var _this = _super.call(this, column, parentRowCtrl) || this;\n _this.refreshFunctions = [];\n _this.userHeaderClasses = new Set();\n _this.column = column;\n return _this;\n }\n HeaderCellCtrl.prototype.setComp = function (comp, eGui, eResize) {\n var _this = this;\n _super.prototype.setGui.call(this, eGui);\n this.comp = comp;\n this.colDefVersion = this.columnModel.getColDefVersion();\n this.updateState();\n this.setupWidth();\n this.setupMovingCss();\n this.setupMenuClass();\n this.setupSortableClass();\n this.addColumnHoverListener();\n this.setupFilterCss();\n this.setupColId();\n this.setupClassesFromColDef();\n this.setupTooltip();\n this.addActiveHeaderMouseListeners();\n this.setupSelectAll();\n this.setupUserComp();\n this.createManagedBean(new ResizeFeature(this.getPinned(), this.column, eResize, comp, this));\n this.createManagedBean(new HoverFeature([this.column], eGui));\n this.createManagedBean(new SetLeftFeature(this.column, eGui, this.beans));\n this.createManagedBean(new ManagedFocusFeature(eGui, {\n shouldStopEventPropagation: function (e) { return _this.shouldStopEventPropagation(e); },\n onTabKeyDown: function () { return null; },\n handleKeyDown: this.handleKeyDown.bind(this),\n onFocusIn: this.onFocusIn.bind(this),\n onFocusOut: this.onFocusOut.bind(this)\n }));\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.onNewColumnsLoaded.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VALUE_CHANGED, this.onColumnValueChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.onColumnRowGroupChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_CHANGED, this.onColumnPivotChanged.bind(this));\n };\n HeaderCellCtrl.prototype.setupUserComp = function () {\n var compDetails = this.lookupUserCompDetails();\n this.setCompDetails(compDetails);\n };\n HeaderCellCtrl.prototype.setCompDetails = function (compDetails) {\n this.userCompDetails = compDetails;\n this.comp.setUserCompDetails(compDetails);\n };\n HeaderCellCtrl.prototype.lookupUserCompDetails = function () {\n var params = this.createParams();\n var colDef = this.column.getColDef();\n return this.userComponentFactory.getHeaderCompDetails(colDef, params);\n };\n HeaderCellCtrl.prototype.createParams = function () {\n var _this = this;\n var colDef = this.column.getColDef();\n var params = {\n column: this.column,\n displayName: this.displayName,\n enableSorting: colDef.sortable,\n enableMenu: this.menuEnabled,\n showColumnMenu: function (source) {\n _this.gridApi.showColumnMenuAfterButtonClick(_this.column, source);\n },\n progressSort: function (multiSort) {\n _this.sortController.progressSort(_this.column, !!multiSort, \"uiColumnSorted\");\n },\n setSort: function (sort, multiSort) {\n _this.sortController.setSortForColumn(_this.column, sort, !!multiSort, \"uiColumnSorted\");\n },\n api: this.gridApi,\n columnApi: this.columnApi,\n context: this.gridOptionsWrapper.getContext(),\n eGridHeader: this.getGui()\n };\n return params;\n };\n HeaderCellCtrl.prototype.setupSelectAll = function () {\n this.selectAllFeature = this.createManagedBean(new SelectAllFeature(this.column));\n this.selectAllFeature.setComp(this.comp);\n };\n HeaderCellCtrl.prototype.getSelectAllGui = function () {\n return this.selectAllFeature.getCheckboxGui();\n };\n HeaderCellCtrl.prototype.handleKeyDown = function (e) {\n if (e.key === KeyCode.SPACE) {\n this.selectAllFeature.onSpaceKeyPressed(e);\n }\n if (e.key === KeyCode.ENTER) {\n this.onEnterKeyPressed(e);\n }\n };\n HeaderCellCtrl.prototype.onEnterKeyPressed = function (e) {\n /// THIS IS BAD - we are assuming the header is not a user provided comp\n var headerComp = this.comp.getUserCompInstance();\n if (!headerComp) {\n return;\n }\n if (e.ctrlKey || e.metaKey) {\n if (this.menuEnabled && headerComp.showMenu) {\n e.preventDefault();\n headerComp.showMenu();\n }\n }\n else if (this.sortable) {\n var multiSort = e.shiftKey;\n this.sortController.progressSort(this.column, multiSort, \"uiColumnSorted\");\n }\n };\n HeaderCellCtrl.prototype.isMenuEnabled = function () {\n return this.menuEnabled;\n };\n HeaderCellCtrl.prototype.onFocusIn = function (e) {\n if (!this.getGui().contains(e.relatedTarget)) {\n var rowIndex = this.getRowIndex();\n this.focusService.setFocusedHeader(rowIndex, this.column);\n }\n this.setActiveHeader(true);\n };\n HeaderCellCtrl.prototype.onFocusOut = function (e) {\n if (this.getGui().contains(e.relatedTarget)) {\n return;\n }\n this.setActiveHeader(false);\n };\n HeaderCellCtrl.prototype.setupTooltip = function () {\n var _this = this;\n var tooltipCtrl = {\n getColumn: function () { return _this.column; },\n getColDef: function () { return _this.column.getColDef(); },\n getGui: function () { return _this.eGui; },\n getLocation: function () { return 'header'; },\n getTooltipValue: function () {\n var res = _this.column.getColDef().headerTooltip;\n return res;\n },\n };\n var tooltipFeature = this.createManagedBean(new TooltipFeature(tooltipCtrl, this.beans));\n tooltipFeature.setComp(this.comp);\n this.refreshFunctions.push(function () { return tooltipFeature.refreshToolTip(); });\n };\n HeaderCellCtrl.prototype.setupClassesFromColDef = function () {\n var _this = this;\n var refreshHeaderClasses = function () {\n var colDef = _this.column.getColDef();\n var goa = _this.gridOptionsWrapper;\n var classes = CssClassApplier.getHeaderClassesFromColDef(colDef, goa, _this.column, null);\n var oldClasses = _this.userHeaderClasses;\n _this.userHeaderClasses = new Set(classes);\n classes.forEach(function (c) {\n if (oldClasses.has(c)) {\n // class already added, no need to apply it, but remove from old set\n oldClasses.delete(c);\n }\n else {\n // class new since last time, so apply it\n _this.comp.addOrRemoveCssClass(c, true);\n }\n });\n // now old set only has classes that were applied last time, but not this time, so remove them\n oldClasses.forEach(function (c) { return _this.comp.addOrRemoveCssClass(c, false); });\n };\n this.refreshFunctions.push(refreshHeaderClasses);\n refreshHeaderClasses();\n };\n HeaderCellCtrl.prototype.setDragSource = function (eSource) {\n var _this = this;\n this.dragSourceElement = eSource;\n this.removeDragSource();\n if (!eSource) {\n return;\n }\n if (!this.draggable) {\n return;\n }\n this.moveDragSource = {\n type: DragSourceType.HeaderCell,\n eElement: eSource,\n defaultIconName: DragAndDropService.ICON_HIDE,\n getDragItem: function () { return _this.createDragItem(); },\n dragItemName: this.displayName,\n onDragStarted: function () { return _this.column.setMoving(true, \"uiColumnMoved\"); },\n onDragStopped: function () { return _this.column.setMoving(false, \"uiColumnMoved\"); }\n };\n this.dragAndDropService.addDragSource(this.moveDragSource, true);\n };\n HeaderCellCtrl.prototype.createDragItem = function () {\n var visibleState = {};\n visibleState[this.column.getId()] = this.column.isVisible();\n return {\n columns: [this.column],\n visibleState: visibleState\n };\n };\n HeaderCellCtrl.prototype.removeDragSource = function () {\n if (this.moveDragSource) {\n this.dragAndDropService.removeDragSource(this.moveDragSource);\n this.moveDragSource = undefined;\n }\n };\n HeaderCellCtrl.prototype.onNewColumnsLoaded = function () {\n var colDefVersionNow = this.columnModel.getColDefVersion();\n if (colDefVersionNow != this.colDefVersion) {\n this.colDefVersion = colDefVersionNow;\n this.refresh();\n }\n };\n HeaderCellCtrl.prototype.updateState = function () {\n var colDef = this.column.getColDef();\n this.menuEnabled = this.menuFactory.isMenuEnabled(this.column) && !colDef.suppressMenu;\n this.sortable = colDef.sortable;\n this.displayName = this.calculateDisplayName();\n this.draggable = this.workOutDraggable();\n };\n HeaderCellCtrl.prototype.addRefreshFunction = function (func) {\n this.refreshFunctions.push(func);\n };\n HeaderCellCtrl.prototype.refresh = function () {\n this.updateState();\n this.refreshHeaderComp();\n this.refreshFunctions.forEach(function (f) { return f(); });\n };\n HeaderCellCtrl.prototype.refreshHeaderComp = function () {\n var newCompDetails = this.lookupUserCompDetails();\n var compInstance = this.comp.getUserCompInstance();\n // only try refresh if old comp exists adn it is the correct type\n var attemptRefresh = compInstance != null && this.userCompDetails.componentClass == newCompDetails.componentClass;\n var headerCompRefreshed = attemptRefresh ? this.attemptHeaderCompRefresh(newCompDetails.params) : false;\n if (headerCompRefreshed) {\n // we do this as a refresh happens after colDefs change, and it's possible the column has had it's\n // draggable property toggled. no need to call this if not refreshing, as setDragSource is done\n // as part of appendHeaderComp\n this.setDragSource(this.dragSourceElement);\n }\n else {\n this.setCompDetails(newCompDetails);\n }\n };\n HeaderCellCtrl.prototype.attemptHeaderCompRefresh = function (params) {\n var headerComp = this.comp.getUserCompInstance();\n if (!headerComp) {\n return false;\n }\n // if no refresh method, then we want to replace the headerComp\n if (!headerComp.refresh) {\n return false;\n }\n var res = headerComp.refresh(params);\n return res;\n };\n HeaderCellCtrl.prototype.calculateDisplayName = function () {\n return this.columnModel.getDisplayNameForColumn(this.column, 'header', true);\n };\n HeaderCellCtrl.prototype.checkDisplayName = function () {\n // display name can change if aggFunc different, eg sum(Gold) is now max(Gold)\n if (this.displayName !== this.calculateDisplayName()) {\n this.refresh();\n }\n };\n HeaderCellCtrl.prototype.workOutDraggable = function () {\n var colDef = this.column.getColDef();\n var isSuppressMovableColumns = this.gridOptionsWrapper.isSuppressMovableColumns();\n var colCanMove = !isSuppressMovableColumns && !colDef.suppressMovable && !colDef.lockPosition;\n // we should still be allowed drag the column, even if it can't be moved, if the column\n // can be dragged to a rowGroup or pivot drop zone\n return !!colCanMove || !!colDef.enableRowGroup || !!colDef.enablePivot;\n };\n HeaderCellCtrl.prototype.onColumnRowGroupChanged = function () {\n this.checkDisplayName();\n };\n HeaderCellCtrl.prototype.onColumnPivotChanged = function () {\n this.checkDisplayName();\n };\n HeaderCellCtrl.prototype.onColumnValueChanged = function () {\n this.checkDisplayName();\n };\n HeaderCellCtrl.prototype.setupWidth = function () {\n var _this = this;\n var listener = function () {\n _this.comp.setWidth(_this.column.getActualWidth() + 'px');\n };\n this.addManagedListener(this.column, Column.EVENT_WIDTH_CHANGED, listener);\n listener();\n };\n HeaderCellCtrl.prototype.setupMovingCss = function () {\n var _this = this;\n var listener = function () {\n // this is what makes the header go dark when it is been moved (gives impression to\n // user that the column was picked up).\n _this.comp.addOrRemoveCssClass('ag-header-cell-moving', _this.column.isMoving());\n };\n this.addManagedListener(this.column, Column.EVENT_MOVING_CHANGED, listener);\n listener();\n };\n HeaderCellCtrl.prototype.setupMenuClass = function () {\n var _this = this;\n var listener = function () {\n _this.comp.addOrRemoveCssClass('ag-column-menu-visible', _this.column.isMenuVisible());\n };\n this.addManagedListener(this.column, Column.EVENT_MENU_VISIBLE_CHANGED, listener);\n listener();\n };\n HeaderCellCtrl.prototype.setupSortableClass = function () {\n var _this = this;\n var updateSortableCssClass = function () {\n _this.comp.addOrRemoveCssClass('ag-header-cell-sortable', !!_this.sortable);\n };\n var updateAriaSort = function () {\n if (_this.sortable) {\n _this.comp.setAriaSort(getAriaSortState(_this.column));\n }\n else {\n _this.comp.setAriaSort(undefined);\n }\n };\n updateSortableCssClass();\n updateAriaSort();\n this.addRefreshFunction(updateSortableCssClass);\n this.addRefreshFunction(updateAriaSort);\n this.addManagedListener(this.column, Column.EVENT_SORT_CHANGED, updateAriaSort);\n };\n HeaderCellCtrl.prototype.addColumnHoverListener = function () {\n var _this = this;\n var listener = function () {\n if (!_this.gridOptionsWrapper.isColumnHoverHighlight()) {\n return;\n }\n var isHovered = _this.columnHoverService.isHovered(_this.column);\n _this.comp.addOrRemoveCssClass('ag-column-hover', isHovered);\n };\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_HOVER_CHANGED, listener);\n listener();\n };\n HeaderCellCtrl.prototype.setupFilterCss = function () {\n var _this = this;\n var listener = function () {\n _this.comp.addOrRemoveCssClass('ag-header-cell-filtered', _this.column.isFilterActive());\n };\n this.addManagedListener(this.column, Column.EVENT_FILTER_ACTIVE_CHANGED, listener);\n listener();\n };\n HeaderCellCtrl.prototype.setupColId = function () {\n this.comp.setColId(this.column.getColId());\n };\n HeaderCellCtrl.prototype.addActiveHeaderMouseListeners = function () {\n var _this = this;\n var listener = function (e) { return _this.setActiveHeader(e.type === 'mouseenter'); };\n this.addManagedListener(this.getGui(), 'mouseenter', listener);\n this.addManagedListener(this.getGui(), 'mouseleave', listener);\n };\n HeaderCellCtrl.prototype.setActiveHeader = function (active) {\n this.comp.addOrRemoveCssClass('ag-header-active', active);\n };\n __decorate([\n Autowired('columnModel')\n ], HeaderCellCtrl.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('columnHoverService')\n ], HeaderCellCtrl.prototype, \"columnHoverService\", void 0);\n __decorate([\n Autowired('beans')\n ], HeaderCellCtrl.prototype, \"beans\", void 0);\n __decorate([\n Autowired('sortController')\n ], HeaderCellCtrl.prototype, \"sortController\", void 0);\n __decorate([\n Autowired('menuFactory')\n ], HeaderCellCtrl.prototype, \"menuFactory\", void 0);\n __decorate([\n Autowired('dragAndDropService')\n ], HeaderCellCtrl.prototype, \"dragAndDropService\", void 0);\n __decorate([\n Autowired('gridApi')\n ], HeaderCellCtrl.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('columnApi')\n ], HeaderCellCtrl.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('userComponentFactory')\n ], HeaderCellCtrl.prototype, \"userComponentFactory\", void 0);\n __decorate([\n PreDestroy\n ], HeaderCellCtrl.prototype, \"removeDragSource\", null);\n return HeaderCellCtrl;\n}(AbstractHeaderCellCtrl));\nexport { HeaderCellCtrl };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Constants } from \"../../../constants/constants\";\nimport { BeanStub } from \"../../../context/beanStub\";\nimport { Autowired, PostConstruct } from \"../../../context/context\";\nvar GroupResizeFeature = /** @class */ (function (_super) {\n __extends(GroupResizeFeature, _super);\n function GroupResizeFeature(comp, eResize, pinned, columnGroup) {\n var _this = _super.call(this) || this;\n _this.eResize = eResize;\n _this.comp = comp;\n _this.pinned = pinned;\n _this.columnGroup = columnGroup;\n return _this;\n }\n GroupResizeFeature.prototype.postConstruct = function () {\n var _this = this;\n if (!this.columnGroup.isResizable()) {\n this.comp.addOrRemoveResizableCssClass('ag-hidden', true);\n return;\n }\n var finishedWithResizeFunc = this.horizontalResizeService.addResizeBar({\n eResizeBar: this.eResize,\n onResizeStart: this.onResizeStart.bind(this),\n onResizing: this.onResizing.bind(this, false),\n onResizeEnd: this.onResizing.bind(this, true)\n });\n this.addDestroyFunc(finishedWithResizeFunc);\n if (!this.gridOptionsWrapper.isSuppressAutoSize()) {\n var skipHeaderOnAutoSize_1 = this.gridOptionsWrapper.isSkipHeaderOnAutoSize();\n this.eResize.addEventListener('dblclick', function () {\n // get list of all the column keys we are responsible for\n var keys = [];\n var leafCols = _this.columnGroup.getDisplayedLeafColumns();\n leafCols.forEach(function (column) {\n // not all cols in the group may be participating with auto-resize\n if (!column.getColDef().suppressAutoSize) {\n keys.push(column.getColId());\n }\n });\n if (keys.length > 0) {\n _this.columnModel.autoSizeColumns({\n columns: keys,\n skipHeader: skipHeaderOnAutoSize_1,\n stopAtGroup: _this.columnGroup,\n source: 'uiColumnResized'\n });\n }\n _this.resizeLeafColumnsToFit();\n });\n }\n };\n GroupResizeFeature.prototype.onResizeStart = function (shiftKey) {\n var _this = this;\n this.calculateInitialValues();\n var takeFromGroup = null;\n if (shiftKey) {\n takeFromGroup = this.columnModel.getDisplayedGroupAfter(this.columnGroup);\n }\n if (takeFromGroup) {\n var takeFromLeafCols = takeFromGroup.getDisplayedLeafColumns();\n this.resizeTakeFromCols = takeFromLeafCols.filter(function (col) { return col.isResizable(); });\n this.resizeTakeFromStartWidth = 0;\n this.resizeTakeFromCols.forEach(function (col) { return _this.resizeTakeFromStartWidth += col.getActualWidth(); });\n this.resizeTakeFromRatios = [];\n this.resizeTakeFromCols.forEach(function (col) { return _this.resizeTakeFromRatios.push(col.getActualWidth() / _this.resizeTakeFromStartWidth); });\n }\n else {\n this.resizeTakeFromCols = null;\n this.resizeTakeFromStartWidth = null;\n this.resizeTakeFromRatios = null;\n }\n this.comp.addOrRemoveCssClass('ag-column-resizing', true);\n };\n GroupResizeFeature.prototype.onResizing = function (finished, resizeAmount) {\n var resizeAmountNormalised = this.normaliseDragChange(resizeAmount);\n var width = this.resizeStartWidth + resizeAmountNormalised;\n this.resizeColumns(width, finished);\n };\n GroupResizeFeature.prototype.resizeLeafColumnsToFit = function () {\n var preferredSize = this.autoWidthCalculator.getPreferredWidthForColumnGroup(this.columnGroup);\n this.calculateInitialValues();\n if (preferredSize > this.resizeStartWidth) {\n this.resizeColumns(preferredSize, true);\n }\n };\n GroupResizeFeature.prototype.resizeColumns = function (totalWidth, finished) {\n if (finished === void 0) { finished = true; }\n var resizeSets = [];\n resizeSets.push({\n columns: this.resizeCols,\n ratios: this.resizeRatios,\n width: totalWidth\n });\n if (this.resizeTakeFromCols) {\n var diff = totalWidth - this.resizeStartWidth;\n resizeSets.push({\n columns: this.resizeTakeFromCols,\n ratios: this.resizeTakeFromRatios,\n width: this.resizeTakeFromStartWidth - diff\n });\n }\n this.columnModel.resizeColumnSets({\n resizeSets: resizeSets,\n finished: finished,\n source: 'uiColumnDragged'\n });\n if (finished) {\n this.comp.addOrRemoveCssClass('ag-column-resizing', false);\n }\n };\n GroupResizeFeature.prototype.calculateInitialValues = function () {\n var _this = this;\n var leafCols = this.columnGroup.getDisplayedLeafColumns();\n this.resizeCols = leafCols.filter(function (col) { return col.isResizable(); });\n this.resizeStartWidth = 0;\n this.resizeCols.forEach(function (col) { return _this.resizeStartWidth += col.getActualWidth(); });\n this.resizeRatios = [];\n this.resizeCols.forEach(function (col) { return _this.resizeRatios.push(col.getActualWidth() / _this.resizeStartWidth); });\n };\n // optionally inverts the drag, depending on pinned and RTL\n // note - this method is duplicated in RenderedHeaderCell - should refactor out?\n GroupResizeFeature.prototype.normaliseDragChange = function (dragChange) {\n var result = dragChange;\n if (this.gridOptionsWrapper.isEnableRtl()) {\n // for RTL, dragging left makes the col bigger, except when pinning left\n if (this.pinned !== Constants.PINNED_LEFT) {\n result *= -1;\n }\n }\n else if (this.pinned === Constants.PINNED_RIGHT) {\n // for LTR (ie normal), dragging left makes the col smaller, except when pinning right\n result *= -1;\n }\n return result;\n };\n __decorate([\n Autowired('horizontalResizeService')\n ], GroupResizeFeature.prototype, \"horizontalResizeService\", void 0);\n __decorate([\n Autowired('autoWidthCalculator')\n ], GroupResizeFeature.prototype, \"autoWidthCalculator\", void 0);\n __decorate([\n Autowired('columnModel')\n ], GroupResizeFeature.prototype, \"columnModel\", void 0);\n __decorate([\n PostConstruct\n ], GroupResizeFeature.prototype, \"postConstruct\", null);\n return GroupResizeFeature;\n}(BeanStub));\nexport { GroupResizeFeature };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { BeanStub } from \"../../../context/beanStub\";\nimport { PostConstruct } from \"../../../context/context\";\nimport { Column } from \"../../../entities/column\";\nimport { ColumnGroup } from \"../../../entities/columnGroup\";\nvar GroupWidthFeature = /** @class */ (function (_super) {\n __extends(GroupWidthFeature, _super);\n function GroupWidthFeature(comp, columnGroup) {\n var _this = _super.call(this) || this;\n // the children can change, we keep destroy functions related to listening to the children here\n _this.removeChildListenersFuncs = [];\n _this.columnGroup = columnGroup;\n _this.comp = comp;\n return _this;\n }\n GroupWidthFeature.prototype.postConstruct = function () {\n // we need to listen to changes in child columns, as they impact our width\n this.addListenersToChildrenColumns();\n // the children belonging to this group can change, so we need to add and remove listeners as they change\n this.addManagedListener(this.columnGroup, ColumnGroup.EVENT_DISPLAYED_CHILDREN_CHANGED, this.onDisplayedChildrenChanged.bind(this));\n this.onWidthChanged();\n // the child listeners are not tied to this components life-cycle, as children can get added and removed\n // to the group - hence they are on a different life-cycle. so we must make sure the existing children\n // listeners are removed when we finally get destroyed\n this.addDestroyFunc(this.removeListenersOnChildrenColumns.bind(this));\n };\n GroupWidthFeature.prototype.addListenersToChildrenColumns = function () {\n var _this = this;\n // first destroy any old listeners\n this.removeListenersOnChildrenColumns();\n // now add new listeners to the new set of children\n var widthChangedListener = this.onWidthChanged.bind(this);\n this.columnGroup.getLeafColumns().forEach(function (column) {\n column.addEventListener(Column.EVENT_WIDTH_CHANGED, widthChangedListener);\n column.addEventListener(Column.EVENT_VISIBLE_CHANGED, widthChangedListener);\n _this.removeChildListenersFuncs.push(function () {\n column.removeEventListener(Column.EVENT_WIDTH_CHANGED, widthChangedListener);\n column.removeEventListener(Column.EVENT_VISIBLE_CHANGED, widthChangedListener);\n });\n });\n };\n GroupWidthFeature.prototype.removeListenersOnChildrenColumns = function () {\n this.removeChildListenersFuncs.forEach(function (func) { return func(); });\n this.removeChildListenersFuncs = [];\n };\n GroupWidthFeature.prototype.onDisplayedChildrenChanged = function () {\n this.addListenersToChildrenColumns();\n this.onWidthChanged();\n };\n GroupWidthFeature.prototype.onWidthChanged = function () {\n this.comp.setWidth(this.columnGroup.getActualWidth() + 'px');\n };\n __decorate([\n PostConstruct\n ], GroupWidthFeature.prototype, \"postConstruct\", null);\n return GroupWidthFeature;\n}(BeanStub));\nexport { GroupWidthFeature };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { KeyCode } from '../../../constants/keyCode';\nimport { Autowired } from \"../../../context/context\";\nimport { DragAndDropService, DragSourceType } from \"../../../dragAndDrop/dragAndDropService\";\nimport { Column } from \"../../../entities/column\";\nimport { ProvidedColumnGroup } from \"../../../entities/providedColumnGroup\";\nimport { SetLeftFeature } from \"../../../rendering/features/setLeftFeature\";\nimport { removeFromArray } from \"../../../utils/array\";\nimport { ManagedFocusFeature } from \"../../../widgets/managedFocusFeature\";\nimport { TooltipFeature } from \"../../../widgets/tooltipFeature\";\nimport { AbstractHeaderCellCtrl } from \"../abstractCell/abstractHeaderCellCtrl\";\nimport { CssClassApplier } from \"../cssClassApplier\";\nimport { HoverFeature } from \"../hoverFeature\";\nimport { GroupResizeFeature } from \"./groupResizeFeature\";\nimport { GroupWidthFeature } from \"./groupWidthFeature\";\nvar HeaderGroupCellCtrl = /** @class */ (function (_super) {\n __extends(HeaderGroupCellCtrl, _super);\n function HeaderGroupCellCtrl(columnGroup, parentRowCtrl) {\n var _this = _super.call(this, columnGroup, parentRowCtrl) || this;\n _this.columnGroup = columnGroup;\n return _this;\n }\n HeaderGroupCellCtrl.prototype.setComp = function (comp, eGui, eResize) {\n _super.prototype.setGui.call(this, eGui);\n this.comp = comp;\n this.displayName = this.columnModel.getDisplayNameForColumnGroup(this.columnGroup, 'header');\n this.addClasses();\n this.addAttributes();\n this.setupMovingCss();\n this.setupExpandable();\n this.setupTooltip();\n this.setupUserComp();\n var pinned = this.getParentRowCtrl().getPinned();\n var leafCols = this.columnGroup.getProvidedColumnGroup().getLeafColumns();\n this.createManagedBean(new HoverFeature(leafCols, eGui));\n this.createManagedBean(new SetLeftFeature(this.columnGroup, eGui, this.beans));\n this.createManagedBean(new GroupWidthFeature(comp, this.columnGroup));\n this.groupResizeFeature = this.createManagedBean(new GroupResizeFeature(comp, eResize, pinned, this.columnGroup));\n this.createManagedBean(new ManagedFocusFeature(eGui, {\n shouldStopEventPropagation: this.shouldStopEventPropagation.bind(this),\n onTabKeyDown: function () { return undefined; },\n handleKeyDown: this.handleKeyDown.bind(this),\n onFocusIn: this.onFocusIn.bind(this)\n }));\n };\n HeaderGroupCellCtrl.prototype.resizeLeafColumnsToFit = function () {\n this.groupResizeFeature.onResizeStart(false);\n this.groupResizeFeature.resizeLeafColumnsToFit();\n };\n HeaderGroupCellCtrl.prototype.setupUserComp = function () {\n var _this = this;\n var displayName = this.displayName;\n var params = {\n displayName: this.displayName,\n columnGroup: this.columnGroup,\n setExpanded: function (expanded) {\n _this.columnModel.setColumnGroupOpened(_this.columnGroup.getProvidedColumnGroup(), expanded, \"gridInitializing\");\n },\n api: this.gridApi,\n columnApi: this.columnApi,\n context: this.gridOptionsWrapper.getContext()\n };\n if (!displayName) {\n var columnGroup = this.columnGroup;\n var leafCols = columnGroup.getLeafColumns();\n // find the top most column group that represents the same columns. so if we are dragging a group, we also\n // want to visually show the parent groups dragging for the same column set. for example imaging 5 levels\n // of grouping, with each group only containing the next group, and the last group containing three columns,\n // then when you move any group (even the lowest level group) you are in-fact moving all the groups, as all\n // the groups represent the same column set.\n while (columnGroup.getParent() && columnGroup.getParent().getLeafColumns().length === leafCols.length) {\n columnGroup = columnGroup.getParent();\n }\n var colGroupDef = columnGroup.getColGroupDef();\n if (colGroupDef) {\n displayName = colGroupDef.headerName;\n }\n if (!displayName) {\n displayName = leafCols ? this.columnModel.getDisplayNameForColumn(leafCols[0], 'header', true) : '';\n }\n }\n var compDetails = this.userComponentFactory.getHeaderGroupCompDetails(params);\n this.comp.setUserCompDetails(compDetails);\n };\n HeaderGroupCellCtrl.prototype.setupTooltip = function () {\n var _this = this;\n var colGroupDef = this.columnGroup.getColGroupDef();\n var tooltipCtrl = {\n getColumn: function () { return _this.columnGroup; },\n getGui: function () { return _this.eGui; },\n getLocation: function () { return 'headerGroup'; },\n getTooltipValue: function () { return colGroupDef && colGroupDef.headerTooltip; }\n };\n if (colGroupDef) {\n tooltipCtrl.getColDef = function () { return colGroupDef; };\n }\n var tooltipFeature = this.createManagedBean(new TooltipFeature(tooltipCtrl, this.beans));\n tooltipFeature.setComp(this.comp);\n };\n HeaderGroupCellCtrl.prototype.setupExpandable = function () {\n var providedColGroup = this.columnGroup.getProvidedColumnGroup();\n this.refreshExpanded();\n this.addManagedListener(providedColGroup, ProvidedColumnGroup.EVENT_EXPANDABLE_CHANGED, this.refreshExpanded.bind(this));\n this.addManagedListener(providedColGroup, ProvidedColumnGroup.EVENT_EXPANDED_CHANGED, this.refreshExpanded.bind(this));\n };\n HeaderGroupCellCtrl.prototype.refreshExpanded = function () {\n var column = this.columnGroup;\n this.expandable = column.isExpandable();\n var expanded = column.isExpanded();\n if (this.expandable) {\n this.comp.setAriaExpanded(expanded ? 'true' : 'false');\n }\n else {\n this.comp.setAriaExpanded(undefined);\n }\n };\n HeaderGroupCellCtrl.prototype.addAttributes = function () {\n this.comp.setColId(this.columnGroup.getUniqueId());\n };\n HeaderGroupCellCtrl.prototype.addClasses = function () {\n var _this = this;\n var colGroupDef = this.columnGroup.getColGroupDef();\n var classes = CssClassApplier.getHeaderClassesFromColDef(colGroupDef, this.gridOptionsWrapper, null, this.columnGroup);\n // having different classes below allows the style to not have a bottom border\n // on the group header, if no group is specified\n classes.push(this.columnGroup.isPadding() ? \"ag-header-group-cell-no-group\" : \"ag-header-group-cell-with-group\");\n classes.forEach(function (c) { return _this.comp.addOrRemoveCssClass(c, true); });\n };\n HeaderGroupCellCtrl.prototype.setupMovingCss = function () {\n var _this = this;\n var providedColumnGroup = this.columnGroup.getProvidedColumnGroup();\n var leafColumns = providedColumnGroup.getLeafColumns();\n // this function adds or removes the moving css, based on if the col is moving.\n // this is what makes the header go dark when it is been moved (gives impression to\n // user that the column was picked up).\n var listener = function () { return _this.comp.addOrRemoveCssClass('ag-header-cell-moving', _this.columnGroup.isMoving()); };\n leafColumns.forEach(function (col) {\n _this.addManagedListener(col, Column.EVENT_MOVING_CHANGED, listener);\n });\n listener();\n };\n HeaderGroupCellCtrl.prototype.onFocusIn = function (e) {\n if (!this.eGui.contains(e.relatedTarget)) {\n var rowIndex = this.getRowIndex();\n this.beans.focusService.setFocusedHeader(rowIndex, this.columnGroup);\n }\n };\n HeaderGroupCellCtrl.prototype.handleKeyDown = function (e) {\n var eDocument = this.gridOptionsWrapper.getDocument();\n var activeEl = eDocument.activeElement;\n var wrapperHasFocus = activeEl === this.eGui;\n if (!this.expandable || !wrapperHasFocus) {\n return;\n }\n if (e.key === KeyCode.ENTER) {\n var column = this.columnGroup;\n var newExpandedValue = !column.isExpanded();\n this.columnModel.setColumnGroupOpened(column.getProvidedColumnGroup(), newExpandedValue, \"uiColumnExpanded\");\n }\n };\n // unlike columns, this will only get called once, as we don't react on props on column groups\n // (we will always destroy and recreate this comp if something changes)\n HeaderGroupCellCtrl.prototype.setDragSource = function (eHeaderGroup) {\n var _this = this;\n if (this.isSuppressMoving()) {\n return;\n }\n var allLeafColumns = this.columnGroup.getProvidedColumnGroup().getLeafColumns();\n var dragSource = {\n type: DragSourceType.HeaderCell,\n eElement: eHeaderGroup,\n defaultIconName: DragAndDropService.ICON_HIDE,\n dragItemName: this.displayName,\n // we add in the original group leaf columns, so we move both visible and non-visible items\n getDragItem: this.getDragItemForGroup.bind(this),\n onDragStarted: function () { return allLeafColumns.forEach(function (col) { return col.setMoving(true, \"uiColumnDragged\"); }); },\n onDragStopped: function () { return allLeafColumns.forEach(function (col) { return col.setMoving(false, \"uiColumnDragged\"); }); }\n };\n this.dragAndDropService.addDragSource(dragSource, true);\n this.addDestroyFunc(function () { return _this.dragAndDropService.removeDragSource(dragSource); });\n };\n // when moving the columns, we want to move all the columns (contained within the DragItem) in this group in one go,\n // and in the order they are currently in the screen.\n HeaderGroupCellCtrl.prototype.getDragItemForGroup = function () {\n var allColumnsOriginalOrder = this.columnGroup.getProvidedColumnGroup().getLeafColumns();\n // capture visible state, used when re-entering grid to dictate which columns should be visible\n var visibleState = {};\n allColumnsOriginalOrder.forEach(function (column) { return visibleState[column.getId()] = column.isVisible(); });\n var allColumnsCurrentOrder = [];\n this.columnModel.getAllDisplayedColumns().forEach(function (column) {\n if (allColumnsOriginalOrder.indexOf(column) >= 0) {\n allColumnsCurrentOrder.push(column);\n removeFromArray(allColumnsOriginalOrder, column);\n }\n });\n // we are left with non-visible columns, stick these in at the end\n allColumnsOriginalOrder.forEach(function (column) { return allColumnsCurrentOrder.push(column); });\n // create and return dragItem\n return {\n columns: allColumnsCurrentOrder,\n visibleState: visibleState\n };\n };\n HeaderGroupCellCtrl.prototype.isSuppressMoving = function () {\n // if any child is fixed, then don't allow moving\n var childSuppressesMoving = false;\n this.columnGroup.getLeafColumns().forEach(function (column) {\n if (column.getColDef().suppressMovable || column.getColDef().lockPosition) {\n childSuppressesMoving = true;\n }\n });\n var result = childSuppressesMoving || this.gridOptionsWrapper.isSuppressMovableColumns();\n return result;\n };\n __decorate([\n Autowired('beans')\n ], HeaderGroupCellCtrl.prototype, \"beans\", void 0);\n __decorate([\n Autowired('columnModel')\n ], HeaderGroupCellCtrl.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('dragAndDropService')\n ], HeaderGroupCellCtrl.prototype, \"dragAndDropService\", void 0);\n __decorate([\n Autowired('userComponentFactory')\n ], HeaderGroupCellCtrl.prototype, \"userComponentFactory\", void 0);\n __decorate([\n Autowired('gridApi')\n ], HeaderGroupCellCtrl.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('columnApi')\n ], HeaderGroupCellCtrl.prototype, \"columnApi\", void 0);\n return HeaderGroupCellCtrl;\n}(AbstractHeaderCellCtrl));\nexport { HeaderGroupCellCtrl };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Constants } from \"../../constants/constants\";\nimport { BeanStub } from \"../../context/beanStub\";\nimport { Autowired, PreDestroy } from \"../../context/context\";\nimport { Events } from \"../../eventKeys\";\nimport { GridOptionsWrapper } from \"../../gridOptionsWrapper\";\nimport { isBrowserSafari } from \"../../utils/browser\";\nimport { getAllValuesInObject, iterateObject } from \"../../utils/object\";\nimport { HeaderFilterCellCtrl } from \"../cells/floatingFilter/headerFilterCellCtrl\";\nimport { HeaderCellCtrl } from \"../cells/column/headerCellCtrl\";\nimport { HeaderGroupCellCtrl } from \"../cells/columnGroup/headerGroupCellCtrl\";\nimport { HeaderRowType } from \"./headerRowComp\";\nimport { values } from \"../../utils/generic\";\nvar instanceIdSequence = 0;\nvar HeaderRowCtrl = /** @class */ (function (_super) {\n __extends(HeaderRowCtrl, _super);\n function HeaderRowCtrl(rowIndex, pinned, type) {\n var _this = _super.call(this) || this;\n _this.instanceId = instanceIdSequence++;\n _this.headerCellCtrls = {};\n _this.rowIndex = rowIndex;\n _this.pinned = pinned;\n _this.type = type;\n return _this;\n }\n HeaderRowCtrl.prototype.getInstanceId = function () {\n return this.instanceId;\n };\n HeaderRowCtrl.prototype.setComp = function (comp) {\n this.comp = comp;\n this.onRowHeightChanged();\n this.onVirtualColumnsChanged();\n this.setWidth();\n this.addEventListeners();\n if (isBrowserSafari()) {\n // fix for a Safari rendering bug that caused the header to flicker above chart panels\n // as you move the mouse over the header\n this.comp.setTransform('translateZ(0)');\n }\n comp.setAriaRowIndex(this.rowIndex + 1);\n };\n HeaderRowCtrl.prototype.addEventListeners = function () {\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_RESIZED, this.onColumnResized.bind(this));\n // when print layout changes, it changes what columns are in what section\n this.addManagedListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_DOM_LAYOUT, this.onDisplayedColumnsChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_VIRTUAL_COLUMNS_CHANGED, this.onVirtualColumnsChanged.bind(this));\n this.addManagedListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_HEADER_HEIGHT, this.onRowHeightChanged.bind(this));\n this.addManagedListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_PIVOT_HEADER_HEIGHT, this.onRowHeightChanged.bind(this));\n this.addManagedListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_GROUP_HEADER_HEIGHT, this.onRowHeightChanged.bind(this));\n this.addManagedListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_PIVOT_GROUP_HEADER_HEIGHT, this.onRowHeightChanged.bind(this));\n this.addManagedListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_FLOATING_FILTERS_HEIGHT, this.onRowHeightChanged.bind(this));\n };\n HeaderRowCtrl.prototype.getHeaderCellCtrl = function (column) {\n return values(this.headerCellCtrls).find(function (cellCtrl) { return cellCtrl.getColumnGroupChild() === column; });\n };\n HeaderRowCtrl.prototype.onDisplayedColumnsChanged = function () {\n this.onVirtualColumnsChanged();\n this.setWidth();\n };\n HeaderRowCtrl.prototype.getType = function () {\n return this.type;\n };\n HeaderRowCtrl.prototype.onColumnResized = function () {\n this.setWidth();\n };\n HeaderRowCtrl.prototype.setWidth = function () {\n var width = this.getWidthForRow();\n this.comp.setWidth(width + \"px\");\n };\n HeaderRowCtrl.prototype.getWidthForRow = function () {\n var printLayout = this.gridOptionsWrapper.getDomLayout() === Constants.DOM_LAYOUT_PRINT;\n if (printLayout) {\n var pinned = this.pinned != null;\n if (pinned) {\n return 0;\n }\n return this.columnModel.getContainerWidth(Constants.PINNED_RIGHT)\n + this.columnModel.getContainerWidth(Constants.PINNED_LEFT)\n + this.columnModel.getContainerWidth(null);\n }\n // if not printing, just return the width as normal\n return this.columnModel.getContainerWidth(this.pinned);\n };\n HeaderRowCtrl.prototype.onRowHeightChanged = function () {\n var headerRowCount = this.columnModel.getHeaderRowCount();\n var sizes = [];\n var numberOfFloating = 0;\n var groupHeight;\n var headerHeight;\n if (this.columnModel.isPivotMode()) {\n groupHeight = this.gridOptionsWrapper.getPivotGroupHeaderHeight();\n headerHeight = this.gridOptionsWrapper.getPivotHeaderHeight();\n }\n else {\n if (this.columnModel.hasFloatingFilters()) {\n headerRowCount++;\n numberOfFloating = 1;\n }\n groupHeight = this.gridOptionsWrapper.getGroupHeaderHeight();\n headerHeight = this.gridOptionsWrapper.getHeaderHeight();\n }\n var numberOfNonGroups = 1 + numberOfFloating;\n var numberOfGroups = headerRowCount - numberOfNonGroups;\n for (var i = 0; i < numberOfGroups; i++) {\n sizes.push(groupHeight);\n }\n sizes.push(headerHeight);\n for (var i = 0; i < numberOfFloating; i++) {\n sizes.push(this.gridOptionsWrapper.getFloatingFiltersHeight());\n }\n var rowHeight = 0;\n for (var i = 0; i < this.rowIndex; i++) {\n rowHeight += sizes[i];\n }\n this.comp.setTop(rowHeight + 'px');\n this.comp.setHeight(sizes[this.rowIndex] + 'px');\n };\n HeaderRowCtrl.prototype.getPinned = function () {\n return this.pinned;\n };\n HeaderRowCtrl.prototype.getRowIndex = function () {\n return this.rowIndex;\n };\n HeaderRowCtrl.prototype.onVirtualColumnsChanged = function () {\n var _this = this;\n var oldCtrls = this.headerCellCtrls;\n this.headerCellCtrls = {};\n var columns = this.getColumnsInViewport();\n columns.forEach(function (child) {\n // skip groups that have no displayed children. this can happen when the group is broken,\n // and this section happens to have nothing to display for the open / closed state.\n // (a broken group is one that is split, ie columns in the group have a non-group column\n // in between them)\n if (child.isEmptyGroup()) {\n return;\n }\n var idOfChild = child.getUniqueId();\n // if we already have this cell rendered, do nothing\n var headerCtrl = oldCtrls[idOfChild];\n delete oldCtrls[idOfChild];\n // it's possible there is a new Column with the same ID, but it's for a different Column.\n // this is common with pivoting, where the pivot cols change, but the id's are still pivot_0,\n // pivot_1 etc. so if new col but same ID, need to remove the old col here first as we are\n // about to replace it in the this.headerComps map.\n var forOldColumn = headerCtrl && headerCtrl.getColumnGroupChild() != child;\n if (forOldColumn) {\n _this.destroyBean(headerCtrl);\n headerCtrl = undefined;\n }\n if (headerCtrl == null) {\n switch (_this.type) {\n case HeaderRowType.FLOATING_FILTER:\n headerCtrl = _this.createBean(new HeaderFilterCellCtrl(child, _this));\n break;\n case HeaderRowType.COLUMN_GROUP:\n headerCtrl = _this.createBean(new HeaderGroupCellCtrl(child, _this));\n break;\n default:\n headerCtrl = _this.createBean(new HeaderCellCtrl(child, _this));\n break;\n }\n }\n _this.headerCellCtrls[idOfChild] = headerCtrl;\n });\n // we want to keep columns that are focused, otherwise keyboard navigation breaks\n var isFocusedAndDisplayed = function (ctrl) {\n var isFocused = _this.focusService.isHeaderWrapperFocused(ctrl);\n if (!isFocused) {\n return false;\n }\n var isDisplayed = _this.columnModel.isDisplayed(ctrl.getColumnGroupChild());\n return isDisplayed;\n };\n iterateObject(oldCtrls, function (id, oldCtrl) {\n var keepCtrl = isFocusedAndDisplayed(oldCtrl);\n if (keepCtrl) {\n _this.headerCellCtrls[id] = oldCtrl;\n }\n else {\n _this.destroyBean(oldCtrl);\n }\n });\n var ctrlsToDisplay = getAllValuesInObject(this.headerCellCtrls);\n this.comp.setHeaderCtrls(ctrlsToDisplay);\n };\n HeaderRowCtrl.prototype.destroyCtrls = function () {\n var _this = this;\n iterateObject(this.headerCellCtrls, function (key, ctrl) {\n _this.destroyBean(ctrl);\n });\n this.headerCellCtrls = {};\n };\n HeaderRowCtrl.prototype.getColumnsInViewport = function () {\n var printLayout = this.gridOptionsWrapper.getDomLayout() === Constants.DOM_LAYOUT_PRINT;\n return printLayout ? this.getColumnsInViewportPrintLayout() : this.getColumnsInViewportNormalLayout();\n };\n HeaderRowCtrl.prototype.getColumnsInViewportPrintLayout = function () {\n var _this = this;\n // for print layout, we add all columns into the center\n if (this.pinned != null) {\n return [];\n }\n var viewportColumns = [];\n var actualDepth = this.getActualDepth();\n [Constants.PINNED_LEFT, null, Constants.PINNED_RIGHT].forEach(function (pinned) {\n var items = _this.columnModel.getVirtualHeaderGroupRow(pinned, actualDepth);\n viewportColumns = viewportColumns.concat(items);\n });\n return viewportColumns;\n };\n HeaderRowCtrl.prototype.getActualDepth = function () {\n return this.type == HeaderRowType.FLOATING_FILTER ? this.rowIndex - 1 : this.rowIndex;\n };\n HeaderRowCtrl.prototype.getColumnsInViewportNormalLayout = function () {\n // when in normal layout, we add the columns for that container only\n return this.columnModel.getVirtualHeaderGroupRow(this.pinned, this.getActualDepth());\n };\n HeaderRowCtrl.prototype.focusHeader = function (column, event) {\n var allCtrls = getAllValuesInObject(this.headerCellCtrls);\n var ctrl = allCtrls.find(function (ctrl) { return ctrl.getColumnGroupChild() == column; });\n if (!ctrl) {\n return false;\n }\n ctrl.focus(event);\n return true;\n };\n __decorate([\n Autowired('columnModel')\n ], HeaderRowCtrl.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('focusService')\n ], HeaderRowCtrl.prototype, \"focusService\", void 0);\n __decorate([\n PreDestroy\n ], HeaderRowCtrl.prototype, \"destroyCtrls\", null);\n return HeaderRowCtrl;\n}(BeanStub));\nexport { HeaderRowCtrl };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nimport { Constants } from \"../../constants/constants\";\nimport { BeanStub } from \"../../context/beanStub\";\nimport { Autowired } from \"../../context/context\";\nimport { Column } from \"../../entities/column\";\nimport { Events } from \"../../eventKeys\";\nimport { CenterWidthFeature } from \"../../gridBodyComp/centerWidthFeature\";\nimport { NumberSequence } from \"../../utils\";\nimport { BodyDropTarget } from \"../columnDrag/bodyDropTarget\";\nimport { HeaderRowType } from \"../row/headerRowComp\";\nimport { HeaderRowCtrl } from \"../row/headerRowCtrl\";\nvar HeaderRowContainerCtrl = /** @class */ (function (_super) {\n __extends(HeaderRowContainerCtrl, _super);\n function HeaderRowContainerCtrl(pinned) {\n var _this = _super.call(this) || this;\n _this.groupsRowCtrls = [];\n _this.pinned = pinned;\n return _this;\n }\n HeaderRowContainerCtrl.prototype.setComp = function (comp, eGui) {\n this.comp = comp;\n this.setupCenterWidth();\n this.setupPinnedWidth();\n this.setupDragAndDrop(eGui);\n this.addManagedListener(this.eventService, Events.EVENT_GRID_COLUMNS_CHANGED, this.onGridColumnsChanged.bind(this));\n this.ctrlsService.registerHeaderContainer(this, this.pinned);\n if (this.columnModel.isReady()) {\n this.refresh();\n }\n };\n HeaderRowContainerCtrl.prototype.setupDragAndDrop = function (dropContainer) {\n var bodyDropTarget = new BodyDropTarget(this.pinned, dropContainer);\n this.createManagedBean(bodyDropTarget);\n };\n HeaderRowContainerCtrl.prototype.refresh = function (keepColumns) {\n var _this = this;\n if (keepColumns === void 0) { keepColumns = false; }\n var sequence = new NumberSequence();\n var focusedHeaderPosition = this.focusService.getFocusHeaderToUseAfterRefresh();\n var refreshColumnGroups = function () {\n var groupRowCount = _this.columnModel.getHeaderRowCount() - 1;\n _this.groupsRowCtrls = _this.destroyBeans(_this.groupsRowCtrls);\n for (var i = 0; i < groupRowCount; i++) {\n var ctrl = _this.createBean(new HeaderRowCtrl(sequence.next(), _this.pinned, HeaderRowType.COLUMN_GROUP));\n _this.groupsRowCtrls.push(ctrl);\n }\n };\n var refreshColumns = function () {\n var rowIndex = sequence.next();\n var needNewInstance = _this.columnsRowCtrl == null || !keepColumns || _this.columnsRowCtrl.getRowIndex() !== rowIndex;\n if (needNewInstance) {\n _this.destroyBean(_this.columnsRowCtrl);\n _this.columnsRowCtrl = _this.createBean(new HeaderRowCtrl(rowIndex, _this.pinned, HeaderRowType.COLUMN));\n }\n };\n var refreshFilters = function () {\n var includeFloatingFilter = !_this.columnModel.isPivotMode() && _this.columnModel.hasFloatingFilters();\n var destroyPreviousComp = function () {\n _this.filtersRowCtrl = _this.destroyBean(_this.filtersRowCtrl);\n };\n if (!includeFloatingFilter) {\n destroyPreviousComp();\n return;\n }\n var rowIndex = sequence.next();\n if (_this.filtersRowCtrl) {\n var rowIndexMismatch = _this.filtersRowCtrl.getRowIndex() !== rowIndex;\n if (!keepColumns || rowIndexMismatch) {\n destroyPreviousComp();\n }\n }\n if (!_this.filtersRowCtrl) {\n _this.filtersRowCtrl = _this.createBean(new HeaderRowCtrl(rowIndex, _this.pinned, HeaderRowType.FLOATING_FILTER));\n }\n };\n refreshColumnGroups();\n refreshColumns();\n refreshFilters();\n var allCtrls = this.getAllCtrls();\n this.comp.setCtrls(allCtrls);\n this.restoreFocusOnHeader(focusedHeaderPosition);\n };\n HeaderRowContainerCtrl.prototype.restoreFocusOnHeader = function (position) {\n if (position == null || position.column.getPinned() != this.pinned) {\n return;\n }\n this.focusService.focusHeaderPosition({ headerPosition: position });\n };\n HeaderRowContainerCtrl.prototype.getAllCtrls = function () {\n var res = __spread(this.groupsRowCtrls, [this.columnsRowCtrl]);\n if (this.filtersRowCtrl) {\n res.push(this.filtersRowCtrl);\n }\n return res;\n };\n // grid cols have changed - this also means the number of rows in the header can have\n // changed. so we remove all the old rows and insert new ones for a complete refresh\n HeaderRowContainerCtrl.prototype.onGridColumnsChanged = function () {\n this.refresh(true);\n };\n HeaderRowContainerCtrl.prototype.setupCenterWidth = function () {\n var _this = this;\n if (this.pinned != null) {\n return;\n }\n this.createManagedBean(new CenterWidthFeature(function (width) { return _this.comp.setCenterWidth(width + \"px\"); }));\n };\n HeaderRowContainerCtrl.prototype.setHorizontalScroll = function (offset) {\n this.comp.setContainerTransform(\"translateX(\" + offset + \"px)\");\n };\n HeaderRowContainerCtrl.prototype.setupPinnedWidth = function () {\n var _this = this;\n if (this.pinned == null) {\n return;\n }\n var pinningLeft = this.pinned === Constants.PINNED_LEFT;\n var pinningRight = this.pinned === Constants.PINNED_RIGHT;\n var listener = function () {\n var width = pinningLeft ? _this.pinnedWidthService.getPinnedLeftWidth() : _this.pinnedWidthService.getPinnedRightWidth();\n if (width == null) {\n return;\n } // can happen at initialisation, width not yet set\n var hidden = width == 0;\n var isRtl = _this.gridOptionsWrapper.isEnableRtl();\n var scrollbarWidth = _this.gridOptionsWrapper.getScrollbarWidth();\n // if there is a scroll showing (and taking up space, so Windows, and not iOS)\n // in the body, then we add extra space to keep header aligned with the body,\n // as body width fits the cols and the scrollbar\n var addPaddingForScrollbar = _this.scrollVisibleService.isVerticalScrollShowing() && ((isRtl && pinningLeft) || (!isRtl && pinningRight));\n var widthWithPadding = addPaddingForScrollbar ? width + scrollbarWidth : width;\n _this.comp.setPinnedContainerWidth(widthWithPadding + 'px');\n _this.comp.addOrRemoveCssClass('ag-hidden', hidden);\n };\n this.addManagedListener(this.eventService, Events.EVENT_LEFT_PINNED_WIDTH_CHANGED, listener);\n this.addManagedListener(this.eventService, Events.EVENT_RIGHT_PINNED_WIDTH_CHANGED, listener);\n this.addManagedListener(this.eventService, Events.EVENT_SCROLL_VISIBILITY_CHANGED, listener);\n this.addManagedListener(this.eventService, Events.EVENT_SCROLLBAR_WIDTH_CHANGED, listener);\n };\n HeaderRowContainerCtrl.prototype.getHeaderCtrlForColumn = function (column) {\n if (column instanceof Column) {\n if (!this.columnsRowCtrl) {\n return;\n }\n return this.columnsRowCtrl.getHeaderCellCtrl(column);\n }\n if (this.groupsRowCtrls.length === 0) {\n return;\n }\n for (var i = 0; i < this.groupsRowCtrls.length; i++) {\n var ctrl = this.groupsRowCtrls[i].getHeaderCellCtrl(column);\n if (ctrl) {\n return ctrl;\n }\n }\n };\n HeaderRowContainerCtrl.prototype.getHtmlElementForColumnHeader = function (column) {\n /* tslint:enable */\n var cellCtrl = this.getHeaderCtrlForColumn(column);\n if (!cellCtrl) {\n return null;\n }\n return cellCtrl.getGui();\n };\n HeaderRowContainerCtrl.prototype.getRowType = function (rowIndex) {\n var allCtrls = this.getAllCtrls();\n var ctrl = allCtrls[rowIndex];\n return ctrl ? ctrl.getType() : undefined;\n };\n HeaderRowContainerCtrl.prototype.focusHeader = function (rowIndex, column, event) {\n var allCtrls = this.getAllCtrls();\n var ctrl = allCtrls[rowIndex];\n if (!ctrl) {\n return false;\n }\n return ctrl.focusHeader(column, event);\n };\n HeaderRowContainerCtrl.prototype.getRowCount = function () {\n return this.getAllCtrls().length;\n };\n __decorate([\n Autowired('ctrlsService')\n ], HeaderRowContainerCtrl.prototype, \"ctrlsService\", void 0);\n __decorate([\n Autowired('scrollVisibleService')\n ], HeaderRowContainerCtrl.prototype, \"scrollVisibleService\", void 0);\n __decorate([\n Autowired('pinnedWidthService')\n ], HeaderRowContainerCtrl.prototype, \"pinnedWidthService\", void 0);\n __decorate([\n Autowired('columnModel')\n ], HeaderRowContainerCtrl.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('focusService')\n ], HeaderRowContainerCtrl.prototype, \"focusService\", void 0);\n return HeaderRowContainerCtrl;\n}(BeanStub));\nexport { HeaderRowContainerCtrl };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Constants } from '../../constants/constants';\nimport { PostConstruct, PreDestroy } from '../../context/context';\nimport { ensureDomOrder } from '../../utils/dom';\nimport { getAllValuesInObject } from '../../utils/object';\nimport { Component } from '../../widgets/component';\nimport { RefSelector } from '../../widgets/componentAnnotations';\nimport { HeaderRowComp } from '../row/headerRowComp';\nimport { HeaderRowContainerCtrl } from './headerRowContainerCtrl';\nvar HeaderRowContainerComp = /** @class */ (function (_super) {\n __extends(HeaderRowContainerComp, _super);\n function HeaderRowContainerComp(pinned) {\n var _this = _super.call(this) || this;\n _this.headerRowComps = {};\n _this.rowCompsList = [];\n _this.pinned = pinned;\n return _this;\n }\n HeaderRowContainerComp.prototype.init = function () {\n var _this = this;\n this.selectAndSetTemplate();\n var compProxy = {\n addOrRemoveCssClass: function (cssClassName, on) { return _this.addOrRemoveCssClass(cssClassName, on); },\n setCtrls: function (ctrls) { return _this.setCtrls(ctrls); },\n // only gets called for center section\n setCenterWidth: function (width) { return _this.eCenterContainer.style.width = width; },\n setContainerTransform: function (transform) { return _this.eCenterContainer.style.transform = transform; },\n // only gets called for pinned sections\n setPinnedContainerWidth: function (width) {\n var eGui = _this.getGui();\n eGui.style.width = width;\n eGui.style.maxWidth = width;\n eGui.style.minWidth = width;\n }\n };\n var ctrl = this.createManagedBean(new HeaderRowContainerCtrl(this.pinned));\n ctrl.setComp(compProxy, this.getGui());\n };\n HeaderRowContainerComp.prototype.selectAndSetTemplate = function () {\n var pinnedLeft = this.pinned == Constants.PINNED_LEFT;\n var pinnedRight = this.pinned == Constants.PINNED_RIGHT;\n var template = pinnedLeft ? HeaderRowContainerComp.PINNED_LEFT_TEMPLATE :\n pinnedRight ? HeaderRowContainerComp.PINNED_RIGHT_TEMPLATE : HeaderRowContainerComp.CENTER_TEMPLATE;\n this.setTemplate(template);\n // for left and right, we add rows directly to the root element,\n // but for center container we add elements to the child container.\n this.eRowContainer = this.eCenterContainer ? this.eCenterContainer : this.getGui();\n };\n HeaderRowContainerComp.prototype.destroyRowComps = function () {\n this.setCtrls([]);\n };\n HeaderRowContainerComp.prototype.destroyRowComp = function (rowComp) {\n this.destroyBean(rowComp);\n this.eRowContainer.removeChild(rowComp.getGui());\n };\n HeaderRowContainerComp.prototype.setCtrls = function (ctrls) {\n var _this = this;\n var oldRowComps = this.headerRowComps;\n this.headerRowComps = {};\n this.rowCompsList = [];\n var prevGui;\n var appendEnsuringDomOrder = function (rowComp) {\n var eGui = rowComp.getGui();\n var notAlreadyIn = eGui.parentElement != _this.eRowContainer;\n if (notAlreadyIn) {\n _this.eRowContainer.appendChild(eGui);\n }\n if (prevGui) {\n ensureDomOrder(_this.eRowContainer, eGui, prevGui);\n }\n prevGui = eGui;\n };\n ctrls.forEach(function (ctrl) {\n var ctrlId = ctrl.getInstanceId();\n var existingComp = oldRowComps[ctrlId];\n delete oldRowComps[ctrlId];\n var rowComp = existingComp ? existingComp : _this.createBean(new HeaderRowComp(ctrl));\n _this.headerRowComps[ctrlId] = rowComp;\n _this.rowCompsList.push(rowComp);\n appendEnsuringDomOrder(rowComp);\n });\n getAllValuesInObject(oldRowComps).forEach(function (c) { return _this.destroyRowComp(c); });\n };\n HeaderRowContainerComp.PINNED_LEFT_TEMPLATE = \"
    \";\n HeaderRowContainerComp.PINNED_RIGHT_TEMPLATE = \"
    \";\n HeaderRowContainerComp.CENTER_TEMPLATE = \"
    \\n
    \\n
    \";\n __decorate([\n RefSelector('eCenterContainer')\n ], HeaderRowContainerComp.prototype, \"eCenterContainer\", void 0);\n __decorate([\n PostConstruct\n ], HeaderRowContainerComp.prototype, \"init\", null);\n __decorate([\n PreDestroy\n ], HeaderRowContainerComp.prototype, \"destroyRowComps\", null);\n return HeaderRowContainerComp;\n}(Component));\nexport { HeaderRowContainerComp };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Constants } from '../constants/constants';\nimport { PostConstruct } from '../context/context';\nimport { Component } from '../widgets/component';\nimport { GridHeaderCtrl } from './gridHeaderCtrl';\nimport { HeaderRowContainerComp } from './rowContainer/headerRowContainerComp';\nvar GridHeaderComp = /** @class */ (function (_super) {\n __extends(GridHeaderComp, _super);\n function GridHeaderComp() {\n return _super.call(this, GridHeaderComp.TEMPLATE) || this;\n }\n GridHeaderComp.prototype.postConstruct = function () {\n var _this = this;\n var compProxy = {\n addOrRemoveCssClass: function (cssClassName, on) { return _this.addOrRemoveCssClass(cssClassName, on); },\n setHeightAndMinHeight: function (height) {\n _this.getGui().style.height = height;\n _this.getGui().style.minHeight = height;\n }\n };\n var ctrl = this.createManagedBean(new GridHeaderCtrl());\n ctrl.setComp(compProxy, this.getGui(), this.getFocusableElement());\n var addContainer = function (container) {\n _this.createManagedBean(container);\n _this.appendChild(container);\n };\n addContainer(new HeaderRowContainerComp(Constants.PINNED_LEFT));\n addContainer(new HeaderRowContainerComp(null));\n addContainer(new HeaderRowContainerComp(Constants.PINNED_RIGHT));\n };\n GridHeaderComp.TEMPLATE = \"
    \";\n __decorate([\n PostConstruct\n ], GridHeaderComp.prototype, \"postConstruct\", null);\n return GridHeaderComp;\n}(Component));\nexport { GridHeaderComp };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __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};\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { AgPromise, _ } from '../utils';\nimport { Autowired, Bean, PostConstruct, PreDestroy } from '../context/context';\nimport { Events } from '../events';\nimport { ModuleNames } from '../modules/moduleNames';\nimport { ModuleRegistry } from '../modules/moduleRegistry';\nimport { BeanStub } from '../context/beanStub';\nimport { convertToSet } from '../utils/set';\nimport { exists } from '../utils/generic';\nimport { mergeDeep, cloneObject } from '../utils/object';\nimport { loadTemplate } from '../utils/dom';\nvar FilterManager = /** @class */ (function (_super) {\n __extends(FilterManager, _super);\n function FilterManager() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.allAdvancedFilters = new Map();\n _this.activeAdvancedFilters = [];\n _this.quickFilter = null;\n _this.quickFilterParts = null;\n // this is true when the grid is processing the filter change. this is used by the cell comps, so that they\n // don't flash when data changes due to filter changes. there is no need to flash when filter changes as the\n // user is in control, so doesn't make sense to show flashing changes. for example, go to main demo where\n // this feature is turned off (hack code to always return false for isSuppressFlashingCellsBecauseFiltering(), put in)\n // 100,000 rows and group by country. then do some filtering. all the cells flash, which is silly.\n _this.processingFilterChange = false;\n return _this;\n }\n FilterManager_1 = FilterManager;\n FilterManager.prototype.init = function () {\n var _this = this;\n this.addManagedListener(this.eventService, Events.EVENT_ROW_DATA_CHANGED, function (source) { return _this.onNewRowsLoaded(source); });\n this.addManagedListener(this.eventService, Events.EVENT_GRID_COLUMNS_CHANGED, function () { return _this.onColumnsChanged(); });\n this.quickFilter = this.parseQuickFilter(this.gridOptionsWrapper.getQuickFilterText());\n this.setQuickFilterParts();\n this.allowShowChangeAfterFilter = this.gridOptionsWrapper.isAllowShowChangeAfterFilter();\n };\n FilterManager.prototype.setQuickFilterParts = function () {\n this.quickFilterParts = this.quickFilter ? this.quickFilter.split(' ') : null;\n };\n FilterManager.prototype.setFilterModel = function (model) {\n var _this = this;\n var allPromises = [];\n var previousModel = this.getFilterModel();\n if (model) {\n // mark the filters as we set them, so any active filters left over we stop\n var modelKeys_1 = convertToSet(Object.keys(model));\n this.allAdvancedFilters.forEach(function (filterWrapper, colId) {\n var newModel = model[colId];\n allPromises.push(_this.setModelOnFilterWrapper(filterWrapper.filterPromise, newModel));\n modelKeys_1.delete(colId);\n });\n // at this point, processedFields contains data for which we don't have a filter working yet\n modelKeys_1.forEach(function (colId) {\n var column = _this.columnModel.getPrimaryColumn(colId);\n if (!column) {\n console.warn('AG Grid: setFilterModel() - no column found for colId: ' + colId);\n return;\n }\n if (!column.isFilterAllowed()) {\n console.warn('AG Grid: setFilterModel() - unable to fully apply model, filtering disabled for colId: ' + colId);\n return;\n }\n var filterWrapper = _this.getOrCreateFilterWrapper(column, 'NO_UI');\n if (!filterWrapper) {\n console.warn('AG-Grid: setFilterModel() - unable to fully apply model, unable to create filter for colId: ' + colId);\n return;\n }\n allPromises.push(_this.setModelOnFilterWrapper(filterWrapper.filterPromise, model[colId]));\n });\n }\n else {\n this.allAdvancedFilters.forEach(function (filterWrapper) {\n allPromises.push(_this.setModelOnFilterWrapper(filterWrapper.filterPromise, null));\n });\n }\n AgPromise.all(allPromises).then(function () {\n var currentModel = _this.getFilterModel();\n var columns = [];\n _this.allAdvancedFilters.forEach(function (filterWrapper, colId) {\n var before = previousModel ? previousModel[colId] : null;\n var after = currentModel ? currentModel[colId] : null;\n if (!_.jsonEquals(before, after)) {\n columns.push(filterWrapper.column);\n }\n });\n if (columns.length > 0) {\n _this.onFilterChanged({ columns: columns });\n }\n });\n };\n FilterManager.prototype.setModelOnFilterWrapper = function (filterPromise, newModel) {\n return new AgPromise(function (resolve) {\n filterPromise.then(function (filter) {\n if (typeof filter.setModel !== 'function') {\n console.warn('AG Grid: filter missing setModel method, which is needed for setFilterModel');\n resolve();\n }\n (filter.setModel(newModel) || AgPromise.resolve()).then(function () { return resolve(); });\n });\n });\n };\n FilterManager.prototype.getFilterModel = function () {\n var result = {};\n this.allAdvancedFilters.forEach(function (filterWrapper, key) {\n // because user can provide filters, we provide useful error checking and messages\n var filterPromise = filterWrapper.filterPromise;\n var filter = filterPromise.resolveNow(null, function (promiseFilter) { return promiseFilter; });\n if (filter == null) {\n return null;\n }\n if (typeof filter.getModel !== 'function') {\n console.warn('AG Grid: filter API missing getModel method, which is needed for getFilterModel');\n return;\n }\n var model = filter.getModel();\n if (exists(model)) {\n result[key] = model;\n }\n });\n return result;\n };\n // returns true if any advanced filter (ie not quick filter) active\n FilterManager.prototype.isAdvancedFilterPresent = function () {\n return this.activeAdvancedFilters.length > 0;\n };\n // called by:\n // 1) onFilterChanged()\n // 2) onNewRowsLoaded()\n FilterManager.prototype.updateActiveFilters = function () {\n var _this = this;\n this.activeAdvancedFilters.length = 0;\n var isFilterActive = function (filter) {\n if (!filter) {\n return false;\n } // this never happens, including to avoid compile error\n if (!filter.isFilterActive) {\n console.warn('AG Grid: Filter is missing isFilterActive() method');\n return false;\n }\n return filter.isFilterActive();\n };\n this.allAdvancedFilters.forEach(function (filterWrapper) {\n if (filterWrapper.filterPromise.resolveNow(false, isFilterActive)) {\n var resolvedPromise = filterWrapper.filterPromise.resolveNow(null, function (filter) { return filter; });\n _this.activeAdvancedFilters.push(resolvedPromise);\n }\n });\n };\n FilterManager.prototype.updateFilterFlagInColumns = function (source, additionalEventAttributes) {\n this.allAdvancedFilters.forEach(function (filterWrapper) {\n var isFilterActive = filterWrapper.filterPromise.resolveNow(false, function (filter) { return filter.isFilterActive(); });\n filterWrapper.column.setFilterActive(isFilterActive, source, additionalEventAttributes);\n });\n };\n FilterManager.prototype.isAnyFilterPresent = function () {\n return this.isQuickFilterPresent() || this.isAdvancedFilterPresent() || this.gridOptionsWrapper.isExternalFilterPresent();\n };\n FilterManager.prototype.doAdvancedFiltersPass = function (node, filterToSkip) {\n var data = node.data;\n for (var i = 0; i < this.activeAdvancedFilters.length; i++) {\n var filter = this.activeAdvancedFilters[i];\n if (filter == null || filter === filterToSkip) {\n continue;\n }\n if (typeof filter.doesFilterPass !== 'function') {\n // because users can do custom filters, give nice error message\n throw new Error('Filter is missing method doesFilterPass');\n }\n if (!filter.doesFilterPass({ node: node, data: data })) {\n return false;\n }\n }\n return true;\n };\n FilterManager.prototype.parseQuickFilter = function (newFilter) {\n if (!exists(newFilter)) {\n return null;\n }\n if (!this.gridOptionsWrapper.isRowModelDefault()) {\n console.warn('AG Grid - Quick filtering only works with the Client-Side Row Model');\n return null;\n }\n return newFilter.toUpperCase();\n };\n FilterManager.prototype.setQuickFilter = function (newFilter) {\n if (newFilter != null && typeof newFilter !== 'string') {\n console.warn(\"AG Grid - setQuickFilter() only supports string inputs, received: \" + typeof newFilter);\n return;\n }\n var parsedFilter = this.parseQuickFilter(newFilter);\n if (this.quickFilter !== parsedFilter) {\n this.quickFilter = parsedFilter;\n this.setQuickFilterParts();\n this.onFilterChanged();\n }\n };\n FilterManager.prototype.onFilterChanged = function (params) {\n if (params === void 0) { params = {}; }\n var filterInstance = params.filterInstance, additionalEventAttributes = params.additionalEventAttributes, columns = params.columns;\n this.updateActiveFilters();\n this.updateFilterFlagInColumns('filterChanged', additionalEventAttributes);\n this.allAdvancedFilters.forEach(function (filterWrapper) {\n if (!filterWrapper.filterPromise) {\n return;\n }\n filterWrapper.filterPromise.then(function (filter) {\n if (filter && filter !== filterInstance && filter.onAnyFilterChanged) {\n filter.onAnyFilterChanged();\n }\n });\n });\n var filterChangedEvent = {\n type: Events.EVENT_FILTER_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi,\n columns: columns || [],\n };\n if (additionalEventAttributes) {\n mergeDeep(filterChangedEvent, additionalEventAttributes);\n }\n // because internal events are not async in ag-grid, when the dispatchEvent\n // method comes back, we know all listeners have finished executing.\n this.processingFilterChange = true;\n this.eventService.dispatchEvent(filterChangedEvent);\n this.processingFilterChange = false;\n };\n FilterManager.prototype.isSuppressFlashingCellsBecauseFiltering = function () {\n // if user has elected to always flash cell changes, then always return false, otherwise we suppress flashing\n // changes when filtering\n return !this.allowShowChangeAfterFilter && this.processingFilterChange;\n };\n FilterManager.prototype.isQuickFilterPresent = function () {\n return this.quickFilter !== null;\n };\n FilterManager.prototype.doesRowPassOtherFilters = function (filterToSkip, node) {\n return this.doesRowPassFilter({ rowNode: node, filterInstanceToSkip: filterToSkip });\n };\n FilterManager.prototype.doesRowPassQuickFilterNoCache = function (node, filterPart) {\n var _this = this;\n var columns = this.columnModel.getAllColumnsForQuickFilter();\n return columns.some(function (column) {\n var part = _this.getQuickFilterTextForColumn(column, node);\n return exists(part) && part.indexOf(filterPart) >= 0;\n });\n };\n FilterManager.prototype.doesRowPassQuickFilterCache = function (node, filterPart) {\n if (!node.quickFilterAggregateText) {\n this.aggregateRowForQuickFilter(node);\n }\n return node.quickFilterAggregateText.indexOf(filterPart) >= 0;\n };\n FilterManager.prototype.doesRowPassQuickFilter = function (node) {\n var _this = this;\n var usingCache = this.gridOptionsWrapper.isCacheQuickFilter();\n // each part must pass, if any fails, then the whole filter fails\n return this.quickFilterParts.every(function (part) {\n return usingCache ? _this.doesRowPassQuickFilterCache(node, part) : _this.doesRowPassQuickFilterNoCache(node, part);\n });\n };\n FilterManager.prototype.doesRowPassFilter = function (params) {\n // the row must pass ALL of the filters, so if any of them fail,\n // we return true. that means if a row passes the quick filter,\n // but fails the column filter, it fails overall\n // first up, check quick filter\n if (this.isQuickFilterPresent() && !this.doesRowPassQuickFilter(params.rowNode)) {\n return false;\n }\n // secondly, give the client a chance to reject this row\n if (this.gridOptionsWrapper.isExternalFilterPresent() && !this.gridOptionsWrapper.doesExternalFilterPass(params.rowNode)) {\n return false;\n }\n // lastly, check our internal advanced filter\n if (this.isAdvancedFilterPresent() && !this.doAdvancedFiltersPass(params.rowNode, params.filterInstanceToSkip)) {\n return false;\n }\n // got this far, all filters pass\n return true;\n };\n FilterManager.prototype.getQuickFilterTextForColumn = function (column, node) {\n var value = this.valueService.getValue(column, node, true);\n var colDef = column.getColDef();\n if (colDef.getQuickFilterText) {\n var params = {\n value: value,\n node: node,\n data: node.data,\n column: column,\n colDef: colDef,\n context: this.gridOptionsWrapper.getContext()\n };\n value = colDef.getQuickFilterText(params);\n }\n return exists(value) ? value.toString().toUpperCase() : null;\n };\n FilterManager.prototype.aggregateRowForQuickFilter = function (node) {\n var _this = this;\n var stringParts = [];\n var columns = this.columnModel.getAllColumnsForQuickFilter();\n columns.forEach(function (column) {\n var part = _this.getQuickFilterTextForColumn(column, node);\n if (exists(part)) {\n stringParts.push(part);\n }\n });\n node.quickFilterAggregateText = stringParts.join(FilterManager_1.QUICK_FILTER_SEPARATOR);\n };\n FilterManager.prototype.onNewRowsLoaded = function (source) {\n this.allAdvancedFilters.forEach(function (filterWrapper) {\n filterWrapper.filterPromise.then(function (filter) {\n if (filter.onNewRowsLoaded) {\n filter.onNewRowsLoaded();\n }\n });\n });\n this.updateFilterFlagInColumns(source);\n this.updateActiveFilters();\n };\n FilterManager.prototype.createValueGetter = function (column) {\n var _this = this;\n return function (_a) {\n var node = _a.node;\n return _this.valueService.getValue(column, node, true);\n };\n };\n FilterManager.prototype.getFilterComponent = function (column, source, createIfDoesNotExist) {\n if (createIfDoesNotExist === void 0) { createIfDoesNotExist = true; }\n var _a;\n if (createIfDoesNotExist) {\n return ((_a = this.getOrCreateFilterWrapper(column, source)) === null || _a === void 0 ? void 0 : _a.filterPromise) || null;\n }\n var filterWrapper = this.cachedFilter(column);\n return filterWrapper ? filterWrapper.filterPromise : null;\n };\n FilterManager.prototype.isFilterActive = function (column) {\n var filterWrapper = this.cachedFilter(column);\n return !!filterWrapper && filterWrapper.filterPromise.resolveNow(false, function (filter) { return filter.isFilterActive(); });\n };\n FilterManager.prototype.getOrCreateFilterWrapper = function (column, source) {\n if (!column.isFilterAllowed()) {\n return null;\n }\n var filterWrapper = this.cachedFilter(column);\n if (!filterWrapper) {\n filterWrapper = this.createFilterWrapper(column, source);\n this.allAdvancedFilters.set(column.getColId(), filterWrapper);\n }\n else if (source !== 'NO_UI') {\n this.putIntoGui(filterWrapper, source);\n }\n return filterWrapper;\n };\n FilterManager.prototype.cachedFilter = function (column) {\n return this.allAdvancedFilters.get(column.getColId());\n };\n FilterManager.prototype.createFilterInstance = function (column, $scope) {\n var _this = this;\n var defaultFilter = ModuleRegistry.isRegistered(ModuleNames.SetFilterModule) ? 'agSetColumnFilter' : 'agTextColumnFilter';\n var colDef = column.getColDef();\n var filterInstance;\n var params = __assign(__assign({}, this.createFilterParams(column, colDef, $scope)), { filterModifiedCallback: function () {\n var event = {\n type: Events.EVENT_FILTER_MODIFIED,\n api: _this.gridApi,\n columnApi: _this.columnApi,\n column: column,\n filterInstance: filterInstance\n };\n _this.eventService.dispatchEvent(event);\n }, filterChangedCallback: function (additionalEventAttributes) {\n return _this.onFilterChanged({ filterInstance: filterInstance, additionalEventAttributes: additionalEventAttributes, columns: [column] });\n }, doesRowPassOtherFilter: function (node) { return _this.doesRowPassOtherFilters(filterInstance, node); } });\n var compDetails = this.userComponentFactory.getFilterDetails(colDef, params, defaultFilter);\n if (!compDetails) {\n return null;\n }\n var componentPromise = compDetails.newAgStackInstance();\n if (componentPromise) {\n componentPromise.then(function (r) { return filterInstance = r; });\n }\n return componentPromise;\n };\n FilterManager.prototype.createFilterParams = function (column, colDef, $scope) {\n if ($scope === void 0) { $scope = null; }\n var params = {\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n column: column,\n colDef: cloneObject(colDef),\n rowModel: this.rowModel,\n filterChangedCallback: function () { },\n filterModifiedCallback: function () { },\n valueGetter: this.createValueGetter(column),\n context: this.gridOptionsWrapper.getContext(),\n doesRowPassOtherFilter: function () { return true; },\n };\n // hack in scope if using AngularJS\n if ($scope) {\n params.$scope = $scope;\n }\n return params;\n };\n FilterManager.prototype.createFilterWrapper = function (column, source) {\n var filterWrapper = {\n column: column,\n filterPromise: null,\n scope: null,\n compiledElement: null,\n guiPromise: AgPromise.resolve(null)\n };\n filterWrapper.scope = this.gridOptionsWrapper.isAngularCompileFilters() ? this.$scope.$new() : null;\n filterWrapper.filterPromise = this.createFilterInstance(column, filterWrapper.scope);\n if (filterWrapper.filterPromise) {\n this.putIntoGui(filterWrapper, source);\n }\n return filterWrapper;\n };\n FilterManager.prototype.putIntoGui = function (filterWrapper, source) {\n var _this = this;\n var eFilterGui = document.createElement('div');\n eFilterGui.className = 'ag-filter';\n filterWrapper.guiPromise = new AgPromise(function (resolve) {\n filterWrapper.filterPromise.then(function (filter) {\n var guiFromFilter = filter.getGui();\n if (!exists(guiFromFilter)) {\n console.warn(\"AG Grid: getGui method from filter returned \" + guiFromFilter + \", it should be a DOM element or an HTML template string.\");\n }\n // for backwards compatibility with Angular 1 - we\n // used to allow providing back HTML from getGui().\n // once we move away from supporting Angular 1\n // directly, we can change this.\n if (typeof guiFromFilter === 'string') {\n guiFromFilter = loadTemplate(guiFromFilter);\n }\n eFilterGui.appendChild(guiFromFilter);\n if (filterWrapper.scope) {\n var compiledElement = _this.$compile(eFilterGui)(filterWrapper.scope);\n filterWrapper.compiledElement = compiledElement;\n window.setTimeout(function () { return filterWrapper.scope.$apply(); }, 0);\n }\n resolve(eFilterGui);\n _this.eventService.dispatchEvent({\n type: Events.EVENT_FILTER_OPENED,\n column: filterWrapper.column,\n source: source,\n eGui: eFilterGui,\n api: _this.gridApi,\n columnApi: _this.columnApi\n });\n });\n });\n };\n FilterManager.prototype.onColumnsChanged = function () {\n var _this = this;\n var columns = [];\n this.allAdvancedFilters.forEach(function (wrapper, colId) {\n var currentColumn = _this.columnModel.getPrimaryColumn(colId);\n if (currentColumn) {\n return;\n }\n columns.push(wrapper.column);\n _this.disposeFilterWrapper(wrapper, 'filterDestroyed');\n });\n if (columns.length > 0) {\n this.onFilterChanged({ columns: columns });\n }\n };\n // destroys the filter, so it not longer takes part\n FilterManager.prototype.destroyFilter = function (column, source) {\n if (source === void 0) { source = 'api'; }\n var filterWrapper = this.allAdvancedFilters.get(column.getColId());\n if (filterWrapper) {\n this.disposeFilterWrapper(filterWrapper, source);\n this.onFilterChanged({ columns: [column] });\n }\n };\n FilterManager.prototype.disposeFilterWrapper = function (filterWrapper, source) {\n var _this = this;\n filterWrapper.filterPromise.then(function (filter) {\n (filter.setModel(null) || AgPromise.resolve()).then(function () {\n _this.getContext().destroyBean(filter);\n filterWrapper.column.setFilterActive(false, source);\n if (filterWrapper.scope) {\n if (filterWrapper.compiledElement) {\n filterWrapper.compiledElement.remove();\n }\n filterWrapper.scope.$destroy();\n }\n _this.allAdvancedFilters.delete(filterWrapper.column.getColId());\n });\n });\n };\n FilterManager.prototype.destroy = function () {\n var _this = this;\n _super.prototype.destroy.call(this);\n this.allAdvancedFilters.forEach(function (filterWrapper) { return _this.disposeFilterWrapper(filterWrapper, 'filterDestroyed'); });\n };\n var FilterManager_1;\n FilterManager.QUICK_FILTER_SEPARATOR = '\\n';\n __decorate([\n Autowired('$compile')\n ], FilterManager.prototype, \"$compile\", void 0);\n __decorate([\n Autowired('$scope')\n ], FilterManager.prototype, \"$scope\", void 0);\n __decorate([\n Autowired('valueService')\n ], FilterManager.prototype, \"valueService\", void 0);\n __decorate([\n Autowired('columnModel')\n ], FilterManager.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('rowModel')\n ], FilterManager.prototype, \"rowModel\", void 0);\n __decorate([\n Autowired('columnApi')\n ], FilterManager.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], FilterManager.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('userComponentFactory')\n ], FilterManager.prototype, \"userComponentFactory\", void 0);\n __decorate([\n PostConstruct\n ], FilterManager.prototype, \"init\", null);\n __decorate([\n PreDestroy\n ], FilterManager.prototype, \"destroy\", null);\n FilterManager = FilterManager_1 = __decorate([\n Bean('filterManager')\n ], FilterManager);\n return FilterManager;\n}(BeanStub));\nexport { FilterManager };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Bean, PostConstruct } from \"../context/context\";\nimport { Events } from \"../events\";\nimport { BeanStub } from \"../context/beanStub\";\nimport { getValueUsingField } from \"../utils/object\";\nimport { missing, exists } from \"../utils/generic\";\nimport { doOnce } from \"../utils/function\";\nvar ValueService = /** @class */ (function (_super) {\n __extends(ValueService, _super);\n function ValueService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.initialised = false;\n return _this;\n }\n ValueService.prototype.init = function () {\n this.cellExpressions = this.gridOptionsWrapper.isEnableCellExpressions();\n this.initialised = true;\n };\n ValueService.prototype.getValue = function (column, rowNode, forFilter, ignoreAggData) {\n if (forFilter === void 0) { forFilter = false; }\n if (ignoreAggData === void 0) { ignoreAggData = false; }\n // hack - the grid is getting refreshed before this bean gets initialised, race condition.\n // really should have a way so they get initialised in the right order???\n if (!this.initialised) {\n this.init();\n }\n if (!rowNode) {\n return;\n }\n // pull these out to make code below easier to read\n var colDef = column.getColDef();\n var field = colDef.field;\n var colId = column.getId();\n var data = rowNode.data;\n var result;\n // if there is a value getter, this gets precedence over a field\n var groupDataExists = rowNode.groupData && rowNode.groupData[colId] !== undefined;\n var aggDataExists = !ignoreAggData && rowNode.aggData && rowNode.aggData[colId] !== undefined;\n if (forFilter && colDef.filterValueGetter) {\n result = this.executeFilterValueGetter(colDef.filterValueGetter, data, column, rowNode);\n }\n else if (this.gridOptionsWrapper.isTreeData() && aggDataExists) {\n result = rowNode.aggData[colId];\n }\n else if (this.gridOptionsWrapper.isTreeData() && colDef.valueGetter) {\n result = this.executeValueGetter(colDef.valueGetter, data, column, rowNode);\n }\n else if (this.gridOptionsWrapper.isTreeData() && (field && data)) {\n result = getValueUsingField(data, field, column.isFieldContainsDots());\n }\n else if (groupDataExists) {\n result = rowNode.groupData[colId];\n }\n else if (aggDataExists) {\n result = rowNode.aggData[colId];\n }\n else if (colDef.valueGetter) {\n result = this.executeValueGetter(colDef.valueGetter, data, column, rowNode);\n }\n else if (field && data) {\n result = getValueUsingField(data, field, column.isFieldContainsDots());\n }\n // the result could be an expression itself, if we are allowing cell values to be expressions\n if (this.cellExpressions && (typeof result === 'string') && result.indexOf('=') === 0) {\n var cellValueGetter = result.substring(1);\n result = this.executeValueGetter(cellValueGetter, data, column, rowNode);\n }\n if (result == null) {\n var openedGroup = this.getOpenedGroup(rowNode, column);\n if (openedGroup != null) {\n return openedGroup;\n }\n }\n return result;\n };\n ValueService.prototype.getOpenedGroup = function (rowNode, column) {\n if (!this.gridOptionsWrapper.isShowOpenedGroup()) {\n return;\n }\n var colDef = column.getColDef();\n if (!colDef.showRowGroup) {\n return;\n }\n var showRowGroup = column.getColDef().showRowGroup;\n var pointer = rowNode.parent;\n while (pointer != null) {\n if (pointer.rowGroupColumn && (showRowGroup === true || showRowGroup === pointer.rowGroupColumn.getId())) {\n return pointer.key;\n }\n pointer = pointer.parent;\n }\n return undefined;\n };\n ValueService.prototype.setValue = function (rowNode, colKey, newValue, eventSource) {\n var column = this.columnModel.getPrimaryColumn(colKey);\n if (!rowNode || !column) {\n return;\n }\n // this will only happen if user is trying to paste into a group row, which doesn't make sense\n // the user should not be trying to paste into group rows\n if (missing(rowNode.data)) {\n rowNode.data = {};\n }\n // for backwards compatibility we are also retrieving the newValueHandler as well as the valueSetter\n var _a = column.getColDef(), field = _a.field, newValueHandler = _a.newValueHandler, valueSetter = _a.valueSetter;\n // need either a field or a newValueHandler for this to work\n if (missing(field) && missing(newValueHandler) && missing(valueSetter)) {\n // we don't tell user about newValueHandler, as that is deprecated\n console.warn(\"AG Grid: you need either field or valueSetter set on colDef for editing to work\");\n return;\n }\n var params = {\n node: rowNode,\n data: rowNode.data,\n oldValue: this.getValue(column, rowNode),\n newValue: newValue,\n colDef: column.getColDef(),\n column: column,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext()\n };\n params.newValue = newValue;\n var valueWasDifferent;\n if (newValueHandler && exists(newValueHandler)) {\n valueWasDifferent = newValueHandler(params);\n }\n else if (exists(valueSetter)) {\n valueWasDifferent = this.expressionService.evaluate(valueSetter, params);\n }\n else {\n valueWasDifferent = this.setValueUsingField(rowNode.data, field, newValue, column.isFieldContainsDots());\n }\n // in case user forgot to return something (possible if they are not using TypeScript\n // and just forgot, or using an old newValueHandler we didn't always expect a return\n // value here), we default the return value to true, so we always refresh.\n if (valueWasDifferent === undefined) {\n valueWasDifferent = true;\n }\n // if no change to the value, then no need to do the updating, or notifying via events.\n // otherwise the user could be tabbing around the grid, and cellValueChange would get called\n // all the time.\n if (!valueWasDifferent) {\n return;\n }\n // reset quick filter on this row\n rowNode.resetQuickFilterAggregateText();\n this.valueCache.onDataChanged();\n params.newValue = this.getValue(column, rowNode);\n var onCellValueChanged = column.getColDef().onCellValueChanged;\n if (typeof onCellValueChanged === 'function') {\n // to make callback async, do in a timeout\n setTimeout(function () { return onCellValueChanged(params); }, 0);\n }\n var event = {\n type: Events.EVENT_CELL_VALUE_CHANGED,\n event: null,\n rowIndex: rowNode.rowIndex,\n rowPinned: rowNode.rowPinned,\n column: params.column,\n api: params.api,\n columnApi: params.columnApi,\n colDef: params.colDef,\n context: params.context,\n data: rowNode.data,\n node: rowNode,\n oldValue: params.oldValue,\n newValue: params.newValue,\n value: params.newValue,\n source: eventSource\n };\n this.eventService.dispatchEvent(event);\n };\n ValueService.prototype.setValueUsingField = function (data, field, newValue, isFieldContainsDots) {\n if (!field) {\n return false;\n }\n // if no '.', then it's not a deep value\n var valuesAreSame = false;\n if (!isFieldContainsDots) {\n data[field] = newValue;\n }\n else {\n // otherwise it is a deep value, so need to dig for it\n var fieldPieces = field.split('.');\n var currentObject = data;\n while (fieldPieces.length > 0 && currentObject) {\n var fieldPiece = fieldPieces.shift();\n if (fieldPieces.length === 0) {\n currentObject[fieldPiece] = newValue;\n }\n else {\n currentObject = currentObject[fieldPiece];\n }\n }\n }\n return !valuesAreSame;\n };\n ValueService.prototype.executeFilterValueGetter = function (valueGetter, data, column, rowNode) {\n var params = {\n data: data,\n node: rowNode,\n column: column,\n colDef: column.getColDef(),\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext(),\n getValue: this.getValueCallback.bind(this, rowNode)\n };\n return this.expressionService.evaluate(valueGetter, params);\n };\n ValueService.prototype.executeValueGetter = function (valueGetter, data, column, rowNode) {\n var colId = column.getId();\n // if inside the same turn, just return back the value we got last time\n var valueFromCache = this.valueCache.getValue(rowNode, colId);\n if (valueFromCache !== undefined) {\n return valueFromCache;\n }\n var params = {\n data: data,\n node: rowNode,\n column: column,\n colDef: column.getColDef(),\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext(),\n getValue: this.getValueCallback.bind(this, rowNode)\n };\n var result = this.expressionService.evaluate(valueGetter, params);\n // if a turn is active, store the value in case the grid asks for it again\n this.valueCache.setValue(rowNode, colId, result);\n return result;\n };\n ValueService.prototype.getValueCallback = function (node, field) {\n var otherColumn = this.columnModel.getPrimaryColumn(field);\n if (otherColumn) {\n return this.getValue(otherColumn, node);\n }\n return null;\n };\n // used by row grouping and pivot, to get key for a row. col can be a pivot col or a row grouping col\n ValueService.prototype.getKeyForNode = function (col, rowNode) {\n var value = this.getValue(col, rowNode);\n var keyCreator = col.getColDef().keyCreator;\n var result = value;\n if (keyCreator) {\n var keyParams = {\n value: value,\n colDef: col.getColDef(),\n column: col,\n node: rowNode,\n data: rowNode.data,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext()\n };\n result = keyCreator(keyParams);\n }\n // if already a string, or missing, just return it\n if (typeof result === 'string' || result == null) {\n return result;\n }\n result = String(result);\n if (result === '[object Object]') {\n doOnce(function () {\n console.warn('AG Grid: a column you are grouping or pivoting by has objects as values. If you want to group by complex objects then either a) use a colDef.keyCreator (se AG Grid docs) or b) to toString() on the object to return a key');\n }, 'getKeyForNode - warn about [object,object]');\n }\n return result;\n };\n __decorate([\n Autowired('expressionService')\n ], ValueService.prototype, \"expressionService\", void 0);\n __decorate([\n Autowired('columnModel')\n ], ValueService.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('valueCache')\n ], ValueService.prototype, \"valueCache\", void 0);\n __decorate([\n PostConstruct\n ], ValueService.prototype, \"init\", null);\n ValueService = __decorate([\n Bean('valueService')\n ], ValueService);\n return ValueService;\n}(BeanStub));\nexport { ValueService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Constants } from \"../constants/constants\";\nimport { Autowired, PostConstruct } from \"../context/context\";\nimport { GridOptionsWrapper } from \"../gridOptionsWrapper\";\nimport { BeanStub } from \"../context/beanStub\";\nexport var LayoutCssClasses;\n(function (LayoutCssClasses) {\n LayoutCssClasses[\"AUTO_HEIGHT\"] = \"ag-layout-auto-height\";\n LayoutCssClasses[\"NORMAL\"] = \"ag-layout-normal\";\n LayoutCssClasses[\"PRINT\"] = \"ag-layout-print\";\n})(LayoutCssClasses || (LayoutCssClasses = {}));\nvar LayoutFeature = /** @class */ (function (_super) {\n __extends(LayoutFeature, _super);\n function LayoutFeature(view) {\n var _this = _super.call(this) || this;\n _this.view = view;\n return _this;\n }\n LayoutFeature.prototype.postConstruct = function () {\n this.addManagedListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_DOM_LAYOUT, this.updateLayoutClasses.bind(this));\n this.updateLayoutClasses();\n };\n LayoutFeature.prototype.updateLayoutClasses = function () {\n var domLayout = this.gridOptionsWrapper.getDomLayout();\n var params = {\n autoHeight: domLayout === Constants.DOM_LAYOUT_AUTO_HEIGHT,\n normal: domLayout === Constants.DOM_LAYOUT_NORMAL,\n print: domLayout === Constants.DOM_LAYOUT_PRINT\n };\n var cssClass = params.autoHeight ? LayoutCssClasses.AUTO_HEIGHT :\n params.print ? LayoutCssClasses.PRINT : LayoutCssClasses.NORMAL;\n this.view.updateLayoutClasses(cssClass, params);\n };\n __decorate([\n Autowired('gridOptionsWrapper')\n ], LayoutFeature.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n PostConstruct\n ], LayoutFeature.prototype, \"postConstruct\", null);\n return LayoutFeature;\n}(BeanStub));\nexport { LayoutFeature };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, PostConstruct } from \"../context/context\";\nimport { BeanStub } from \"../context/beanStub\";\nimport { getInnerHeight, getScrollLeft, isRtlNegativeScroll, setScrollLeft } from \"../utils/dom\";\nimport { Events } from \"../eventKeys\";\nimport { debounce } from \"../utils/function\";\nimport { isIOSUserAgent } from \"../utils/browser\";\nimport { Constants } from \"../constants/constants\";\nvar GridBodyScrollFeature = /** @class */ (function (_super) {\n __extends(GridBodyScrollFeature, _super);\n function GridBodyScrollFeature(eBodyViewport) {\n var _this = _super.call(this) || this;\n _this.scrollLeft = -1;\n _this.nextScrollTop = -1;\n _this.scrollTop = -1;\n _this.eBodyViewport = eBodyViewport;\n _this.resetLastHorizontalScrollElementDebounced = debounce(_this.resetLastHorizontalScrollElement.bind(_this), 500);\n return _this;\n }\n GridBodyScrollFeature.prototype.postConstruct = function () {\n var _this = this;\n this.enableRtl = this.gridOptionsWrapper.isEnableRtl();\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, this.onDisplayedColumnsWidthChanged.bind(this));\n this.ctrlsService.whenReady(function (p) {\n _this.centerRowContainerCon = p.centerRowContainerCtrl;\n _this.onDisplayedColumnsWidthChanged();\n _this.addScrollListener();\n });\n };\n GridBodyScrollFeature.prototype.addScrollListener = function () {\n var fakeHScroll = this.ctrlsService.getFakeHScrollCtrl();\n this.addManagedListener(this.centerRowContainerCon.getViewportElement(), 'scroll', this.onCenterViewportScroll.bind(this));\n this.addManagedListener(fakeHScroll.getViewport(), 'scroll', this.onFakeHorizontalScroll.bind(this));\n var onVerticalScroll = this.gridOptionsWrapper.isDebounceVerticalScrollbar() ?\n debounce(this.onVerticalScroll.bind(this), 100)\n : this.onVerticalScroll.bind(this);\n this.addManagedListener(this.eBodyViewport, 'scroll', onVerticalScroll);\n };\n GridBodyScrollFeature.prototype.onDisplayedColumnsWidthChanged = function () {\n if (this.enableRtl) {\n // because RTL is all backwards, a change in the width of the row\n // can cause a change in the scroll position, without a scroll event,\n // because the scroll position in RTL is a function that depends on\n // the width. to be convinced of this, take out this line, enable RTL,\n // scroll all the way to the left and then resize a column\n this.horizontallyScrollHeaderCenterAndFloatingCenter();\n }\n };\n GridBodyScrollFeature.prototype.horizontallyScrollHeaderCenterAndFloatingCenter = function (scrollLeft) {\n // when doing RTL, this method gets called once prematurely\n var notYetInitialised = this.centerRowContainerCon == null;\n if (notYetInitialised) {\n return;\n }\n if (scrollLeft === undefined) {\n scrollLeft = this.centerRowContainerCon.getCenterViewportScrollLeft();\n }\n var offset = this.enableRtl ? scrollLeft : -scrollLeft;\n var topCenterContainer = this.ctrlsService.getTopCenterRowContainerCtrl();\n var bottomCenterContainer = this.ctrlsService.getBottomCenterRowContainerCtrl();\n var fakeHScroll = this.ctrlsService.getFakeHScrollCtrl();\n var centerHeaderContainer = this.ctrlsService.getHeaderRowContainerCtrl();\n centerHeaderContainer.setHorizontalScroll(offset);\n bottomCenterContainer.setContainerTranslateX(offset);\n topCenterContainer.setContainerTranslateX(offset);\n var partner = this.lastHorizontalScrollElement === this.centerRowContainerCon.getViewportElement() ?\n fakeHScroll.getViewport() : this.centerRowContainerCon.getViewportElement();\n setScrollLeft(partner, Math.abs(scrollLeft), this.enableRtl);\n };\n GridBodyScrollFeature.prototype.isControllingScroll = function (eDiv) {\n if (!this.lastHorizontalScrollElement) {\n this.lastHorizontalScrollElement = eDiv;\n return true;\n }\n return eDiv === this.lastHorizontalScrollElement;\n };\n GridBodyScrollFeature.prototype.onFakeHorizontalScroll = function () {\n var fakeHScrollViewport = this.ctrlsService.getFakeHScrollCtrl().getViewport();\n if (!this.isControllingScroll(fakeHScrollViewport)) {\n return;\n }\n this.onBodyHorizontalScroll(fakeHScrollViewport);\n };\n GridBodyScrollFeature.prototype.onCenterViewportScroll = function () {\n var centerContainerViewport = this.centerRowContainerCon.getViewportElement();\n if (!this.isControllingScroll(centerContainerViewport)) {\n return;\n }\n this.onBodyHorizontalScroll(centerContainerViewport);\n };\n GridBodyScrollFeature.prototype.onBodyHorizontalScroll = function (eSource) {\n var centerContainerViewport = this.centerRowContainerCon.getViewportElement();\n var scrollLeft = centerContainerViewport.scrollLeft;\n if (this.shouldBlockScrollUpdate('horizontal', scrollLeft, true)) {\n return;\n }\n // we do Math.round() rather than Math.floor(), to mirror how scroll values are applied.\n // eg if a scale is applied (ie user has zoomed the browser), then applying scroll=200\n // could result in 199.88, which then floor(199.88) = 199, however round(199.88) = 200.\n // initially Math.floor() was used, however this caused (almost) infinite loop with aligned grids,\n // as the scroll would move 1px at at time bouncing from one grid to the next (eg one grid would cause\n // scroll to 200px, the next to 199px, then the first back to 198px and so on).\n this.doHorizontalScroll(Math.round(getScrollLeft(eSource, this.enableRtl)));\n this.resetLastHorizontalScrollElementDebounced();\n };\n GridBodyScrollFeature.prototype.onVerticalScroll = function () {\n var scrollTop = this.eBodyViewport.scrollTop;\n if (this.shouldBlockScrollUpdate('vertical', scrollTop, true)) {\n return;\n }\n this.animationFrameService.setScrollTop(scrollTop);\n this.nextScrollTop = scrollTop;\n if (this.gridOptionsWrapper.isSuppressAnimationFrame()) {\n this.scrollTop = this.nextScrollTop;\n this.redrawRowsAfterScroll();\n }\n else {\n this.animationFrameService.schedule();\n }\n };\n GridBodyScrollFeature.prototype.resetLastHorizontalScrollElement = function () {\n this.lastHorizontalScrollElement = null;\n };\n GridBodyScrollFeature.prototype.doHorizontalScroll = function (scrollLeft) {\n var fakeHScrollViewport = this.ctrlsService.getFakeHScrollCtrl().getViewport();\n var fakeScrollLeft = getScrollLeft(fakeHScrollViewport, this.enableRtl);\n if (this.scrollLeft === scrollLeft && scrollLeft === fakeScrollLeft) {\n return;\n }\n this.scrollLeft = scrollLeft;\n this.fireScrollEvent('horizontal');\n this.horizontallyScrollHeaderCenterAndFloatingCenter(scrollLeft);\n this.onHorizontalViewportChanged();\n };\n GridBodyScrollFeature.prototype.fireScrollEvent = function (direction) {\n var _this = this;\n var bodyScrollEvent = {\n type: Events.EVENT_BODY_SCROLL,\n api: this.gridApi,\n columnApi: this.columnApi,\n direction: direction,\n left: this.scrollLeft,\n top: this.scrollTop\n };\n this.eventService.dispatchEvent(bodyScrollEvent);\n window.clearTimeout(this.scrollTimer);\n this.scrollTimer = undefined;\n this.scrollTimer = window.setTimeout(function () {\n var bodyScrollEndEvent = Object.assign({}, bodyScrollEvent, {\n type: Events.EVENT_BODY_SCROLL_END\n });\n _this.eventService.dispatchEvent(bodyScrollEndEvent);\n }, 100);\n };\n GridBodyScrollFeature.prototype.shouldBlockScrollUpdate = function (direction, scrollTo, touchOnly) {\n // touch devices allow elastic scroll - which temporally scrolls the panel outside of the viewport\n // (eg user uses touch to go to the left of the grid, but drags past the left, the rows will actually\n // scroll past the left until the user releases the mouse). when this happens, we want ignore the scroll,\n // as otherwise it was causing the rows and header to flicker.\n if (touchOnly === void 0) { touchOnly = false; }\n // sometimes when scrolling, we got values that extended the maximum scroll allowed. we used to\n // ignore these scrolls. problem is the max scroll position could be skipped (eg the previous scroll event\n // could be 10px before the max position, and then current scroll event could be 20px after the max position).\n // if we just ignored the last event, we would be setting the scroll to 10px before the max position, when in\n // actual fact the user has exceeded the max scroll and thus scroll should be set to the max.\n if (touchOnly && !isIOSUserAgent()) {\n return false;\n }\n if (direction === 'vertical') {\n var clientHeight = getInnerHeight(this.eBodyViewport);\n var scrollHeight = this.eBodyViewport.scrollHeight;\n if (scrollTo < 0 || (scrollTo + clientHeight > scrollHeight)) {\n return true;\n }\n }\n if (direction === 'horizontal') {\n var clientWidth = this.centerRowContainerCon.getCenterWidth();\n var scrollWidth = this.centerRowContainerCon.getViewportElement().scrollWidth;\n if (this.enableRtl && isRtlNegativeScroll()) {\n if (scrollTo > 0) {\n return true;\n }\n }\n else if (scrollTo < 0) {\n return true;\n }\n if (Math.abs(scrollTo) + clientWidth > scrollWidth) {\n return true;\n }\n }\n return false;\n };\n GridBodyScrollFeature.prototype.redrawRowsAfterScroll = function () {\n this.fireScrollEvent('vertical');\n };\n GridBodyScrollFeature.prototype.onHorizontalViewportChanged = function () {\n this.centerRowContainerCon.onHorizontalViewportChanged();\n };\n // this is to cater for AG-3274, where grid is removed from the dom and then inserted back in again.\n // (which happens with some implementations of tabbing). this can result in horizontal scroll getting\n // reset back to the left, however no scroll event is fired. so we need to get header to also scroll\n // back to the left to be kept in sync.\n // adding and removing the grid from the DOM both resets the scroll position and\n // triggers a resize event, so notify listeners if the scroll position has changed\n GridBodyScrollFeature.prototype.checkScrollLeft = function () {\n if (this.scrollLeft !== this.centerRowContainerCon.getCenterViewportScrollLeft()) {\n this.onBodyHorizontalScroll(this.centerRowContainerCon.getViewportElement());\n }\n };\n GridBodyScrollFeature.prototype.executeAnimationFrameScroll = function () {\n var frameNeeded = this.scrollTop != this.nextScrollTop;\n if (frameNeeded) {\n this.scrollTop = this.nextScrollTop;\n this.redrawRowsAfterScroll();\n }\n return frameNeeded;\n };\n // called by scrollHorizontally method and alignedGridsService\n GridBodyScrollFeature.prototype.setHorizontalScrollPosition = function (hScrollPosition) {\n var minScrollLeft = 0;\n var maxScrollLeft = this.centerRowContainerCon.getViewportElement().scrollWidth - this.centerRowContainerCon.getCenterWidth();\n if (this.shouldBlockScrollUpdate('horizontal', hScrollPosition)) {\n if (this.enableRtl && isRtlNegativeScroll()) {\n hScrollPosition = hScrollPosition > 0 ? 0 : maxScrollLeft;\n }\n else {\n hScrollPosition = Math.min(Math.max(hScrollPosition, minScrollLeft), maxScrollLeft);\n }\n }\n setScrollLeft(this.centerRowContainerCon.getViewportElement(), Math.abs(hScrollPosition), this.enableRtl);\n // we need to manually do the event handling (rather than wait for the event)\n // for the alignedGridsService, as if we don't, the aligned grid service gets\n // notified async, and then it's 'consuming' flag doesn't get used right, and\n // we can end up with an infinite loop\n this.doHorizontalScroll(hScrollPosition);\n };\n GridBodyScrollFeature.prototype.setVerticalScrollPosition = function (vScrollPosition) {\n this.eBodyViewport.scrollTop = vScrollPosition;\n };\n GridBodyScrollFeature.prototype.getVScrollPosition = function () {\n var result = {\n top: this.eBodyViewport.scrollTop,\n bottom: this.eBodyViewport.scrollTop + this.eBodyViewport.offsetHeight\n };\n return result;\n };\n GridBodyScrollFeature.prototype.getHScrollPosition = function () {\n return this.centerRowContainerCon.getHScrollPosition();\n };\n GridBodyScrollFeature.prototype.isHorizontalScrollShowing = function () {\n return this.centerRowContainerCon.isHorizontalScrollShowing();\n };\n // called by the headerRootComp and moveColumnController\n GridBodyScrollFeature.prototype.scrollHorizontally = function (pixels) {\n var oldScrollPosition = this.centerRowContainerCon.getViewportElement().scrollLeft;\n this.setHorizontalScrollPosition(oldScrollPosition + pixels);\n return this.centerRowContainerCon.getViewportElement().scrollLeft - oldScrollPosition;\n };\n // gets called by rowRenderer when new data loaded, as it will want to scroll to the top\n GridBodyScrollFeature.prototype.scrollToTop = function () {\n this.eBodyViewport.scrollTop = 0;\n };\n // Valid values for position are bottom, middle and top\n GridBodyScrollFeature.prototype.ensureNodeVisible = function (comparator, position) {\n if (position === void 0) { position = null; }\n // look for the node index we want to display\n var rowCount = this.rowModel.getRowCount();\n var comparatorIsAFunction = typeof comparator === 'function';\n var indexToSelect = -1;\n // go through all the nodes, find the one we want to show\n for (var i = 0; i < rowCount; i++) {\n var node = this.rowModel.getRow(i);\n if (comparatorIsAFunction) {\n if (comparator(node)) {\n indexToSelect = i;\n break;\n }\n }\n else {\n // check object equality against node and data\n if (comparator === node || comparator === node.data) {\n indexToSelect = i;\n break;\n }\n }\n }\n if (indexToSelect >= 0) {\n this.ensureIndexVisible(indexToSelect, position);\n }\n };\n // Valid values for position are bottom, middle and top\n // position should be {'top','middle','bottom', or undefined/null}.\n // if undefined/null, then the grid will to the minimal amount of scrolling,\n // eg if grid needs to scroll up, it scrolls until row is on top,\n // if grid needs to scroll down, it scrolls until row is on bottom,\n // if row is already in view, grid does not scroll\n GridBodyScrollFeature.prototype.ensureIndexVisible = function (index, position) {\n // if for print or auto height, everything is always visible\n if (this.gridOptionsWrapper.getDomLayout() === Constants.DOM_LAYOUT_PRINT) {\n return;\n }\n var rowCount = this.paginationProxy.getRowCount();\n if (typeof index !== 'number' || index < 0 || index >= rowCount) {\n console.warn('invalid row index for ensureIndexVisible: ' + index);\n return;\n }\n var isPaging = this.gridOptionsWrapper.isPagination();\n var paginationPanelEnabled = isPaging && !this.gridOptionsWrapper.isSuppressPaginationPanel();\n if (!paginationPanelEnabled) {\n this.paginationProxy.goToPageWithIndex(index);\n }\n var rowNode = this.paginationProxy.getRow(index);\n var rowGotShiftedDuringOperation;\n do {\n var startingRowTop = rowNode.rowTop;\n var startingRowHeight = rowNode.rowHeight;\n var paginationOffset = this.paginationProxy.getPixelOffset();\n var rowTopPixel = rowNode.rowTop - paginationOffset;\n var rowBottomPixel = rowTopPixel + rowNode.rowHeight;\n var scrollPosition = this.getVScrollPosition();\n var heightOffset = this.heightScaler.getDivStretchOffset();\n var vScrollTop = scrollPosition.top + heightOffset;\n var vScrollBottom = scrollPosition.bottom + heightOffset;\n var viewportHeight = vScrollBottom - vScrollTop;\n // work out the pixels for top, middle and bottom up front,\n // make the if/else below easier to read\n var pxTop = this.heightScaler.getScrollPositionForPixel(rowTopPixel);\n var pxBottom = this.heightScaler.getScrollPositionForPixel(rowBottomPixel - viewportHeight);\n // make sure if middle, the row is not outside the top of the grid\n var pxMiddle = Math.min((pxTop + pxBottom) / 2, rowTopPixel);\n var rowBelowViewport = vScrollTop > rowTopPixel;\n var rowAboveViewport = vScrollBottom < rowBottomPixel;\n var newScrollPosition = null;\n if (position === 'top') {\n newScrollPosition = pxTop;\n }\n else if (position === 'bottom') {\n newScrollPosition = pxBottom;\n }\n else if (position === 'middle') {\n newScrollPosition = pxMiddle;\n }\n else if (rowBelowViewport) {\n // if row is before, scroll up with row at top\n newScrollPosition = pxTop;\n }\n else if (rowAboveViewport) {\n // if row is below, scroll down with row at bottom\n newScrollPosition = pxBottom;\n }\n if (newScrollPosition !== null) {\n this.eBodyViewport.scrollTop = newScrollPosition;\n this.rowRenderer.redrawAfterScroll();\n }\n // the row can get shifted if during the rendering (during rowRenderer.redrawAfterScroll()),\n // the height of a row changes due to lazy calculation of row heights when using\n // colDef.autoHeight or gridOptions.getRowHeight.\n // if row was shifted, then the position we scrolled to is incorrect.\n rowGotShiftedDuringOperation = (startingRowTop !== rowNode.rowTop)\n || (startingRowHeight !== rowNode.rowHeight);\n } while (rowGotShiftedDuringOperation);\n // so when we return back to user, the cells have rendered\n this.animationFrameService.flushAllFrames();\n };\n GridBodyScrollFeature.prototype.ensureColumnVisible = function (key, position) {\n if (position === void 0) { position = 'auto'; }\n var column = this.columnModel.getGridColumn(key);\n if (!column) {\n return;\n }\n // calling ensureColumnVisible on a pinned column doesn't make sense\n if (column.isPinned()) {\n return;\n }\n // defensive\n if (!this.columnModel.isColumnDisplayed(column)) {\n return;\n }\n var newHorizontalScroll = this.getPositionedHorizontalScroll(column, position);\n if (newHorizontalScroll !== null) {\n this.centerRowContainerCon.setCenterViewportScrollLeft(newHorizontalScroll);\n }\n // this will happen anyway, as the move will cause a 'scroll' event on the body, however\n // it is possible that the ensureColumnVisible method is called from within AG Grid and\n // the caller will need to have the columns rendered to continue, which will be before\n // the event has been worked on (which is the case for cell navigation).\n this.centerRowContainerCon.onHorizontalViewportChanged();\n // so when we return back to user, the cells have rendered\n this.animationFrameService.flushAllFrames();\n };\n GridBodyScrollFeature.prototype.getPositionedHorizontalScroll = function (column, position) {\n var _a = this.isColumnOutsideViewport(column), columnBeforeStart = _a.columnBeforeStart, columnAfterEnd = _a.columnAfterEnd;\n var viewportTooSmallForColumn = this.centerRowContainerCon.getCenterWidth() < column.getActualWidth();\n var viewportWidth = this.centerRowContainerCon.getCenterWidth();\n var isRtl = this.enableRtl;\n var alignColToStart = (isRtl ? columnBeforeStart : columnAfterEnd) || viewportTooSmallForColumn;\n var alignColToEnd = isRtl ? columnAfterEnd : columnBeforeStart;\n if (position !== 'auto') {\n alignColToStart = position === 'start';\n alignColToEnd = position === 'end';\n }\n var isMiddle = position === 'middle';\n if (alignColToStart || alignColToEnd || isMiddle) {\n var _b = this.getColumnBounds(column), colLeft = _b.colLeft, colMiddle = _b.colMiddle, colRight = _b.colRight;\n if (isMiddle) {\n return colMiddle - viewportWidth / 2;\n }\n if (alignColToStart) {\n return isRtl ? colRight : colLeft;\n }\n return isRtl ? (colLeft - viewportWidth) : (colRight - viewportWidth);\n }\n return null;\n };\n GridBodyScrollFeature.prototype.isColumnOutsideViewport = function (column) {\n var _a = this.getViewportBounds(), viewportStart = _a.start, viewportEnd = _a.end;\n var _b = this.getColumnBounds(column), colLeft = _b.colLeft, colRight = _b.colRight;\n var isRtl = this.enableRtl;\n var columnBeforeStart = isRtl ? (viewportStart > colRight) : (viewportEnd < colRight);\n var columnAfterEnd = isRtl ? (viewportEnd < colLeft) : (viewportStart > colLeft);\n return { columnBeforeStart: columnBeforeStart, columnAfterEnd: columnAfterEnd };\n };\n GridBodyScrollFeature.prototype.getColumnBounds = function (column) {\n var isRtl = this.enableRtl;\n var bodyWidth = this.columnModel.getBodyContainerWidth();\n var colWidth = column.getActualWidth();\n var colLeft = column.getLeft();\n var multiplier = isRtl ? -1 : 1;\n var colLeftPixel = isRtl ? (bodyWidth - colLeft) : colLeft;\n var colRightPixel = colLeftPixel + colWidth * multiplier;\n var colMidPixel = colLeftPixel + colWidth / 2 * multiplier;\n return { colLeft: colLeftPixel, colMiddle: colMidPixel, colRight: colRightPixel };\n };\n GridBodyScrollFeature.prototype.getViewportBounds = function () {\n var viewportWidth = this.centerRowContainerCon.getCenterWidth();\n var scrollPosition = this.centerRowContainerCon.getCenterViewportScrollLeft();\n var viewportStartPixel = scrollPosition;\n var viewportEndPixel = viewportWidth + scrollPosition;\n return { start: viewportStartPixel, end: viewportEndPixel, width: viewportWidth };\n };\n __decorate([\n Autowired('ctrlsService')\n ], GridBodyScrollFeature.prototype, \"ctrlsService\", void 0);\n __decorate([\n Autowired('animationFrameService')\n ], GridBodyScrollFeature.prototype, \"animationFrameService\", void 0);\n __decorate([\n Autowired('columnApi')\n ], GridBodyScrollFeature.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], GridBodyScrollFeature.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('paginationProxy')\n ], GridBodyScrollFeature.prototype, \"paginationProxy\", void 0);\n __decorate([\n Autowired('rowModel')\n ], GridBodyScrollFeature.prototype, \"rowModel\", void 0);\n __decorate([\n Autowired('rowContainerHeightService')\n ], GridBodyScrollFeature.prototype, \"heightScaler\", void 0);\n __decorate([\n Autowired('rowRenderer')\n ], GridBodyScrollFeature.prototype, \"rowRenderer\", void 0);\n __decorate([\n Autowired('columnModel')\n ], GridBodyScrollFeature.prototype, \"columnModel\", void 0);\n __decorate([\n PostConstruct\n ], GridBodyScrollFeature.prototype, \"postConstruct\", null);\n return GridBodyScrollFeature;\n}(BeanStub));\nexport { GridBodyScrollFeature };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar AutoScrollService = /** @class */ (function () {\n function AutoScrollService(params) {\n this.tickingInterval = null;\n this.onScrollCallback = null;\n this.scrollContainer = params.scrollContainer;\n this.scrollHorizontally = params.scrollAxis.indexOf('x') !== -1;\n this.scrollVertically = params.scrollAxis.indexOf('y') !== -1;\n this.scrollByTick = params.scrollByTick != null ? params.scrollByTick : 20;\n if (params.onScrollCallback) {\n this.onScrollCallback = params.onScrollCallback;\n }\n if (this.scrollVertically) {\n this.getVerticalPosition = params.getVerticalPosition;\n this.setVerticalPosition = params.setVerticalPosition;\n }\n if (this.scrollHorizontally) {\n this.getHorizontalPosition = params.getHorizontalPosition;\n this.setHorizontalPosition = params.setHorizontalPosition;\n }\n this.shouldSkipVerticalScroll = params.shouldSkipVerticalScroll || (function () { return false; });\n this.shouldSkipHorizontalScroll = params.shouldSkipHorizontalScroll || (function () { return false; });\n }\n AutoScrollService.prototype.check = function (mouseEvent, forceSkipVerticalScroll) {\n if (forceSkipVerticalScroll === void 0) { forceSkipVerticalScroll = false; }\n var skipVerticalScroll = forceSkipVerticalScroll || this.shouldSkipVerticalScroll();\n if (skipVerticalScroll && this.shouldSkipHorizontalScroll()) {\n return;\n }\n var rect = this.scrollContainer.getBoundingClientRect();\n var scrollTick = this.scrollByTick;\n this.tickLeft = mouseEvent.clientX < (rect.left + scrollTick);\n this.tickRight = mouseEvent.clientX > (rect.right - scrollTick);\n this.tickUp = mouseEvent.clientY < (rect.top + scrollTick) && !skipVerticalScroll;\n this.tickDown = mouseEvent.clientY > (rect.bottom - scrollTick) && !skipVerticalScroll;\n if (this.tickLeft || this.tickRight || this.tickUp || this.tickDown) {\n this.ensureTickingStarted();\n }\n else {\n this.ensureCleared();\n }\n };\n AutoScrollService.prototype.ensureTickingStarted = function () {\n if (this.tickingInterval === null) {\n this.tickingInterval = window.setInterval(this.doTick.bind(this), 100);\n this.tickCount = 0;\n }\n };\n AutoScrollService.prototype.doTick = function () {\n this.tickCount++;\n var tickAmount;\n tickAmount = this.tickCount > 20 ? 200 : (this.tickCount > 10 ? 80 : 40);\n if (this.scrollVertically) {\n var vScrollPosition = this.getVerticalPosition();\n if (this.tickUp) {\n this.setVerticalPosition(vScrollPosition - tickAmount);\n }\n if (this.tickDown) {\n this.setVerticalPosition(vScrollPosition + tickAmount);\n }\n }\n if (this.scrollHorizontally) {\n var hScrollPosition = this.getHorizontalPosition();\n if (this.tickLeft) {\n this.setHorizontalPosition(hScrollPosition - tickAmount);\n }\n if (this.tickRight) {\n this.setHorizontalPosition(hScrollPosition + tickAmount);\n }\n }\n if (this.onScrollCallback) {\n this.onScrollCallback();\n }\n };\n AutoScrollService.prototype.ensureCleared = function () {\n if (this.tickingInterval) {\n window.clearInterval(this.tickingInterval);\n this.tickingInterval = null;\n }\n };\n return AutoScrollService;\n}());\nexport { AutoScrollService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __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};\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nimport { DragAndDropService, DragSourceType, VerticalDirection } from \"../dragAndDrop/dragAndDropService\";\nimport { Autowired, Optional, PostConstruct } from \"../context/context\";\nimport { Events } from \"../eventKeys\";\nimport { RowHighlightPosition } from \"../entities/rowNode\";\nimport { last } from '../utils/array';\nimport { BeanStub } from \"../context/beanStub\";\nimport { missingOrEmpty } from \"../utils/generic\";\nimport { doOnce } from \"../utils/function\";\nimport { AutoScrollService } from \"../autoScrollService\";\nvar RowDragFeature = /** @class */ (function (_super) {\n __extends(RowDragFeature, _super);\n function RowDragFeature(eContainer) {\n var _this = _super.call(this) || this;\n _this.isMultiRowDrag = false;\n _this.isGridSorted = false;\n _this.isGridFiltered = false;\n _this.isRowGroupActive = false;\n _this.eContainer = eContainer;\n return _this;\n }\n RowDragFeature.prototype.postConstruct = function () {\n var _this = this;\n if (this.gridOptionsWrapper.isRowModelDefault()) {\n this.clientSideRowModel = this.rowModel;\n }\n var refreshStatus = function () {\n _this.onSortChanged();\n _this.onFilterChanged();\n _this.onRowGroupChanged();\n };\n this.addManagedListener(this.eventService, Events.EVENT_SORT_CHANGED, this.onSortChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.onRowGroupChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_MODEL_UPDATED, function () {\n refreshStatus();\n });\n refreshStatus();\n this.ctrlsService.whenReady(function () {\n var gridBodyCon = _this.ctrlsService.getGridBodyCtrl();\n _this.autoScrollService = new AutoScrollService({\n scrollContainer: gridBodyCon.getBodyViewportElement(),\n scrollAxis: 'y',\n getVerticalPosition: function () { return gridBodyCon.getScrollFeature().getVScrollPosition().top; },\n setVerticalPosition: function (position) { return gridBodyCon.getScrollFeature().setVerticalScrollPosition(position); },\n onScrollCallback: function () { _this.onDragging(_this.lastDraggingEvent); }\n });\n });\n };\n RowDragFeature.prototype.onSortChanged = function () {\n this.isGridSorted = this.sortController.isSortActive();\n };\n RowDragFeature.prototype.onFilterChanged = function () {\n this.isGridFiltered = this.filterManager.isAnyFilterPresent();\n };\n RowDragFeature.prototype.onRowGroupChanged = function () {\n var rowGroups = this.columnModel.getRowGroupColumns();\n this.isRowGroupActive = !missingOrEmpty(rowGroups);\n };\n RowDragFeature.prototype.getContainer = function () {\n return this.eContainer;\n };\n RowDragFeature.prototype.isInterestedIn = function (type) {\n return type === DragSourceType.RowDrag;\n };\n RowDragFeature.prototype.getIconName = function () {\n var managedDrag = this.gridOptionsWrapper.isRowDragManaged();\n if (managedDrag && this.shouldPreventRowMove()) {\n return DragAndDropService.ICON_NOT_ALLOWED;\n }\n return DragAndDropService.ICON_MOVE;\n };\n RowDragFeature.prototype.shouldPreventRowMove = function () {\n return this.isGridSorted || this.isGridFiltered || this.isRowGroupActive;\n };\n RowDragFeature.prototype.getRowNodes = function (draggingEvent) {\n var _this = this;\n if (!this.isFromThisGrid(draggingEvent)) {\n return draggingEvent.dragItem.rowNodes || [];\n }\n var isRowDragMultiRow = this.gridOptionsWrapper.isRowDragMultiRow();\n var selectedNodes = __spread(this.selectionService.getSelectedNodes()).sort(function (a, b) { return _this.getRowIndexNumber(a) - _this.getRowIndexNumber(b); });\n var currentNode = draggingEvent.dragItem.rowNode;\n if (isRowDragMultiRow && selectedNodes.indexOf(currentNode) !== -1) {\n this.isMultiRowDrag = true;\n return selectedNodes;\n }\n this.isMultiRowDrag = false;\n return [currentNode];\n };\n RowDragFeature.prototype.onDragEnter = function (draggingEvent) {\n // builds a lits of all rows being dragged before firing events\n draggingEvent.dragItem.rowNodes = this.getRowNodes(draggingEvent);\n // when entering, we fire the enter event, then in onEnterOrDragging,\n // we also fire the move event. so we get both events when entering.\n this.dispatchGridEvent(Events.EVENT_ROW_DRAG_ENTER, draggingEvent);\n this.getRowNodes(draggingEvent).forEach(function (rowNode) {\n rowNode.setDragging(true);\n });\n this.onEnterOrDragging(draggingEvent);\n };\n RowDragFeature.prototype.onDragging = function (draggingEvent) {\n this.onEnterOrDragging(draggingEvent);\n };\n RowDragFeature.prototype.isFromThisGrid = function (draggingEvent) {\n var dragSourceDomDataKey = draggingEvent.dragSource.dragSourceDomDataKey;\n return dragSourceDomDataKey === this.gridOptionsWrapper.getDomDataKey();\n };\n RowDragFeature.prototype.isDropZoneWithinThisGrid = function (draggingEvent) {\n var gridBodyCon = this.ctrlsService.getGridBodyCtrl();\n var gridGui = gridBodyCon.getGui();\n var dropZoneTarget = draggingEvent.dropZoneTarget;\n return !gridGui.contains(dropZoneTarget);\n };\n RowDragFeature.prototype.onEnterOrDragging = function (draggingEvent) {\n // this event is fired for enter and move\n this.dispatchGridEvent(Events.EVENT_ROW_DRAG_MOVE, draggingEvent);\n this.lastDraggingEvent = draggingEvent;\n var pixel = this.mouseEventService.getNormalisedPosition(draggingEvent).y;\n var managedDrag = this.gridOptionsWrapper.isRowDragManaged();\n if (managedDrag) {\n this.doManagedDrag(draggingEvent, pixel);\n }\n this.autoScrollService.check(draggingEvent.event);\n };\n RowDragFeature.prototype.doManagedDrag = function (draggingEvent, pixel) {\n var isFromThisGrid = this.isFromThisGrid(draggingEvent);\n var managedDrag = this.gridOptionsWrapper.isRowDragManaged();\n var rowNodes = draggingEvent.dragItem.rowNodes;\n if (managedDrag && this.shouldPreventRowMove()) {\n return;\n }\n if (this.gridOptionsWrapper.isSuppressMoveWhenRowDragging() || !isFromThisGrid) {\n if (!this.isDropZoneWithinThisGrid(draggingEvent)) {\n this.clientSideRowModel.highlightRowAtPixel(rowNodes[0], pixel);\n }\n }\n else {\n this.moveRows(rowNodes, pixel);\n }\n };\n RowDragFeature.prototype.getRowIndexNumber = function (rowNode) {\n return parseInt(last(rowNode.getRowIndexString().split('-')), 10);\n };\n RowDragFeature.prototype.moveRowAndClearHighlight = function (draggingEvent) {\n var _this = this;\n var lastHighlightedRowNode = this.clientSideRowModel.getLastHighlightedRowNode();\n var isBelow = lastHighlightedRowNode && lastHighlightedRowNode.highlighted === RowHighlightPosition.Below;\n var pixel = this.mouseEventService.getNormalisedPosition(draggingEvent).y;\n var rowNodes = draggingEvent.dragItem.rowNodes;\n var increment = isBelow ? 1 : 0;\n if (this.isFromThisGrid(draggingEvent)) {\n rowNodes.forEach(function (rowNode) {\n if (rowNode.rowTop < pixel) {\n increment -= 1;\n }\n });\n this.moveRows(rowNodes, pixel, increment);\n }\n else {\n var getRowIdFunc_1 = this.gridOptionsWrapper.getRowIdFunc();\n var addIndex = this.clientSideRowModel.getRowIndexAtPixel(pixel) + 1;\n if (this.clientSideRowModel.getHighlightPosition(pixel) === RowHighlightPosition.Above) {\n addIndex--;\n }\n this.clientSideRowModel.updateRowData({\n add: rowNodes\n .map(function (node) { return node.data; })\n .filter(function (data) { return !_this.clientSideRowModel.getRowNode(getRowIdFunc_1 ? getRowIdFunc_1({ data: data, level: 0, api: _this.gridApi, columnApi: _this.columnApi }) : data.id); }),\n addIndex: addIndex\n });\n }\n this.clearRowHighlight();\n };\n RowDragFeature.prototype.clearRowHighlight = function () {\n this.clientSideRowModel.highlightRowAtPixel(null);\n };\n RowDragFeature.prototype.moveRows = function (rowNodes, pixel, increment) {\n if (increment === void 0) { increment = 0; }\n var rowWasMoved = this.clientSideRowModel.ensureRowsAtPixel(rowNodes, pixel, increment);\n if (rowWasMoved) {\n this.focusService.clearFocusedCell();\n if (this.rangeService) {\n this.rangeService.removeAllCellRanges();\n }\n }\n };\n RowDragFeature.prototype.addRowDropZone = function (params) {\n var _this = this;\n if (!params.getContainer()) {\n doOnce(function () { return console.warn('AG Grid: addRowDropZone - A container target needs to be provided'); }, 'add-drop-zone-empty-target');\n return;\n }\n if (this.dragAndDropService.findExternalZone(params)) {\n console.warn('AG Grid: addRowDropZone - target already exists in the list of DropZones. Use `removeRowDropZone` before adding it again.');\n return;\n }\n var processedParams = {\n getContainer: params.getContainer\n };\n if (params.fromGrid) {\n params.fromGrid = undefined;\n processedParams = params;\n }\n else {\n if (params.onDragEnter) {\n processedParams.onDragEnter = function (e) {\n params.onDragEnter(_this.draggingToRowDragEvent(Events.EVENT_ROW_DRAG_ENTER, e));\n };\n }\n if (params.onDragLeave) {\n processedParams.onDragLeave = function (e) {\n params.onDragLeave(_this.draggingToRowDragEvent(Events.EVENT_ROW_DRAG_LEAVE, e));\n };\n }\n if (params.onDragging) {\n processedParams.onDragging = function (e) {\n params.onDragging(_this.draggingToRowDragEvent(Events.EVENT_ROW_DRAG_MOVE, e));\n };\n }\n if (params.onDragStop) {\n processedParams.onDragStop = function (e) {\n params.onDragStop(_this.draggingToRowDragEvent(Events.EVENT_ROW_DRAG_END, e));\n };\n }\n }\n this.dragAndDropService.addDropTarget(__assign({ isInterestedIn: function (type) { return type === DragSourceType.RowDrag; }, getIconName: function () { return DragAndDropService.ICON_MOVE; }, external: true }, processedParams));\n };\n RowDragFeature.prototype.getRowDropZone = function (events) {\n var _this = this;\n var getContainer = this.getContainer.bind(this);\n var onDragEnter = this.onDragEnter.bind(this);\n var onDragLeave = this.onDragLeave.bind(this);\n var onDragging = this.onDragging.bind(this);\n var onDragStop = this.onDragStop.bind(this);\n if (!events) {\n return { getContainer: getContainer, onDragEnter: onDragEnter, onDragLeave: onDragLeave, onDragging: onDragging, onDragStop: onDragStop, /* @private */ fromGrid: true };\n }\n return {\n getContainer: getContainer,\n onDragEnter: events.onDragEnter\n ? (function (e) {\n onDragEnter(e);\n events.onDragEnter(_this.draggingToRowDragEvent(Events.EVENT_ROW_DRAG_ENTER, e));\n })\n : onDragEnter,\n onDragLeave: events.onDragLeave\n ? (function (e) {\n onDragLeave(e);\n events.onDragLeave(_this.draggingToRowDragEvent(Events.EVENT_ROW_DRAG_LEAVE, e));\n })\n : onDragLeave,\n onDragging: events.onDragging\n ? (function (e) {\n onDragging(e);\n events.onDragging(_this.draggingToRowDragEvent(Events.EVENT_ROW_DRAG_MOVE, e));\n })\n : onDragging,\n onDragStop: events.onDragStop\n ? (function (e) {\n onDragStop(e);\n events.onDragStop(_this.draggingToRowDragEvent(Events.EVENT_ROW_DRAG_END, e));\n })\n : onDragStop,\n fromGrid: true /* @private */\n };\n };\n RowDragFeature.prototype.draggingToRowDragEvent = function (type, draggingEvent) {\n var yNormalised = this.mouseEventService.getNormalisedPosition(draggingEvent).y;\n var mouseIsPastLastRow = yNormalised > this.paginationProxy.getCurrentPageHeight();\n var overIndex = -1;\n var overNode;\n if (!mouseIsPastLastRow) {\n overIndex = this.rowModel.getRowIndexAtPixel(yNormalised);\n overNode = this.rowModel.getRow(overIndex);\n }\n var vDirectionString;\n switch (draggingEvent.vDirection) {\n case VerticalDirection.Down:\n vDirectionString = 'down';\n break;\n case VerticalDirection.Up:\n vDirectionString = 'up';\n break;\n default:\n vDirectionString = null;\n break;\n }\n var event = {\n type: type,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n event: draggingEvent.event,\n node: draggingEvent.dragItem.rowNode,\n nodes: draggingEvent.dragItem.rowNodes,\n overIndex: overIndex,\n overNode: overNode,\n y: yNormalised,\n vDirection: vDirectionString\n };\n return event;\n };\n RowDragFeature.prototype.dispatchGridEvent = function (type, draggingEvent) {\n var event = this.draggingToRowDragEvent(type, draggingEvent);\n this.eventService.dispatchEvent(event);\n };\n RowDragFeature.prototype.onDragLeave = function (draggingEvent) {\n this.dispatchGridEvent(Events.EVENT_ROW_DRAG_LEAVE, draggingEvent);\n this.stopDragging(draggingEvent);\n if (this.gridOptionsWrapper.isRowDragManaged()) {\n this.clearRowHighlight();\n }\n if (this.isFromThisGrid(draggingEvent)) {\n this.isMultiRowDrag = false;\n }\n };\n RowDragFeature.prototype.onDragStop = function (draggingEvent) {\n this.dispatchGridEvent(Events.EVENT_ROW_DRAG_END, draggingEvent);\n this.stopDragging(draggingEvent);\n if (this.gridOptionsWrapper.isRowDragManaged() &&\n (this.gridOptionsWrapper.isSuppressMoveWhenRowDragging() || !this.isFromThisGrid(draggingEvent)) &&\n !this.isDropZoneWithinThisGrid(draggingEvent)) {\n this.moveRowAndClearHighlight(draggingEvent);\n }\n };\n RowDragFeature.prototype.stopDragging = function (draggingEvent) {\n this.autoScrollService.ensureCleared();\n this.getRowNodes(draggingEvent).forEach(function (rowNode) {\n rowNode.setDragging(false);\n });\n };\n __decorate([\n Autowired('dragAndDropService')\n ], RowDragFeature.prototype, \"dragAndDropService\", void 0);\n __decorate([\n Autowired('rowModel')\n ], RowDragFeature.prototype, \"rowModel\", void 0);\n __decorate([\n Autowired('paginationProxy')\n ], RowDragFeature.prototype, \"paginationProxy\", void 0);\n __decorate([\n Autowired('columnModel')\n ], RowDragFeature.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('focusService')\n ], RowDragFeature.prototype, \"focusService\", void 0);\n __decorate([\n Autowired('sortController')\n ], RowDragFeature.prototype, \"sortController\", void 0);\n __decorate([\n Autowired('filterManager')\n ], RowDragFeature.prototype, \"filterManager\", void 0);\n __decorate([\n Autowired('selectionService')\n ], RowDragFeature.prototype, \"selectionService\", void 0);\n __decorate([\n Autowired('mouseEventService')\n ], RowDragFeature.prototype, \"mouseEventService\", void 0);\n __decorate([\n Autowired('ctrlsService')\n ], RowDragFeature.prototype, \"ctrlsService\", void 0);\n __decorate([\n Optional('rangeService')\n ], RowDragFeature.prototype, \"rangeService\", void 0);\n __decorate([\n Autowired('columnApi')\n ], RowDragFeature.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], RowDragFeature.prototype, \"gridApi\", void 0);\n __decorate([\n PostConstruct\n ], RowDragFeature.prototype, \"postConstruct\", null);\n return RowDragFeature;\n}(BeanStub));\nexport { RowDragFeature };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { BeanStub } from \"../context/beanStub\";\nimport { Autowired, Optional } from \"../context/context\";\nimport { LayoutFeature } from \"../styling/layoutFeature\";\nimport { Constants } from \"../constants/constants\";\nimport { Events } from \"../eventKeys\";\nimport { GridBodyScrollFeature } from \"./gridBodyScrollFeature\";\nimport { getInnerWidth, isVerticalScrollShowing } from \"../utils/dom\";\nimport { RowDragFeature } from \"./rowDragFeature\";\nimport { getTabIndex } from \"../utils/browser\";\nexport var RowAnimationCssClasses;\n(function (RowAnimationCssClasses) {\n RowAnimationCssClasses[\"ANIMATION_ON\"] = \"ag-row-animation\";\n RowAnimationCssClasses[\"ANIMATION_OFF\"] = \"ag-row-no-animation\";\n})(RowAnimationCssClasses || (RowAnimationCssClasses = {}));\nexport var CSS_CLASS_CELL_SELECTABLE = 'ag-selectable';\nexport var CSS_CLASS_FORCE_VERTICAL_SCROLL = 'ag-force-vertical-scroll';\nexport var CSS_CLASS_COLUMN_MOVING = 'ag-column-moving';\nvar GridBodyCtrl = /** @class */ (function (_super) {\n __extends(GridBodyCtrl, _super);\n function GridBodyCtrl() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.angularApplyTriggered = false;\n return _this;\n }\n GridBodyCtrl.prototype.getScrollFeature = function () {\n return this.bodyScrollFeature;\n };\n GridBodyCtrl.prototype.getBodyViewportElement = function () {\n return this.eBodyViewport;\n };\n GridBodyCtrl.prototype.setComp = function (comp, eGridBody, eBodyViewport, eTop, eBottom) {\n this.comp = comp;\n this.eGridBody = eGridBody;\n this.eBodyViewport = eBodyViewport;\n this.eTop = eTop;\n this.eBottom = eBottom;\n this.setCellTextSelection(this.gridOptionsWrapper.isEnableCellTextSelect());\n this.createManagedBean(new LayoutFeature(this.comp));\n this.bodyScrollFeature = this.createManagedBean(new GridBodyScrollFeature(this.eBodyViewport));\n this.addRowDragListener();\n this.setupRowAnimationCssClass();\n this.ctrlsService.registerGridBodyCtrl(this);\n this.addEventListeners();\n this.addFocusListeners([eTop, eBodyViewport, eBottom]);\n this.onGridColumnsChanged();\n this.addBodyViewportListener();\n this.setFloatingHeights();\n this.disableBrowserDragging();\n this.addStopEditingWhenGridLosesFocus();\n if (this.$scope) {\n this.addAngularApplyCheck();\n }\n };\n GridBodyCtrl.prototype.getComp = function () {\n return this.comp;\n };\n GridBodyCtrl.prototype.addEventListeners = function () {\n this.addManagedListener(this.eventService, Events.EVENT_GRID_COLUMNS_CHANGED, this.onGridColumnsChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_SCROLL_VISIBILITY_CHANGED, this.onScrollVisibilityChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_PINNED_ROW_DATA_CHANGED, this.setFloatingHeights.bind(this));\n };\n GridBodyCtrl.prototype.addFocusListeners = function (elements) {\n var _this = this;\n elements.forEach(function (element) {\n _this.addManagedListener(element, 'focusin', function () {\n element.classList.add('ag-has-focus');\n });\n _this.addManagedListener(element, 'focusout', function (e) {\n if (!element.contains(e.relatedTarget)) {\n element.classList.remove('ag-has-focus');\n }\n });\n });\n };\n // used by ColumnAnimationService\n GridBodyCtrl.prototype.setColumnMovingCss = function (moving) {\n this.comp.setColumnMovingCss(moving ? CSS_CLASS_COLUMN_MOVING : null, moving);\n };\n GridBodyCtrl.prototype.setCellTextSelection = function (selectable) {\n if (selectable === void 0) { selectable = false; }\n var cssClass = selectable ? CSS_CLASS_CELL_SELECTABLE : null;\n this.comp.setCellSelectableCss(cssClass, selectable);\n };\n GridBodyCtrl.prototype.onScrollVisibilityChanged = function () {\n var visible = this.scrollVisibleService.isVerticalScrollShowing();\n this.setVerticalScrollPaddingVisible(visible);\n };\n GridBodyCtrl.prototype.onGridColumnsChanged = function () {\n var columns = this.columnModel.getAllGridColumns();\n this.comp.setColumnCount(columns ? columns.length : 0);\n };\n // if we do not do this, then the user can select a pic in the grid (eg an image in a custom cell renderer)\n // and then that will start the browser native drag n' drop, which messes up with our own drag and drop.\n GridBodyCtrl.prototype.disableBrowserDragging = function () {\n this.addManagedListener(this.eGridBody, 'dragstart', function (event) {\n if (event.target instanceof HTMLImageElement) {\n event.preventDefault();\n return false;\n }\n });\n };\n GridBodyCtrl.prototype.addStopEditingWhenGridLosesFocus = function () {\n var _this = this;\n if (!this.gridOptionsWrapper.isStopEditingWhenCellsLoseFocus()) {\n return;\n }\n var focusOutListener = function (event) {\n // this is the element the focus is moving to\n var elementWithFocus = event.relatedTarget;\n if (getTabIndex(elementWithFocus) === null) {\n _this.rowRenderer.stopEditing();\n return;\n }\n var clickInsideGrid = \n // see if click came from inside the viewports\n viewports.some(function (viewport) { return viewport.contains(elementWithFocus); })\n // and also that it's not from a detail grid\n && _this.mouseEventService.isElementInThisGrid(elementWithFocus);\n if (!clickInsideGrid) {\n var popupService = _this.popupService;\n clickInsideGrid =\n popupService.getActivePopups().some(function (popup) { return popup.contains(elementWithFocus); }) ||\n popupService.isElementWithinCustomPopup(elementWithFocus);\n }\n if (!clickInsideGrid) {\n _this.rowRenderer.stopEditing();\n }\n };\n var viewports = [this.eBodyViewport, this.eBottom, this.eTop];\n viewports.forEach(function (viewport) { return _this.addManagedListener(viewport, 'focusout', focusOutListener); });\n };\n GridBodyCtrl.prototype.updateRowCount = function () {\n var headerCount = this.headerNavigationService.getHeaderRowCount();\n var modelType = this.paginationProxy.getType();\n var rowCount = -1;\n if (modelType === Constants.ROW_MODEL_TYPE_CLIENT_SIDE) {\n rowCount = 0;\n this.paginationProxy.forEachNode(function (node) {\n if (!node.group) {\n rowCount++;\n }\n });\n }\n var total = rowCount === -1 ? -1 : (headerCount + rowCount);\n this.comp.setRowCount(total);\n };\n GridBodyCtrl.prototype.registerBodyViewportResizeListener = function (listener) {\n this.comp.registerBodyViewportResizeListener(listener);\n };\n GridBodyCtrl.prototype.setVerticalScrollPaddingVisible = function (visible) {\n var overflowY = visible ? 'scroll' : 'hidden';\n this.comp.setPinnedTopBottomOverflowY(overflowY);\n };\n GridBodyCtrl.prototype.isVerticalScrollShowing = function () {\n var show = this.gridOptionsWrapper.isAlwaysShowVerticalScroll();\n var cssClass = show ? CSS_CLASS_FORCE_VERTICAL_SCROLL : null;\n this.comp.setAlwaysVerticalScrollClass(cssClass, show);\n return show || isVerticalScrollShowing(this.eBodyViewport);\n };\n GridBodyCtrl.prototype.setupRowAnimationCssClass = function () {\n var _this = this;\n var listener = function () {\n // we don't want to use row animation if scaling, as rows jump strangely as you scroll,\n // when scaling and doing row animation.\n var animateRows = _this.gridOptionsWrapper.isAnimateRows() && !_this.rowContainerHeightService.isStretching();\n var animateRowsCssClass = animateRows ? RowAnimationCssClasses.ANIMATION_ON : RowAnimationCssClasses.ANIMATION_OFF;\n _this.comp.setRowAnimationCssOnBodyViewport(animateRowsCssClass, animateRows);\n };\n listener();\n this.addManagedListener(this.eventService, Events.EVENT_HEIGHT_SCALE_CHANGED, listener);\n };\n GridBodyCtrl.prototype.getGridBodyElement = function () {\n return this.eGridBody;\n };\n GridBodyCtrl.prototype.addBodyViewportListener = function () {\n var _this = this;\n // we want to listen for clicks directly on the eBodyViewport, so the user has a way of showing\n // the context menu if no rows or columns are displayed, or user simply clicks outside of a cell\n var listener = function (mouseEvent) {\n if (_this.gridOptionsWrapper.isPreventDefaultOnContextMenu()) {\n mouseEvent.preventDefault();\n }\n var target = mouseEvent.target;\n if (target === _this.eBodyViewport || target === _this.ctrlsService.getCenterRowContainerCtrl().getViewportElement()) {\n // show it\n if (_this.contextMenuFactory) {\n _this.contextMenuFactory.onContextMenu(mouseEvent, null, null, null, null, _this.eGridBody);\n }\n }\n };\n this.addManagedListener(this.eBodyViewport, 'contextmenu', listener);\n this.addManagedListener(this.eBodyViewport, 'wheel', this.onWheel.bind(this));\n };\n GridBodyCtrl.prototype.onWheel = function (e) {\n if (!this.gridOptionsWrapper.isSuppressScrollWhenPopupsAreOpen()) {\n return;\n }\n if (this.popupService.hasAnchoredPopup()) {\n e.preventDefault();\n }\n };\n GridBodyCtrl.prototype.getGui = function () {\n return this.eGridBody;\n };\n // called by rowDragFeature\n GridBodyCtrl.prototype.scrollVertically = function (pixels) {\n var oldScrollPosition = this.eBodyViewport.scrollTop;\n this.bodyScrollFeature.setVerticalScrollPosition(oldScrollPosition + pixels);\n return this.eBodyViewport.scrollTop - oldScrollPosition;\n };\n GridBodyCtrl.prototype.addRowDragListener = function () {\n this.rowDragFeature = this.createManagedBean(new RowDragFeature(this.eBodyViewport));\n this.dragAndDropService.addDropTarget(this.rowDragFeature);\n };\n GridBodyCtrl.prototype.getRowDragFeature = function () {\n return this.rowDragFeature;\n };\n GridBodyCtrl.prototype.setFloatingHeights = function () {\n var pinnedRowModel = this.pinnedRowModel;\n var floatingTopHeight = pinnedRowModel.getPinnedTopTotalHeight();\n if (floatingTopHeight) {\n // adding 1px for cell bottom border\n floatingTopHeight += 1;\n }\n var floatingBottomHeight = pinnedRowModel.getPinnedBottomTotalHeight();\n if (floatingBottomHeight) {\n // adding 1px for cell bottom border\n floatingBottomHeight += 1;\n }\n this.comp.setTopHeight(floatingTopHeight);\n this.comp.setBottomHeight(floatingBottomHeight);\n this.comp.setTopDisplay(floatingTopHeight ? 'inherit' : 'none');\n this.comp.setBottomDisplay(floatingBottomHeight ? 'inherit' : 'none');\n };\n // method will call itself if no available width. this covers if the grid\n // isn't visible, but is just about to be visible.\n GridBodyCtrl.prototype.sizeColumnsToFit = function (nextTimeout) {\n var _this = this;\n var removeScrollWidth = this.isVerticalScrollShowing();\n var scrollWidthToRemove = removeScrollWidth ? this.gridOptionsWrapper.getScrollbarWidth() : 0;\n var bodyViewportWidth = getInnerWidth(this.eBodyViewport);\n var availableWidth = bodyViewportWidth - scrollWidthToRemove;\n if (availableWidth > 0) {\n this.columnModel.sizeColumnsToFit(availableWidth, \"sizeColumnsToFit\");\n return;\n }\n if (nextTimeout === undefined) {\n window.setTimeout(function () {\n _this.sizeColumnsToFit(100);\n }, 0);\n }\n else if (nextTimeout === 100) {\n window.setTimeout(function () {\n _this.sizeColumnsToFit(500);\n }, 100);\n }\n else if (nextTimeout === 500) {\n window.setTimeout(function () {\n _this.sizeColumnsToFit(-1);\n }, 500);\n }\n else {\n console.warn('AG Grid: tried to call sizeColumnsToFit() but the grid is coming back with ' +\n 'zero width, maybe the grid is not visible yet on the screen?');\n }\n };\n // + rangeService\n GridBodyCtrl.prototype.addScrollEventListener = function (listener) {\n this.eBodyViewport.addEventListener('scroll', listener);\n };\n // + focusService\n GridBodyCtrl.prototype.removeScrollEventListener = function (listener) {\n this.eBodyViewport.removeEventListener('scroll', listener);\n };\n GridBodyCtrl.prototype.requestAngularApply = function () {\n var _this = this;\n if (this.angularApplyTriggered) {\n return;\n }\n this.angularApplyTriggered = true;\n window.setTimeout(function () {\n _this.angularApplyTriggered = false;\n _this.$scope.$apply();\n }, 0);\n };\n GridBodyCtrl.prototype.addAngularApplyCheck = function () {\n var _this = this;\n // these are the events we need to do an apply after - these are the ones that can end up\n // with columns added or removed\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, function () { return _this.requestAngularApply(); });\n this.addManagedListener(this.eventService, Events.EVENT_VIRTUAL_COLUMNS_CHANGED, function () { return _this.requestAngularApply(); });\n };\n __decorate([\n Autowired('rowContainerHeightService')\n ], GridBodyCtrl.prototype, \"rowContainerHeightService\", void 0);\n __decorate([\n Autowired('ctrlsService')\n ], GridBodyCtrl.prototype, \"ctrlsService\", void 0);\n __decorate([\n Autowired('columnModel')\n ], GridBodyCtrl.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('scrollVisibleService')\n ], GridBodyCtrl.prototype, \"scrollVisibleService\", void 0);\n __decorate([\n Optional('contextMenuFactory')\n ], GridBodyCtrl.prototype, \"contextMenuFactory\", void 0);\n __decorate([\n Autowired('headerNavigationService')\n ], GridBodyCtrl.prototype, \"headerNavigationService\", void 0);\n __decorate([\n Autowired('paginationProxy')\n ], GridBodyCtrl.prototype, \"paginationProxy\", void 0);\n __decorate([\n Autowired('dragAndDropService')\n ], GridBodyCtrl.prototype, \"dragAndDropService\", void 0);\n __decorate([\n Autowired('pinnedRowModel')\n ], GridBodyCtrl.prototype, \"pinnedRowModel\", void 0);\n __decorate([\n Autowired('rowRenderer')\n ], GridBodyCtrl.prototype, \"rowRenderer\", void 0);\n __decorate([\n Autowired('popupService')\n ], GridBodyCtrl.prototype, \"popupService\", void 0);\n __decorate([\n Autowired('mouseEventService')\n ], GridBodyCtrl.prototype, \"mouseEventService\", void 0);\n __decorate([\n Autowired('$scope')\n ], GridBodyCtrl.prototype, \"$scope\", void 0);\n return GridBodyCtrl;\n}(BeanStub));\nexport { GridBodyCtrl };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Optional, PostConstruct } from '../context/context';\nimport { LayoutCssClasses } from \"../styling/layoutFeature\";\nimport { setAriaColCount, setAriaMultiSelectable, setAriaRowCount } from '../utils/aria';\nimport { Component } from '../widgets/component';\nimport { RefSelector } from '../widgets/componentAnnotations';\nimport { CSS_CLASS_CELL_SELECTABLE, CSS_CLASS_COLUMN_MOVING, CSS_CLASS_FORCE_VERTICAL_SCROLL, GridBodyCtrl, RowAnimationCssClasses } from \"./gridBodyCtrl\";\nimport { RowContainerName } from \"./rowContainer/rowContainerCtrl\";\nvar GRID_BODY_TEMPLATE = /* html */ \"
    \\n \\n
    \\n \\n \\n \\n \\n
    \\n
    \\n \\n \\n \\n \\n
    \\n
    \\n \\n \\n \\n \\n
    \\n \\n \\n
    \";\nvar GridBodyComp = /** @class */ (function (_super) {\n __extends(GridBodyComp, _super);\n function GridBodyComp() {\n return _super.call(this, GRID_BODY_TEMPLATE) || this;\n }\n GridBodyComp.prototype.init = function () {\n var _this = this;\n var setHeight = function (height, element) {\n var heightString = height + \"px\";\n element.style.minHeight = heightString;\n element.style.height = heightString;\n };\n var compProxy = {\n setRowAnimationCssOnBodyViewport: function (cssClass, animate) { return _this.setRowAnimationCssOnBodyViewport(cssClass, animate); },\n setColumnCount: function (count) { return setAriaColCount(_this.getGui(), count); },\n setRowCount: function (count) { return setAriaRowCount(_this.getGui(), count); },\n setTopHeight: function (height) { return setHeight(height, _this.eTop); },\n setBottomHeight: function (height) { return setHeight(height, _this.eBottom); },\n setTopDisplay: function (display) { return _this.eTop.style.display = display; },\n setBottomDisplay: function (display) { return _this.eBottom.style.display = display; },\n setColumnMovingCss: function (cssClass, flag) { return _this.addOrRemoveCssClass(CSS_CLASS_COLUMN_MOVING, flag); },\n updateLayoutClasses: function (cssClass, params) {\n var bodyViewportClassList = _this.eBodyViewport.classList;\n bodyViewportClassList.toggle(LayoutCssClasses.AUTO_HEIGHT, params.autoHeight);\n bodyViewportClassList.toggle(LayoutCssClasses.NORMAL, params.normal);\n bodyViewportClassList.toggle(LayoutCssClasses.PRINT, params.print);\n _this.addOrRemoveCssClass(LayoutCssClasses.AUTO_HEIGHT, params.autoHeight);\n _this.addOrRemoveCssClass(LayoutCssClasses.NORMAL, params.normal);\n _this.addOrRemoveCssClass(LayoutCssClasses.PRINT, params.print);\n },\n setAlwaysVerticalScrollClass: function (cssClass, on) {\n return _this.eBodyViewport.classList.toggle(CSS_CLASS_FORCE_VERTICAL_SCROLL, on);\n },\n registerBodyViewportResizeListener: function (listener) {\n var unsubscribeFromResize = _this.resizeObserverService.observeResize(_this.eBodyViewport, listener);\n _this.addDestroyFunc(function () { return unsubscribeFromResize(); });\n },\n setPinnedTopBottomOverflowY: function (overflow) { return _this.eTop.style.overflowY = _this.eBottom.style.overflowY = overflow; },\n setCellSelectableCss: function (cssClass, selectable) {\n [_this.eTop, _this.eBodyViewport, _this.eBottom]\n .forEach(function (ct) { return ct.classList.toggle(CSS_CLASS_CELL_SELECTABLE, selectable); });\n },\n };\n this.ctrl = this.createManagedBean(new GridBodyCtrl());\n this.ctrl.setComp(compProxy, this.getGui(), this.eBodyViewport, this.eTop, this.eBottom);\n if (this.rangeService || this.gridOptionsWrapper.isRowSelectionMulti()) {\n setAriaMultiSelectable(this.getGui(), true);\n }\n };\n GridBodyComp.prototype.setRowAnimationCssOnBodyViewport = function (cssClass, animateRows) {\n var bodyViewportClassList = this.eBodyViewport.classList;\n bodyViewportClassList.toggle(RowAnimationCssClasses.ANIMATION_ON, animateRows);\n bodyViewportClassList.toggle(RowAnimationCssClasses.ANIMATION_OFF, !animateRows);\n };\n GridBodyComp.prototype.getFloatingTopBottom = function () {\n return [this.eTop, this.eBottom];\n };\n __decorate([\n Autowired('resizeObserverService')\n ], GridBodyComp.prototype, \"resizeObserverService\", void 0);\n __decorate([\n Optional('rangeService')\n ], GridBodyComp.prototype, \"rangeService\", void 0);\n __decorate([\n RefSelector('eBodyViewport')\n ], GridBodyComp.prototype, \"eBodyViewport\", void 0);\n __decorate([\n RefSelector('eTop')\n ], GridBodyComp.prototype, \"eTop\", void 0);\n __decorate([\n RefSelector('eBottom')\n ], GridBodyComp.prototype, \"eBottom\", void 0);\n __decorate([\n RefSelector('gridHeader')\n ], GridBodyComp.prototype, \"headerRootComp\", void 0);\n __decorate([\n PostConstruct\n ], GridBodyComp.prototype, \"init\", null);\n return GridBodyComp;\n}(Component));\nexport { GridBodyComp };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { Bean } from \"../context/context\";\nimport { Qualifier } from \"../context/context\";\nimport { BeanStub } from \"../context/beanStub\";\nvar ExpressionService = /** @class */ (function (_super) {\n __extends(ExpressionService, _super);\n function ExpressionService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.expressionToFunctionCache = {};\n return _this;\n }\n ExpressionService.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('ExpressionService');\n };\n ExpressionService.prototype.evaluate = function (expressionOrFunc, params) {\n if (typeof expressionOrFunc === 'function') {\n // valueGetter is a function, so just call it\n var func = expressionOrFunc;\n return func(params);\n }\n else if (typeof expressionOrFunc === 'string') {\n // valueGetter is an expression, so execute the expression\n var expression = expressionOrFunc;\n return this.evaluateExpression(expression, params);\n }\n else {\n console.error('AG Grid: value should be either a string or a function', expressionOrFunc);\n }\n };\n ExpressionService.prototype.evaluateExpression = function (expression, params) {\n try {\n var javaScriptFunction = this.createExpressionFunction(expression);\n // the params don't have all these values, rather we add every possible\n // value a params can have, which makes whatever is in the params available.\n var result = javaScriptFunction(params.value, params.context, params.oldValue, params.newValue, params.value, params.node, params.data, params.colDef, params.rowIndex, params.api, params.columnApi, params.getValue, params.column, params.columnGroup);\n return result;\n }\n catch (e) {\n // the expression failed, which can happen, as it's the client that\n // provides the expression. so print a nice message\n // tslint:disable-next-line\n console.log('Processing of the expression failed');\n // tslint:disable-next-line\n console.log('Expression = ' + expression);\n // tslint:disable-next-line\n console.log('Params =', params);\n // tslint:disable-next-line\n console.log('Exception = ' + e);\n return null;\n }\n };\n ExpressionService.prototype.createExpressionFunction = function (expression) {\n // check cache first\n if (this.expressionToFunctionCache[expression]) {\n return this.expressionToFunctionCache[expression];\n }\n // if not found in cache, return the function\n var functionBody = this.createFunctionBody(expression);\n var theFunction = new Function('x, ctx, oldValue, newValue, value, node, data, colDef, rowIndex, api, columnApi, getValue, column, columnGroup', functionBody);\n // store in cache\n this.expressionToFunctionCache[expression] = theFunction;\n return theFunction;\n };\n ExpressionService.prototype.createFunctionBody = function (expression) {\n // if the expression has the 'return' word in it, then use as is,\n // if not, then wrap it with return and ';' to make a function\n if (expression.indexOf('return') >= 0) {\n return expression;\n }\n else {\n return 'return ' + expression + ';';\n }\n };\n __decorate([\n __param(0, Qualifier('loggerFactory'))\n ], ExpressionService.prototype, \"setBeans\", null);\n ExpressionService = __decorate([\n Bean('expressionService')\n ], ExpressionService);\n return ExpressionService;\n}(BeanStub));\nexport { ExpressionService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired } from \"./context/context\";\nimport { Bean } from \"./context/context\";\nimport { BeanStub } from \"./context/beanStub\";\nvar TemplateService = /** @class */ (function (_super) {\n __extends(TemplateService, _super);\n function TemplateService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.templateCache = {};\n _this.waitingCallbacks = {};\n return _this;\n }\n // returns the template if it is loaded, or null if it is not loaded\n // but will call the callback when it is loaded\n TemplateService.prototype.getTemplate = function (url, callback) {\n var templateFromCache = this.templateCache[url];\n if (templateFromCache) {\n return templateFromCache;\n }\n var callbackList = this.waitingCallbacks[url];\n var that = this;\n if (!callbackList) {\n // first time this was called, so need a new list for callbacks\n callbackList = [];\n this.waitingCallbacks[url] = callbackList;\n // and also need to do the http request\n var client = new XMLHttpRequest();\n client.onload = function () {\n that.handleHttpResult(this, url);\n };\n client.open(\"GET\", url);\n client.send();\n }\n // add this callback\n if (callback) {\n callbackList.push(callback);\n }\n // caller needs to wait for template to load, so return null\n return null;\n };\n TemplateService.prototype.handleHttpResult = function (httpResult, url) {\n if (httpResult.status !== 200 || httpResult.response === null) {\n console.warn(\"AG Grid: Unable to get template error \" + httpResult.status + \" - \" + url);\n return;\n }\n // response success, so process it\n // in IE9 the response is in - responseText\n this.templateCache[url] = httpResult.response || httpResult.responseText;\n // inform all listeners that this is now in the cache\n var callbacks = this.waitingCallbacks[url];\n for (var i = 0; i < callbacks.length; i++) {\n var callback = callbacks[i];\n // we could pass the callback the response, however we know the client of this code\n // is the cell renderer, and it passes the 'cellRefresh' method in as the callback\n // which doesn't take any parameters.\n callback();\n }\n if (this.$scope) {\n var that_1 = this;\n window.setTimeout(function () {\n that_1.$scope.$apply();\n }, 0);\n }\n };\n __decorate([\n Autowired('$scope')\n ], TemplateService.prototype, \"$scope\", void 0);\n TemplateService = __decorate([\n Bean('templateService')\n ], TemplateService);\n return TemplateService;\n}(BeanStub));\nexport { TemplateService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nimport { Autowired, Bean, Optional, PostConstruct } from \"./context/context\";\nimport { BeanStub } from \"./context/beanStub\";\nimport { Events } from \"./events\";\nimport { ManagedFocusFeature } from \"./widgets/managedFocusFeature\";\nimport { getTabIndex } from './utils/browser';\nimport { makeNull } from './utils/generic';\nimport { Constants } from \"./constants/constants\";\nimport { RowCtrl } from \"./rendering/row/rowCtrl\";\nimport { AbstractHeaderCellCtrl } from \"./headerRendering/cells/abstractCell/abstractHeaderCellCtrl\";\nimport { last } from \"./utils/array\";\nvar FocusService = /** @class */ (function (_super) {\n __extends(FocusService, _super);\n function FocusService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FocusService_1 = FocusService;\n /**\n * Adds a gridCore to the list of the gridCores monitoring Keyboard Mode\n * in a specific HTMLDocument.\n *\n * @param doc {Document} - The Document containing the gridCore.\n * @param gridCore {GridComp} - The GridCore to be monitored.\n */\n FocusService.addKeyboardModeEvents = function (doc, controller) {\n var docControllers = FocusService_1.instancesMonitored.get(doc);\n if (docControllers && docControllers.length > 0) {\n if (docControllers.indexOf(controller) === -1) {\n docControllers.push(controller);\n }\n }\n else {\n FocusService_1.instancesMonitored.set(doc, [controller]);\n doc.addEventListener('keydown', FocusService_1.toggleKeyboardMode);\n doc.addEventListener('mousedown', FocusService_1.toggleKeyboardMode);\n }\n };\n /**\n * Removes a gridCore from the list of the gridCores monitoring Keyboard Mode\n * in a specific HTMLDocument.\n *\n * @param doc {Document} - The Document containing the gridCore.\n * @param gridCore {GridComp} - The GridCore to be removed.\n */\n FocusService.removeKeyboardModeEvents = function (doc, controller) {\n var docControllers = FocusService_1.instancesMonitored.get(doc);\n var newControllers = [];\n if (docControllers && docControllers.length) {\n newControllers = __spread(docControllers).filter(function (currentGridCore) { return currentGridCore !== controller; });\n FocusService_1.instancesMonitored.set(doc, newControllers);\n }\n if (newControllers.length === 0) {\n doc.removeEventListener('keydown', FocusService_1.toggleKeyboardMode);\n doc.removeEventListener('mousedown', FocusService_1.toggleKeyboardMode);\n }\n };\n /**\n * This method will be called by `keydown` and `mousedown` events on all Documents monitoring\n * KeyboardMode. It will then fire a KEYBOARD_FOCUS, MOUSE_FOCUS on each gridCore present in\n * the Document allowing each gridCore to maintain a state for KeyboardMode.\n *\n * @param event {KeyboardEvent | MouseEvent | TouchEvent} - The event triggered.\n */\n FocusService.toggleKeyboardMode = function (event) {\n var isKeyboardActive = FocusService_1.keyboardModeActive;\n var isKeyboardEvent = event.type === 'keydown';\n if (isKeyboardEvent) {\n // the following keys should not toggle keyboard mode.\n if (event.ctrlKey || event.metaKey || event.altKey) {\n return;\n }\n }\n if (isKeyboardActive && isKeyboardEvent || !isKeyboardActive && !isKeyboardEvent) {\n return;\n }\n FocusService_1.keyboardModeActive = isKeyboardEvent;\n var doc = event.target.ownerDocument;\n if (!doc) {\n return;\n }\n var controllersForDoc = FocusService_1.instancesMonitored.get(doc);\n if (controllersForDoc) {\n controllersForDoc.forEach(function (controller) {\n controller.dispatchEvent({ type: isKeyboardEvent ? Events.EVENT_KEYBOARD_FOCUS : Events.EVENT_MOUSE_FOCUS });\n });\n }\n };\n FocusService.prototype.init = function () {\n var _this = this;\n var clearFocusedCellListener = this.clearFocusedCell.bind(this);\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, clearFocusedCellListener);\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.onColumnEverythingChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_GROUP_OPENED, clearFocusedCellListener);\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, clearFocusedCellListener);\n this.ctrlsService.whenReady(function (p) {\n _this.gridCtrl = p.gridCtrl;\n var doc = _this.gridOptionsWrapper.getDocument();\n FocusService_1.addKeyboardModeEvents(doc, _this.gridCtrl);\n _this.addDestroyFunc(function () { return _this.unregisterGridCompController(_this.gridCtrl); });\n });\n };\n FocusService.prototype.unregisterGridCompController = function (gridCompController) {\n var doc = this.gridOptionsWrapper.getDocument();\n FocusService_1.removeKeyboardModeEvents(doc, gridCompController);\n };\n FocusService.prototype.onColumnEverythingChanged = function () {\n // if the columns change, check and see if this column still exists. if it does, then\n // we can keep the focused cell. if it doesn't, then we need to drop the focused cell.\n if (!this.focusedCellPosition) {\n return;\n }\n var col = this.focusedCellPosition.column;\n var colFromColumnModel = this.columnModel.getGridColumn(col.getId());\n if (col !== colFromColumnModel) {\n this.clearFocusedCell();\n }\n };\n FocusService.prototype.isKeyboardMode = function () {\n return FocusService_1.keyboardModeActive;\n };\n // we check if the browser is focusing something, and if it is, and\n // it's the cell we think is focused, then return the cell. so this\n // methods returns the cell if a) we think it has focus and b) the\n // browser thinks it has focus. this then returns nothing if we\n // first focus a cell, then second click outside the grid, as then the\n // grid cell will still be focused as far as the grid is concerned,\n // however the browser focus will have moved somewhere else.\n FocusService.prototype.getFocusCellToUseAfterRefresh = function () {\n var eDocument = this.gridOptionsWrapper.getDocument();\n if (this.gridOptionsWrapper.isSuppressFocusAfterRefresh() || !this.focusedCellPosition) {\n return null;\n }\n // we check that the browser is actually focusing on the grid, if it is not, then\n // we have nothing to worry about. we check for ROW data, as this covers both focused Rows (for Full Width Rows)\n // and Cells (covers cells as cells live in rows)\n if (this.isDomDataMissingInHierarchy(eDocument.activeElement, RowCtrl.DOM_DATA_KEY_ROW_CTRL)) {\n return null;\n }\n return this.focusedCellPosition;\n };\n FocusService.prototype.getFocusHeaderToUseAfterRefresh = function () {\n var eDocument = this.gridOptionsWrapper.getDocument();\n if (this.gridOptionsWrapper.isSuppressFocusAfterRefresh() || !this.focusedHeaderPosition) {\n return null;\n }\n // we check that the browser is actually focusing on the grid, if it is not, then\n // we have nothing to worry about\n if (this.isDomDataMissingInHierarchy(eDocument.activeElement, AbstractHeaderCellCtrl.DOM_DATA_KEY_HEADER_CTRL)) {\n return null;\n }\n return this.focusedHeaderPosition;\n };\n FocusService.prototype.isDomDataMissingInHierarchy = function (eBrowserCell, key) {\n var ePointer = eBrowserCell;\n while (ePointer) {\n var data = this.gridOptionsWrapper.getDomData(ePointer, key);\n if (data) {\n return false;\n }\n ePointer = ePointer.parentNode;\n }\n return true;\n };\n FocusService.prototype.clearFocusedCell = function () {\n this.focusedCellPosition = null;\n this.onCellFocused(false);\n };\n FocusService.prototype.getFocusedCell = function () {\n return this.focusedCellPosition;\n };\n FocusService.prototype.setFocusedCell = function (rowIndex, colKey, floating, forceBrowserFocus) {\n if (forceBrowserFocus === void 0) { forceBrowserFocus = false; }\n var gridColumn = this.columnModel.getGridColumn(colKey);\n // if column doesn't exist, then blank the focused cell and return. this can happen when user sets new columns,\n // and the focused cell is in a column that no longer exists. after columns change, the grid refreshes and tries\n // to re-focus the focused cell.\n if (!gridColumn) {\n this.focusedCellPosition = null;\n return;\n }\n this.focusedCellPosition = gridColumn ? { rowIndex: rowIndex, rowPinned: makeNull(floating), column: gridColumn } : null;\n this.onCellFocused(forceBrowserFocus);\n };\n FocusService.prototype.isCellFocused = function (cellPosition) {\n if (this.focusedCellPosition == null) {\n return false;\n }\n return this.focusedCellPosition.column === cellPosition.column &&\n this.isRowFocused(cellPosition.rowIndex, cellPosition.rowPinned);\n };\n FocusService.prototype.isRowNodeFocused = function (rowNode) {\n return this.isRowFocused(rowNode.rowIndex, rowNode.rowPinned);\n };\n FocusService.prototype.isHeaderWrapperFocused = function (headerCtrl) {\n if (this.focusedHeaderPosition == null) {\n return false;\n }\n var column = headerCtrl.getColumnGroupChild();\n var headerRowIndex = headerCtrl.getRowIndex();\n var pinned = headerCtrl.getPinned();\n var _a = this.focusedHeaderPosition, focusedColumn = _a.column, focusedHeaderRowIndex = _a.headerRowIndex;\n return column === focusedColumn &&\n headerRowIndex === focusedHeaderRowIndex &&\n pinned == focusedColumn.getPinned();\n };\n FocusService.prototype.clearFocusedHeader = function () {\n this.focusedHeaderPosition = null;\n };\n FocusService.prototype.getFocusedHeader = function () {\n return this.focusedHeaderPosition;\n };\n FocusService.prototype.setFocusedHeader = function (headerRowIndex, column) {\n this.focusedHeaderPosition = { headerRowIndex: headerRowIndex, column: column };\n };\n FocusService.prototype.focusHeaderPosition = function (params) {\n var direction = params.direction, fromTab = params.fromTab, allowUserOverride = params.allowUserOverride, event = params.event;\n var headerPosition = params.headerPosition;\n if (allowUserOverride) {\n var gridOptionsWrapper = this.gridOptionsWrapper;\n var currentPosition = this.getFocusedHeader();\n var headerRowCount = this.headerNavigationService.getHeaderRowCount();\n if (fromTab) {\n var userFunc = gridOptionsWrapper.getTabToNextHeaderFunc();\n if (userFunc) {\n var params_1 = {\n backwards: direction === 'Before',\n previousHeaderPosition: currentPosition,\n nextHeaderPosition: headerPosition,\n headerRowCount: headerRowCount,\n api: gridOptionsWrapper.getApi(),\n columnApi: gridOptionsWrapper.getColumnApi()\n };\n headerPosition = userFunc(params_1);\n }\n }\n else {\n var userFunc = gridOptionsWrapper.getNavigateToNextHeaderFunc();\n if (userFunc && event) {\n var params_2 = {\n key: event.key,\n previousHeaderPosition: currentPosition,\n nextHeaderPosition: headerPosition,\n headerRowCount: headerRowCount,\n event: event,\n api: gridOptionsWrapper.getApi(),\n columnApi: gridOptionsWrapper.getColumnApi()\n };\n headerPosition = userFunc(params_2);\n }\n }\n }\n if (!headerPosition) {\n return false;\n }\n if (headerPosition.headerRowIndex === -1) {\n return this.focusGridView(headerPosition.column);\n }\n this.headerNavigationService.scrollToColumn(headerPosition.column, direction);\n var headerRowContainerCtrl = this.ctrlsService.getHeaderRowContainerCtrl(headerPosition.column.getPinned());\n // this will automatically call the setFocusedHeader method above\n var focusSuccess = headerRowContainerCtrl.focusHeader(headerPosition.headerRowIndex, headerPosition.column, event);\n return focusSuccess;\n };\n FocusService.prototype.focusFirstHeader = function () {\n var firstColumn = this.columnModel.getAllDisplayedColumns()[0];\n if (!firstColumn) {\n return false;\n }\n if (firstColumn.getParent()) {\n firstColumn = this.columnModel.getColumnGroupAtLevel(firstColumn, 0);\n }\n return this.focusHeaderPosition({\n headerPosition: { headerRowIndex: 0, column: firstColumn }\n });\n };\n FocusService.prototype.focusLastHeader = function (event) {\n var headerRowIndex = this.headerNavigationService.getHeaderRowCount() - 1;\n var column = last(this.columnModel.getAllDisplayedColumns());\n return this.focusHeaderPosition({\n headerPosition: { headerRowIndex: headerRowIndex, column: column },\n event: event\n });\n };\n FocusService.prototype.isAnyCellFocused = function () {\n return !!this.focusedCellPosition;\n };\n FocusService.prototype.isRowFocused = function (rowIndex, floating) {\n if (this.focusedCellPosition == null) {\n return false;\n }\n return this.focusedCellPosition.rowIndex === rowIndex && this.focusedCellPosition.rowPinned === makeNull(floating);\n };\n FocusService.prototype.findFocusableElements = function (rootNode, exclude, onlyUnmanaged) {\n if (onlyUnmanaged === void 0) { onlyUnmanaged = false; }\n var focusableString = Constants.FOCUSABLE_SELECTOR;\n var excludeString = Constants.FOCUSABLE_EXCLUDE;\n if (exclude) {\n excludeString += ', ' + exclude;\n }\n if (onlyUnmanaged) {\n excludeString += ', [tabindex=\"-1\"]';\n }\n var nodes = Array.prototype.slice.apply(rootNode.querySelectorAll(focusableString));\n var excludeNodes = Array.prototype.slice.apply(rootNode.querySelectorAll(excludeString));\n if (!excludeNodes.length) {\n return nodes;\n }\n var diff = function (a, b) { return a.filter(function (element) { return b.indexOf(element) === -1; }); };\n return diff(nodes, excludeNodes);\n };\n FocusService.prototype.focusInto = function (rootNode, up, onlyUnmanaged) {\n if (up === void 0) { up = false; }\n if (onlyUnmanaged === void 0) { onlyUnmanaged = false; }\n var focusableElements = this.findFocusableElements(rootNode, null, onlyUnmanaged);\n var toFocus = up ? last(focusableElements) : focusableElements[0];\n if (toFocus) {\n toFocus.focus();\n return true;\n }\n return false;\n };\n FocusService.prototype.findNextFocusableElement = function (rootNode, onlyManaged, backwards) {\n if (rootNode === void 0) { rootNode = this.eGridDiv; }\n var focusable = this.findFocusableElements(rootNode, onlyManaged ? ':not([tabindex=\"-1\"])' : null);\n var eDocument = this.gridOptionsWrapper.getDocument();\n var activeEl = eDocument.activeElement;\n var currentIndex;\n if (onlyManaged) {\n currentIndex = focusable.findIndex(function (el) { return el.contains(activeEl); });\n }\n else {\n currentIndex = focusable.indexOf(activeEl);\n }\n var nextIndex = currentIndex + (backwards ? -1 : 1);\n if (nextIndex < 0 || nextIndex >= focusable.length) {\n return null;\n }\n return focusable[nextIndex];\n };\n FocusService.prototype.isFocusUnderManagedComponent = function (rootNode) {\n var eDocument = this.gridOptionsWrapper.getDocument();\n var managedContainers = rootNode.querySelectorAll(\".\" + ManagedFocusFeature.FOCUS_MANAGED_CLASS);\n if (!managedContainers.length) {\n return false;\n }\n for (var i = 0; i < managedContainers.length; i++) {\n if (managedContainers[i].contains(eDocument.activeElement)) {\n return true;\n }\n }\n return false;\n };\n FocusService.prototype.findTabbableParent = function (node, limit) {\n if (limit === void 0) { limit = 5; }\n var counter = 0;\n while (node && getTabIndex(node) === null && ++counter <= limit) {\n node = node.parentElement;\n }\n if (getTabIndex(node) === null) {\n return null;\n }\n return node;\n };\n FocusService.prototype.onCellFocused = function (forceBrowserFocus) {\n var event = {\n type: Events.EVENT_CELL_FOCUSED,\n forceBrowserFocus: forceBrowserFocus,\n rowIndex: null,\n column: null,\n floating: null,\n api: this.gridApi,\n columnApi: this.columnApi,\n rowPinned: null,\n isFullWidthCell: false\n };\n if (this.focusedCellPosition) {\n var rowIndex = event.rowIndex = this.focusedCellPosition.rowIndex;\n var rowPinned = event.rowPinned = this.focusedCellPosition.rowPinned;\n event.column = this.focusedCellPosition.column;\n var rowCtrl = this.rowRenderer.getRowByPosition({ rowIndex: rowIndex, rowPinned: rowPinned });\n if (rowCtrl) {\n event.isFullWidthCell = rowCtrl.isFullWidth();\n }\n }\n this.eventService.dispatchEvent(event);\n };\n FocusService.prototype.focusGridView = function (column, backwards) {\n // if suppressCellFocus is `true`, it means the user does not want to\n // navigate between the cells using tab. Instead, we put focus on either\n // the header or after the grid, depending on whether tab or shift-tab was pressed.\n if (this.gridOptionsWrapper.isSuppressCellFocus()) {\n if (backwards) {\n return this.focusLastHeader();\n }\n return this.focusNextGridCoreContainer(false);\n }\n var nextRow = backwards\n ? this.rowPositionUtils.getLastRow()\n : this.rowPositionUtils.getFirstRow();\n if (!nextRow) {\n return false;\n }\n var rowIndex = nextRow.rowIndex, rowPinned = nextRow.rowPinned;\n var focusedHeader = this.getFocusedHeader();\n if (!column && focusedHeader) {\n column = focusedHeader.column;\n }\n if (rowIndex == null || !column) {\n return false;\n }\n this.navigationService.ensureCellVisible({ rowIndex: rowIndex, column: column, rowPinned: rowPinned });\n this.setFocusedCell(rowIndex, column, makeNull(rowPinned), true);\n if (this.rangeService) {\n var cellPosition = { rowIndex: rowIndex, rowPinned: rowPinned, column: column };\n this.rangeService.setRangeToCell(cellPosition);\n }\n return true;\n };\n FocusService.prototype.focusNextGridCoreContainer = function (backwards) {\n if (this.gridCtrl.focusNextInnerContainer(backwards)) {\n return true;\n }\n if (!backwards) {\n this.gridCtrl.forceFocusOutOfContainer();\n }\n return false;\n };\n var FocusService_1;\n FocusService.AG_KEYBOARD_FOCUS = 'ag-keyboard-focus';\n FocusService.keyboardModeActive = false;\n FocusService.instancesMonitored = new Map();\n __decorate([\n Autowired('eGridDiv')\n ], FocusService.prototype, \"eGridDiv\", void 0);\n __decorate([\n Autowired('columnModel')\n ], FocusService.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('headerNavigationService')\n ], FocusService.prototype, \"headerNavigationService\", void 0);\n __decorate([\n Autowired('columnApi')\n ], FocusService.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], FocusService.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('rowRenderer')\n ], FocusService.prototype, \"rowRenderer\", void 0);\n __decorate([\n Autowired('rowPositionUtils')\n ], FocusService.prototype, \"rowPositionUtils\", void 0);\n __decorate([\n Optional('rangeService')\n ], FocusService.prototype, \"rangeService\", void 0);\n __decorate([\n Autowired('navigationService')\n ], FocusService.prototype, \"navigationService\", void 0);\n __decorate([\n Autowired('ctrlsService')\n ], FocusService.prototype, \"ctrlsService\", void 0);\n __decorate([\n PostConstruct\n ], FocusService.prototype, \"init\", null);\n FocusService = FocusService_1 = __decorate([\n Bean('focusService')\n ], FocusService);\n return FocusService;\n}(BeanStub));\nexport { FocusService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Bean, PostConstruct } from \"../context/context\";\nimport { Events } from '../events';\nimport { BeanStub } from \"../context/beanStub\";\nimport { getAbsoluteHeight, getAbsoluteWidth } from '../utils/dom';\nimport { last } from '../utils/array';\nimport { isElementInEventPath } from '../utils/event';\nimport { KeyCode } from '../constants/keyCode';\nimport { FocusService } from \"../focusService\";\nimport { AgPromise } from \"../utils\";\nimport { setAriaLabel, setAriaRole } from \"../utils/aria\";\nvar DIRECTION;\n(function (DIRECTION) {\n DIRECTION[DIRECTION[\"vertical\"] = 0] = \"vertical\";\n DIRECTION[DIRECTION[\"horizontal\"] = 1] = \"horizontal\";\n})(DIRECTION || (DIRECTION = {}));\nvar instanceIdSeq = 0;\nvar PopupService = /** @class */ (function (_super) {\n __extends(PopupService, _super);\n function PopupService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.popupList = [];\n return _this;\n }\n PopupService.prototype.postConstruct = function () {\n var _this = this;\n this.ctrlsService.whenReady(function (p) {\n _this.gridCtrl = p.gridCtrl;\n _this.addManagedListener(_this.gridCtrl, Events.EVENT_KEYBOARD_FOCUS, function () {\n _this.popupList.forEach(function (popup) { return popup.element.classList.add(FocusService.AG_KEYBOARD_FOCUS); });\n });\n _this.addManagedListener(_this.gridCtrl, Events.EVENT_MOUSE_FOCUS, function () {\n _this.popupList.forEach(function (popup) { return popup.element.classList.remove(FocusService.AG_KEYBOARD_FOCUS); });\n });\n });\n };\n PopupService.prototype.getPopupParent = function () {\n var ePopupParent = this.gridOptionsWrapper.getPopupParent();\n if (ePopupParent) {\n return ePopupParent;\n }\n return this.gridCtrl.getGui();\n };\n PopupService.prototype.positionPopupForMenu = function (params) {\n var sourceRect = params.eventSource.getBoundingClientRect();\n var parentRect = this.getParentRect();\n var y = this.keepXYWithinBounds(params.ePopup, sourceRect.top - parentRect.top, DIRECTION.vertical);\n var minWidth = (params.ePopup.clientWidth > 0) ? params.ePopup.clientWidth : 200;\n params.ePopup.style.minWidth = minWidth + \"px\";\n var widthOfParent = parentRect.right - parentRect.left;\n var maxX = widthOfParent - minWidth;\n // the x position of the popup depends on RTL or LTR. for normal cases, LTR, we put the child popup\n // to the right, unless it doesn't fit and we then put it to the left. for RTL it's the other way around,\n // we try place it first to the left, and then if not to the right.\n var x;\n if (this.gridOptionsWrapper.isEnableRtl()) {\n // for RTL, try left first\n x = xLeftPosition();\n if (x < 0) {\n x = xRightPosition();\n }\n if (x > maxX) {\n x = 0;\n }\n }\n else {\n // for LTR, try right first\n x = xRightPosition();\n if (x > maxX) {\n x = xLeftPosition();\n }\n if (x < 0) {\n x = 0;\n }\n }\n params.ePopup.style.left = x + \"px\";\n params.ePopup.style.top = y + \"px\";\n function xRightPosition() {\n return sourceRect.right - parentRect.left - 2;\n }\n function xLeftPosition() {\n return sourceRect.left - parentRect.left - minWidth;\n }\n };\n PopupService.prototype.positionPopupUnderMouseEvent = function (params) {\n var ePopup = params.ePopup, nudgeX = params.nudgeX, nudgeY = params.nudgeY;\n var _a = this.calculatePointerAlign(params.mouseEvent), x = _a.x, y = _a.y;\n this.positionPopup({\n ePopup: ePopup,\n x: x,\n y: y,\n nudgeX: nudgeX,\n nudgeY: nudgeY,\n keepWithinBounds: true\n });\n this.callPostProcessPopup(params.type, params.ePopup, null, params.mouseEvent, params.column, params.rowNode);\n };\n PopupService.prototype.calculatePointerAlign = function (e) {\n var parentRect = this.getParentRect();\n return {\n x: e.clientX - parentRect.left,\n y: e.clientY - parentRect.top\n };\n };\n PopupService.prototype.positionPopupUnderComponent = function (params) {\n var sourceRect = params.eventSource.getBoundingClientRect();\n var alignSide = params.alignSide || 'left';\n var parentRect = this.getParentRect();\n var x = sourceRect.left - parentRect.left;\n if (alignSide === 'right') {\n x -= (params.ePopup.offsetWidth - sourceRect.width);\n }\n this.positionPopup({\n ePopup: params.ePopup,\n nudgeX: params.nudgeX,\n nudgeY: params.nudgeY,\n x: x,\n y: sourceRect.top - parentRect.top + sourceRect.height,\n keepWithinBounds: params.keepWithinBounds\n });\n this.callPostProcessPopup(params.type, params.ePopup, params.eventSource, null, params.column, params.rowNode);\n };\n PopupService.prototype.positionPopupOverComponent = function (params) {\n var sourceRect = params.eventSource.getBoundingClientRect();\n var parentRect = this.getParentRect();\n this.positionPopup({\n ePopup: params.ePopup,\n nudgeX: params.nudgeX,\n nudgeY: params.nudgeY,\n x: sourceRect.left - parentRect.left,\n y: sourceRect.top - parentRect.top,\n keepWithinBounds: params.keepWithinBounds\n });\n this.callPostProcessPopup(params.type, params.ePopup, params.eventSource, null, params.column, params.rowNode);\n };\n PopupService.prototype.callPostProcessPopup = function (type, ePopup, eventSource, mouseEvent, column, rowNode) {\n var callback = this.gridOptionsWrapper.getPostProcessPopupFunc();\n if (callback) {\n var params = {\n column: column,\n rowNode: rowNode,\n ePopup: ePopup,\n type: type,\n eventSource: eventSource,\n mouseEvent: mouseEvent\n };\n callback(params);\n }\n };\n PopupService.prototype.positionPopup = function (params) {\n var ePopup = params.ePopup, keepWithinBounds = params.keepWithinBounds, nudgeX = params.nudgeX, nudgeY = params.nudgeY;\n var x = params.x, y = params.y;\n if (nudgeX) {\n x += nudgeX;\n }\n if (nudgeY) {\n y += nudgeY;\n }\n // if popup is overflowing to the bottom, move it up\n if (keepWithinBounds) {\n x = this.keepXYWithinBounds(ePopup, x, DIRECTION.horizontal);\n y = this.keepXYWithinBounds(ePopup, y, DIRECTION.vertical);\n }\n ePopup.style.left = x + \"px\";\n ePopup.style.top = y + \"px\";\n };\n PopupService.prototype.getActivePopups = function () {\n return this.popupList.map(function (popup) { return popup.element; });\n };\n PopupService.prototype.getPopupList = function () {\n return this.popupList;\n };\n PopupService.prototype.getParentRect = function () {\n // subtract the popup parent borders, because popupParent.getBoundingClientRect\n // returns the rect outside the borders, but the 0,0 coordinate for absolute\n // positioning is inside the border, leading the popup to be off by the width\n // of the border\n var eDocument = this.gridOptionsWrapper.getDocument();\n var popupParent = this.getPopupParent();\n if (popupParent === eDocument.body) {\n popupParent = eDocument.documentElement;\n }\n var style = getComputedStyle(popupParent);\n var bounds = popupParent.getBoundingClientRect();\n return {\n top: bounds.top + parseFloat(style.borderTopWidth) || 0,\n left: bounds.left + parseFloat(style.borderLeftWidth) || 0,\n right: bounds.right + parseFloat(style.borderRightWidth) || 0,\n bottom: bounds.bottom + parseFloat(style.borderBottomWidth) || 0,\n };\n };\n PopupService.prototype.keepXYWithinBounds = function (ePopup, position, direction) {\n var isVertical = direction === DIRECTION.vertical;\n var sizeProperty = isVertical ? 'clientHeight' : 'clientWidth';\n var anchorProperty = isVertical ? 'top' : 'left';\n var offsetProperty = isVertical ? 'offsetHeight' : 'offsetWidth';\n var scrollPositionProperty = isVertical ? 'scrollTop' : 'scrollLeft';\n var eDocument = this.gridOptionsWrapper.getDocument();\n var docElement = eDocument.documentElement;\n var popupParent = this.getPopupParent();\n var parentRect = popupParent.getBoundingClientRect();\n var documentRect = eDocument.documentElement.getBoundingClientRect();\n var isBody = popupParent === eDocument.body;\n var offsetSize = ePopup[offsetProperty];\n var getSize = isVertical ? getAbsoluteHeight : getAbsoluteWidth;\n var sizeOfParent = isBody ? (getSize(docElement) + docElement[scrollPositionProperty]) : popupParent[sizeProperty];\n if (isBody) {\n sizeOfParent -= Math.abs(documentRect[anchorProperty] - parentRect[anchorProperty]);\n }\n var max = sizeOfParent - offsetSize;\n return Math.min(Math.max(position, 0), Math.abs(max));\n };\n PopupService.prototype.keepPopupPositionedRelativeTo = function (params) {\n var _this = this;\n var eParent = this.getPopupParent();\n var parentRect = eParent.getBoundingClientRect();\n var sourceRect = params.element.getBoundingClientRect();\n var initialDiffTop = parentRect.top - sourceRect.top;\n var initialDiffLeft = parentRect.left - sourceRect.left;\n var lastDiffTop = initialDiffTop;\n var lastDiffLeft = initialDiffLeft;\n var topPx = params.ePopup.style.top;\n var top = parseInt(topPx.substring(0, topPx.length - 1), 10);\n var leftPx = params.ePopup.style.left;\n var left = parseInt(leftPx.substring(0, leftPx.length - 1), 10);\n return new AgPromise(function (resolve) {\n _this.getFrameworkOverrides().setInterval(function () {\n var pRect = eParent.getBoundingClientRect();\n var sRect = params.element.getBoundingClientRect();\n var elementNotInDom = sRect.top == 0 && sRect.left == 0 && sRect.height == 0 && sRect.width == 0;\n if (elementNotInDom) {\n params.hidePopup();\n return;\n }\n var currentDiffTop = pRect.top - sRect.top;\n if (currentDiffTop != lastDiffTop) {\n var newTop = _this.keepXYWithinBounds(params.ePopup, top + initialDiffTop - currentDiffTop, DIRECTION.vertical);\n params.ePopup.style.top = newTop + \"px\";\n }\n lastDiffTop = currentDiffTop;\n var currentDiffLeft = pRect.left - sRect.left;\n if (currentDiffLeft != lastDiffLeft) {\n var newLeft = _this.keepXYWithinBounds(params.ePopup, left + initialDiffLeft - currentDiffLeft, DIRECTION.horizontal);\n params.ePopup.style.left = newLeft + \"px\";\n }\n lastDiffLeft = currentDiffLeft;\n }, 200).then(function (intervalId) {\n var result = function () {\n if (intervalId != null) {\n window.clearInterval(intervalId);\n }\n };\n resolve(result);\n });\n });\n };\n PopupService.prototype.addPopup = function (params) {\n var _this = this;\n var modal = params.modal, eChild = params.eChild, closeOnEsc = params.closeOnEsc, closedCallback = params.closedCallback, click = params.click, alwaysOnTop = params.alwaysOnTop, afterGuiAttached = params.afterGuiAttached, positionCallback = params.positionCallback, anchorToElement = params.anchorToElement, ariaLabel = params.ariaLabel;\n var eDocument = this.gridOptionsWrapper.getDocument();\n var destroyPositionTracker = new AgPromise(function (resolve) { return resolve(function () { }); });\n if (!eDocument) {\n console.warn('ag-grid: could not find the document, document is empty');\n return { hideFunc: function () { }, stopAnchoringPromise: destroyPositionTracker };\n }\n var pos = this.popupList.findIndex(function (popup) { return popup.element === eChild; });\n if (pos !== -1) {\n var popup = this.popupList[pos];\n return { hideFunc: popup.hideFunc, stopAnchoringPromise: popup.stopAnchoringPromise };\n }\n var ePopupParent = this.getPopupParent();\n if (eChild.style.top == null) {\n eChild.style.top = '0px';\n }\n if (eChild.style.left == null) {\n eChild.style.left = '0px';\n }\n // add env CSS class to child, in case user provided a popup parent, which means\n // theme class may be missing\n var eWrapper = document.createElement('div');\n var theme = this.environment.getTheme().theme;\n if (theme) {\n eWrapper.classList.add(theme);\n }\n eWrapper.classList.add('ag-popup');\n eChild.classList.add(this.gridOptionsWrapper.isEnableRtl() ? 'ag-rtl' : 'ag-ltr', 'ag-popup-child');\n if (!eChild.hasAttribute('role')) {\n setAriaRole(eChild, 'dialog');\n }\n setAriaLabel(eChild, ariaLabel);\n if (this.focusService.isKeyboardMode()) {\n eChild.classList.add(FocusService.AG_KEYBOARD_FOCUS);\n }\n eWrapper.appendChild(eChild);\n ePopupParent.appendChild(eWrapper);\n if (alwaysOnTop) {\n this.setAlwaysOnTop(eWrapper, true);\n }\n else {\n this.bringPopupToFront(eWrapper);\n }\n var popupHidden = false;\n var hidePopupOnKeyboardEvent = function (event) {\n if (!eWrapper.contains(eDocument.activeElement)) {\n return;\n }\n var key = event.key;\n if (key === KeyCode.ESCAPE) {\n hidePopup({ keyboardEvent: event });\n }\n };\n var hidePopupOnMouseEvent = function (event) { return hidePopup({ mouseEvent: event }); };\n var hidePopupOnTouchEvent = function (event) { return hidePopup({ touchEvent: event }); };\n var hidePopup = function (popupParams) {\n if (popupParams === void 0) { popupParams = {}; }\n var mouseEvent = popupParams.mouseEvent, touchEvent = popupParams.touchEvent, keyboardEvent = popupParams.keyboardEvent;\n if (\n // we don't hide popup if the event was on the child, or any\n // children of this child\n _this.isEventFromCurrentPopup({ mouseEvent: mouseEvent, touchEvent: touchEvent }, eChild) ||\n // if the event to close is actually the open event, then ignore it\n _this.isEventSameChainAsOriginalEvent({ originalMouseEvent: click, mouseEvent: mouseEvent, touchEvent: touchEvent }) ||\n // this method should only be called once. the client can have different\n // paths, each one wanting to close, so this method may be called multiple times.\n popupHidden) {\n return;\n }\n popupHidden = true;\n ePopupParent.removeChild(eWrapper);\n eDocument.removeEventListener('keydown', hidePopupOnKeyboardEvent);\n eDocument.removeEventListener('mousedown', hidePopupOnMouseEvent);\n eDocument.removeEventListener('touchstart', hidePopupOnTouchEvent);\n eDocument.removeEventListener('contextmenu', hidePopupOnMouseEvent);\n _this.eventService.removeEventListener(Events.EVENT_DRAG_STARTED, hidePopupOnMouseEvent);\n if (closedCallback) {\n closedCallback(mouseEvent || touchEvent || keyboardEvent);\n }\n _this.popupList = _this.popupList.filter(function (popup) { return popup.element !== eChild; });\n if (destroyPositionTracker) {\n destroyPositionTracker.then(function (destroyFunc) { return destroyFunc && destroyFunc(); });\n }\n };\n if (afterGuiAttached) {\n afterGuiAttached({ hidePopup: hidePopup });\n }\n // if we add these listeners now, then the current mouse\n // click will be included, which we don't want\n window.setTimeout(function () {\n if (closeOnEsc) {\n eDocument.addEventListener('keydown', hidePopupOnKeyboardEvent);\n }\n if (modal) {\n eDocument.addEventListener('mousedown', hidePopupOnMouseEvent);\n _this.eventService.addEventListener(Events.EVENT_DRAG_STARTED, hidePopupOnMouseEvent);\n eDocument.addEventListener('touchstart', hidePopupOnTouchEvent);\n eDocument.addEventListener('contextmenu', hidePopupOnMouseEvent);\n }\n }, 0);\n if (positionCallback) {\n positionCallback();\n }\n if (anchorToElement) {\n // keeps popup positioned under created, eg if context menu, if user scrolls\n // using touchpad and the cell moves, it moves the popup to keep it with the cell.\n destroyPositionTracker = this.keepPopupPositionedRelativeTo({\n element: anchorToElement,\n ePopup: eChild,\n hidePopup: hidePopup\n });\n }\n this.popupList.push({\n element: eChild,\n wrapper: eWrapper,\n hideFunc: hidePopup,\n stopAnchoringPromise: destroyPositionTracker,\n instanceId: instanceIdSeq++,\n isAnchored: !!anchorToElement\n });\n return {\n hideFunc: hidePopup,\n stopAnchoringPromise: destroyPositionTracker\n };\n };\n PopupService.prototype.hasAnchoredPopup = function () {\n return this.popupList.some(function (popup) { return popup.isAnchored; });\n };\n PopupService.prototype.isEventFromCurrentPopup = function (params, target) {\n var mouseEvent = params.mouseEvent, touchEvent = params.touchEvent;\n var event = mouseEvent ? mouseEvent : touchEvent;\n if (!event) {\n return false;\n }\n var indexOfThisChild = this.popupList.findIndex(function (popup) { return popup.element === target; });\n if (indexOfThisChild === -1) {\n return false;\n }\n for (var i = indexOfThisChild; i < this.popupList.length; i++) {\n var popup = this.popupList[i];\n if (isElementInEventPath(popup.element, event)) {\n return true;\n }\n }\n // if the user did not write their own Custom Element to be rendered as popup\n // and this component has an additional popup element, they should have the\n // `ag-custom-component-popup` class to be detected as part of the Custom Component\n return this.isElementWithinCustomPopup(event.target);\n };\n PopupService.prototype.isElementWithinCustomPopup = function (el) {\n var eDocument = this.gridOptionsWrapper.getDocument();\n while (el && el !== eDocument.body) {\n if (el.classList.contains('ag-custom-component-popup') || el.parentElement === null) {\n return true;\n }\n el = el.parentElement;\n }\n return false;\n };\n // in some browsers, the context menu event can be fired before the click event, which means\n // the context menu event could open the popup, but then the click event closes it straight away.\n PopupService.prototype.isEventSameChainAsOriginalEvent = function (params) {\n var originalMouseEvent = params.originalMouseEvent, mouseEvent = params.mouseEvent, touchEvent = params.touchEvent;\n // we check the coordinates of the event, to see if it's the same event. there is a 1 / 1000 chance that\n // the event is a different event, however that is an edge case that is not very relevant (the user clicking\n // twice on the same location isn't a normal path).\n // event could be mouse event or touch event.\n var mouseEventOrTouch = null;\n if (mouseEvent) {\n // mouse event can be used direction, it has coordinates\n mouseEventOrTouch = mouseEvent;\n }\n else if (touchEvent) {\n // touch event doesn't have coordinates, need it's touch object\n mouseEventOrTouch = touchEvent.touches[0];\n }\n if (mouseEventOrTouch && originalMouseEvent) {\n // for x, allow 4px margin, to cover iPads, where touch (which opens menu) is followed\n // by browser click (when you finger up, touch is interrupted as click in browser)\n var screenX_1 = mouseEvent ? mouseEvent.screenX : 0;\n var screenY_1 = mouseEvent ? mouseEvent.screenY : 0;\n var xMatch = Math.abs(originalMouseEvent.screenX - screenX_1) < 5;\n var yMatch = Math.abs(originalMouseEvent.screenY - screenY_1) < 5;\n if (xMatch && yMatch) {\n return true;\n }\n }\n return false;\n };\n PopupService.prototype.getWrapper = function (ePopup) {\n while (!ePopup.classList.contains('ag-popup') && ePopup.parentElement) {\n ePopup = ePopup.parentElement;\n }\n return ePopup.classList.contains('ag-popup') ? ePopup : null;\n };\n PopupService.prototype.setAlwaysOnTop = function (ePopup, alwaysOnTop) {\n var eWrapper = this.getWrapper(ePopup);\n if (!eWrapper) {\n return;\n }\n eWrapper.classList.toggle('ag-always-on-top', !!alwaysOnTop);\n if (alwaysOnTop) {\n this.bringPopupToFront(eWrapper);\n }\n };\n PopupService.prototype.bringPopupToFront = function (ePopup) {\n var parent = this.getPopupParent();\n var popupList = Array.prototype.slice.call(parent.querySelectorAll('.ag-popup'));\n var popupLen = popupList.length;\n var alwaysOnTopList = Array.prototype.slice.call(parent.querySelectorAll('.ag-popup.ag-always-on-top'));\n var onTopLength = alwaysOnTopList.length;\n var eWrapper = this.getWrapper(ePopup);\n if (!eWrapper || popupLen <= 1 || !parent.contains(ePopup)) {\n return;\n }\n var pos = popupList.indexOf(eWrapper);\n var innerEls = eWrapper.querySelectorAll('div');\n var innerElsScrollMap = [];\n innerEls.forEach(function (el) {\n if (el.scrollTop !== 0) {\n innerElsScrollMap.push([el, el.scrollTop]);\n }\n });\n if (onTopLength) {\n var isPopupAlwaysOnTop = eWrapper.classList.contains('ag-always-on-top');\n if (isPopupAlwaysOnTop) {\n if (pos !== popupLen - 1) {\n last(alwaysOnTopList).insertAdjacentElement('afterend', eWrapper);\n }\n }\n else if (pos !== popupLen - onTopLength - 1) {\n alwaysOnTopList[0].insertAdjacentElement('beforebegin', eWrapper);\n }\n }\n else if (pos !== popupLen - 1) {\n last(popupList).insertAdjacentElement('afterend', eWrapper);\n }\n while (innerElsScrollMap.length) {\n var currentEl = innerElsScrollMap.pop();\n currentEl[0].scrollTop = currentEl[1];\n }\n var params = {\n type: 'popupToFront',\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n eWrapper: eWrapper\n };\n this.eventService.dispatchEvent(params);\n };\n __decorate([\n Autowired('environment')\n ], PopupService.prototype, \"environment\", void 0);\n __decorate([\n Autowired('focusService')\n ], PopupService.prototype, \"focusService\", void 0);\n __decorate([\n Autowired('ctrlsService')\n ], PopupService.prototype, \"ctrlsService\", void 0);\n __decorate([\n PostConstruct\n ], PopupService.prototype, \"postConstruct\", null);\n PopupService = __decorate([\n Bean('popupService')\n ], PopupService);\n return PopupService;\n}(BeanStub));\nexport { PopupService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { Bean } from \"./context/context\";\nimport { Qualifier } from \"./context/context\";\nimport { BeanStub } from \"./context/beanStub\";\nvar LoggerFactory = /** @class */ (function (_super) {\n __extends(LoggerFactory, _super);\n function LoggerFactory() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n LoggerFactory.prototype.setBeans = function (gridOptionsWrapper) {\n this.logging = gridOptionsWrapper.isDebug();\n };\n LoggerFactory.prototype.create = function (name) {\n return new Logger(name, this.isLogging.bind(this));\n };\n LoggerFactory.prototype.isLogging = function () {\n return this.logging;\n };\n __decorate([\n __param(0, Qualifier('gridOptionsWrapper'))\n ], LoggerFactory.prototype, \"setBeans\", null);\n LoggerFactory = __decorate([\n Bean('loggerFactory')\n ], LoggerFactory);\n return LoggerFactory;\n}(BeanStub));\nexport { LoggerFactory };\nvar Logger = /** @class */ (function () {\n function Logger(name, isLoggingFunc) {\n this.name = name;\n this.isLoggingFunc = isLoggingFunc;\n }\n Logger.prototype.isLogging = function () {\n return this.isLoggingFunc();\n };\n Logger.prototype.log = function (message) {\n if (this.isLoggingFunc()) {\n // tslint:disable-next-line\n console.log('AG Grid.' + this.name + ': ' + message);\n }\n };\n return Logger;\n}());\nexport { Logger };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Bean, PostConstruct } from \"../context/context\";\nimport { BeanStub } from \"../context/beanStub\";\nvar AutoWidthCalculator = /** @class */ (function (_super) {\n __extends(AutoWidthCalculator, _super);\n function AutoWidthCalculator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AutoWidthCalculator.prototype.postConstruct = function () {\n var _this = this;\n this.ctrlsService.whenReady(function (p) {\n _this.centerRowContainerCon = p.centerRowContainerCtrl;\n });\n };\n // this is the trick: we create a dummy container and clone all the cells\n // into the dummy, then check the dummy's width. then destroy the dummy\n // as we don't need it any more.\n // drawback: only the cells visible on the screen are considered\n AutoWidthCalculator.prototype.getPreferredWidthForColumn = function (column, skipHeader) {\n var eHeaderCell = this.getHeaderCellForColumn(column);\n // cell isn't visible\n if (!eHeaderCell) {\n return -1;\n }\n var elements = this.rowRenderer.getAllCellsForColumn(column);\n if (!skipHeader) {\n // we only consider the lowest level cell, not the group cell. in 99% of the time, this\n // will be enough. if we consider groups, then it gets too complicated for what it's worth,\n // as the groups can span columns and this class only considers one column at a time.\n elements.push(eHeaderCell);\n }\n return this.addElementsToContainerAndGetWidth(elements);\n };\n AutoWidthCalculator.prototype.getPreferredWidthForColumnGroup = function (columnGroup) {\n var eHeaderCell = this.getHeaderCellForColumn(columnGroup);\n if (!eHeaderCell) {\n return -1;\n }\n return this.addElementsToContainerAndGetWidth([eHeaderCell]);\n };\n AutoWidthCalculator.prototype.addElementsToContainerAndGetWidth = function (elements) {\n var _this = this;\n var eDummyContainer = document.createElement('span');\n // position fixed, so it isn't restricted to the boundaries of the parent\n eDummyContainer.style.position = 'fixed';\n // we put the dummy into the body container, so it will inherit all the\n // css styles that the real cells are inheriting\n var eBodyContainer = this.centerRowContainerCon.getContainerElement();\n eBodyContainer.appendChild(eDummyContainer);\n elements.forEach(function (el) { return _this.cloneItemIntoDummy(el, eDummyContainer); });\n // at this point, all the clones are lined up vertically with natural widths. the dummy\n // container will have a width wide enough just to fit the largest.\n var dummyContainerWidth = eDummyContainer.offsetWidth;\n // we are finished with the dummy container, so get rid of it\n eBodyContainer.removeChild(eDummyContainer);\n // we add padding as I found sometimes the gui still put '...' after some of the texts. so the\n // user can configure the grid to add a few more pixels after the calculated width\n var autoSizePadding = this.gridOptionsWrapper.getAutoSizePadding();\n return dummyContainerWidth + autoSizePadding;\n };\n AutoWidthCalculator.prototype.getHeaderCellForColumn = function (column) {\n /* tslint:enable */\n var element = null;\n this.ctrlsService.getHeaderRowContainerCtrls().forEach(function (container) {\n var res = container.getHtmlElementForColumnHeader(column);\n if (res != null) {\n element = res;\n }\n });\n return element;\n };\n AutoWidthCalculator.prototype.cloneItemIntoDummy = function (eCell, eDummyContainer) {\n // make a deep clone of the cell\n var eCellClone = eCell.cloneNode(true);\n // the original has a fixed width, we remove this to allow the natural width based on content\n eCellClone.style.width = '';\n // the original has position = absolute, we need to remove this so it's positioned normally\n eCellClone.style.position = 'static';\n eCellClone.style.left = '';\n // we put the cell into a containing div, as otherwise the cells would just line up\n // on the same line, standard flow layout, by putting them into divs, they are laid\n // out one per line\n var eCloneParent = document.createElement('div');\n var eCloneParentClassList = eCloneParent.classList;\n var isHeader = ['ag-header-cell', 'ag-header-group-cell'].some(function (cls) { return eCellClone.classList.contains(cls); });\n if (isHeader) {\n eCloneParentClassList.add('ag-header', 'ag-header-row');\n eCloneParent.style.position = 'static';\n }\n else {\n eCloneParentClassList.add('ag-row');\n }\n // find parent using classes (headers have ag-header-cell, rows have ag-row), and copy classes from it.\n // if we didn't do this, things like ag-row-level-2 would be missing if present, which sets indents\n // onto group items.\n var pointer = eCell.parentElement;\n while (pointer) {\n var isRow = ['ag-header-row', 'ag-row'].some(function (cls) { return pointer.classList.contains(cls); });\n if (isRow) {\n for (var i = 0; i < pointer.classList.length; i++) {\n var item = pointer.classList[i];\n // we skip ag-row-position-absolute, as this has structural CSS applied that stops the\n // element from fitting into it's parent, and we need the element to stretch the parent\n // as we are measuring the parents width\n if (item != 'ag-row-position-absolute') {\n eCloneParentClassList.add(item);\n }\n }\n break;\n }\n pointer = pointer.parentElement;\n }\n // the twig on the branch, the branch on the tree, the tree in the hole,\n // the hole in the bog, the bog in the clone, the clone in the parent,\n // the parent in the dummy, and the dummy down in the vall-e-ooo, OOOOOOOOO! Oh row the rattling bog....\n eCloneParent.appendChild(eCellClone);\n eDummyContainer.appendChild(eCloneParent);\n };\n __decorate([\n Autowired('rowRenderer')\n ], AutoWidthCalculator.prototype, \"rowRenderer\", void 0);\n __decorate([\n Autowired('ctrlsService')\n ], AutoWidthCalculator.prototype, \"ctrlsService\", void 0);\n __decorate([\n Autowired('rowCssClassCalculator')\n ], AutoWidthCalculator.prototype, \"rowCssClassCalculator\", void 0);\n __decorate([\n PostConstruct\n ], AutoWidthCalculator.prototype, \"postConstruct\", null);\n AutoWidthCalculator = __decorate([\n Bean('autoWidthCalculator')\n ], AutoWidthCalculator);\n return AutoWidthCalculator;\n}(BeanStub));\nexport { AutoWidthCalculator };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Bean } from \"../../context/context\";\nimport { BeanStub } from \"../../context/beanStub\";\nvar HorizontalResizeService = /** @class */ (function (_super) {\n __extends(HorizontalResizeService, _super);\n function HorizontalResizeService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n HorizontalResizeService.prototype.addResizeBar = function (params) {\n var _this = this;\n var dragSource = {\n dragStartPixels: params.dragStartPixels || 0,\n eElement: params.eResizeBar,\n onDragStart: this.onDragStart.bind(this, params),\n onDragStop: this.onDragStop.bind(this, params),\n onDragging: this.onDragging.bind(this, params)\n };\n this.dragService.addDragSource(dragSource, true);\n // we pass remove func back to the caller, so call can tell us when they\n // are finished, and then we remove the listener from the drag source\n var finishedWithResizeFunc = function () { return _this.dragService.removeDragSource(dragSource); };\n return finishedWithResizeFunc;\n };\n HorizontalResizeService.prototype.onDragStart = function (params, mouseEvent) {\n this.dragStartX = mouseEvent.clientX;\n this.setResizeIcons();\n var shiftKey = mouseEvent instanceof MouseEvent && mouseEvent.shiftKey === true;\n params.onResizeStart(shiftKey);\n };\n HorizontalResizeService.prototype.setResizeIcons = function () {\n var ctrl = this.ctrlsService.getGridCtrl();\n // change the body cursor, so when drag moves out of the drag bar, the cursor is still 'resize' (or 'move'\n ctrl.setResizeCursor(true);\n // we don't want text selection outside the grid (otherwise it looks weird as text highlights when we move)\n ctrl.disableUserSelect(true);\n };\n HorizontalResizeService.prototype.onDragStop = function (params, mouseEvent) {\n params.onResizeEnd(this.resizeAmount);\n this.resetIcons();\n };\n HorizontalResizeService.prototype.resetIcons = function () {\n var ctrl = this.ctrlsService.getGridCtrl();\n ctrl.setResizeCursor(false);\n ctrl.disableUserSelect(false);\n };\n HorizontalResizeService.prototype.onDragging = function (params, mouseEvent) {\n this.resizeAmount = mouseEvent.clientX - this.dragStartX;\n params.onResizing(this.resizeAmount);\n };\n __decorate([\n Autowired('dragService')\n ], HorizontalResizeService.prototype, \"dragService\", void 0);\n __decorate([\n Autowired('ctrlsService')\n ], HorizontalResizeService.prototype, \"ctrlsService\", void 0);\n HorizontalResizeService = __decorate([\n Bean('horizontalResizeService')\n ], HorizontalResizeService);\n return HorizontalResizeService;\n}(BeanStub));\nexport { HorizontalResizeService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, PostConstruct } from \"../context/context\";\nimport { BeanStub } from \"../context/beanStub\";\nimport { ModuleRegistry } from \"../modules/moduleRegistry\";\nimport { ModuleNames } from \"../modules/moduleNames\";\nimport { LayoutFeature } from \"../styling/layoutFeature\";\nimport { Events } from \"../eventKeys\";\nimport { last } from \"../utils/array\";\nvar GridCtrl = /** @class */ (function (_super) {\n __extends(GridCtrl, _super);\n function GridCtrl() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n GridCtrl.prototype.postConstruct = function () {\n this.ctrlsService.registerGridCtrl(this);\n };\n GridCtrl.prototype.setComp = function (view, eGridDiv, eGui) {\n var _this = this;\n this.view = view;\n this.eGridHostDiv = eGridDiv;\n this.eGui = eGui;\n this.mouseEventService.stampTopLevelGridCompWithGridInstance(eGridDiv);\n this.createManagedBean(new LayoutFeature(this.view));\n // important to set rtl before doLayout, as setting the RTL class impacts the scroll position,\n // which doLayout indirectly depends on\n this.addRtlSupport();\n this.addManagedListener(this, Events.EVENT_KEYBOARD_FOCUS, function () {\n _this.view.addOrRemoveKeyboardFocusClass(true);\n });\n this.addManagedListener(this, Events.EVENT_MOUSE_FOCUS, function () {\n _this.view.addOrRemoveKeyboardFocusClass(false);\n });\n var unsubscribeFromResize = this.resizeObserverService.observeResize(this.eGridHostDiv, this.onGridSizeChanged.bind(this));\n this.addDestroyFunc(function () { return unsubscribeFromResize(); });\n };\n GridCtrl.prototype.showDropZones = function () {\n return ModuleRegistry.isRegistered(ModuleNames.RowGroupingModule);\n };\n GridCtrl.prototype.showSideBar = function () {\n return ModuleRegistry.isRegistered(ModuleNames.SideBarModule);\n };\n GridCtrl.prototype.showStatusBar = function () {\n return ModuleRegistry.isRegistered(ModuleNames.StatusBarModule);\n };\n GridCtrl.prototype.showWatermark = function () {\n return ModuleRegistry.isRegistered(ModuleNames.EnterpriseCoreModule);\n };\n GridCtrl.prototype.onGridSizeChanged = function () {\n var event = {\n type: Events.EVENT_GRID_SIZE_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi,\n clientWidth: this.eGridHostDiv.clientWidth,\n clientHeight: this.eGridHostDiv.clientHeight\n };\n this.eventService.dispatchEvent(event);\n };\n GridCtrl.prototype.addRtlSupport = function () {\n var cssClass = this.gridOptionsWrapper.isEnableRtl() ? 'ag-rtl' : 'ag-ltr';\n this.view.setRtlClass(cssClass);\n };\n GridCtrl.prototype.destroyGridUi = function () {\n this.view.destroyGridUi();\n };\n GridCtrl.prototype.getGui = function () {\n return this.eGui;\n };\n GridCtrl.prototype.setResizeCursor = function (on) {\n this.view.setCursor(on ? 'ew-resize' : null);\n };\n GridCtrl.prototype.disableUserSelect = function (on) {\n this.view.setUserSelect(on ? 'none' : null);\n };\n GridCtrl.prototype.focusNextInnerContainer = function (backwards) {\n var eDocument = this.gridOptionsWrapper.getDocument();\n var focusableContainers = this.view.getFocusableContainers();\n var idxWithFocus = focusableContainers.findIndex(function (container) { return container.contains(eDocument.activeElement); });\n var nextIdx = idxWithFocus + (backwards ? -1 : 1);\n if (nextIdx <= 0 || nextIdx >= focusableContainers.length) {\n return false;\n }\n return this.focusService.focusInto(focusableContainers[nextIdx]);\n };\n GridCtrl.prototype.focusInnerElement = function (fromBottom) {\n var focusableContainers = this.view.getFocusableContainers();\n if (fromBottom) {\n if (focusableContainers.length > 1) {\n return this.focusService.focusInto(last(focusableContainers), true);\n }\n var lastColumn = last(this.columnModel.getAllDisplayedColumns());\n if (this.focusService.focusGridView(lastColumn, true)) {\n return true;\n }\n }\n return this.focusService.focusFirstHeader();\n };\n GridCtrl.prototype.forceFocusOutOfContainer = function (up) {\n if (up === void 0) { up = false; }\n this.view.forceFocusOutOfContainer(up);\n };\n __decorate([\n Autowired('columnApi')\n ], GridCtrl.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], GridCtrl.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('focusService')\n ], GridCtrl.prototype, \"focusService\", void 0);\n __decorate([\n Autowired('resizeObserverService')\n ], GridCtrl.prototype, \"resizeObserverService\", void 0);\n __decorate([\n Autowired('columnModel')\n ], GridCtrl.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('ctrlsService')\n ], GridCtrl.prototype, \"ctrlsService\", void 0);\n __decorate([\n Autowired('mouseEventService')\n ], GridCtrl.prototype, \"mouseEventService\", void 0);\n __decorate([\n PostConstruct\n ], GridCtrl.prototype, \"postConstruct\", null);\n return GridCtrl;\n}(BeanStub));\nexport { GridCtrl };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { BeanStub } from \"../context/beanStub\";\nimport { Autowired, PostConstruct } from \"../context/context\";\nimport { ManagedFocusFeature } from \"./managedFocusFeature\";\nvar TabGuardCtrl = /** @class */ (function (_super) {\n __extends(TabGuardCtrl, _super);\n function TabGuardCtrl(params) {\n var _this = _super.call(this) || this;\n _this.skipTabGuardFocus = false;\n var comp = params.comp, eTopGuard = params.eTopGuard, eBottomGuard = params.eBottomGuard, focusInnerElement = params.focusInnerElement, onFocusIn = params.onFocusIn, onFocusOut = params.onFocusOut, shouldStopEventPropagation = params.shouldStopEventPropagation, onTabKeyDown = params.onTabKeyDown, handleKeyDown = params.handleKeyDown, eFocusableElement = params.eFocusableElement;\n _this.comp = comp;\n _this.eTopGuard = eTopGuard;\n _this.eBottomGuard = eBottomGuard;\n _this.providedFocusInnerElement = focusInnerElement;\n _this.eFocusableElement = eFocusableElement;\n _this.providedFocusIn = onFocusIn;\n _this.providedFocusOut = onFocusOut;\n _this.providedShouldStopEventPropagation = shouldStopEventPropagation;\n _this.providedOnTabKeyDown = onTabKeyDown;\n _this.providedHandleKeyDown = handleKeyDown;\n return _this;\n }\n TabGuardCtrl.prototype.postConstruct = function () {\n var _this = this;\n this.createManagedBean(new ManagedFocusFeature(this.eFocusableElement, {\n shouldStopEventPropagation: function () { return _this.shouldStopEventPropagation(); },\n onTabKeyDown: function (e) { return _this.onTabKeyDown(e); },\n handleKeyDown: function (e) { return _this.handleKeyDown(e); },\n onFocusIn: function (e) { return _this.onFocusIn(e); },\n onFocusOut: function (e) { return _this.onFocusOut(e); }\n }));\n this.activateTabGuards();\n [this.eTopGuard, this.eBottomGuard].forEach(function (guard) { return _this.addManagedListener(guard, 'focus', _this.onFocus.bind(_this)); });\n };\n TabGuardCtrl.prototype.handleKeyDown = function (e) {\n if (this.providedHandleKeyDown) {\n this.providedHandleKeyDown(e);\n }\n };\n TabGuardCtrl.prototype.tabGuardsAreActive = function () {\n return !!this.eTopGuard && this.eTopGuard.hasAttribute('tabIndex');\n };\n TabGuardCtrl.prototype.shouldStopEventPropagation = function () {\n if (this.providedShouldStopEventPropagation) {\n return this.providedShouldStopEventPropagation();\n }\n return false;\n };\n TabGuardCtrl.prototype.activateTabGuards = function () {\n this.comp.setTabIndex(this.getGridTabIndex());\n };\n TabGuardCtrl.prototype.deactivateTabGuards = function () {\n this.comp.setTabIndex();\n };\n TabGuardCtrl.prototype.onFocus = function (e) {\n if (this.skipTabGuardFocus) {\n this.skipTabGuardFocus = false;\n return;\n }\n var fromBottom = e.target === this.eBottomGuard;\n if (this.providedFocusInnerElement) {\n this.providedFocusInnerElement(fromBottom);\n }\n else {\n this.focusInnerElement(fromBottom);\n }\n };\n TabGuardCtrl.prototype.onFocusIn = function (e) {\n if (this.providedFocusIn && this.providedFocusIn(e)) {\n return;\n }\n this.deactivateTabGuards();\n };\n TabGuardCtrl.prototype.onFocusOut = function (e) {\n if (this.providedFocusOut && this.providedFocusOut(e)) {\n return;\n }\n if (!this.eFocusableElement.contains(e.relatedTarget)) {\n this.activateTabGuards();\n }\n };\n TabGuardCtrl.prototype.onTabKeyDown = function (e) {\n var _this = this;\n if (this.providedOnTabKeyDown) {\n this.providedOnTabKeyDown(e);\n return;\n }\n if (e.defaultPrevented) {\n return;\n }\n var tabGuardsAreActive = this.tabGuardsAreActive();\n if (tabGuardsAreActive) {\n this.deactivateTabGuards();\n }\n var nextRoot = this.getNextFocusableElement(e.shiftKey);\n if (tabGuardsAreActive) {\n // ensure the tab guards are only re-instated once the event has finished processing, to avoid the browser\n // tabbing to the tab guard from inside the component\n setTimeout(function () { return _this.activateTabGuards(); }, 0);\n }\n if (!nextRoot) {\n return;\n }\n nextRoot.focus();\n e.preventDefault();\n };\n TabGuardCtrl.prototype.getGridTabIndex = function () {\n return this.gridOptionsWrapper.getGridTabIndex();\n };\n TabGuardCtrl.prototype.focusInnerElement = function (fromBottom) {\n if (fromBottom === void 0) { fromBottom = false; }\n var focusable = this.focusService.findFocusableElements(this.eFocusableElement);\n if (this.tabGuardsAreActive()) {\n // remove tab guards from this component from list of focusable elements\n focusable.splice(0, 1);\n focusable.splice(focusable.length - 1, 1);\n }\n if (!focusable.length) {\n return;\n }\n focusable[fromBottom ? focusable.length - 1 : 0].focus();\n };\n TabGuardCtrl.prototype.getNextFocusableElement = function (backwards) {\n return this.focusService.findNextFocusableElement(this.eFocusableElement, false, backwards);\n };\n TabGuardCtrl.prototype.forceFocusOutOfContainer = function (up) {\n if (up === void 0) { up = false; }\n var tabGuardToFocus = up ? this.eTopGuard : this.eBottomGuard;\n this.activateTabGuards();\n this.skipTabGuardFocus = true;\n tabGuardToFocus.focus();\n };\n __decorate([\n Autowired('focusService')\n ], TabGuardCtrl.prototype, \"focusService\", void 0);\n __decorate([\n PostConstruct\n ], TabGuardCtrl.prototype, \"postConstruct\", null);\n return TabGuardCtrl;\n}(BeanStub));\nexport { TabGuardCtrl };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nimport { Component } from \"./component\";\nimport { isNodeOrElement, clearElement } from \"../utils/dom\";\nimport { TabGuardCtrl } from \"./tabGuardCtrl\";\nimport { setAriaRole } from \"../utils/aria\";\nvar TabGuardComp = /** @class */ (function (_super) {\n __extends(TabGuardComp, _super);\n function TabGuardComp() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TabGuardComp.prototype.initialiseTabGuard = function (params) {\n this.eTopGuard = this.createTabGuard('top');\n this.eBottomGuard = this.createTabGuard('bottom');\n this.eFocusableElement = this.getFocusableElement();\n var tabGuards = [this.eTopGuard, this.eBottomGuard];\n var compProxy = {\n setTabIndex: function (tabIndex) {\n tabGuards.forEach(function (tabGuard) { return tabIndex != null ? tabGuard.setAttribute('tabIndex', tabIndex) : tabGuard.removeAttribute('tabIndex'); });\n }\n };\n this.addTabGuards(this.eTopGuard, this.eBottomGuard);\n this.tabGuardCtrl = this.createManagedBean(new TabGuardCtrl({\n comp: compProxy,\n eTopGuard: this.eTopGuard,\n eBottomGuard: this.eBottomGuard,\n eFocusableElement: this.eFocusableElement,\n onFocusIn: params.onFocusIn,\n onFocusOut: params.onFocusOut,\n focusInnerElement: params.focusInnerElement,\n handleKeyDown: params.handleKeyDown,\n onTabKeyDown: params.onTabKeyDown,\n shouldStopEventPropagation: params.shouldStopEventPropagation\n }));\n };\n TabGuardComp.prototype.createTabGuard = function (side) {\n var tabGuard = document.createElement('div');\n tabGuard.classList.add('ag-tab-guard', \"ag-tab-guard-\" + side);\n setAriaRole(tabGuard, 'presentation');\n return tabGuard;\n };\n TabGuardComp.prototype.addTabGuards = function (topTabGuard, bottomTabGuard) {\n this.eFocusableElement.insertAdjacentElement('afterbegin', topTabGuard);\n this.eFocusableElement.insertAdjacentElement('beforeend', bottomTabGuard);\n };\n TabGuardComp.prototype.removeAllChildrenExceptTabGuards = function () {\n var tabGuards = [this.eTopGuard, this.eBottomGuard];\n clearElement(this.getFocusableElement());\n this.addTabGuards.apply(this, __spread(tabGuards));\n };\n TabGuardComp.prototype.forceFocusOutOfContainer = function (up) {\n if (up === void 0) { up = false; }\n this.tabGuardCtrl.forceFocusOutOfContainer(up);\n };\n TabGuardComp.prototype.appendChild = function (newChild, container) {\n if (!isNodeOrElement(newChild)) {\n newChild = newChild.getGui();\n }\n var bottomTabGuard = this.eBottomGuard;\n if (bottomTabGuard) {\n bottomTabGuard.insertAdjacentElement('beforebegin', newChild);\n }\n else {\n _super.prototype.appendChild.call(this, newChild, container);\n }\n };\n return TabGuardComp;\n}(Component));\nexport { TabGuardComp };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, PostConstruct } from \"../context/context\";\nimport { RefSelector } from \"../widgets/componentAnnotations\";\nimport { isVisible } from \"../utils/dom\";\nimport { FocusService } from \"../focusService\";\nimport { GridCtrl } from \"./gridCtrl\";\nimport { LayoutCssClasses } from \"../styling/layoutFeature\";\nimport { TabGuardComp } from \"../widgets/tabGuardComp\";\nvar GridComp = /** @class */ (function (_super) {\n __extends(GridComp, _super);\n function GridComp(eGridDiv) {\n var _this = _super.call(this, undefined) || this;\n _this.eGridDiv = eGridDiv;\n return _this;\n }\n GridComp.prototype.postConstruct = function () {\n var _this = this;\n this.logger = this.loggerFactory.create('GridComp');\n var compProxy = {\n destroyGridUi: function () { return _this.destroyBean(_this); },\n setRtlClass: function (cssClass) { return _this.addCssClass(cssClass); },\n addOrRemoveKeyboardFocusClass: function (addOrRemove) { return _this.addOrRemoveCssClass(FocusService.AG_KEYBOARD_FOCUS, addOrRemove); },\n forceFocusOutOfContainer: this.forceFocusOutOfContainer.bind(this),\n updateLayoutClasses: this.updateLayoutClasses.bind(this),\n getFocusableContainers: this.getFocusableContainers.bind(this),\n setUserSelect: function (value) {\n _this.getGui().style.userSelect = value != null ? value : '';\n _this.getGui().style.webkitUserSelect = value != null ? value : '';\n },\n setCursor: function (value) {\n _this.getGui().style.cursor = value != null ? value : '';\n }\n };\n this.ctrl = this.createManagedBean(new GridCtrl());\n var template = this.createTemplate();\n this.setTemplate(template);\n this.ctrl.setComp(compProxy, this.eGridDiv, this.getGui());\n this.insertGridIntoDom();\n this.initialiseTabGuard({\n // we want to override the default behaviour to do nothing for onTabKeyDown\n onTabKeyDown: function () { return undefined; },\n focusInnerElement: function (fromBottom) { return _this.ctrl.focusInnerElement(fromBottom); }\n });\n };\n GridComp.prototype.insertGridIntoDom = function () {\n var _this = this;\n var eGui = this.getGui();\n this.eGridDiv.appendChild(eGui);\n this.addDestroyFunc(function () {\n _this.eGridDiv.removeChild(eGui);\n _this.logger.log('Grid removed from DOM');\n });\n };\n GridComp.prototype.updateLayoutClasses = function (cssClass, params) {\n var eRootWrapperBodyClassList = this.eRootWrapperBody.classList;\n eRootWrapperBodyClassList.toggle(LayoutCssClasses.AUTO_HEIGHT, params.autoHeight);\n eRootWrapperBodyClassList.toggle(LayoutCssClasses.NORMAL, params.normal);\n eRootWrapperBodyClassList.toggle(LayoutCssClasses.PRINT, params.print);\n this.addOrRemoveCssClass(LayoutCssClasses.AUTO_HEIGHT, params.autoHeight);\n this.addOrRemoveCssClass(LayoutCssClasses.NORMAL, params.normal);\n this.addOrRemoveCssClass(LayoutCssClasses.PRINT, params.print);\n };\n GridComp.prototype.createTemplate = function () {\n var dropZones = this.ctrl.showDropZones() ? '' : '';\n var sideBar = this.ctrl.showSideBar() ? '' : '';\n var statusBar = this.ctrl.showStatusBar() ? '' : '';\n var watermark = this.ctrl.showWatermark() ? '' : '';\n var template = /* html */ \"
    \\n \" + dropZones + \"\\n
    \\n \\n \" + sideBar + \"\\n
    \\n \" + statusBar + \"\\n \\n \" + watermark + \"\\n
    \";\n return template;\n };\n GridComp.prototype.getFocusableElement = function () {\n return this.eRootWrapperBody;\n };\n GridComp.prototype.getFocusableContainers = function () {\n var focusableContainers = [\n this.gridBodyComp.getGui()\n ];\n if (this.sideBarComp) {\n focusableContainers.push(this.sideBarComp.getGui());\n }\n return focusableContainers.filter(function (el) { return isVisible(el); });\n };\n __decorate([\n Autowired('loggerFactory')\n ], GridComp.prototype, \"loggerFactory\", void 0);\n __decorate([\n RefSelector('gridBody')\n ], GridComp.prototype, \"gridBodyComp\", void 0);\n __decorate([\n RefSelector('sideBar')\n ], GridComp.prototype, \"sideBarComp\", void 0);\n __decorate([\n RefSelector('rootWrapperBody')\n ], GridComp.prototype, \"eRootWrapperBody\", void 0);\n __decorate([\n PostConstruct\n ], GridComp.prototype, \"postConstruct\", null);\n return GridComp;\n}(TabGuardComp));\nexport { GridComp };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Bean, PreDestroy, Autowired, PostConstruct } from \"../context/context\";\nimport { Events } from \"../events\";\nimport { BeanStub } from \"../context/beanStub\";\nimport { exists } from \"../utils/generic\";\nimport { removeFromArray } from \"../utils/array\";\nimport { areEventsNear } from \"../utils/mouse\";\n/** Adds drag listening onto an element. In AG Grid this is used twice, first is resizing columns,\n * second is moving the columns and column groups around (ie the 'drag' part of Drag and Drop. */\nvar DragService = /** @class */ (function (_super) {\n __extends(DragService, _super);\n function DragService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.dragEndFunctions = [];\n _this.dragSources = [];\n return _this;\n }\n DragService.prototype.init = function () {\n this.logger = this.loggerFactory.create('DragService');\n };\n DragService.prototype.removeAllListeners = function () {\n this.dragSources.forEach(this.removeListener.bind(this));\n this.dragSources.length = 0;\n };\n DragService.prototype.removeListener = function (dragSourceAndListener) {\n var element = dragSourceAndListener.dragSource.eElement;\n var mouseDownListener = dragSourceAndListener.mouseDownListener;\n element.removeEventListener('mousedown', mouseDownListener);\n // remove touch listener only if it exists\n if (dragSourceAndListener.touchEnabled) {\n var touchStartListener = dragSourceAndListener.touchStartListener;\n element.removeEventListener('touchstart', touchStartListener, { passive: true });\n }\n };\n DragService.prototype.removeDragSource = function (params) {\n var dragSourceAndListener = this.dragSources.find(function (item) { return item.dragSource === params; });\n if (!dragSourceAndListener) {\n return;\n }\n this.removeListener(dragSourceAndListener);\n removeFromArray(this.dragSources, dragSourceAndListener);\n };\n DragService.prototype.isDragging = function () {\n return this.dragging;\n };\n DragService.prototype.addDragSource = function (params, includeTouch) {\n var _this = this;\n if (includeTouch === void 0) { includeTouch = false; }\n var mouseListener = this.onMouseDown.bind(this, params);\n params.eElement.addEventListener('mousedown', mouseListener);\n var touchListener = null;\n var suppressTouch = this.gridOptionsWrapper.isSuppressTouch();\n if (includeTouch && !suppressTouch) {\n touchListener = function (touchEvent) {\n if (touchEvent.cancelable) {\n touchEvent.preventDefault();\n }\n _this.onTouchStart(params, touchEvent);\n };\n params.eElement.addEventListener('touchstart', touchListener, { passive: true });\n }\n this.dragSources.push({\n dragSource: params,\n mouseDownListener: mouseListener,\n touchStartListener: touchListener,\n touchEnabled: includeTouch\n });\n };\n // gets called whenever mouse down on any drag source\n DragService.prototype.onTouchStart = function (params, touchEvent) {\n var _this = this;\n this.currentDragParams = params;\n this.dragging = false;\n var touch = touchEvent.touches[0];\n this.touchLastTime = touch;\n this.touchStart = touch;\n var touchMoveEvent = function (e) { return _this.onTouchMove(e, params.eElement); };\n var touchEndEvent = function (e) { return _this.onTouchUp(e, params.eElement); };\n var documentTouchMove = function (e) { if (e.cancelable) {\n e.preventDefault();\n } };\n var target = params.eElement;\n var events = [\n // Prevents the page document from moving while we are dragging items around.\n // preventDefault needs to be called in the touchmove listener and never inside the\n // touchstart, because using touchstart causes the click event to be cancelled on touch devices.\n { target: document, type: 'touchmove', listener: documentTouchMove, options: { passive: false } },\n { target: target, type: 'touchmove', listener: touchMoveEvent, options: { passive: true } },\n { target: target, type: 'touchend', listener: touchEndEvent, options: { passive: true } },\n { target: target, type: 'touchcancel', listener: touchEndEvent, options: { passive: true } }\n ];\n // temporally add these listeners, for the duration of the drag\n this.addTemporaryEvents(events);\n // see if we want to start dragging straight away\n if (params.dragStartPixels === 0) {\n this.onCommonMove(touch, this.touchStart, params.eElement);\n }\n };\n // gets called whenever mouse down on any drag source\n DragService.prototype.onMouseDown = function (params, mouseEvent) {\n var _this = this;\n var e = mouseEvent;\n if (params.skipMouseEvent && params.skipMouseEvent(mouseEvent)) {\n return;\n }\n // if there are two elements with parent / child relationship, and both are draggable,\n // when we drag the child, we should NOT drag the parent. an example of this is row moving\n // and range selection - row moving should get preference when use drags the rowDrag component.\n if (e._alreadyProcessedByDragService) {\n return;\n }\n e._alreadyProcessedByDragService = true;\n // only interested in left button clicks\n if (mouseEvent.button !== 0) {\n return;\n }\n this.currentDragParams = params;\n this.dragging = false;\n this.mouseStartEvent = mouseEvent;\n var eDocument = this.gridOptionsWrapper.getDocument();\n var mouseMoveEvent = function (event) { return _this.onMouseMove(event, params.eElement); };\n var mouseUpEvent = function (event) { return _this.onMouseUp(event, params.eElement); };\n var contextEvent = function (event) { return event.preventDefault(); };\n var target = eDocument;\n var events = [\n { target: target, type: 'mousemove', listener: mouseMoveEvent },\n { target: target, type: 'mouseup', listener: mouseUpEvent },\n { target: target, type: 'contextmenu', listener: contextEvent }\n ];\n // temporally add these listeners, for the duration of the drag\n this.addTemporaryEvents(events);\n //see if we want to start dragging straight away\n if (params.dragStartPixels === 0) {\n this.onMouseMove(mouseEvent, params.eElement);\n }\n };\n DragService.prototype.addTemporaryEvents = function (events) {\n events.forEach(function (currentEvent) {\n var target = currentEvent.target, type = currentEvent.type, listener = currentEvent.listener, options = currentEvent.options;\n target.addEventListener(type, listener, options);\n });\n this.dragEndFunctions.push(function () {\n events.forEach(function (currentEvent) {\n var target = currentEvent.target, type = currentEvent.type, listener = currentEvent.listener, options = currentEvent.options;\n target.removeEventListener(type, listener, options);\n });\n });\n };\n // returns true if the event is close to the original event by X pixels either vertically or horizontally.\n // we only start dragging after X pixels so this allows us to know if we should start dragging yet.\n DragService.prototype.isEventNearStartEvent = function (currentEvent, startEvent) {\n // by default, we wait 4 pixels before starting the drag\n var dragStartPixels = this.currentDragParams.dragStartPixels;\n var requiredPixelDiff = exists(dragStartPixels) ? dragStartPixels : 4;\n return areEventsNear(currentEvent, startEvent, requiredPixelDiff);\n };\n DragService.prototype.getFirstActiveTouch = function (touchList) {\n for (var i = 0; i < touchList.length; i++) {\n if (touchList[i].identifier === this.touchStart.identifier) {\n return touchList[i];\n }\n }\n return null;\n };\n DragService.prototype.onCommonMove = function (currentEvent, startEvent, el) {\n if (!this.dragging) {\n // if mouse hasn't travelled from the start position enough, do nothing\n if (!this.dragging && this.isEventNearStartEvent(currentEvent, startEvent)) {\n return;\n }\n this.dragging = true;\n var event_1 = {\n type: Events.EVENT_DRAG_STARTED,\n api: this.gridApi,\n columnApi: this.columnApi,\n target: el\n };\n this.eventService.dispatchEvent(event_1);\n this.currentDragParams.onDragStart(startEvent);\n // we need ONE drag action at the startEvent, so that we are guaranteed the drop target\n // at the start gets notified. this is because the drag can start outside of the element\n // that started it, as the mouse is allowed drag away from the mouse down before it's\n // considered a drag (the isEventNearStartEvent() above). if we didn't do this, then\n // it would be possible to click a column by the edge, then drag outside of the drop zone\n // in less than 4 pixels and the drag officially starts outside of the header but the header\n // wouldn't be notified of the dragging.\n this.currentDragParams.onDragging(startEvent);\n }\n this.currentDragParams.onDragging(currentEvent);\n };\n DragService.prototype.onTouchMove = function (touchEvent, el) {\n var touch = this.getFirstActiveTouch(touchEvent.touches);\n if (!touch) {\n return;\n }\n // this.___statusPanel.setInfoText(Math.random() + ' onTouchMove preventDefault stopPropagation');\n this.onCommonMove(touch, this.touchStart, el);\n };\n // only gets called after a mouse down - as this is only added after mouseDown\n // and is removed when mouseUp happens\n DragService.prototype.onMouseMove = function (mouseEvent, el) {\n // The event type can be `mousedown` when `dragStartPixels=0`\n // we should only preventDefault on `mousemove`.\n if (mouseEvent.type === 'mousemove' && mouseEvent.cancelable) {\n mouseEvent.preventDefault();\n }\n this.onCommonMove(mouseEvent, this.mouseStartEvent, el);\n };\n DragService.prototype.onTouchUp = function (touchEvent, el) {\n var touch = this.getFirstActiveTouch(touchEvent.changedTouches);\n // i haven't worked this out yet, but there is no matching touch\n // when we get the touch up event. to get around this, we swap in\n // the last touch. this is a hack to 'get it working' while we\n // figure out what's going on, why we are not getting a touch in\n // current event.\n if (!touch) {\n touch = this.touchLastTime;\n }\n // if mouse was left up before we started to move, then this is a tap.\n // we check this before onUpCommon as onUpCommon resets the dragging\n // let tap = !this.dragging;\n // let tapTarget = this.currentDragParams.eElement;\n this.onUpCommon(touch, el);\n // if tap, tell user\n // console.log(`${Math.random()} tap = ${tap}`);\n // if (tap) {\n // tapTarget.click();\n // }\n };\n DragService.prototype.onMouseUp = function (mouseEvent, el) {\n this.onUpCommon(mouseEvent, el);\n };\n DragService.prototype.onUpCommon = function (eventOrTouch, el) {\n if (this.dragging) {\n this.dragging = false;\n this.currentDragParams.onDragStop(eventOrTouch);\n var event_2 = {\n type: Events.EVENT_DRAG_STOPPED,\n api: this.gridApi,\n columnApi: this.columnApi,\n target: el\n };\n this.eventService.dispatchEvent(event_2);\n }\n this.mouseStartEvent = null;\n this.touchStart = null;\n this.touchLastTime = null;\n this.currentDragParams = null;\n this.dragEndFunctions.forEach(function (func) { return func(); });\n this.dragEndFunctions.length = 0;\n };\n __decorate([\n Autowired('loggerFactory')\n ], DragService.prototype, \"loggerFactory\", void 0);\n __decorate([\n Autowired('columnApi')\n ], DragService.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], DragService.prototype, \"gridApi\", void 0);\n __decorate([\n PostConstruct\n ], DragService.prototype, \"init\", null);\n __decorate([\n PreDestroy\n ], DragService.prototype, \"removeAllListeners\", null);\n DragService = __decorate([\n Bean('dragService')\n ], DragService);\n return DragService;\n}(BeanStub));\nexport { DragService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Bean } from \"./context/context\";\nimport { BeanStub } from \"./context/beanStub\";\nimport { Constants } from \"./constants/constants\";\nimport { Events } from \"./events\";\nvar SortController = /** @class */ (function (_super) {\n __extends(SortController, _super);\n function SortController() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SortController_1 = SortController;\n SortController.prototype.progressSort = function (column, multiSort, source) {\n if (source === void 0) { source = \"api\"; }\n var nextDirection = this.getNextSortDirection(column);\n this.setSortForColumn(column, nextDirection, multiSort, source);\n };\n SortController.prototype.setSortForColumn = function (column, sort, multiSort, source) {\n if (source === void 0) { source = \"api\"; }\n // auto correct - if sort not legal value, then set it to 'no sort' (which is null)\n if (sort !== Constants.SORT_ASC && sort !== Constants.SORT_DESC) {\n sort = null;\n }\n // update sort on current col\n column.setSort(sort, source);\n var doingMultiSort = multiSort && !this.gridOptionsWrapper.isSuppressMultiSort();\n // clear sort on all columns except this one, and update the icons\n if (!doingMultiSort) {\n this.clearSortBarThisColumn(column, source);\n }\n // sortIndex used for knowing order of cols when multi-col sort\n this.updateSortIndex(column);\n this.dispatchSortChangedEvents();\n };\n SortController.prototype.updateSortIndex = function (lastColToChange) {\n // update sortIndex on all sorting cols\n var allSortedCols = this.getColumnsWithSortingOrdered();\n var sortIndex = 0;\n allSortedCols.forEach(function (col) {\n if (col !== lastColToChange) {\n col.setSortIndex(sortIndex);\n sortIndex++;\n }\n });\n // last col to change always gets the last sort index, it's added to the end\n if (lastColToChange.getSort()) {\n lastColToChange.setSortIndex(sortIndex);\n }\n // clear sort index on all cols not sorting\n var allCols = this.columnModel.getPrimaryAndSecondaryAndAutoColumns();\n allCols.filter(function (col) { return col.getSort() == null; }).forEach(function (col) { return col.setSortIndex(); });\n };\n // gets called by API, so if data changes, use can call this, which will end up\n // working out the sort order again of the rows.\n SortController.prototype.onSortChanged = function () {\n this.dispatchSortChangedEvents();\n };\n SortController.prototype.isSortActive = function () {\n // pull out all the columns that have sorting set\n var allCols = this.columnModel.getPrimaryAndSecondaryAndAutoColumns();\n var sortedCols = allCols.filter(function (column) { return !!column.getSort(); });\n return sortedCols && sortedCols.length > 0;\n };\n SortController.prototype.dispatchSortChangedEvents = function () {\n var event = {\n type: Events.EVENT_SORT_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n SortController.prototype.clearSortBarThisColumn = function (columnToSkip, source) {\n this.columnModel.getPrimaryAndSecondaryAndAutoColumns().forEach(function (columnToClear) {\n // Do not clear if either holding shift, or if column in question was clicked\n if (columnToClear !== columnToSkip) {\n // setting to 'undefined' as null means 'none' rather than cleared, otherwise issue will arise\n // if sort order is: ['desc', null , 'asc'], as it will start at null rather than 'desc'.\n columnToClear.setSort(undefined, source);\n }\n });\n };\n SortController.prototype.getNextSortDirection = function (column) {\n var sortingOrder;\n if (column.getColDef().sortingOrder) {\n sortingOrder = column.getColDef().sortingOrder;\n }\n else if (this.gridOptionsWrapper.getSortingOrder()) {\n sortingOrder = this.gridOptionsWrapper.getSortingOrder();\n }\n else {\n sortingOrder = SortController_1.DEFAULT_SORTING_ORDER;\n }\n if (!Array.isArray(sortingOrder) || sortingOrder.length <= 0) {\n console.warn(\"AG Grid: sortingOrder must be an array with at least one element, currently it's \" + sortingOrder);\n return null;\n }\n var currentIndex = sortingOrder.indexOf(column.getSort());\n var notInArray = currentIndex < 0;\n var lastItemInArray = currentIndex == sortingOrder.length - 1;\n var result;\n if (notInArray || lastItemInArray) {\n result = sortingOrder[0];\n }\n else {\n result = sortingOrder[currentIndex + 1];\n }\n // verify the sort type exists, as the user could provide the sortingOrder, need to make sure it's valid\n if (SortController_1.DEFAULT_SORTING_ORDER.indexOf(result) < 0) {\n console.warn('AG Grid: invalid sort type ' + result);\n return null;\n }\n return result;\n };\n SortController.prototype.getColumnsWithSortingOrdered = function () {\n // pull out all the columns that have sorting set\n var allColumnsIncludingAuto = this.columnModel.getPrimaryAndSecondaryAndAutoColumns();\n var columnsWithSorting = allColumnsIncludingAuto.filter(function (column) { return !!column.getSort(); });\n // when both cols are missing sortIndex, we use the position of the col in all cols list.\n // this means if colDefs only have sort, but no sortIndex, we deterministically pick which\n // cols is sorted by first.\n var allColsIndexes = {};\n allColumnsIncludingAuto.forEach(function (col, index) { return allColsIndexes[col.getId()] = index; });\n // put the columns in order of which one got sorted first\n columnsWithSorting.sort(function (a, b) {\n var iA = a.getSortIndex();\n var iB = b.getSortIndex();\n if (iA != null && iB != null) {\n return iA - iB; // both present, normal comparison\n }\n else if (iA == null && iB == null) {\n // both missing, compare using column positions\n var posA = allColsIndexes[a.getId()];\n var posB = allColsIndexes[b.getId()];\n return posA > posB ? 1 : -1;\n }\n else if (iB == null) {\n return -1; // iB missing\n }\n else {\n return 1; // iA missing\n }\n });\n return columnsWithSorting;\n };\n // used by server side row models, to sent sort to server\n SortController.prototype.getSortModel = function () {\n return this.getColumnsWithSortingOrdered().map(function (column) { return ({\n sort: column.getSort(),\n colId: column.getId()\n }); });\n };\n SortController.prototype.getSortOptions = function () {\n return this.getColumnsWithSortingOrdered().map(function (column) { return ({\n sort: column.getSort(),\n column: column\n }); });\n };\n var SortController_1;\n SortController.DEFAULT_SORTING_ORDER = [Constants.SORT_ASC, Constants.SORT_DESC, null];\n __decorate([\n Autowired('columnModel')\n ], SortController.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('columnApi')\n ], SortController.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], SortController.prototype, \"gridApi\", void 0);\n SortController = SortController_1 = __decorate([\n Bean('sortController')\n ], SortController);\n return SortController;\n}(BeanStub));\nexport { SortController };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Bean } from \"../context/context\";\nimport { Autowired } from \"../context/context\";\nimport { NumberSequence } from '../utils';\nimport { Constants } from \"../constants/constants\";\nimport { BeanStub } from \"../context/beanStub\";\nimport { getCtrlForEvent } from \"../utils/event\";\nimport { exists } from \"../utils/generic\";\nimport { CellCtrl } from \"../rendering/cell/cellCtrl\";\nvar MouseEventService = /** @class */ (function (_super) {\n __extends(MouseEventService, _super);\n function MouseEventService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.gridInstanceId = MouseEventService_1.gridInstanceSequence.next();\n return _this;\n }\n MouseEventService_1 = MouseEventService;\n // we put the instance id onto the main DOM element. this is used for events, when grids are inside grids,\n // so the grid can work out if the even came from this grid or a grid inside this one. see the ctrl+v logic\n // for where this is used.\n MouseEventService.prototype.stampTopLevelGridCompWithGridInstance = function (eGridDiv) {\n eGridDiv[MouseEventService_1.GRID_DOM_KEY] = this.gridInstanceId;\n };\n MouseEventService.prototype.getRenderedCellForEvent = function (event) {\n return getCtrlForEvent(this.gridOptionsWrapper, event, CellCtrl.DOM_DATA_KEY_CELL_CTRL);\n };\n // walks the path of the event, and returns true if this grid is the first one that it finds. if doing\n // master / detail grids, and a child grid is found, then it returns false. this stops things like copy/paste\n // getting executed on many grids at the same time.\n MouseEventService.prototype.isEventFromThisGrid = function (event) {\n var res = this.isElementInThisGrid(event.target);\n return res;\n };\n MouseEventService.prototype.isElementInThisGrid = function (element) {\n var pointer = element;\n while (pointer) {\n var instanceId = pointer[MouseEventService_1.GRID_DOM_KEY];\n if (exists(instanceId)) {\n var eventFromThisGrid = instanceId === this.gridInstanceId;\n return eventFromThisGrid;\n }\n pointer = pointer.parentElement;\n }\n return false;\n };\n MouseEventService.prototype.getCellPositionForEvent = function (event) {\n var cellComp = this.getRenderedCellForEvent(event);\n return cellComp ? cellComp.getCellPosition() : null;\n };\n MouseEventService.prototype.getNormalisedPosition = function (event) {\n var gridPanelHasScrolls = this.gridOptionsWrapper.getDomLayout() === Constants.DOM_LAYOUT_NORMAL;\n var e = event;\n var x;\n var y;\n if (e.clientX != null || e.clientY != null) {\n x = e.clientX;\n y = e.clientY;\n }\n else {\n x = e.x;\n y = e.y;\n }\n if (gridPanelHasScrolls) {\n var gridBodyCon = this.ctrlsService.getGridBodyCtrl();\n var vRange = gridBodyCon.getScrollFeature().getVScrollPosition();\n var hRange = gridBodyCon.getScrollFeature().getHScrollPosition();\n x += hRange.left;\n y += vRange.top;\n }\n return { x: x, y: y };\n };\n var MouseEventService_1;\n MouseEventService.gridInstanceSequence = new NumberSequence();\n MouseEventService.GRID_DOM_KEY = '__ag_grid_instance';\n __decorate([\n Autowired('ctrlsService')\n ], MouseEventService.prototype, \"ctrlsService\", void 0);\n MouseEventService = MouseEventService_1 = __decorate([\n Bean('mouseEventService')\n ], MouseEventService);\n return MouseEventService;\n}(BeanStub));\nexport { MouseEventService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Bean } from \"./context/context\";\nimport { BeanStub } from \"./context/beanStub\";\nimport { Constants } from \"./constants/constants\";\nimport { missing } from \"./utils/generic\";\nimport { last } from \"./utils/array\";\nimport { KeyCode } from './constants/keyCode';\nvar CellNavigationService = /** @class */ (function (_super) {\n __extends(CellNavigationService, _super);\n function CellNavigationService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // returns null if no cell to focus on, ie at the end of the grid\n CellNavigationService.prototype.getNextCellToFocus = function (key, lastCellToFocus) {\n // starting with the provided cell, we keep moving until we find a cell we can\n // focus on.\n var pointer = lastCellToFocus;\n var finished = false;\n // finished will be true when either:\n // a) cell found that we can focus on\n // b) run out of cells (ie the method returns null)\n while (!finished) {\n switch (key) {\n case KeyCode.UP:\n pointer = this.getCellAbove(pointer);\n break;\n case KeyCode.DOWN:\n pointer = this.getCellBelow(pointer);\n break;\n case KeyCode.RIGHT:\n if (this.gridOptionsWrapper.isEnableRtl()) {\n pointer = this.getCellToLeft(pointer);\n }\n else {\n pointer = this.getCellToRight(pointer);\n }\n break;\n case KeyCode.LEFT:\n if (this.gridOptionsWrapper.isEnableRtl()) {\n pointer = this.getCellToRight(pointer);\n }\n else {\n pointer = this.getCellToLeft(pointer);\n }\n break;\n default:\n pointer = null;\n console.warn('AG Grid: unknown key for navigation ' + key);\n break;\n }\n if (pointer) {\n finished = this.isCellGoodToFocusOn(pointer);\n }\n else {\n finished = true;\n }\n }\n return pointer;\n };\n CellNavigationService.prototype.isCellGoodToFocusOn = function (gridCell) {\n var column = gridCell.column;\n var rowNode;\n switch (gridCell.rowPinned) {\n case Constants.PINNED_TOP:\n rowNode = this.pinnedRowModel.getPinnedTopRow(gridCell.rowIndex);\n break;\n case Constants.PINNED_BOTTOM:\n rowNode = this.pinnedRowModel.getPinnedBottomRow(gridCell.rowIndex);\n break;\n default:\n rowNode = this.rowModel.getRow(gridCell.rowIndex);\n break;\n }\n if (!rowNode) {\n return false;\n }\n var suppressNavigable = column.isSuppressNavigable(rowNode);\n return !suppressNavigable;\n };\n CellNavigationService.prototype.getCellToLeft = function (lastCell) {\n if (!lastCell) {\n return null;\n }\n var colToLeft = this.columnModel.getDisplayedColBefore(lastCell.column);\n if (!colToLeft) {\n return null;\n }\n return {\n rowIndex: lastCell.rowIndex,\n column: colToLeft,\n rowPinned: lastCell.rowPinned\n };\n };\n CellNavigationService.prototype.getCellToRight = function (lastCell) {\n if (!lastCell) {\n return null;\n }\n var colToRight = this.columnModel.getDisplayedColAfter(lastCell.column);\n // if already on right, do nothing\n if (!colToRight) {\n return null;\n }\n return {\n rowIndex: lastCell.rowIndex,\n column: colToRight,\n rowPinned: lastCell.rowPinned\n };\n };\n CellNavigationService.prototype.getRowBelow = function (rowPosition) {\n // if already on top row, do nothing\n var index = rowPosition.rowIndex;\n var pinned = rowPosition.rowPinned;\n if (this.isLastRowInContainer(rowPosition)) {\n switch (pinned) {\n case Constants.PINNED_BOTTOM:\n // never any rows after pinned bottom\n return null;\n case Constants.PINNED_TOP:\n // if on last row of pinned top, then next row is main body (if rows exist),\n // otherwise it's the pinned bottom\n if (this.rowModel.isRowsToRender()) {\n return { rowIndex: this.paginationProxy.getPageFirstRow(), rowPinned: null };\n }\n if (this.pinnedRowModel.isRowsToRender(Constants.PINNED_BOTTOM)) {\n return { rowIndex: 0, rowPinned: Constants.PINNED_BOTTOM };\n }\n return null;\n default:\n // if in the main body, then try pinned bottom, otherwise return nothing\n if (this.pinnedRowModel.isRowsToRender(Constants.PINNED_BOTTOM)) {\n return { rowIndex: 0, rowPinned: Constants.PINNED_BOTTOM };\n }\n return null;\n }\n }\n return { rowIndex: index + 1, rowPinned: pinned };\n };\n CellNavigationService.prototype.getCellBelow = function (lastCell) {\n if (!lastCell) {\n return null;\n }\n var rowBelow = this.getRowBelow(lastCell);\n if (rowBelow) {\n return {\n rowIndex: rowBelow.rowIndex,\n column: lastCell.column,\n rowPinned: rowBelow.rowPinned\n };\n }\n return null;\n };\n CellNavigationService.prototype.isLastRowInContainer = function (rowPosition) {\n var pinned = rowPosition.rowPinned;\n var index = rowPosition.rowIndex;\n if (pinned === Constants.PINNED_TOP) {\n var lastTopIndex = this.pinnedRowModel.getPinnedTopRowData().length - 1;\n return lastTopIndex <= index;\n }\n if (pinned === Constants.PINNED_BOTTOM) {\n var lastBottomIndex = this.pinnedRowModel.getPinnedBottomRowData().length - 1;\n return lastBottomIndex <= index;\n }\n var lastBodyIndex = this.paginationProxy.getPageLastRow();\n return lastBodyIndex <= index;\n };\n CellNavigationService.prototype.getRowAbove = function (rowPosition) {\n // if already on top row, do nothing\n var index = rowPosition.rowIndex;\n var pinned = rowPosition.rowPinned;\n var isFirstRow = pinned ? index === 0 : index === this.paginationProxy.getPageFirstRow();\n // if already on top row, do nothing\n if (isFirstRow) {\n if (pinned === Constants.PINNED_TOP) {\n return null;\n }\n if (!pinned) {\n if (this.pinnedRowModel.isRowsToRender(Constants.PINNED_TOP)) {\n return this.getLastFloatingTopRow();\n }\n return null;\n }\n // last floating bottom\n if (this.rowModel.isRowsToRender()) {\n return this.getLastBodyCell();\n }\n if (this.pinnedRowModel.isRowsToRender(Constants.PINNED_TOP)) {\n return this.getLastFloatingTopRow();\n }\n return null;\n }\n return { rowIndex: index - 1, rowPinned: pinned };\n };\n CellNavigationService.prototype.getCellAbove = function (lastCell) {\n if (!lastCell) {\n return null;\n }\n var rowAbove = this.getRowAbove({ rowIndex: lastCell.rowIndex, rowPinned: lastCell.rowPinned });\n if (rowAbove) {\n return {\n rowIndex: rowAbove.rowIndex,\n column: lastCell.column,\n rowPinned: rowAbove.rowPinned\n };\n }\n return null;\n };\n CellNavigationService.prototype.getLastBodyCell = function () {\n var lastBodyRow = this.paginationProxy.getPageLastRow();\n return { rowIndex: lastBodyRow, rowPinned: null };\n };\n CellNavigationService.prototype.getLastFloatingTopRow = function () {\n var lastFloatingRow = this.pinnedRowModel.getPinnedTopRowData().length - 1;\n return { rowIndex: lastFloatingRow, rowPinned: Constants.PINNED_TOP };\n };\n CellNavigationService.prototype.getNextTabbedCell = function (gridCell, backwards) {\n if (backwards) {\n return this.getNextTabbedCellBackwards(gridCell);\n }\n return this.getNextTabbedCellForwards(gridCell);\n };\n CellNavigationService.prototype.getNextTabbedCellForwards = function (gridCell) {\n var displayedColumns = this.columnModel.getAllDisplayedColumns();\n var newRowIndex = gridCell.rowIndex;\n var newFloating = gridCell.rowPinned;\n // move along to the next cell\n var newColumn = this.columnModel.getDisplayedColAfter(gridCell.column);\n // check if end of the row, and if so, go forward a row\n if (!newColumn) {\n newColumn = displayedColumns[0];\n var rowBelow = this.getRowBelow(gridCell);\n if (missing(rowBelow)) {\n return null;\n }\n // If we are tabbing and there is a paging panel present, tabbing should go\n // to the paging panel instead of loading the next page.\n if (!rowBelow.rowPinned && !this.paginationProxy.isRowInPage(rowBelow)) {\n return null;\n }\n newRowIndex = rowBelow ? rowBelow.rowIndex : null;\n newFloating = rowBelow ? rowBelow.rowPinned : null;\n }\n return { rowIndex: newRowIndex, column: newColumn, rowPinned: newFloating };\n };\n CellNavigationService.prototype.getNextTabbedCellBackwards = function (gridCell) {\n var displayedColumns = this.columnModel.getAllDisplayedColumns();\n var newRowIndex = gridCell.rowIndex;\n var newFloating = gridCell.rowPinned;\n // move along to the next cell\n var newColumn = this.columnModel.getDisplayedColBefore(gridCell.column);\n // check if end of the row, and if so, go forward a row\n if (!newColumn) {\n newColumn = last(displayedColumns);\n var rowAbove = this.getRowAbove({ rowIndex: gridCell.rowIndex, rowPinned: gridCell.rowPinned });\n if (missing(rowAbove)) {\n return null;\n }\n // If we are tabbing and there is a paging panel present, tabbing should go\n // to the paging panel instead of loading the next page.\n if (!rowAbove.rowPinned && !this.paginationProxy.isRowInPage(rowAbove)) {\n return null;\n }\n newRowIndex = rowAbove ? rowAbove.rowIndex : null;\n newFloating = rowAbove ? rowAbove.rowPinned : null;\n }\n return { rowIndex: newRowIndex, column: newColumn, rowPinned: newFloating };\n };\n __decorate([\n Autowired('columnModel')\n ], CellNavigationService.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('rowModel')\n ], CellNavigationService.prototype, \"rowModel\", void 0);\n __decorate([\n Autowired('pinnedRowModel')\n ], CellNavigationService.prototype, \"pinnedRowModel\", void 0);\n __decorate([\n Autowired('paginationProxy')\n ], CellNavigationService.prototype, \"paginationProxy\", void 0);\n CellNavigationService = __decorate([\n Bean('cellNavigationService')\n ], CellNavigationService);\n return CellNavigationService;\n}(BeanStub));\nexport { CellNavigationService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Bean, Autowired } from '../context/context';\nimport { BeanStub } from \"../context/beanStub\";\nvar ValueFormatterService = /** @class */ (function (_super) {\n __extends(ValueFormatterService, _super);\n function ValueFormatterService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ValueFormatterService.prototype.formatValue = function (column, node, $scope, value, suppliedFormatter, useFormatterFromColumn) {\n if (useFormatterFromColumn === void 0) { useFormatterFromColumn = true; }\n var result = null;\n var formatter;\n var colDef = column.getColDef();\n if (suppliedFormatter) {\n // use supplied formatter if provided, e.g. set filter items can have their own value formatters\n formatter = suppliedFormatter;\n }\n else if (useFormatterFromColumn) {\n // if row is pinned, give preference to the pinned formatter\n formatter = node && node.rowPinned && colDef.pinnedRowValueFormatter ?\n colDef.pinnedRowValueFormatter : colDef.valueFormatter;\n }\n if (formatter) {\n var params = {\n value: value,\n node: node,\n data: node ? node.data : null,\n colDef: colDef,\n column: column,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext()\n };\n // originally we put the angular 1 scope here, but we don't want the scope\n // in the params interface, as other frameworks will see the interface, and\n // angular 1 is not cool any more. so we hack the scope in here (we cannot\n // include it above, as it's not in the interface, so would cause a compile error).\n // in the future, when we stop supporting angular 1, we can take this out.\n params.$scope = $scope;\n result = this.expressionService.evaluate(formatter, params);\n }\n else if (colDef.refData) {\n return colDef.refData[value] || '';\n }\n // if we don't do this, then arrays get displayed as 1,2,3, but we want 1, 2, 3 (i.e. with spaces)\n if (result == null && Array.isArray(value)) {\n result = value.join(', ');\n }\n return result;\n };\n __decorate([\n Autowired('expressionService')\n ], ValueFormatterService.prototype, \"expressionService\", void 0);\n ValueFormatterService = __decorate([\n Bean('valueFormatterService')\n ], ValueFormatterService);\n return ValueFormatterService;\n}(BeanStub));\nexport { ValueFormatterService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { AgCheckbox } from './agCheckbox';\nimport { Events } from '../eventKeys';\nvar AgRadioButton = /** @class */ (function (_super) {\n __extends(AgRadioButton, _super);\n function AgRadioButton(config) {\n return _super.call(this, config, 'ag-radio-button', 'radio') || this;\n }\n AgRadioButton.prototype.isSelected = function () {\n return this.eInput.checked;\n };\n AgRadioButton.prototype.toggle = function () {\n if (this.eInput.disabled) {\n return;\n }\n // do not allow an active radio button to be deselected\n if (!this.isSelected()) {\n this.setValue(true);\n }\n };\n AgRadioButton.prototype.addInputListeners = function () {\n _super.prototype.addInputListeners.call(this);\n this.addManagedListener(this.eventService, Events.EVENT_CHECKBOX_CHANGED, this.onChange.bind(this));\n };\n /**\n * This ensures that if another radio button in the same named group is selected, we deselect this radio button.\n * By default the browser does this for you, but we are managing classes ourselves in order to ensure input\n * elements are styled correctly in IE11, and the DOM 'changed' event is only fired when a button is selected,\n * not deselected, so we need to use our own event.\n */\n AgRadioButton.prototype.onChange = function (event) {\n if (event.selected &&\n event.name &&\n this.eInput.name &&\n this.eInput.name === event.name &&\n event.id &&\n this.eInput.id !== event.id) {\n this.setValue(false, true);\n }\n };\n return AgRadioButton;\n}(AgCheckbox));\nexport { AgRadioButton };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nimport { includes } from \"./utils/array\";\nimport { AgPromise } from \"./utils\";\nvar OUTSIDE_ANGULAR_EVENTS = ['mouseover', 'mouseout', 'mouseenter', 'mouseleave'];\nvar PASSIVE_EVENTS = ['touchstart', 'touchend', 'touchmove', 'touchcancel'];\n/** The base frameworks, eg React & Angular, override this bean with implementations specific to their requirement. */\nvar VanillaFrameworkOverrides = /** @class */ (function () {\n function VanillaFrameworkOverrides() {\n this.isOutsideAngular = function (eventType) { return includes(OUTSIDE_ANGULAR_EVENTS, eventType); };\n }\n // for Vanilla JS, we use simple timeout\n VanillaFrameworkOverrides.prototype.setTimeout = function (action, timeout) {\n window.setTimeout(action, timeout);\n };\n VanillaFrameworkOverrides.prototype.setInterval = function (action, timeout) {\n return new AgPromise(function (resolve) {\n resolve(window.setInterval(action, timeout));\n });\n };\n // for Vanilla JS, we just add the event to the element\n VanillaFrameworkOverrides.prototype.addEventListener = function (element, type, listener, useCapture) {\n var isPassive = includes(PASSIVE_EVENTS, type);\n element.addEventListener(type, listener, { capture: !!useCapture, passive: isPassive });\n };\n // for Vanilla JS, we just execute the listener\n VanillaFrameworkOverrides.prototype.dispatchEvent = function (eventType, listener, global) {\n if (global === void 0) { global = false; }\n listener();\n };\n VanillaFrameworkOverrides.prototype.frameworkComponent = function (name) {\n return null;\n };\n VanillaFrameworkOverrides.prototype.isFrameworkComponent = function (comp) {\n return false;\n };\n return VanillaFrameworkOverrides;\n}());\nexport { VanillaFrameworkOverrides };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Bean, Autowired, PostConstruct } from \"../context/context\";\nimport { BeanStub } from \"../context/beanStub\";\nimport { Events } from \"../events\";\nvar ScrollVisibleService = /** @class */ (function (_super) {\n __extends(ScrollVisibleService, _super);\n function ScrollVisibleService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ScrollVisibleService.prototype.postConstruct = function () {\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, this.onDisplayedColumnsWidthChanged.bind(this));\n };\n ScrollVisibleService.prototype.onDisplayedColumnsChanged = function () {\n this.update();\n };\n ScrollVisibleService.prototype.onDisplayedColumnsWidthChanged = function () {\n this.update();\n };\n ScrollVisibleService.prototype.update = function () {\n // because of column animation (which takes 200ms), we have to do this twice.\n // eg if user removes cols anywhere except at the RHS, then the cols on the RHS\n // will animate to the left to fill the gap. this animation means just after\n // the cols are removed, the remaining cols are still in the original location\n // at the start of the animation, so pre animation the H scrollbar is still needed,\n // but post animation it is not.\n this.updateImpl();\n setTimeout(this.updateImpl.bind(this), 500);\n };\n ScrollVisibleService.prototype.updateImpl = function () {\n var centerRowCtrl = this.ctrlsService.getCenterRowContainerCtrl();\n if (!centerRowCtrl) {\n return;\n }\n var params = {\n horizontalScrollShowing: centerRowCtrl.isHorizontalScrollShowing(),\n verticalScrollShowing: this.isVerticalScrollShowing()\n };\n this.setScrollsVisible(params);\n };\n ScrollVisibleService.prototype.setScrollsVisible = function (params) {\n var atLeastOneDifferent = this.horizontalScrollShowing !== params.horizontalScrollShowing ||\n this.verticalScrollShowing !== params.verticalScrollShowing;\n if (atLeastOneDifferent) {\n this.horizontalScrollShowing = params.horizontalScrollShowing;\n this.verticalScrollShowing = params.verticalScrollShowing;\n var event_1 = {\n type: Events.EVENT_SCROLL_VISIBILITY_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event_1);\n }\n };\n // used by pagination service - to know page height\n ScrollVisibleService.prototype.isHorizontalScrollShowing = function () {\n return this.horizontalScrollShowing;\n };\n // used by header container\n ScrollVisibleService.prototype.isVerticalScrollShowing = function () {\n return this.verticalScrollShowing;\n };\n __decorate([\n Autowired('columnApi')\n ], ScrollVisibleService.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], ScrollVisibleService.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('ctrlsService')\n ], ScrollVisibleService.prototype, \"ctrlsService\", void 0);\n __decorate([\n PostConstruct\n ], ScrollVisibleService.prototype, \"postConstruct\", null);\n ScrollVisibleService = __decorate([\n Bean('scrollVisibleService')\n ], ScrollVisibleService);\n return ScrollVisibleService;\n}(BeanStub));\nexport { ScrollVisibleService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Bean } from \"../context/context\";\nimport { BeanStub } from \"../context/beanStub\";\nvar StylingService = /** @class */ (function (_super) {\n __extends(StylingService, _super);\n function StylingService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n StylingService.prototype.processAllCellClasses = function (colDef, params, onApplicableClass, onNotApplicableClass) {\n this.processClassRules(colDef.cellClassRules, params, onApplicableClass, onNotApplicableClass);\n this.processStaticCellClasses(colDef, params, onApplicableClass);\n };\n StylingService.prototype.processClassRules = function (classRules, params, onApplicableClass, onNotApplicableClass) {\n if (classRules == null) {\n return;\n }\n var classNames = Object.keys(classRules);\n var classesToApply = {};\n var classesToRemove = {};\n var _loop_1 = function (i) {\n var className = classNames[i];\n var rule = classRules[className];\n var resultOfRule;\n if (typeof rule === 'string') {\n resultOfRule = this_1.expressionService.evaluate(rule, params);\n }\n else if (typeof rule === 'function') {\n resultOfRule = rule(params);\n }\n // in case className = 'my-class1 my-class2', we need to split into individual class names\n className.split(' ').forEach(function (singleClass) {\n if (singleClass == null || singleClass.trim() == '') {\n return;\n }\n resultOfRule ? classesToApply[singleClass] = true : classesToRemove[singleClass] = true;\n });\n };\n var this_1 = this;\n for (var i = 0; i < classNames.length; i++) {\n _loop_1(i);\n }\n // we remove all classes first, then add all classes second,\n // in case a class appears in more than one rule, this means it will be added\n // if appears in at least one truthy rule\n if (onNotApplicableClass) {\n Object.keys(classesToRemove).forEach(onNotApplicableClass);\n }\n Object.keys(classesToApply).forEach(onApplicableClass);\n };\n StylingService.prototype.getStaticCellClasses = function (colDef, params) {\n var cellClass = colDef.cellClass;\n if (!cellClass) {\n return [];\n }\n var classOrClasses;\n if (typeof cellClass === 'function') {\n var cellClassFunc = cellClass;\n classOrClasses = cellClassFunc(params);\n }\n else {\n classOrClasses = cellClass;\n }\n if (typeof classOrClasses === 'string') {\n classOrClasses = [classOrClasses];\n }\n return classOrClasses || [];\n };\n StylingService.prototype.processStaticCellClasses = function (colDef, params, onApplicableClass) {\n var classOrClasses = this.getStaticCellClasses(colDef, params);\n classOrClasses.forEach(function (cssClassItem) {\n onApplicableClass(cssClassItem);\n });\n };\n __decorate([\n Autowired('expressionService')\n ], StylingService.prototype, \"expressionService\", void 0);\n StylingService = __decorate([\n Bean('stylingService')\n ], StylingService);\n return StylingService;\n}(BeanStub));\nexport { StylingService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Bean } from \"../context/context\";\nimport { Events } from \"../events\";\nimport { BeanStub } from \"../context/beanStub\";\nvar ColumnHoverService = /** @class */ (function (_super) {\n __extends(ColumnHoverService, _super);\n function ColumnHoverService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ColumnHoverService.prototype.setMouseOver = function (columns) {\n this.selectedColumns = columns;\n var event = {\n type: Events.EVENT_COLUMN_HOVER_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnHoverService.prototype.clearMouseOver = function () {\n this.selectedColumns = null;\n var event = {\n type: Events.EVENT_COLUMN_HOVER_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n ColumnHoverService.prototype.isHovered = function (column) {\n return !!this.selectedColumns && this.selectedColumns.indexOf(column) >= 0;\n };\n __decorate([\n Autowired('columnApi')\n ], ColumnHoverService.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], ColumnHoverService.prototype, \"gridApi\", void 0);\n ColumnHoverService = __decorate([\n Bean('columnHoverService')\n ], ColumnHoverService);\n return ColumnHoverService;\n}(BeanStub));\nexport { ColumnHoverService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Bean, PostConstruct } from \"../context/context\";\nimport { BeanStub } from \"../context/beanStub\";\nvar ColumnAnimationService = /** @class */ (function (_super) {\n __extends(ColumnAnimationService, _super);\n function ColumnAnimationService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.executeNextFuncs = [];\n _this.executeLaterFuncs = [];\n _this.active = false;\n _this.animationThreadCount = 0;\n return _this;\n }\n ColumnAnimationService.prototype.postConstruct = function () {\n var _this = this;\n this.ctrlsService.whenReady(function (p) { return _this.gridBodyCtrl = p.gridBodyCtrl; });\n };\n ColumnAnimationService.prototype.isActive = function () {\n return this.active;\n };\n ColumnAnimationService.prototype.start = function () {\n if (this.active) {\n return;\n }\n if (this.gridOptionsWrapper.isSuppressColumnMoveAnimation()) {\n return;\n }\n // if doing RTL, we don't animate open / close as due to how the pixels are inverted,\n // the animation moves all the row the the right rather than to the left (ie it's the static\n // columns that actually get their coordinates updated)\n if (this.gridOptionsWrapper.isEnableRtl()) {\n return;\n }\n this.ensureAnimationCssClassPresent();\n this.active = true;\n };\n ColumnAnimationService.prototype.finish = function () {\n if (!this.active) {\n return;\n }\n this.flush();\n this.active = false;\n };\n ColumnAnimationService.prototype.executeNextVMTurn = function (func) {\n if (this.active) {\n this.executeNextFuncs.push(func);\n }\n else {\n func();\n }\n };\n ColumnAnimationService.prototype.executeLaterVMTurn = function (func) {\n if (this.active) {\n this.executeLaterFuncs.push(func);\n }\n else {\n func();\n }\n };\n ColumnAnimationService.prototype.ensureAnimationCssClassPresent = function () {\n var _this = this;\n // up the count, so we can tell if someone else has updated the count\n // by the time the 'wait' func executes\n this.animationThreadCount++;\n var animationThreadCountCopy = this.animationThreadCount;\n this.gridBodyCtrl.setColumnMovingCss(true);\n this.executeLaterFuncs.push(function () {\n // only remove the class if this thread was the last one to update it\n if (_this.animationThreadCount === animationThreadCountCopy) {\n _this.gridBodyCtrl.setColumnMovingCss(false);\n }\n });\n };\n ColumnAnimationService.prototype.flush = function () {\n var nowFuncs = this.executeNextFuncs;\n this.executeNextFuncs = [];\n var waitFuncs = this.executeLaterFuncs;\n this.executeLaterFuncs = [];\n if (nowFuncs.length === 0 && waitFuncs.length === 0) {\n return;\n }\n window.setTimeout(function () { return nowFuncs.forEach(function (func) { return func(); }); }, 0);\n window.setTimeout(function () { return waitFuncs.forEach(function (func) { return func(); }); }, 300);\n };\n __decorate([\n Autowired('ctrlsService')\n ], ColumnAnimationService.prototype, \"ctrlsService\", void 0);\n __decorate([\n PostConstruct\n ], ColumnAnimationService.prototype, \"postConstruct\", null);\n ColumnAnimationService = __decorate([\n Bean('columnAnimationService')\n ], ColumnAnimationService);\n return ColumnAnimationService;\n}(BeanStub));\nexport { ColumnAnimationService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Bean } from \"../context/context\";\nimport { Column } from \"../entities/column\";\nimport { Constants } from \"../constants/constants\";\nimport { BeanStub } from \"../context/beanStub\";\nimport { mergeDeep } from \"../utils/object\";\nimport { missing } from \"../utils/generic\";\nvar AutoGroupColService = /** @class */ (function (_super) {\n __extends(AutoGroupColService, _super);\n function AutoGroupColService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AutoGroupColService_1 = AutoGroupColService;\n AutoGroupColService.prototype.createAutoGroupColumns = function (rowGroupColumns) {\n var _this = this;\n var groupAutoColumns = [];\n var doingTreeData = this.gridOptionsWrapper.isTreeData();\n var doingMultiAutoColumn = this.gridOptionsWrapper.isGroupMultiAutoColumn();\n if (doingTreeData && doingMultiAutoColumn) {\n console.warn('AG Grid: you cannot mix groupMultiAutoColumn with treeData, only one column can be used to display groups when doing tree data');\n doingMultiAutoColumn = false;\n }\n // if doing groupMultiAutoColumn, then we call the method multiple times, once\n // for each column we are grouping by\n if (doingMultiAutoColumn) {\n rowGroupColumns.forEach(function (rowGroupCol, index) {\n groupAutoColumns.push(_this.createOneAutoGroupColumn(rowGroupCol, index));\n });\n }\n else {\n groupAutoColumns.push(this.createOneAutoGroupColumn());\n }\n return groupAutoColumns;\n };\n // rowGroupCol and index are missing if groupMultiAutoColumn=false\n AutoGroupColService.prototype.createOneAutoGroupColumn = function (rowGroupCol, index) {\n // if one provided by user, use it, otherwise create one\n var defaultAutoColDef = this.generateDefaultColDef(rowGroupCol);\n // if doing multi, set the field\n var colId;\n if (rowGroupCol) {\n colId = Constants.GROUP_AUTO_COLUMN_ID + \"-\" + rowGroupCol.getId();\n }\n else {\n colId = AutoGroupColService_1.GROUP_AUTO_COLUMN_BUNDLE_ID;\n }\n var userAutoColDef = this.gridOptionsWrapper.getAutoGroupColumnDef();\n mergeDeep(defaultAutoColDef, userAutoColDef);\n defaultAutoColDef = this.columnFactory.mergeColDefs(defaultAutoColDef);\n defaultAutoColDef.colId = colId;\n // For tree data the filter is always allowed\n if (!this.gridOptionsWrapper.isTreeData()) {\n // we would only allow filter if the user has provided field or value getter. otherwise the filter\n // would not be able to work.\n var noFieldOrValueGetter = missing(defaultAutoColDef.field) && missing(defaultAutoColDef.valueGetter) && missing(defaultAutoColDef.filterValueGetter);\n if (noFieldOrValueGetter) {\n defaultAutoColDef.filter = false;\n }\n }\n // if showing many cols, we don't want to show more than one with a checkbox for selection\n if (index && index > 0) {\n defaultAutoColDef.headerCheckboxSelection = false;\n }\n var newCol = new Column(defaultAutoColDef, null, colId, true);\n this.context.createBean(newCol);\n return newCol;\n };\n AutoGroupColService.prototype.generateDefaultColDef = function (rowGroupCol) {\n var userDef = this.gridOptionsWrapper.getAutoGroupColumnDef();\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var res = {\n headerName: localeTextFunc('group', 'Group')\n };\n var userHasProvidedGroupCellRenderer = userDef &&\n (userDef.cellRenderer || userDef.cellRendererFramework || userDef.cellRendererSelector);\n // only add the default group cell renderer if user hasn't provided one\n if (!userHasProvidedGroupCellRenderer) {\n res.cellRenderer = 'agGroupCellRenderer';\n }\n // we never allow moving the group column\n // defaultAutoColDef.suppressMovable = true;\n if (rowGroupCol) {\n var colDef = rowGroupCol.getColDef();\n Object.assign(res, {\n // cellRendererParams.groupKey: colDefToCopy.field;\n headerName: this.columnModel.getDisplayNameForColumn(rowGroupCol, 'header'),\n headerValueGetter: colDef.headerValueGetter\n });\n if (colDef.cellRenderer || colDef.cellRendererFramework) {\n Object.assign(res, {\n cellRendererParams: {\n innerRenderer: colDef.cellRenderer,\n innerRendererFramework: colDef.cellRendererFramework,\n innerRendererParams: colDef.cellRendererParams\n }\n });\n }\n res.showRowGroup = rowGroupCol.getColId();\n }\n else {\n res.showRowGroup = true;\n }\n return res;\n };\n var AutoGroupColService_1;\n AutoGroupColService.GROUP_AUTO_COLUMN_BUNDLE_ID = Constants.GROUP_AUTO_COLUMN_ID;\n __decorate([\n Autowired('columnModel')\n ], AutoGroupColService.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('columnFactory')\n ], AutoGroupColService.prototype, \"columnFactory\", void 0);\n AutoGroupColService = AutoGroupColService_1 = __decorate([\n Bean('autoGroupColService')\n ], AutoGroupColService);\n return AutoGroupColService;\n}(BeanStub));\nexport { AutoGroupColService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { BeanStub } from \"../context/beanStub\";\nimport { Events } from \"../events\";\nimport { Autowired, Bean, PostConstruct } from \"../context/context\";\nimport { missing, exists } from \"../utils/generic\";\nimport { isNumeric } from \"../utils/number\";\nvar PaginationProxy = /** @class */ (function (_super) {\n __extends(PaginationProxy, _super);\n function PaginationProxy() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.currentPage = 0;\n _this.topDisplayedRowIndex = 0;\n _this.bottomDisplayedRowIndex = 0;\n _this.pixelOffset = 0;\n _this.masterRowCount = 0;\n return _this;\n }\n PaginationProxy.prototype.postConstruct = function () {\n this.active = this.gridOptionsWrapper.isPagination();\n this.paginateChildRows = this.gridOptionsWrapper.isPaginateChildRows();\n this.addManagedListener(this.eventService, Events.EVENT_MODEL_UPDATED, this.onModelUpdated.bind(this));\n this.addManagedListener(this.gridOptionsWrapper, 'paginationPageSize', this.onPaginationPageSizeChanged.bind(this));\n this.onModelUpdated();\n };\n PaginationProxy.prototype.ensureRowHeightsValid = function (startPixel, endPixel, startLimitIndex, endLimitIndex) {\n var res = this.rowModel.ensureRowHeightsValid(startPixel, endPixel, this.getPageFirstRow(), this.getPageLastRow());\n if (res) {\n this.calculatePages();\n }\n return res;\n };\n PaginationProxy.prototype.onModelUpdated = function (modelUpdatedEvent) {\n this.calculatePages();\n var paginationChangedEvent = {\n type: Events.EVENT_PAGINATION_CHANGED,\n animate: modelUpdatedEvent ? modelUpdatedEvent.animate : false,\n newData: modelUpdatedEvent ? modelUpdatedEvent.newData : false,\n newPage: modelUpdatedEvent ? modelUpdatedEvent.newPage : false,\n keepRenderedRows: modelUpdatedEvent ? modelUpdatedEvent.keepRenderedRows : false,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(paginationChangedEvent);\n };\n PaginationProxy.prototype.onPaginationPageSizeChanged = function () {\n this.calculatePages();\n var paginationChangedEvent = {\n type: Events.EVENT_PAGINATION_CHANGED,\n animate: false,\n newData: false,\n newPage: false,\n // important to keep rendered rows, otherwise every time grid is resized,\n // we would destroy all the rows.\n keepRenderedRows: true,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(paginationChangedEvent);\n };\n PaginationProxy.prototype.goToPage = function (page) {\n if (!this.active || this.currentPage === page) {\n return;\n }\n this.currentPage = page;\n var event = {\n type: Events.EVENT_MODEL_UPDATED,\n animate: false,\n keepRenderedRows: false,\n newData: false,\n newPage: true,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.onModelUpdated(event);\n };\n PaginationProxy.prototype.getPixelOffset = function () {\n return this.pixelOffset;\n };\n PaginationProxy.prototype.getRow = function (index) {\n return this.rowModel.getRow(index);\n };\n PaginationProxy.prototype.getRowNode = function (id) {\n return this.rowModel.getRowNode(id);\n };\n PaginationProxy.prototype.getRowIndexAtPixel = function (pixel) {\n return this.rowModel.getRowIndexAtPixel(pixel);\n };\n PaginationProxy.prototype.getCurrentPageHeight = function () {\n if (missing(this.topRowBounds) || missing(this.bottomRowBounds)) {\n return 0;\n }\n return Math.max(this.bottomRowBounds.rowTop + this.bottomRowBounds.rowHeight - this.topRowBounds.rowTop, 0);\n };\n PaginationProxy.prototype.getCurrentPagePixelRange = function () {\n var pageFirstPixel = this.topRowBounds ? this.topRowBounds.rowTop : 0;\n var pageLastPixel = this.bottomRowBounds ? this.bottomRowBounds.rowTop + this.bottomRowBounds.rowHeight : 0;\n return { pageFirstPixel: pageFirstPixel, pageLastPixel: pageLastPixel };\n };\n PaginationProxy.prototype.isRowPresent = function (rowNode) {\n if (!this.rowModel.isRowPresent(rowNode)) {\n return false;\n }\n var nodeIsInPage = rowNode.rowIndex >= this.topDisplayedRowIndex && rowNode.rowIndex <= this.bottomDisplayedRowIndex;\n return nodeIsInPage;\n };\n PaginationProxy.prototype.isEmpty = function () {\n return this.rowModel.isEmpty();\n };\n PaginationProxy.prototype.isRowsToRender = function () {\n return this.rowModel.isRowsToRender();\n };\n PaginationProxy.prototype.getNodesInRangeForSelection = function (firstInRange, lastInRange) {\n return this.rowModel.getNodesInRangeForSelection(firstInRange, lastInRange);\n };\n PaginationProxy.prototype.forEachNode = function (callback) {\n return this.rowModel.forEachNode(callback);\n };\n PaginationProxy.prototype.getType = function () {\n return this.rowModel.getType();\n };\n PaginationProxy.prototype.getRowBounds = function (index) {\n var res = this.rowModel.getRowBounds(index);\n res.rowIndex = index;\n return res;\n };\n PaginationProxy.prototype.getPageFirstRow = function () {\n return this.topRowBounds ? this.topRowBounds.rowIndex : -1;\n };\n PaginationProxy.prototype.getPageLastRow = function () {\n return this.bottomRowBounds ? this.bottomRowBounds.rowIndex : -1;\n };\n PaginationProxy.prototype.getRowCount = function () {\n return this.rowModel.getRowCount();\n };\n PaginationProxy.prototype.getPageForIndex = function (index) {\n return Math.floor(index / this.pageSize);\n };\n PaginationProxy.prototype.goToPageWithIndex = function (index) {\n if (!this.active) {\n return;\n }\n var pageNumber = this.getPageForIndex(index);\n this.goToPage(pageNumber);\n };\n PaginationProxy.prototype.isRowInPage = function (row) {\n if (!this.active) {\n return true;\n }\n var rowPage = this.getPageForIndex(row.rowIndex);\n return rowPage === this.currentPage;\n };\n PaginationProxy.prototype.isLastPageFound = function () {\n return this.rowModel.isLastRowIndexKnown();\n };\n PaginationProxy.prototype.getCurrentPage = function () {\n return this.currentPage;\n };\n PaginationProxy.prototype.goToNextPage = function () {\n this.goToPage(this.currentPage + 1);\n };\n PaginationProxy.prototype.goToPreviousPage = function () {\n this.goToPage(this.currentPage - 1);\n };\n PaginationProxy.prototype.goToFirstPage = function () {\n this.goToPage(0);\n };\n PaginationProxy.prototype.goToLastPage = function () {\n var rowCount = this.rowModel.getRowCount();\n var lastPage = Math.floor(rowCount / this.pageSize);\n this.goToPage(lastPage);\n };\n PaginationProxy.prototype.getPageSize = function () {\n return this.pageSize;\n };\n PaginationProxy.prototype.getTotalPages = function () {\n return this.totalPages;\n };\n PaginationProxy.prototype.setPageSize = function () {\n // show put this into super class\n this.pageSize = this.gridOptionsWrapper.getPaginationPageSize();\n if (this.pageSize == null || this.pageSize < 1) {\n this.pageSize = 100;\n }\n };\n PaginationProxy.prototype.calculatePages = function () {\n if (this.active) {\n this.setPageSize();\n if (this.paginateChildRows) {\n this.calculatePagesAllRows();\n }\n else {\n this.calculatePagesMasterRowsOnly();\n }\n }\n else {\n this.calculatedPagesNotActive();\n }\n this.topRowBounds = this.rowModel.getRowBounds(this.topDisplayedRowIndex);\n if (this.topRowBounds) {\n this.topRowBounds.rowIndex = this.topDisplayedRowIndex;\n }\n this.bottomRowBounds = this.rowModel.getRowBounds(this.bottomDisplayedRowIndex);\n if (this.bottomRowBounds) {\n this.bottomRowBounds.rowIndex = this.bottomDisplayedRowIndex;\n }\n this.setPixelOffset(exists(this.topRowBounds) ? this.topRowBounds.rowTop : 0);\n };\n PaginationProxy.prototype.setPixelOffset = function (value) {\n if (this.pixelOffset === value) {\n return;\n }\n this.pixelOffset = value;\n this.eventService.dispatchEvent({ type: Events.EVENT_PAGINATION_PIXEL_OFFSET_CHANGED });\n };\n PaginationProxy.prototype.setZeroRows = function () {\n this.masterRowCount = 0;\n this.topDisplayedRowIndex = 0;\n this.bottomDisplayedRowIndex = -1;\n this.currentPage = 0;\n this.totalPages = 0;\n };\n PaginationProxy.prototype.calculatePagesMasterRowsOnly = function () {\n // const csrm = this.rowModel;\n // const rootNode = csrm.getRootNode();\n // const masterRows = rootNode.childrenAfterSort;\n this.masterRowCount = this.rowModel.getTopLevelRowCount();\n // we say <=0 (rather than =0) as viewport returns -1 when no rows\n if (this.masterRowCount <= 0) {\n this.setZeroRows();\n return;\n }\n var masterLastRowIndex = this.masterRowCount - 1;\n this.totalPages = Math.floor((masterLastRowIndex) / this.pageSize) + 1;\n if (this.currentPage >= this.totalPages) {\n this.currentPage = this.totalPages - 1;\n }\n if (!isNumeric(this.currentPage) || this.currentPage < 0) {\n this.currentPage = 0;\n }\n var masterPageStartIndex = this.pageSize * this.currentPage;\n var masterPageEndIndex = (this.pageSize * (this.currentPage + 1)) - 1;\n if (masterPageEndIndex > masterLastRowIndex) {\n masterPageEndIndex = masterLastRowIndex;\n }\n this.topDisplayedRowIndex = this.rowModel.getTopLevelRowDisplayedIndex(masterPageStartIndex);\n // masterRows[masterPageStartIndex].rowIndex;\n if (masterPageEndIndex === masterLastRowIndex) {\n // if showing the last master row, then we want to show the very last row of the model\n this.bottomDisplayedRowIndex = this.rowModel.getRowCount() - 1;\n }\n else {\n var firstIndexNotToShow = this.rowModel.getTopLevelRowDisplayedIndex(masterPageEndIndex + 1);\n //masterRows[masterPageEndIndex + 1].rowIndex;\n // this gets the index of the last child - eg current row is open, we want to display all children,\n // the index of the last child is one less than the index of the next parent row.\n this.bottomDisplayedRowIndex = firstIndexNotToShow - 1;\n }\n };\n PaginationProxy.prototype.getMasterRowCount = function () {\n return this.masterRowCount;\n };\n PaginationProxy.prototype.calculatePagesAllRows = function () {\n this.masterRowCount = this.rowModel.getRowCount();\n if (this.masterRowCount === 0) {\n this.setZeroRows();\n return;\n }\n var maxRowIndex = this.masterRowCount - 1;\n this.totalPages = Math.floor((maxRowIndex) / this.pageSize) + 1;\n if (this.currentPage >= this.totalPages) {\n this.currentPage = this.totalPages - 1;\n }\n if (!isNumeric(this.currentPage) || this.currentPage < 0) {\n this.currentPage = 0;\n }\n this.topDisplayedRowIndex = this.pageSize * this.currentPage;\n this.bottomDisplayedRowIndex = (this.pageSize * (this.currentPage + 1)) - 1;\n if (this.bottomDisplayedRowIndex > maxRowIndex) {\n this.bottomDisplayedRowIndex = maxRowIndex;\n }\n };\n PaginationProxy.prototype.calculatedPagesNotActive = function () {\n this.pageSize = this.rowModel.getRowCount();\n this.totalPages = 1;\n this.currentPage = 0;\n this.topDisplayedRowIndex = 0;\n this.bottomDisplayedRowIndex = this.rowModel.getRowCount() - 1;\n };\n __decorate([\n Autowired('rowModel')\n ], PaginationProxy.prototype, \"rowModel\", void 0);\n __decorate([\n Autowired('columnApi')\n ], PaginationProxy.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], PaginationProxy.prototype, \"gridApi\", void 0);\n __decorate([\n PostConstruct\n ], PaginationProxy.prototype, \"postConstruct\", null);\n PaginationProxy = __decorate([\n Bean('paginationProxy')\n ], PaginationProxy);\n return PaginationProxy;\n}(BeanStub));\nexport { PaginationProxy };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { BeanStub } from \"../context/beanStub\";\nimport { Events } from \"../events\";\nimport { Autowired, Bean, PostConstruct } from \"../context/context\";\nvar PaginationAutoPageSizeService = /** @class */ (function (_super) {\n __extends(PaginationAutoPageSizeService, _super);\n function PaginationAutoPageSizeService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PaginationAutoPageSizeService.prototype.postConstruct = function () {\n var _this = this;\n this.ctrlsService.whenReady(function (p) {\n _this.centerRowContainerCon = p.centerRowContainerCtrl;\n _this.addManagedListener(_this.eventService, Events.EVENT_BODY_HEIGHT_CHANGED, _this.onBodyHeightChanged.bind(_this));\n _this.addManagedListener(_this.eventService, Events.EVENT_SCROLL_VISIBILITY_CHANGED, _this.onScrollVisibilityChanged.bind(_this));\n _this.checkPageSize();\n });\n };\n PaginationAutoPageSizeService.prototype.notActive = function () {\n return !this.gridOptionsWrapper.isPaginationAutoPageSize();\n };\n PaginationAutoPageSizeService.prototype.onScrollVisibilityChanged = function () {\n this.checkPageSize();\n };\n PaginationAutoPageSizeService.prototype.onBodyHeightChanged = function () {\n this.checkPageSize();\n };\n PaginationAutoPageSizeService.prototype.checkPageSize = function () {\n if (this.notActive()) {\n return;\n }\n var rowHeight = this.gridOptionsWrapper.getRowHeightAsNumber();\n var bodyHeight = this.centerRowContainerCon.getViewportSizeFeature().getBodyHeight();\n if (bodyHeight > 0) {\n var newPageSize = Math.floor(bodyHeight / rowHeight);\n this.gridOptionsWrapper.setProperty('paginationPageSize', newPageSize);\n }\n };\n __decorate([\n Autowired('ctrlsService')\n ], PaginationAutoPageSizeService.prototype, \"ctrlsService\", void 0);\n __decorate([\n PostConstruct\n ], PaginationAutoPageSizeService.prototype, \"postConstruct\", null);\n PaginationAutoPageSizeService = __decorate([\n Bean('paginationAutoPageSizeService')\n ], PaginationAutoPageSizeService);\n return PaginationAutoPageSizeService;\n}(BeanStub));\nexport { PaginationAutoPageSizeService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Bean, PostConstruct } from \"../context/context\";\nimport { BeanStub } from \"../context/beanStub\";\nvar ValueCache = /** @class */ (function (_super) {\n __extends(ValueCache, _super);\n function ValueCache() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.cacheVersion = 0;\n return _this;\n }\n ValueCache.prototype.init = function () {\n this.active = this.gridOptionsWrapper.isValueCache();\n this.neverExpires = this.gridOptionsWrapper.isValueCacheNeverExpires();\n };\n ValueCache.prototype.onDataChanged = function () {\n if (this.neverExpires) {\n return;\n }\n this.expire();\n };\n ValueCache.prototype.expire = function () {\n this.cacheVersion++;\n };\n ValueCache.prototype.setValue = function (rowNode, colId, value) {\n if (this.active) {\n if (rowNode.__cacheVersion !== this.cacheVersion) {\n rowNode.__cacheVersion = this.cacheVersion;\n rowNode.__cacheData = {};\n }\n rowNode.__cacheData[colId] = value;\n }\n };\n ValueCache.prototype.getValue = function (rowNode, colId) {\n if (!this.active || rowNode.__cacheVersion !== this.cacheVersion) {\n return undefined;\n }\n return rowNode.__cacheData[colId];\n };\n __decorate([\n PostConstruct\n ], ValueCache.prototype, \"init\", null);\n ValueCache = __decorate([\n Bean('valueCache')\n ], ValueCache);\n return ValueCache;\n}(BeanStub));\nexport { ValueCache };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { BeanStub } from \"../context/beanStub\";\nimport { Autowired, Bean, PostConstruct } from \"../context/context\";\nimport { ChangedPath } from \"../utils/changedPath\";\nimport { Constants } from \"../constants/constants\";\nimport { Events } from \"../events\";\nvar ChangeDetectionService = /** @class */ (function (_super) {\n __extends(ChangeDetectionService, _super);\n function ChangeDetectionService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ChangeDetectionService.prototype.init = function () {\n if (this.rowModel.getType() === Constants.ROW_MODEL_TYPE_CLIENT_SIDE) {\n this.clientSideRowModel = this.rowModel;\n }\n this.addManagedListener(this.eventService, Events.EVENT_CELL_VALUE_CHANGED, this.onCellValueChanged.bind(this));\n };\n ChangeDetectionService.prototype.onCellValueChanged = function (event) {\n // Clipboard service manages its own change detection, so no need to do it here.\n // The clipboard manages its own as otherwise this would happen once for every cell\n // that got updated as part of a paste operation, so e.g. if 100 cells in a paste operation,\n // this doChangeDetection would get called 100 times (once for each cell), instead clipboard\n // service executes the logic we have here once (in essence batching up all cell changes\n // into one change detection).\n if (event.source === Constants.SOURCE_PASTE) {\n return;\n }\n this.doChangeDetection(event.node, event.column);\n };\n ChangeDetectionService.prototype.doChangeDetection = function (rowNode, column) {\n if (this.gridOptionsWrapper.isSuppressChangeDetection()) {\n return;\n }\n // step 1 of change detection is to update the aggregated values\n if (this.clientSideRowModel && !rowNode.isRowPinned()) {\n var onlyChangedColumns = this.gridOptionsWrapper.isAggregateOnlyChangedColumns();\n var changedPath = new ChangedPath(onlyChangedColumns, this.clientSideRowModel.getRootNode());\n changedPath.addParentNode(rowNode.parent, [column]);\n this.clientSideRowModel.doAggregate(changedPath);\n }\n // step 2 of change detection is to refresh the cells\n this.rowRenderer.refreshCells();\n };\n __decorate([\n Autowired('rowModel')\n ], ChangeDetectionService.prototype, \"rowModel\", void 0);\n __decorate([\n Autowired('rowRenderer')\n ], ChangeDetectionService.prototype, \"rowRenderer\", void 0);\n __decorate([\n PostConstruct\n ], ChangeDetectionService.prototype, \"init\", null);\n ChangeDetectionService = __decorate([\n Bean('changeDetectionService')\n ], ChangeDetectionService);\n return ChangeDetectionService;\n}(BeanStub));\nexport { ChangeDetectionService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { Events } from \"./events\";\nimport { Bean } from \"./context/context\";\nimport { Qualifier } from \"./context/context\";\nimport { Autowired } from \"./context/context\";\nimport { PostConstruct } from \"./context/context\";\nimport { BeanStub } from \"./context/beanStub\";\nvar AlignedGridsService = /** @class */ (function (_super) {\n __extends(AlignedGridsService, _super);\n function AlignedGridsService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // flag to mark if we are consuming. to avoid cyclic events (ie other grid firing back to master\n // while processing a master event) we mark this if consuming an event, and if we are, then\n // we don't fire back any events.\n _this.consuming = false;\n return _this;\n }\n AlignedGridsService.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('AlignedGridsService');\n };\n AlignedGridsService.prototype.init = function () {\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_MOVED, this.fireColumnEvent.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VISIBLE, this.fireColumnEvent.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PINNED, this.fireColumnEvent.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_GROUP_OPENED, this.fireColumnEvent.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_RESIZED, this.fireColumnEvent.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_BODY_SCROLL, this.fireScrollEvent.bind(this));\n };\n // common logic across all the fire methods\n AlignedGridsService.prototype.fireEvent = function (callback) {\n // if we are already consuming, then we are acting on an event from a master,\n // so we don't cause a cyclic firing of events\n if (this.consuming) {\n return;\n }\n // iterate through the aligned grids, and pass each aligned grid service to the callback\n var otherGrids = this.gridOptionsWrapper.getAlignedGrids();\n if (otherGrids) {\n otherGrids.forEach(function (otherGridOptions) {\n if (otherGridOptions.api) {\n var alignedGridService = otherGridOptions.api.__getAlignedGridService();\n callback(alignedGridService);\n }\n });\n }\n };\n // common logic across all consume methods. very little common logic, however extracting\n // guarantees consistency across the methods.\n AlignedGridsService.prototype.onEvent = function (callback) {\n this.consuming = true;\n callback();\n this.consuming = false;\n };\n AlignedGridsService.prototype.fireColumnEvent = function (event) {\n this.fireEvent(function (alignedGridsService) {\n alignedGridsService.onColumnEvent(event);\n });\n };\n AlignedGridsService.prototype.fireScrollEvent = function (event) {\n if (event.direction !== 'horizontal') {\n return;\n }\n this.fireEvent(function (alignedGridsService) {\n alignedGridsService.onScrollEvent(event);\n });\n };\n AlignedGridsService.prototype.onScrollEvent = function (event) {\n var _this = this;\n this.onEvent(function () {\n var gridBodyCon = _this.ctrlsService.getGridBodyCtrl();\n gridBodyCon.getScrollFeature().setHorizontalScrollPosition(event.left);\n });\n };\n AlignedGridsService.prototype.getMasterColumns = function (event) {\n var result = [];\n if (event.columns) {\n event.columns.forEach(function (column) {\n result.push(column);\n });\n }\n else if (event.column) {\n result.push(event.column);\n }\n return result;\n };\n AlignedGridsService.prototype.getColumnIds = function (event) {\n var result = [];\n if (event.columns) {\n event.columns.forEach(function (column) {\n result.push(column.getColId());\n });\n }\n else if (event.column) {\n result.push(event.column.getColId());\n }\n return result;\n };\n AlignedGridsService.prototype.onColumnEvent = function (event) {\n var _this = this;\n this.onEvent(function () {\n switch (event.type) {\n case Events.EVENT_COLUMN_MOVED:\n case Events.EVENT_COLUMN_VISIBLE:\n case Events.EVENT_COLUMN_PINNED:\n case Events.EVENT_COLUMN_RESIZED:\n var colEvent = event;\n _this.processColumnEvent(colEvent);\n break;\n case Events.EVENT_COLUMN_GROUP_OPENED:\n var groupOpenedEvent = event;\n _this.processGroupOpenedEvent(groupOpenedEvent);\n break;\n case Events.EVENT_COLUMN_PIVOT_CHANGED:\n // we cannot support pivoting with aligned grids as the columns will be out of sync as the\n // grids will have columns created based on the row data of the grid.\n console.warn('AG Grid: pivoting is not supported with aligned grids. ' +\n 'You can only use one of these features at a time in a grid.');\n break;\n }\n });\n };\n AlignedGridsService.prototype.processGroupOpenedEvent = function (groupOpenedEvent) {\n // likewise for column group\n var masterColumnGroup = groupOpenedEvent.columnGroup;\n var otherColumnGroup = null;\n if (masterColumnGroup) {\n var groupId = masterColumnGroup.getGroupId();\n otherColumnGroup = this.columnModel.getProvidedColumnGroup(groupId);\n }\n if (masterColumnGroup && !otherColumnGroup) {\n return;\n }\n this.logger.log('onColumnEvent-> processing ' + groupOpenedEvent + ' expanded = ' + masterColumnGroup.isExpanded());\n this.columnModel.setColumnGroupOpened(otherColumnGroup, masterColumnGroup.isExpanded(), \"alignedGridChanged\");\n };\n AlignedGridsService.prototype.processColumnEvent = function (colEvent) {\n var _this = this;\n // the column in the event is from the master grid. need to\n // look up the equivalent from this (other) grid\n var masterColumn = colEvent.column;\n var otherColumn = null;\n if (masterColumn) {\n otherColumn = this.columnModel.getPrimaryColumn(masterColumn.getColId());\n }\n // if event was with respect to a master column, that is not present in this\n // grid, then we ignore the event\n if (masterColumn && !otherColumn) {\n return;\n }\n // in time, all the methods below should use the column ids, it's a more generic way\n // of handling columns, and also allows for single or multi column events\n var masterColumns = this.getMasterColumns(colEvent);\n switch (colEvent.type) {\n case Events.EVENT_COLUMN_MOVED:\n // when the user moves columns via setColumnState, we can't depend on moving specific columns\n // to an index, as there maybe be many indexes columns moved to (as wasn't result of a mouse drag).\n // so only way to be sure is match the order of all columns using Column State.\n {\n var movedEvent = colEvent;\n var srcColState = colEvent.columnApi.getColumnState();\n var destColState = srcColState.map(function (s) { return ({ colId: s.colId }); });\n this.columnModel.applyColumnState({ state: destColState, applyOrder: true }, \"alignedGridChanged\");\n this.logger.log(\"onColumnEvent-> processing \" + colEvent.type + \" toIndex = \" + movedEvent.toIndex);\n }\n break;\n case Events.EVENT_COLUMN_VISIBLE:\n // when the user changes visibility via setColumnState, we can't depend on visibility flag in event\n // as there maybe be mix of true/false (as wasn't result of a mouse click to set visiblity).\n // so only way to be sure is match the visibility of all columns using Column State.\n {\n var visibleEvent = colEvent;\n var srcColState = colEvent.columnApi.getColumnState();\n var destColState = srcColState.map(function (s) { return ({ colId: s.colId, hide: s.hide }); });\n this.columnModel.applyColumnState({ state: destColState }, \"alignedGridChanged\");\n this.logger.log(\"onColumnEvent-> processing \" + colEvent.type + \" visible = \" + visibleEvent.visible);\n }\n break;\n case Events.EVENT_COLUMN_PINNED:\n {\n var pinnedEvent = colEvent;\n var srcColState = colEvent.columnApi.getColumnState();\n var destColState = srcColState.map(function (s) { return ({ colId: s.colId, pinned: s.pinned }); });\n this.columnModel.applyColumnState({ state: destColState }, \"alignedGridChanged\");\n this.logger.log(\"onColumnEvent-> processing \" + colEvent.type + \" pinned = \" + pinnedEvent.pinned);\n }\n break;\n case Events.EVENT_COLUMN_RESIZED:\n var resizedEvent_1 = colEvent;\n masterColumns.forEach(function (column) {\n _this.logger.log(\"onColumnEvent-> processing \" + colEvent.type + \" actualWidth = \" + column.getActualWidth());\n var columnWidths = [{ key: column.getColId(), newWidth: column.getActualWidth() }];\n _this.columnModel.setColumnWidths(columnWidths, false, resizedEvent_1.finished, \"alignedGridChanged\");\n });\n break;\n }\n var gridBodyCon = this.ctrlsService.getGridBodyCtrl();\n var isVerticalScrollShowing = gridBodyCon.isVerticalScrollShowing();\n var alignedGrids = this.gridOptionsWrapper.getAlignedGrids();\n if (alignedGrids) {\n alignedGrids.forEach(function (grid) {\n if (grid.api) {\n grid.api.setAlwaysShowVerticalScroll(isVerticalScrollShowing);\n }\n });\n }\n };\n __decorate([\n Autowired('columnModel')\n ], AlignedGridsService.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('ctrlsService')\n ], AlignedGridsService.prototype, \"ctrlsService\", void 0);\n __decorate([\n __param(0, Qualifier('loggerFactory'))\n ], AlignedGridsService.prototype, \"setBeans\", null);\n __decorate([\n PostConstruct\n ], AlignedGridsService.prototype, \"init\", null);\n AlignedGridsService = __decorate([\n Bean('alignedGridsService')\n ], AlignedGridsService);\n return AlignedGridsService;\n}(BeanStub));\nexport { AlignedGridsService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Bean } from \"../../context/context\";\nimport { BeanStub } from \"../../context/beanStub\";\nimport { loadTemplate } from \"../../utils/dom\";\nvar AgComponentUtils = /** @class */ (function (_super) {\n __extends(AgComponentUtils, _super);\n function AgComponentUtils() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AgComponentUtils.prototype.adaptFunction = function (propertyName, jsCompFunc) {\n var metadata = this.componentMetadataProvider.retrieve(propertyName);\n if (metadata && metadata.functionAdapter) {\n return metadata.functionAdapter(jsCompFunc);\n }\n return null;\n };\n AgComponentUtils.prototype.adaptCellRendererFunction = function (callback) {\n var Adapter = /** @class */ (function () {\n function Adapter() {\n }\n Adapter.prototype.refresh = function (params) {\n return false;\n };\n Adapter.prototype.getGui = function () {\n return this.eGui;\n };\n Adapter.prototype.init = function (params) {\n var callbackResult = callback(params);\n var type = typeof callbackResult;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n this.eGui = loadTemplate('' + callbackResult + '');\n return;\n }\n if (callbackResult == null) {\n this.eGui = loadTemplate('');\n return;\n }\n this.eGui = callbackResult;\n };\n return Adapter;\n }());\n return Adapter;\n };\n AgComponentUtils.prototype.doesImplementIComponent = function (candidate) {\n if (!candidate) {\n return false;\n }\n return candidate.prototype && 'getGui' in candidate.prototype;\n };\n __decorate([\n Autowired(\"componentMetadataProvider\")\n ], AgComponentUtils.prototype, \"componentMetadataProvider\", void 0);\n AgComponentUtils = __decorate([\n Bean(\"agComponentUtils\")\n ], AgComponentUtils);\n return AgComponentUtils;\n}(BeanStub));\nexport { AgComponentUtils };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Bean, PostConstruct } from \"../../context/context\";\nimport { BeanStub } from \"../../context/beanStub\";\nvar ComponentMetadataProvider = /** @class */ (function (_super) {\n __extends(ComponentMetadataProvider, _super);\n function ComponentMetadataProvider() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ComponentMetadataProvider.prototype.postConstruct = function () {\n this.componentMetaData = {\n dateComponent: {\n mandatoryMethodList: ['getDate', 'setDate'],\n optionalMethodList: ['afterGuiAttached', 'setInputPlaceholder', 'setInputAriaLabel']\n },\n detailCellRenderer: {\n mandatoryMethodList: [],\n optionalMethodList: ['refresh'],\n functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)\n },\n headerComponent: {\n mandatoryMethodList: [],\n optionalMethodList: ['refresh']\n },\n headerGroupComponent: {\n mandatoryMethodList: [],\n optionalMethodList: []\n },\n loadingCellRenderer: {\n mandatoryMethodList: [],\n optionalMethodList: []\n },\n loadingOverlayComponent: {\n mandatoryMethodList: [],\n optionalMethodList: []\n },\n noRowsOverlayComponent: {\n mandatoryMethodList: [],\n optionalMethodList: []\n },\n floatingFilterComponent: {\n mandatoryMethodList: ['onParentModelChanged'],\n optionalMethodList: ['afterGuiAttached']\n },\n floatingFilterWrapperComponent: {\n mandatoryMethodList: [],\n optionalMethodList: []\n },\n cellRenderer: {\n mandatoryMethodList: [],\n optionalMethodList: ['refresh', 'afterGuiAttached'],\n functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)\n },\n cellEditor: {\n mandatoryMethodList: ['getValue'],\n optionalMethodList: ['isPopup', 'isCancelBeforeStart', 'isCancelAfterEnd', 'getPopupPosition', 'focusIn', 'focusOut', 'afterGuiAttached']\n },\n innerRenderer: {\n mandatoryMethodList: [],\n optionalMethodList: ['afterGuiAttached'],\n functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)\n },\n fullWidthCellRenderer: {\n mandatoryMethodList: [],\n optionalMethodList: ['refresh', 'afterGuiAttached'],\n functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)\n },\n pinnedRowCellRenderer: {\n mandatoryMethodList: [],\n optionalMethodList: ['refresh', 'afterGuiAttached'],\n functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)\n },\n groupRowRenderer: {\n mandatoryMethodList: [],\n optionalMethodList: ['afterGuiAttached'],\n functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)\n },\n filter: {\n mandatoryMethodList: ['isFilterActive', 'doesFilterPass', 'getModel', 'setModel'],\n optionalMethodList: ['afterGuiAttached', 'onNewRowsLoaded', 'getModelAsString', 'onFloatingFilterChanged']\n },\n filterComponent: {\n mandatoryMethodList: ['isFilterActive', 'doesFilterPass', 'getModel', 'setModel'],\n optionalMethodList: ['afterGuiAttached', 'onNewRowsLoaded', 'getModelAsString', 'onFloatingFilterChanged']\n },\n statusPanel: {\n mandatoryMethodList: [],\n optionalMethodList: ['afterGuiAttached'],\n },\n toolPanel: {\n mandatoryMethodList: [],\n optionalMethodList: ['refresh', 'afterGuiAttached']\n },\n tooltipComponent: {\n mandatoryMethodList: [],\n optionalMethodList: []\n }\n };\n };\n ComponentMetadataProvider.prototype.retrieve = function (name) {\n return this.componentMetaData[name];\n };\n __decorate([\n Autowired(\"agComponentUtils\")\n ], ComponentMetadataProvider.prototype, \"agComponentUtils\", void 0);\n __decorate([\n PostConstruct\n ], ComponentMetadataProvider.prototype, \"postConstruct\", null);\n ComponentMetadataProvider = __decorate([\n Bean(\"componentMetadataProvider\")\n ], ComponentMetadataProvider);\n return ComponentMetadataProvider;\n}(BeanStub));\nexport { ComponentMetadataProvider };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Bean, Autowired } from './context/context';\nimport { BeanStub } from \"./context/beanStub\";\nimport { doOnce } from './utils/function';\nvar MAT_GRID_SIZE = 8;\nvar BASE_GRID_SIZE = 4;\nvar BALHAM_GRID_SIZE = 4;\nvar ALPINE_GRID_SIZE = 6;\nvar HARD_CODED_SIZES = {\n // this item is required for custom themes\n 'ag-theme-custom': {\n headerHeight: 25,\n headerCellMinWidth: 24,\n listItemHeight: BASE_GRID_SIZE * 5,\n rowHeight: 25,\n chartMenuPanelWidth: 220\n },\n 'ag-theme-material': {\n headerHeight: MAT_GRID_SIZE * 7,\n headerCellMinWidth: 48,\n listItemHeight: MAT_GRID_SIZE * 4,\n rowHeight: MAT_GRID_SIZE * 6,\n chartMenuPanelWidth: 240\n },\n 'ag-theme-balham': {\n headerHeight: BALHAM_GRID_SIZE * 8,\n headerCellMinWidth: 24,\n listItemHeight: BALHAM_GRID_SIZE * 6,\n rowHeight: BALHAM_GRID_SIZE * 7,\n chartMenuPanelWidth: 220\n },\n 'ag-theme-alpine': {\n headerHeight: ALPINE_GRID_SIZE * 8,\n headerCellMinWidth: 36,\n listItemHeight: ALPINE_GRID_SIZE * 4,\n rowHeight: ALPINE_GRID_SIZE * 7,\n chartMenuPanelWidth: 240\n }\n};\n/**\n * this object contains a list of Sass variables and an array\n * of CSS styles required to get the correct value.\n * eg. $virtual-item-height requires a structure, so we can get its height.\n *
    \n *
    \n *
    \n *
    \n *
    \n */\nvar SASS_PROPERTY_BUILDER = {\n headerHeight: ['ag-header-row'],\n headerCellMinWidth: ['ag-header-cell'],\n listItemHeight: ['ag-virtual-list-item'],\n rowHeight: ['ag-row'],\n chartMenuPanelWidth: ['ag-chart-docked-container']\n};\nvar CALCULATED_SIZES = {};\nvar Environment = /** @class */ (function (_super) {\n __extends(Environment, _super);\n function Environment() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Environment.prototype.getSassVariable = function (theme, key) {\n var useTheme = 'ag-theme-' + (theme.match('material') ? 'material' : theme.match('balham') ? 'balham' : theme.match('alpine') ? 'alpine' : 'custom');\n var defaultValue = HARD_CODED_SIZES[useTheme][key];\n var calculatedValue = 0;\n if (!CALCULATED_SIZES[theme]) {\n CALCULATED_SIZES[theme] = {};\n }\n var size = CALCULATED_SIZES[theme][key];\n if (size != null) {\n return size;\n }\n if (SASS_PROPERTY_BUILDER[key]) {\n var classList = SASS_PROPERTY_BUILDER[key];\n var div = document.createElement('div');\n div.classList.add(theme);\n div.style.position = 'absolute';\n var el = classList.reduce(function (prevEl, currentClass) {\n var currentDiv = document.createElement('div');\n currentDiv.style.position = 'static';\n currentDiv.classList.add(currentClass);\n prevEl.appendChild(currentDiv);\n return currentDiv;\n }, div);\n if (document.body) {\n document.body.appendChild(div);\n var sizeName = key.toLowerCase().indexOf('height') !== -1 ? 'height' : 'width';\n calculatedValue = parseInt(window.getComputedStyle(el)[sizeName], 10);\n document.body.removeChild(div);\n }\n }\n CALCULATED_SIZES[theme][key] = calculatedValue || defaultValue;\n return CALCULATED_SIZES[theme][key];\n };\n Environment.prototype.isThemeDark = function () {\n var theme = this.getTheme().theme;\n return !!theme && theme.indexOf('dark') >= 0;\n };\n Environment.prototype.chartMenuPanelWidth = function () {\n var theme = this.getTheme().themeFamily;\n return this.getSassVariable(theme, 'chartMenuPanelWidth');\n };\n Environment.prototype.getTheme = function () {\n var reg = /\\bag-(material|(?:theme-([\\w\\-]*)))\\b/;\n var el = this.eGridDiv;\n var themeMatch = null;\n while (el) {\n themeMatch = reg.exec(el.className);\n if (!themeMatch) {\n el = el.parentElement || undefined;\n }\n else {\n break;\n }\n }\n if (!themeMatch) {\n return {};\n }\n var theme = themeMatch[0];\n var usingOldTheme = themeMatch[2] === undefined;\n if (usingOldTheme) {\n var newTheme_1 = theme.replace('ag-', 'ag-theme-');\n doOnce(function () { return console.warn(\"AG Grid: As of v19 old theme are no longer provided. Please replace \" + theme + \" with \" + newTheme_1 + \".\"); }, 'using-old-theme');\n }\n return { theme: theme, el: el, themeFamily: theme.replace(/-dark$/, '') };\n };\n __decorate([\n Autowired('eGridDiv')\n ], Environment.prototype, \"eGridDiv\", void 0);\n Environment = __decorate([\n Bean('environment')\n ], Environment);\n return Environment;\n}(BeanStub));\nexport { Environment };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Bean, PostConstruct } from \"../context/context\";\nimport { BeanStub } from \"../context/beanStub\";\nvar AnimationFrameService = /** @class */ (function (_super) {\n __extends(AnimationFrameService, _super);\n function AnimationFrameService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // p1 and p2 are create tasks are to do with row and cell creation.\n // for them we want to execute according to row order, so we use\n // TaskItem so we know what index the item is for.\n _this.createTasksP1 = { list: [], sorted: false }; // eg drawing back-ground of rows\n _this.createTasksP2 = { list: [], sorted: false }; // eg cell renderers, adding hover functionality\n // destroy tasks are to do with row removal. they are done after row creation as the user will need to see new\n // rows first (as blank is scrolled into view), when we remove the old rows (no longer in view) is not as\n // important.\n _this.destroyTasks = [];\n _this.ticking = false;\n // we need to know direction of scroll, to build up rows in the direction of\n // the scroll. eg if user scrolls down, we extend the rows by building down.\n _this.scrollGoingDown = true;\n _this.lastScrollTop = 0;\n _this.taskCount = 0;\n _this.cancelledTasks = new Set();\n return _this;\n }\n AnimationFrameService.prototype.setScrollTop = function (scrollTop) {\n this.scrollGoingDown = scrollTop > this.lastScrollTop;\n this.lastScrollTop = scrollTop;\n };\n AnimationFrameService.prototype.init = function () {\n this.useAnimationFrame = !this.gridOptionsWrapper.isSuppressAnimationFrame();\n };\n AnimationFrameService.prototype.isOn = function () {\n return this.useAnimationFrame;\n };\n // this method is for our AG Grid sanity only - if animation frames are turned off,\n // then no place in the code should be looking to add any work to be done in animation\n // frames. this stops bugs - where some code is asking for a frame to be executed\n // when it should not.\n AnimationFrameService.prototype.verifyAnimationFrameOn = function (methodName) {\n if (this.useAnimationFrame === false) {\n console.warn(\"AG Grid: AnimationFrameService.\" + methodName + \" called but animation frames are off\");\n }\n };\n AnimationFrameService.prototype.createTask = function (task, index, list) {\n this.verifyAnimationFrameOn(list);\n var taskItem = { task: task, index: index, createOrder: ++this.taskCount };\n this.addTaskToList(this[list], taskItem);\n this.schedule();\n };\n AnimationFrameService.prototype.cancelTask = function (task) {\n this.cancelledTasks.add(task);\n };\n AnimationFrameService.prototype.addTaskToList = function (taskList, task) {\n taskList.list.push(task);\n taskList.sorted = false;\n };\n AnimationFrameService.prototype.sortTaskList = function (taskList) {\n if (taskList.sorted) {\n return;\n }\n var sortDirection = this.scrollGoingDown ? 1 : -1;\n // sort first by row index (taking into account scroll direction), then by\n // order of task creation (always ascending, so cells will render left-to-right)\n taskList.list.sort(function (a, b) { return a.index !== b.index ? sortDirection * (b.index - a.index) : b.createOrder - a.createOrder; });\n taskList.sorted = true;\n };\n AnimationFrameService.prototype.addDestroyTask = function (task) {\n this.verifyAnimationFrameOn('createTasksP3');\n this.destroyTasks.push(task);\n this.schedule();\n };\n AnimationFrameService.prototype.executeFrame = function (millis) {\n this.verifyAnimationFrameOn('executeFrame');\n var p1TaskList = this.createTasksP1;\n var p1Tasks = p1TaskList.list;\n var p2TaskList = this.createTasksP2;\n var p2Tasks = p2TaskList.list;\n var destroyTasks = this.destroyTasks;\n var frameStart = new Date().getTime();\n var duration = (new Date().getTime()) - frameStart;\n // 16ms is 60 fps\n var noMaxMillis = millis <= 0;\n var gridBodyCon = this.ctrlsService.getGridBodyCtrl();\n while (noMaxMillis || duration < millis) {\n var gridBodyDidSomething = gridBodyCon.getScrollFeature().executeAnimationFrameScroll();\n if (!gridBodyDidSomething) {\n var task = void 0;\n if (p1Tasks.length) {\n this.sortTaskList(p1TaskList);\n task = p1Tasks.pop().task;\n }\n else if (p2Tasks.length) {\n this.sortTaskList(p2TaskList);\n task = p2Tasks.pop().task;\n }\n else if (destroyTasks.length) {\n task = destroyTasks.pop();\n }\n else {\n this.cancelledTasks.clear();\n break;\n }\n if (!this.cancelledTasks.has(task)) {\n task();\n }\n }\n duration = (new Date().getTime()) - frameStart;\n }\n if (p1Tasks.length || p2Tasks.length || destroyTasks.length) {\n this.requestFrame();\n }\n else {\n this.stopTicking();\n }\n };\n AnimationFrameService.prototype.stopTicking = function () {\n this.ticking = false;\n };\n AnimationFrameService.prototype.flushAllFrames = function () {\n if (!this.useAnimationFrame) {\n return;\n }\n this.executeFrame(-1);\n };\n AnimationFrameService.prototype.schedule = function () {\n if (!this.useAnimationFrame) {\n return;\n }\n if (!this.ticking) {\n this.ticking = true;\n this.requestFrame();\n }\n };\n AnimationFrameService.prototype.requestFrame = function () {\n // check for the existence of requestAnimationFrame, and if\n // it's missing, then we polyfill it with setTimeout()\n var callback = this.executeFrame.bind(this, 60);\n var eDocument = this.gridOptionsWrapper.getDocument();\n var win = (eDocument.defaultView || window);\n if (win.requestAnimationFrame) {\n win.requestAnimationFrame(callback);\n }\n else if (win.webkitRequestAnimationFrame) {\n win.webkitRequestAnimationFrame(callback);\n }\n else {\n win.setTimeout(callback, 0);\n }\n };\n AnimationFrameService.prototype.isQueueEmpty = function () {\n return !this.ticking;\n };\n // a debounce utility used for parts of the app involved with rendering.\n // the advantage over normal debounce is the client can call flushAllFrames()\n // to make sure all rendering is complete. we don't wait any milliseconds,\n // as this is intended to batch calls in one VM turn.\n AnimationFrameService.prototype.debounce = function (func) {\n var _this = this;\n var pending = false;\n return function () {\n if (!_this.isOn()) {\n _this.getFrameworkOverrides().setTimeout(func, 0);\n return;\n }\n if (pending) {\n return;\n }\n pending = true;\n _this.addDestroyTask(function () {\n pending = false;\n func();\n });\n };\n };\n __decorate([\n Autowired('ctrlsService')\n ], AnimationFrameService.prototype, \"ctrlsService\", void 0);\n __decorate([\n PostConstruct\n ], AnimationFrameService.prototype, \"init\", null);\n AnimationFrameService = __decorate([\n Bean('animationFrameService')\n ], AnimationFrameService);\n return AnimationFrameService;\n}(BeanStub));\nexport { AnimationFrameService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __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};\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Bean, Optional, PostConstruct } from \"../context/context\";\nimport { BeanStub } from \"../context/beanStub\";\nimport { exists, missing } from \"../utils/generic\";\nimport { last } from \"../utils/array\";\nimport { KeyCode } from '../constants/keyCode';\nimport { CellCtrl } from \"../rendering/cell/cellCtrl\";\nimport { RowCtrl } from \"../rendering/row/rowCtrl\";\nimport { doOnce } from \"../utils/function\";\nimport { Constants } from \"../constants/constants\";\nvar NavigationService = /** @class */ (function (_super) {\n __extends(NavigationService, _super);\n function NavigationService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.timeLastPageEventProcessed = 0;\n return _this;\n }\n NavigationService.prototype.postConstruct = function () {\n var _this = this;\n this.ctrlsService.whenReady(function (p) {\n _this.gridBodyCon = p.gridBodyCtrl;\n });\n };\n NavigationService.prototype.handlePageScrollingKey = function (event) {\n var key = event.key;\n var alt = event.altKey;\n var ctrl = event.ctrlKey || event.metaKey;\n var currentCell = this.mouseEventService.getCellPositionForEvent(event);\n if (!currentCell) {\n return false;\n }\n var processed = false;\n switch (key) {\n case KeyCode.PAGE_HOME:\n case KeyCode.PAGE_END:\n // handle home and end when ctrl & alt are NOT pressed\n if (!ctrl && !alt) {\n this.onHomeOrEndKey(key);\n processed = true;\n }\n break;\n case KeyCode.LEFT:\n case KeyCode.RIGHT:\n // handle left and right when ctrl is pressed only\n if (ctrl && !alt) {\n this.onCtrlLeftOrRight(key, currentCell);\n processed = true;\n }\n break;\n case KeyCode.UP:\n case KeyCode.DOWN:\n // handle up and down when ctrl is pressed only\n if (ctrl && !alt) {\n this.onCtrlUpOrDown(key, currentCell);\n processed = true;\n }\n break;\n case KeyCode.PAGE_DOWN:\n // handle page up and page down when ctrl & alt are NOT pressed\n if (!ctrl && !alt) {\n this.onPageDown(currentCell);\n processed = true;\n }\n break;\n case KeyCode.PAGE_UP:\n // handle page up and page down when ctrl & alt are NOT pressed\n if (!ctrl && !alt) {\n this.onPageUp(currentCell);\n processed = true;\n }\n break;\n }\n if (processed) {\n event.preventDefault();\n }\n return processed;\n };\n // the page up/down keys caused a problem, in that if the user\n // held the page up/down key down, lots of events got generated,\n // which clogged up the event queue (as they take time to process)\n // which in turn froze the grid. Logic below makes sure we wait 100ms\n // between processing the page up/down events, so when user has finger\n // held down on key, we ignore page up/down events until 100ms has passed,\n // which effectively empties the queue of page up/down events.\n NavigationService.prototype.isTimeSinceLastPageEventToRecent = function () {\n var now = new Date().getTime();\n var diff = now - this.timeLastPageEventProcessed;\n return (diff < 100);\n };\n NavigationService.prototype.setTimeLastPageEventProcessed = function () {\n this.timeLastPageEventProcessed = new Date().getTime();\n };\n NavigationService.prototype.navigateTo = function (navigateParams) {\n var scrollIndex = navigateParams.scrollIndex, scrollType = navigateParams.scrollType, scrollColumn = navigateParams.scrollColumn, focusIndex = navigateParams.focusIndex, focusColumn = navigateParams.focusColumn;\n if (exists(scrollColumn) && !scrollColumn.isPinned()) {\n this.gridBodyCon.getScrollFeature().ensureColumnVisible(scrollColumn);\n }\n if (exists(scrollIndex)) {\n this.gridBodyCon.getScrollFeature().ensureIndexVisible(scrollIndex, scrollType);\n }\n // make sure the cell is rendered, needed if we are to focus\n this.animationFrameService.flushAllFrames();\n // if we don't do this, the range will be left on the last cell, which will leave the last focused cell\n // highlighted.\n this.focusService.setFocusedCell(focusIndex, focusColumn, null, true);\n if (this.rangeService) {\n var cellPosition = { rowIndex: focusIndex, rowPinned: null, column: focusColumn };\n this.rangeService.setRangeToCell(cellPosition);\n }\n };\n NavigationService.prototype.onPageDown = function (gridCell) {\n if (this.isTimeSinceLastPageEventToRecent()) {\n return;\n }\n var gridBodyCon = this.ctrlsService.getGridBodyCtrl();\n var scrollPosition = gridBodyCon.getScrollFeature().getVScrollPosition();\n var pixelsInOnePage = this.getViewportHeight();\n var pagingPixelOffset = this.paginationProxy.getPixelOffset();\n var currentPageBottomPixel = scrollPosition.top + pixelsInOnePage;\n var currentPageBottomRow = this.paginationProxy.getRowIndexAtPixel(currentPageBottomPixel + pagingPixelOffset);\n var scrollIndex = currentPageBottomRow;\n var currentCellPixel = this.paginationProxy.getRow(gridCell.rowIndex).rowTop;\n var nextCellPixel = currentCellPixel + pixelsInOnePage - pagingPixelOffset;\n var focusIndex = this.paginationProxy.getRowIndexAtPixel(nextCellPixel + pagingPixelOffset);\n var pageLastRow = this.paginationProxy.getPageLastRow();\n if (focusIndex === gridCell.rowIndex) {\n scrollIndex = focusIndex = gridCell.rowIndex + 1;\n }\n if (focusIndex > pageLastRow) {\n focusIndex = pageLastRow;\n }\n if (scrollIndex > pageLastRow) {\n scrollIndex = pageLastRow;\n }\n if (this.isRowTallerThanView(focusIndex)) {\n scrollIndex = focusIndex;\n }\n this.navigateTo({\n scrollIndex: scrollIndex,\n scrollType: 'top',\n scrollColumn: null,\n focusIndex: focusIndex,\n focusColumn: gridCell.column\n });\n this.setTimeLastPageEventProcessed();\n };\n NavigationService.prototype.onPageUp = function (gridCell) {\n if (this.isTimeSinceLastPageEventToRecent()) {\n return;\n }\n var gridBodyCon = this.ctrlsService.getGridBodyCtrl();\n var scrollPosition = gridBodyCon.getScrollFeature().getVScrollPosition();\n var pixelsInOnePage = this.getViewportHeight();\n var pagingPixelOffset = this.paginationProxy.getPixelOffset();\n var currentPageTopPixel = scrollPosition.top;\n var currentPageTopRow = this.paginationProxy.getRowIndexAtPixel(currentPageTopPixel + pagingPixelOffset);\n var scrollIndex = currentPageTopRow;\n var currentRowNode = this.paginationProxy.getRow(gridCell.rowIndex);\n var nextCellPixel = currentRowNode.rowTop + currentRowNode.rowHeight - pixelsInOnePage - pagingPixelOffset;\n var focusIndex = this.paginationProxy.getRowIndexAtPixel(nextCellPixel + pagingPixelOffset);\n var firstRow = this.paginationProxy.getPageFirstRow();\n if (focusIndex === gridCell.rowIndex) {\n scrollIndex = focusIndex = gridCell.rowIndex - 1;\n }\n if (focusIndex < firstRow) {\n focusIndex = firstRow;\n }\n if (scrollIndex < firstRow) {\n scrollIndex = firstRow;\n }\n var scrollType = 'bottom';\n if (this.isRowTallerThanView(focusIndex)) {\n scrollIndex = focusIndex;\n scrollType = 'top';\n }\n this.navigateTo({\n scrollIndex: scrollIndex,\n scrollType: scrollType,\n scrollColumn: null,\n focusIndex: focusIndex,\n focusColumn: gridCell.column\n });\n this.setTimeLastPageEventProcessed();\n };\n NavigationService.prototype.getViewportHeight = function () {\n var gridBodyCon = this.ctrlsService.getGridBodyCtrl();\n var scrollPosition = gridBodyCon.getScrollFeature().getVScrollPosition();\n var scrollbarWidth = this.gridOptionsWrapper.getScrollbarWidth();\n var pixelsInOnePage = scrollPosition.bottom - scrollPosition.top;\n if (this.ctrlsService.getCenterRowContainerCtrl().isHorizontalScrollShowing()) {\n pixelsInOnePage -= scrollbarWidth;\n }\n return pixelsInOnePage;\n };\n NavigationService.prototype.isRowTallerThanView = function (rowIndex) {\n var rowNode = this.paginationProxy.getRow(rowIndex);\n if (!rowNode) {\n return false;\n }\n var rowHeight = rowNode.rowHeight;\n if (typeof rowHeight !== 'number') {\n return false;\n }\n return rowHeight > this.getViewportHeight();\n };\n NavigationService.prototype.getIndexToFocus = function (indexToScrollTo, isDown) {\n var indexToFocus = indexToScrollTo;\n // for SSRM, when user hits ctrl+down, we can end up trying to focus the loading row.\n // instead we focus the last row with data instead.\n if (isDown) {\n var node = this.paginationProxy.getRow(indexToScrollTo);\n if (node && node.stub) {\n indexToFocus -= 1;\n }\n }\n return indexToFocus;\n };\n // ctrl + up/down will bring focus to same column, first/last row. no horizontal scrolling.\n NavigationService.prototype.onCtrlUpOrDown = function (key, gridCell) {\n var upKey = key === KeyCode.UP;\n var rowIndexToScrollTo = upKey ? this.paginationProxy.getPageFirstRow() : this.paginationProxy.getPageLastRow();\n this.navigateTo({\n scrollIndex: rowIndexToScrollTo,\n scrollType: null,\n scrollColumn: gridCell.column,\n focusIndex: this.getIndexToFocus(rowIndexToScrollTo, !upKey),\n focusColumn: gridCell.column\n });\n };\n // ctrl + left/right will bring focus to same row, first/last cell. no vertical scrolling.\n NavigationService.prototype.onCtrlLeftOrRight = function (key, gridCell) {\n var leftKey = key === KeyCode.LEFT;\n var allColumns = this.columnModel.getAllDisplayedColumns();\n var isRtl = this.gridOptionsWrapper.isEnableRtl();\n var columnToSelect = leftKey !== isRtl ? allColumns[0] : last(allColumns);\n this.navigateTo({\n scrollIndex: gridCell.rowIndex,\n scrollType: null,\n scrollColumn: columnToSelect,\n focusIndex: gridCell.rowIndex,\n focusColumn: columnToSelect\n });\n };\n // home brings focus to top left cell, end brings focus to bottom right, grid scrolled to bring\n // same cell into view (which means either scroll all the way up, or all the way down).\n NavigationService.prototype.onHomeOrEndKey = function (key) {\n var homeKey = key === KeyCode.PAGE_HOME;\n var allColumns = this.columnModel.getAllDisplayedColumns();\n var columnToSelect = homeKey ? allColumns[0] : last(allColumns);\n var scrollIndex = homeKey ? this.paginationProxy.getPageFirstRow() : this.paginationProxy.getPageLastRow();\n this.navigateTo({\n scrollIndex: scrollIndex,\n scrollType: null,\n scrollColumn: columnToSelect,\n focusIndex: this.getIndexToFocus(scrollIndex, !homeKey),\n focusColumn: columnToSelect\n });\n };\n // result of keyboard event\n NavigationService.prototype.onTabKeyDown = function (previous, keyboardEvent) {\n var backwards = keyboardEvent.shiftKey;\n var movedToNextCell = this.tabToNextCellCommon(previous, backwards, keyboardEvent);\n if (movedToNextCell) {\n // only prevent default if we found a cell. so if user is on last cell and hits tab, then we default\n // to the normal tabbing so user can exit the grid.\n keyboardEvent.preventDefault();\n return;\n }\n // if we didn't move to next cell, then need to tab out of the cells, ie to the header (if going\n // backwards)\n if (backwards) {\n var _a = previous.getRowPosition(), rowIndex = _a.rowIndex, rowPinned = _a.rowPinned;\n var firstRow = rowPinned ? rowIndex === 0 : rowIndex === this.paginationProxy.getPageFirstRow();\n if (firstRow) {\n keyboardEvent.preventDefault();\n this.focusService.focusLastHeader(keyboardEvent);\n }\n }\n else {\n // if the case it's a popup editor, the focus is on the editor and not the previous cell.\n // in order for the tab navigation to work, we need to focus the browser back onto the\n // previous cell.\n if (previous instanceof CellCtrl) {\n previous.focusCell(true);\n }\n if (this.focusService.focusNextGridCoreContainer(backwards)) {\n keyboardEvent.preventDefault();\n }\n }\n };\n // comes from API\n NavigationService.prototype.tabToNextCell = function (backwards, event) {\n var focusedCell = this.focusService.getFocusedCell();\n // if no focus, then cannot navigate\n if (!focusedCell) {\n return false;\n }\n var cellOrRow = this.getCellByPosition(focusedCell);\n // if cell is not rendered, means user has scrolled away from the cell\n // or that the focusedCell is a Full Width Row\n if (!cellOrRow) {\n cellOrRow = this.rowRenderer.getRowByPosition(focusedCell);\n if (!cellOrRow || !cellOrRow.isFullWidth()) {\n return false;\n }\n }\n return this.tabToNextCellCommon(cellOrRow, backwards, event);\n };\n NavigationService.prototype.tabToNextCellCommon = function (previous, backwards, event) {\n var editing = previous.isEditing();\n // if cell is not editing, there is still chance row is editing if it's Full Row Editing\n if (!editing && previous instanceof CellCtrl) {\n var cell = previous;\n var row = cell.getRowCtrl();\n if (row) {\n editing = row.isEditing();\n }\n }\n var res;\n if (editing) {\n // if we are editing, we know it's not a Full Width Row (RowComp)\n if (this.gridOptionsWrapper.isFullRowEdit()) {\n res = this.moveToNextEditingRow(previous, backwards, event);\n }\n else {\n res = this.moveToNextEditingCell(previous, backwards, event);\n }\n }\n else {\n res = this.moveToNextCellNotEditing(previous, backwards);\n }\n // if a cell wasn't found, it's possible that focus was moved to the header\n return res || !!this.focusService.getFocusedHeader();\n };\n NavigationService.prototype.moveToNextEditingCell = function (previousCell, backwards, event) {\n if (event === void 0) { event = null; }\n var previousPos = previousCell.getCellPosition();\n // need to do this before getting next cell to edit, in case the next cell\n // has editable function (eg colDef.editable=func() ) and it depends on the\n // result of this cell, so need to save updates from the first edit, in case\n // the value is referenced in the function.\n previousCell.stopEditing();\n // find the next cell to start editing\n var nextCell = this.findNextCellToFocusOn(previousPos, backwards, true);\n if (nextCell == null) {\n return false;\n }\n // only prevent default if we found a cell. so if user is on last cell and hits tab, then we default\n // to the normal tabbing so user can exit the grid.\n nextCell.startEditing(null, null, true, event);\n nextCell.focusCell(false);\n return true;\n };\n NavigationService.prototype.moveToNextEditingRow = function (previousCell, backwards, event) {\n if (event === void 0) { event = null; }\n var previousPos = previousCell.getCellPosition();\n // find the next cell to start editing\n var nextCell = this.findNextCellToFocusOn(previousPos, backwards, true);\n if (nextCell == null) {\n return false;\n }\n var nextPos = nextCell.getCellPosition();\n var previousEditable = this.isCellEditable(previousPos);\n var nextEditable = this.isCellEditable(nextPos);\n var rowsMatch = nextPos && previousPos.rowIndex === nextPos.rowIndex && previousPos.rowPinned === nextPos.rowPinned;\n if (previousEditable) {\n previousCell.setFocusOutOnEditor();\n }\n if (!rowsMatch) {\n var pRow = previousCell.getRowCtrl();\n pRow.stopEditing();\n var nRow = nextCell.getRowCtrl();\n nRow.startRowEditing(undefined, undefined, undefined, event);\n }\n if (nextEditable) {\n nextCell.setFocusInOnEditor();\n nextCell.focusCell();\n }\n else {\n nextCell.focusCell(true);\n }\n return true;\n };\n NavigationService.prototype.moveToNextCellNotEditing = function (previousCell, backwards) {\n var displayedColumns = this.columnModel.getAllDisplayedColumns();\n var cellPos;\n if (previousCell instanceof RowCtrl) {\n cellPos = __assign(__assign({}, previousCell.getRowPosition()), { column: backwards ? displayedColumns[0] : last(displayedColumns) });\n }\n else {\n cellPos = previousCell.getCellPosition();\n }\n // find the next cell to start editing\n var nextCell = this.findNextCellToFocusOn(cellPos, backwards, false);\n // only prevent default if we found a cell. so if user is on last cell and hits tab, then we default\n // to the normal tabbing so user can exit the grid.\n if (nextCell instanceof CellCtrl) {\n nextCell.focusCell(true);\n }\n else if (nextCell) {\n return this.tryToFocusFullWidthRow(nextCell.getRowPosition(), backwards);\n }\n return exists(nextCell);\n };\n // called by the cell, when tab is pressed while editing.\n // @return: RenderedCell when navigation successful, otherwise null\n NavigationService.prototype.findNextCellToFocusOn = function (previousPosition, backwards, startEditing) {\n var nextPosition = previousPosition;\n while (true) {\n if (previousPosition !== nextPosition) {\n previousPosition = nextPosition;\n }\n if (!backwards) {\n nextPosition = this.getLastCellOfColSpan(nextPosition);\n }\n nextPosition = this.cellNavigationService.getNextTabbedCell(nextPosition, backwards);\n // allow user to override what cell to go to next\n var userFunc = this.gridOptionsWrapper.getTabToNextCellFunc();\n if (exists(userFunc)) {\n var params = {\n backwards: backwards,\n editing: startEditing,\n previousCellPosition: previousPosition,\n nextCellPosition: nextPosition ? nextPosition : null,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi()\n };\n var userCell = userFunc(params);\n if (exists(userCell)) {\n if (userCell.floating) {\n doOnce(function () { console.warn(\"AG Grid: tabToNextCellFunc return type should have attributes: rowIndex, rowPinned, column. However you had 'floating', maybe you meant 'rowPinned'?\"); }, 'no floating in userCell');\n userCell.rowPinned = userCell.floating;\n }\n nextPosition = {\n rowIndex: userCell.rowIndex,\n column: userCell.column,\n rowPinned: userCell.rowPinned\n };\n }\n else {\n nextPosition = null;\n }\n }\n // if no 'next cell', means we have got to last cell of grid, so nothing to move to,\n // so bottom right cell going forwards, or top left going backwards\n if (!nextPosition) {\n return null;\n }\n if (nextPosition.rowIndex < 0) {\n var headerLen = this.headerNavigationService.getHeaderRowCount();\n this.focusService.focusHeaderPosition({\n headerPosition: {\n headerRowIndex: headerLen + (nextPosition.rowIndex),\n column: nextPosition.column\n }\n });\n return null;\n }\n // if editing, but cell not editable, skip cell. we do this before we do all of\n // the 'ensure index visible' and 'flush all frames', otherwise if we are skipping\n // a bunch of cells (eg 10 rows) then all the work on ensuring cell visible is useless\n // (except for the last one) which causes grid to stall for a while.\n // note - for full row edit, we do focus non-editable cells, as the row stays in edit mode.\n var fullRowEdit = this.gridOptionsWrapper.isFullRowEdit();\n if (startEditing && !fullRowEdit) {\n var cellIsEditable = this.isCellEditable(nextPosition);\n if (!cellIsEditable) {\n continue;\n }\n }\n this.ensureCellVisible(nextPosition);\n // we have to call this after ensureColumnVisible - otherwise it could be a virtual column\n // or row that is not currently in view, hence the renderedCell would not exist\n var nextCell = this.getCellByPosition(nextPosition);\n // if next cell is fullWidth row, then no rendered cell,\n // as fullWidth rows have no cells, so we skip it\n if (!nextCell) {\n var row = this.rowRenderer.getRowByPosition(nextPosition);\n if (!row || !row.isFullWidth()) {\n continue;\n }\n else {\n return row;\n }\n }\n if (nextCell.isSuppressNavigable()) {\n continue;\n }\n // by default, when we click a cell, it gets selected into a range, so to keep keyboard navigation\n // consistent, we set into range here also.\n if (this.rangeService) {\n this.rangeService.setRangeToCell(nextPosition);\n }\n // we successfully tabbed onto a grid cell, so return true\n return nextCell;\n }\n };\n NavigationService.prototype.isCellEditable = function (cell) {\n var rowNode = this.lookupRowNodeForCell(cell);\n if (rowNode) {\n return cell.column.isCellEditable(rowNode);\n }\n return false;\n };\n NavigationService.prototype.getCellByPosition = function (cellPosition) {\n var rowCtrl = this.rowRenderer.getRowByPosition(cellPosition);\n if (!rowCtrl) {\n return null;\n }\n return rowCtrl.getCellCtrl(cellPosition.column);\n };\n NavigationService.prototype.lookupRowNodeForCell = function (cell) {\n if (cell.rowPinned === Constants.PINNED_TOP) {\n return this.pinnedRowModel.getPinnedTopRow(cell.rowIndex);\n }\n if (cell.rowPinned === Constants.PINNED_BOTTOM) {\n return this.pinnedRowModel.getPinnedBottomRow(cell.rowIndex);\n }\n return this.paginationProxy.getRow(cell.rowIndex);\n };\n // we use index for rows, but column object for columns, as the next column (by index) might not\n // be visible (header grouping) so it's not reliable, so using the column object instead.\n NavigationService.prototype.navigateToNextCell = function (event, key, currentCell, allowUserOverride) {\n // we keep searching for a next cell until we find one. this is how the group rows get skipped\n var nextCell = currentCell;\n var hitEdgeOfGrid = false;\n while (nextCell && (nextCell === currentCell || !this.isValidNavigateCell(nextCell))) {\n // if the current cell is spanning across multiple columns, we need to move\n // our current position to be the last cell on the right before finding the\n // the next target.\n if (this.gridOptionsWrapper.isEnableRtl()) {\n if (key === KeyCode.LEFT) {\n nextCell = this.getLastCellOfColSpan(nextCell);\n }\n }\n else if (key === KeyCode.RIGHT) {\n nextCell = this.getLastCellOfColSpan(nextCell);\n }\n nextCell = this.cellNavigationService.getNextCellToFocus(key, nextCell);\n // eg if going down, and nextCell=undefined, means we are gone past the last row\n hitEdgeOfGrid = missing(nextCell);\n }\n if (hitEdgeOfGrid && event && event.key === KeyCode.UP) {\n nextCell = {\n rowIndex: -1,\n rowPinned: null,\n column: currentCell.column\n };\n }\n // allow user to override what cell to go to next. when doing normal cell navigation (with keys)\n // we allow this, however if processing 'enter after edit' we don't allow override\n if (allowUserOverride) {\n var userFunc = this.gridOptionsWrapper.getNavigateToNextCellFunc();\n if (exists(userFunc)) {\n var params = {\n key: key,\n previousCellPosition: currentCell,\n nextCellPosition: nextCell ? nextCell : null,\n event: event,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi()\n };\n var userCell = userFunc(params);\n if (exists(userCell)) {\n if (userCell.floating) {\n doOnce(function () { console.warn(\"AG Grid: tabToNextCellFunc return type should have attributes: rowIndex, rowPinned, column. However you had 'floating', maybe you meant 'rowPinned'?\"); }, 'no floating in userCell');\n userCell.rowPinned = userCell.floating;\n }\n nextCell = {\n rowPinned: userCell.rowPinned,\n rowIndex: userCell.rowIndex,\n column: userCell.column\n };\n }\n else {\n nextCell = null;\n }\n }\n }\n // no next cell means we have reached a grid boundary, eg left, right, top or bottom of grid\n if (!nextCell) {\n return;\n }\n if (nextCell.rowIndex < 0) {\n var headerLen = this.headerNavigationService.getHeaderRowCount();\n this.focusService.focusHeaderPosition({\n headerPosition: { headerRowIndex: headerLen + (nextCell.rowIndex), column: currentCell.column },\n event: event || undefined\n });\n return;\n }\n // in case we have col spanning we get the cellComp and use it to get the\n // position. This was we always focus the first cell inside the spanning.\n var normalisedPosition = this.getNormalisedPosition(nextCell);\n if (normalisedPosition) {\n this.focusPosition(normalisedPosition);\n }\n else {\n this.tryToFocusFullWidthRow(nextCell);\n }\n };\n NavigationService.prototype.getNormalisedPosition = function (cellPosition) {\n // ensureCellVisible first, to make sure cell at position is rendered.\n this.ensureCellVisible(cellPosition);\n var cellComp = this.getCellByPosition(cellPosition);\n // not guaranteed to have a cellComp when using the SSRM as blocks are loading.\n if (!cellComp) {\n return null;\n }\n cellPosition = cellComp.getCellPosition();\n // we call this again, as nextCell can be different to it's previous value due to Column Spanning\n // (ie if cursor moving from right to left, and cell is spanning columns, then nextCell was the\n // last column in the group, however now it's the first column in the group). if we didn't do\n // ensureCellVisible again, then we could only be showing the last portion (last column) of the\n // merged cells.\n this.ensureCellVisible(cellPosition);\n return cellPosition;\n };\n NavigationService.prototype.tryToFocusFullWidthRow = function (position, backwards) {\n if (backwards === void 0) { backwards = false; }\n var displayedColumns = this.columnModel.getAllDisplayedColumns();\n var rowComp = this.rowRenderer.getRowByPosition(position);\n if (!rowComp || !rowComp.isFullWidth()) {\n return false;\n }\n var cellPosition = {\n rowIndex: position.rowIndex,\n rowPinned: position.rowPinned,\n column: position.column || (backwards ? last(displayedColumns) : displayedColumns[0])\n };\n this.focusPosition(cellPosition);\n return true;\n };\n NavigationService.prototype.focusPosition = function (cellPosition) {\n this.focusService.setFocusedCell(cellPosition.rowIndex, cellPosition.column, cellPosition.rowPinned, true);\n if (this.rangeService) {\n this.rangeService.setRangeToCell(cellPosition);\n }\n };\n NavigationService.prototype.isValidNavigateCell = function (cell) {\n var rowNode = this.rowPositionUtils.getRowNode(cell);\n // we do not allow focusing on detail rows and full width rows\n return !!rowNode;\n };\n NavigationService.prototype.getLastCellOfColSpan = function (cell) {\n var cellCtrl = this.getCellByPosition(cell);\n if (!cellCtrl) {\n return cell;\n }\n var colSpanningList = cellCtrl.getColSpanningList();\n if (colSpanningList.length === 1) {\n return cell;\n }\n return {\n rowIndex: cell.rowIndex,\n column: last(colSpanningList),\n rowPinned: cell.rowPinned\n };\n };\n NavigationService.prototype.ensureCellVisible = function (gridCell) {\n // this scrolls the row into view\n if (missing(gridCell.rowPinned)) {\n this.gridBodyCon.getScrollFeature().ensureIndexVisible(gridCell.rowIndex);\n }\n if (!gridCell.column.isPinned()) {\n this.gridBodyCon.getScrollFeature().ensureColumnVisible(gridCell.column);\n }\n // need to nudge the scrolls for the floating items. otherwise when we set focus on a non-visible\n // floating cell, the scrolls get out of sync\n this.gridBodyCon.getScrollFeature().horizontallyScrollHeaderCenterAndFloatingCenter();\n // need to flush frames, to make sure the correct cells are rendered\n this.animationFrameService.flushAllFrames();\n };\n __decorate([\n Autowired('mouseEventService')\n ], NavigationService.prototype, \"mouseEventService\", void 0);\n __decorate([\n Autowired('paginationProxy')\n ], NavigationService.prototype, \"paginationProxy\", void 0);\n __decorate([\n Autowired('focusService')\n ], NavigationService.prototype, \"focusService\", void 0);\n __decorate([\n Autowired('animationFrameService')\n ], NavigationService.prototype, \"animationFrameService\", void 0);\n __decorate([\n Optional('rangeService')\n ], NavigationService.prototype, \"rangeService\", void 0);\n __decorate([\n Autowired('columnModel')\n ], NavigationService.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('ctrlsService')\n ], NavigationService.prototype, \"ctrlsService\", void 0);\n __decorate([\n Autowired('rowRenderer')\n ], NavigationService.prototype, \"rowRenderer\", void 0);\n __decorate([\n Autowired('headerNavigationService')\n ], NavigationService.prototype, \"headerNavigationService\", void 0);\n __decorate([\n Autowired(\"rowPositionUtils\")\n ], NavigationService.prototype, \"rowPositionUtils\", void 0);\n __decorate([\n Autowired(\"cellNavigationService\")\n ], NavigationService.prototype, \"cellNavigationService\", void 0);\n __decorate([\n Autowired(\"pinnedRowModel\")\n ], NavigationService.prototype, \"pinnedRowModel\", void 0);\n __decorate([\n PostConstruct\n ], NavigationService.prototype, \"postConstruct\", null);\n NavigationService = __decorate([\n Bean('navigationService')\n ], NavigationService);\n return NavigationService;\n}(BeanStub));\nexport { NavigationService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { BeanStub } from \"../context/beanStub\";\nimport { Autowired, Bean, PostConstruct, Qualifier } from \"../context/context\";\nimport { Events } from \"../eventKeys\";\nimport { getMaxDivHeight } from \"../utils/browser\";\n/**\n * This class solves the 'max height' problem, where the user might want to show more data than\n * the max div height actually allows.\n */\nvar RowContainerHeightService = /** @class */ (function (_super) {\n __extends(RowContainerHeightService, _super);\n function RowContainerHeightService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // the scrollY position\n _this.scrollY = 0;\n // how tall the body is\n _this.uiBodyHeight = 0;\n return _this;\n }\n RowContainerHeightService.prototype.agWire = function (loggerFactory) {\n this.logger = loggerFactory.create(\"RowContainerHeightService\");\n };\n RowContainerHeightService.prototype.postConstruct = function () {\n this.addManagedListener(this.eventService, Events.EVENT_BODY_HEIGHT_CHANGED, this.updateOffset.bind(this));\n this.maxDivHeight = getMaxDivHeight();\n this.logger.log('maxDivHeight = ' + this.maxDivHeight);\n };\n RowContainerHeightService.prototype.isStretching = function () {\n return this.stretching;\n };\n RowContainerHeightService.prototype.getDivStretchOffset = function () {\n return this.divStretchOffset;\n };\n RowContainerHeightService.prototype.updateOffset = function () {\n if (!this.stretching) {\n return;\n }\n var gridBodyCon = this.ctrlsService.getGridBodyCtrl();\n var newScrollY = gridBodyCon.getScrollFeature().getVScrollPosition().top;\n var newBodyHeight = this.getUiBodyHeight();\n var atLeastOneChanged = newScrollY !== this.scrollY || newBodyHeight !== this.uiBodyHeight;\n if (atLeastOneChanged) {\n this.scrollY = newScrollY;\n this.uiBodyHeight = newBodyHeight;\n this.calculateOffset();\n }\n };\n RowContainerHeightService.prototype.calculateOffset = function () {\n this.setUiContainerHeight(this.maxDivHeight);\n this.pixelsToShave = this.modelHeight - this.uiContainerHeight;\n this.maxScrollY = this.uiContainerHeight - this.uiBodyHeight;\n var scrollPercent = this.scrollY / this.maxScrollY;\n var divStretchOffset = scrollPercent * this.pixelsToShave;\n this.logger.log(\"Div Stretch Offset = \" + divStretchOffset + \" (\" + this.pixelsToShave + \" * \" + scrollPercent + \")\");\n this.setDivStretchOffset(divStretchOffset);\n };\n RowContainerHeightService.prototype.setUiContainerHeight = function (height) {\n if (height !== this.uiContainerHeight) {\n this.uiContainerHeight = height;\n this.eventService.dispatchEvent({ type: Events.EVENT_ROW_CONTAINER_HEIGHT_CHANGED });\n }\n };\n RowContainerHeightService.prototype.clearOffset = function () {\n this.setUiContainerHeight(this.modelHeight);\n this.pixelsToShave = 0;\n this.setDivStretchOffset(0);\n };\n RowContainerHeightService.prototype.setDivStretchOffset = function (newOffset) {\n // because we are talking pixels, no point in confusing things with half numbers\n var newOffsetFloor = typeof newOffset === 'number' ? Math.floor(newOffset) : null;\n if (this.divStretchOffset === newOffsetFloor) {\n return;\n }\n this.divStretchOffset = newOffsetFloor;\n this.eventService.dispatchEvent({ type: Events.EVENT_HEIGHT_SCALE_CHANGED });\n };\n RowContainerHeightService.prototype.setModelHeight = function (modelHeight) {\n this.modelHeight = modelHeight;\n this.stretching = modelHeight != null // null happens when in print layout\n && this.maxDivHeight > 0\n && modelHeight > this.maxDivHeight;\n if (this.stretching) {\n this.calculateOffset();\n }\n else {\n this.clearOffset();\n }\n };\n RowContainerHeightService.prototype.getUiContainerHeight = function () {\n return this.uiContainerHeight;\n };\n RowContainerHeightService.prototype.getRealPixelPosition = function (modelPixel) {\n return modelPixel - this.divStretchOffset;\n };\n RowContainerHeightService.prototype.getUiBodyHeight = function () {\n var gridBodyCon = this.ctrlsService.getGridBodyCtrl();\n var pos = gridBodyCon.getScrollFeature().getVScrollPosition();\n return pos.bottom - pos.top;\n };\n RowContainerHeightService.prototype.getScrollPositionForPixel = function (rowTop) {\n if (this.pixelsToShave <= 0) {\n return rowTop;\n }\n var modelMaxScroll = this.modelHeight - this.getUiBodyHeight();\n var scrollPercent = rowTop / modelMaxScroll;\n var scrollPixel = this.maxScrollY * scrollPercent;\n return scrollPixel;\n };\n __decorate([\n Autowired('ctrlsService')\n ], RowContainerHeightService.prototype, \"ctrlsService\", void 0);\n __decorate([\n __param(0, Qualifier(\"loggerFactory\"))\n ], RowContainerHeightService.prototype, \"agWire\", null);\n __decorate([\n PostConstruct\n ], RowContainerHeightService.prototype, \"postConstruct\", null);\n RowContainerHeightService = __decorate([\n Bean('rowContainerHeightService')\n ], RowContainerHeightService);\n return RowContainerHeightService;\n}(BeanStub));\nexport { RowContainerHeightService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Bean, PostConstruct } from \"../context/context\";\nimport { BeanStub } from \"../context/beanStub\";\nimport { exists } from \"../utils/generic\";\nvar SelectableService = /** @class */ (function (_super) {\n __extends(SelectableService, _super);\n function SelectableService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SelectableService.prototype.init = function () {\n this.groupSelectsChildren = this.gridOptionsWrapper.isGroupSelectsChildren();\n this.isRowSelectableFunc = this.gridOptionsWrapper.getIsRowSelectableFunc();\n };\n SelectableService.prototype.updateSelectableAfterGrouping = function (rowNode) {\n if (this.isRowSelectableFunc) {\n var nextChildrenFunc = function (node) { return node.childrenAfterGroup; };\n this.recurseDown(rowNode.childrenAfterGroup, nextChildrenFunc);\n }\n };\n SelectableService.prototype.updateSelectableAfterFiltering = function (rowNode) {\n if (this.isRowSelectableFunc) {\n var nextChildrenFunc = function (node) { return node.childrenAfterFilter; };\n this.recurseDown(rowNode.childrenAfterGroup, nextChildrenFunc);\n }\n };\n SelectableService.prototype.recurseDown = function (children, nextChildrenFunc) {\n var _this = this;\n if (!children) {\n return;\n }\n children.forEach(function (child) {\n if (!child.group) {\n return;\n } // only interested in groups\n if (child.hasChildren()) {\n _this.recurseDown(nextChildrenFunc(child), nextChildrenFunc);\n }\n var rowSelectable;\n if (_this.groupSelectsChildren) {\n // have this group selectable if at least one direct child is selectable\n var firstSelectable = (nextChildrenFunc(child) || []).find(function (rowNode) { return rowNode.selectable === true; });\n rowSelectable = exists(firstSelectable);\n }\n else {\n // directly retrieve selectable value from user callback\n rowSelectable = _this.isRowSelectableFunc ? _this.isRowSelectableFunc(child) : false;\n }\n child.setRowSelectable(rowSelectable);\n });\n };\n __decorate([\n PostConstruct\n ], SelectableService.prototype, \"init\", null);\n SelectableService = __decorate([\n Bean('selectableService')\n ], SelectableService);\n return SelectableService;\n}(BeanStub));\nexport { SelectableService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component } from \"../widgets/component\";\nimport { Autowired, PostConstruct } from \"../context/context\";\nimport { RefSelector } from \"../widgets/componentAnnotations\";\nimport { Events } from \"../events\";\nimport { createIconNoSpan } from \"../utils/icon\";\nimport { formatNumberCommas } from \"../utils/number\";\nimport { setAriaDisabled } from \"../utils/aria\";\nimport { KeyCode } from '../constants/keyCode';\nvar PaginationComp = /** @class */ (function (_super) {\n __extends(PaginationComp, _super);\n function PaginationComp() {\n var _this = _super.call(this) || this;\n _this.previousAndFirstButtonsDisabled = false;\n _this.nextButtonDisabled = false;\n _this.lastButtonDisabled = false;\n return _this;\n }\n PaginationComp.prototype.postConstruct = function () {\n var _this = this;\n var isRtl = this.gridOptionsWrapper.isEnableRtl();\n this.setTemplate(this.getTemplate());\n this.btFirst.insertAdjacentElement('afterbegin', createIconNoSpan(isRtl ? 'last' : 'first', this.gridOptionsWrapper));\n this.btPrevious.insertAdjacentElement('afterbegin', createIconNoSpan(isRtl ? 'next' : 'previous', this.gridOptionsWrapper));\n this.btNext.insertAdjacentElement('afterbegin', createIconNoSpan(isRtl ? 'previous' : 'next', this.gridOptionsWrapper));\n this.btLast.insertAdjacentElement('afterbegin', createIconNoSpan(isRtl ? 'first' : 'last', this.gridOptionsWrapper));\n var isPaging = this.gridOptionsWrapper.isPagination();\n var paginationPanelEnabled = isPaging && !this.gridOptionsWrapper.isSuppressPaginationPanel();\n if (!paginationPanelEnabled) {\n this.setDisplayed(false);\n return;\n }\n this.addManagedListener(this.eventService, Events.EVENT_PAGINATION_CHANGED, this.onPaginationChanged.bind(this));\n [\n { el: this.btFirst, fn: this.onBtFirst.bind(this) },\n { el: this.btPrevious, fn: this.onBtPrevious.bind(this) },\n { el: this.btNext, fn: this.onBtNext.bind(this) },\n { el: this.btLast, fn: this.onBtLast.bind(this) }\n ].forEach(function (item) {\n var el = item.el, fn = item.fn;\n _this.addManagedListener(el, 'click', fn);\n _this.addManagedListener(el, 'keydown', function (e) {\n if (e.key === KeyCode.ENTER || e.key === KeyCode.SPACE) {\n e.preventDefault();\n fn();\n }\n });\n });\n this.onPaginationChanged();\n };\n PaginationComp.prototype.onPaginationChanged = function () {\n this.enableOrDisableButtons();\n this.updateRowLabels();\n this.setCurrentPageLabel();\n this.setTotalLabels();\n };\n PaginationComp.prototype.onBtFirst = function () {\n if (!this.previousAndFirstButtonsDisabled) {\n this.paginationProxy.goToFirstPage();\n }\n };\n PaginationComp.prototype.setCurrentPageLabel = function () {\n var pagesExist = this.paginationProxy.getTotalPages() > 0;\n var currentPage = this.paginationProxy.getCurrentPage();\n var toDisplay = pagesExist ? currentPage + 1 : 0;\n this.lbCurrent.innerHTML = this.formatNumber(toDisplay);\n };\n PaginationComp.prototype.formatNumber = function (value) {\n var userFunc = this.gridOptionsWrapper.getPaginationNumberFormatterFunc();\n if (userFunc) {\n return userFunc({ value: value });\n }\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var thousandSeparator = localeTextFunc('thousandSeparator', ',');\n var decimalSeparator = localeTextFunc('decimalSeparator', '.');\n return formatNumberCommas(value, thousandSeparator, decimalSeparator);\n };\n PaginationComp.prototype.getTemplate = function () {\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var strPage = localeTextFunc('page', 'Page');\n var strTo = localeTextFunc('to', 'to');\n var strOf = localeTextFunc('of', 'of');\n var strFirst = localeTextFunc('firstPage', 'First Page');\n var strPrevious = localeTextFunc('previousPage', 'Previous Page');\n var strNext = localeTextFunc('nextPage', 'Next Page');\n var strLast = localeTextFunc('lastPage', 'Last Page');\n var compId = this.getCompId();\n return /* html */ \"
    \\n \\n \\n \" + strTo + \"\\n \\n \" + strOf + \"\\n \\n \\n \\n
    \\n
    \\n \\n \" + strPage + \"\\n \\n \" + strOf + \"\\n \\n \\n
    \\n
    \\n
    \\n
    \";\n };\n PaginationComp.prototype.onBtNext = function () {\n if (!this.nextButtonDisabled) {\n this.paginationProxy.goToNextPage();\n }\n };\n PaginationComp.prototype.onBtPrevious = function () {\n if (!this.previousAndFirstButtonsDisabled) {\n this.paginationProxy.goToPreviousPage();\n }\n };\n PaginationComp.prototype.onBtLast = function () {\n if (!this.lastButtonDisabled) {\n this.paginationProxy.goToLastPage();\n }\n };\n PaginationComp.prototype.enableOrDisableButtons = function () {\n var currentPage = this.paginationProxy.getCurrentPage();\n var maxRowFound = this.paginationProxy.isLastPageFound();\n var totalPages = this.paginationProxy.getTotalPages();\n this.previousAndFirstButtonsDisabled = currentPage === 0;\n this.btFirst.classList.toggle('ag-disabled', this.previousAndFirstButtonsDisabled);\n setAriaDisabled(this.btFirst, this.previousAndFirstButtonsDisabled);\n this.btPrevious.classList.toggle('ag-disabled', this.previousAndFirstButtonsDisabled);\n setAriaDisabled(this.btPrevious, this.previousAndFirstButtonsDisabled);\n var zeroPagesToDisplay = this.isZeroPagesToDisplay();\n var onLastPage = maxRowFound && currentPage === (totalPages - 1);\n this.nextButtonDisabled = onLastPage || zeroPagesToDisplay;\n this.btNext.classList.toggle('ag-disabled', this.nextButtonDisabled);\n setAriaDisabled(this.btNext, this.nextButtonDisabled);\n this.lastButtonDisabled = !maxRowFound || zeroPagesToDisplay || currentPage === (totalPages - 1);\n this.btLast.classList.toggle('ag-disabled', this.lastButtonDisabled);\n setAriaDisabled(this.btLast, this.lastButtonDisabled);\n };\n PaginationComp.prototype.updateRowLabels = function () {\n var currentPage = this.paginationProxy.getCurrentPage();\n var pageSize = this.paginationProxy.getPageSize();\n var maxRowFound = this.paginationProxy.isLastPageFound();\n var rowCount = this.paginationProxy.isLastPageFound() ?\n this.paginationProxy.getMasterRowCount() : null;\n var startRow;\n var endRow;\n if (this.isZeroPagesToDisplay()) {\n startRow = endRow = 0;\n }\n else {\n startRow = (pageSize * currentPage) + 1;\n endRow = startRow + pageSize - 1;\n if (maxRowFound && endRow > rowCount) {\n endRow = rowCount;\n }\n }\n this.lbFirstRowOnPage.innerHTML = this.formatNumber(startRow);\n if (this.rowNodeBlockLoader.isLoading()) {\n this.lbLastRowOnPage.innerHTML = '?';\n }\n else {\n this.lbLastRowOnPage.innerHTML = this.formatNumber(endRow);\n }\n };\n PaginationComp.prototype.isZeroPagesToDisplay = function () {\n var maxRowFound = this.paginationProxy.isLastPageFound();\n var totalPages = this.paginationProxy.getTotalPages();\n return maxRowFound && totalPages === 0;\n };\n PaginationComp.prototype.setTotalLabels = function () {\n var lastPageFound = this.paginationProxy.isLastPageFound();\n var totalPages = this.paginationProxy.getTotalPages();\n var rowCount = lastPageFound ? this.paginationProxy.getMasterRowCount() : null;\n // When `pivotMode=true` and no grouping or value columns exist, a single 'hidden' group row (root node) is in\n // the grid and the pagination totals will correctly display total = 1. However this is confusing to users as\n // they can't see it. To address this UX issue we simply set the totals to zero in the pagination panel.\n if (rowCount === 1) {\n var firstRow = this.paginationProxy.getRow(0);\n // a group node with no group or agg data will not be visible to users\n var hiddenGroupRow = firstRow && firstRow.group && !(firstRow.groupData || firstRow.aggData);\n if (hiddenGroupRow) {\n this.setTotalLabelsToZero();\n return;\n }\n }\n if (lastPageFound) {\n this.lbTotal.innerHTML = this.formatNumber(totalPages);\n this.lbRecordCount.innerHTML = this.formatNumber(rowCount);\n }\n else {\n var moreText = this.gridOptionsWrapper.getLocaleTextFunc()('more', 'more');\n this.lbTotal.innerHTML = moreText;\n this.lbRecordCount.innerHTML = moreText;\n }\n };\n PaginationComp.prototype.setTotalLabelsToZero = function () {\n this.lbFirstRowOnPage.innerHTML = this.formatNumber(0);\n this.lbCurrent.innerHTML = this.formatNumber(0);\n this.lbLastRowOnPage.innerHTML = this.formatNumber(0);\n this.lbTotal.innerHTML = this.formatNumber(0);\n this.lbRecordCount.innerHTML = this.formatNumber(0);\n };\n __decorate([\n Autowired('paginationProxy')\n ], PaginationComp.prototype, \"paginationProxy\", void 0);\n __decorate([\n Autowired('rowNodeBlockLoader')\n ], PaginationComp.prototype, \"rowNodeBlockLoader\", void 0);\n __decorate([\n RefSelector('btFirst')\n ], PaginationComp.prototype, \"btFirst\", void 0);\n __decorate([\n RefSelector('btPrevious')\n ], PaginationComp.prototype, \"btPrevious\", void 0);\n __decorate([\n RefSelector('btNext')\n ], PaginationComp.prototype, \"btNext\", void 0);\n __decorate([\n RefSelector('btLast')\n ], PaginationComp.prototype, \"btLast\", void 0);\n __decorate([\n RefSelector('lbRecordCount')\n ], PaginationComp.prototype, \"lbRecordCount\", void 0);\n __decorate([\n RefSelector('lbFirstRowOnPage')\n ], PaginationComp.prototype, \"lbFirstRowOnPage\", void 0);\n __decorate([\n RefSelector('lbLastRowOnPage')\n ], PaginationComp.prototype, \"lbLastRowOnPage\", void 0);\n __decorate([\n RefSelector('lbCurrent')\n ], PaginationComp.prototype, \"lbCurrent\", void 0);\n __decorate([\n RefSelector('lbTotal')\n ], PaginationComp.prototype, \"lbTotal\", void 0);\n __decorate([\n PostConstruct\n ], PaginationComp.prototype, \"postConstruct\", null);\n return PaginationComp;\n}(Component));\nexport { PaginationComp };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Bean } from \"../context/context\";\nimport { BeanStub } from \"../context/beanStub\";\nimport { debounce } from \"../utils/function\";\nimport { offsetHeight, offsetWidth } from \"../utils/dom\";\nvar DEBOUNCE_DELAY = 50;\nvar ResizeObserverService = /** @class */ (function (_super) {\n __extends(ResizeObserverService, _super);\n function ResizeObserverService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.polyfillFunctions = [];\n return _this;\n }\n ResizeObserverService.prototype.observeResize = function (element, callback) {\n var _this = this;\n var eDocument = this.gridOptionsWrapper.getDocument();\n var win = (eDocument.defaultView || window);\n // this gets fired too often and might cause some relayout issues\n // so we add a debounce to the callback here to avoid the flashing effect.\n var debouncedCallback = debounce(callback, DEBOUNCE_DELAY);\n var useBrowserResizeObserver = function () {\n var resizeObserver = new win.ResizeObserver(debouncedCallback);\n resizeObserver.observe(element);\n return function () { return resizeObserver.disconnect(); };\n };\n var usePolyfill = function () {\n // initialise to the current width and height, so first call will have no changes\n var widthLastTime = offsetWidth(element);\n var heightLastTime = offsetHeight(element);\n // when finished, this gets turned to false.\n var running = true;\n var periodicallyCheckWidthAndHeight = function () {\n if (running) {\n var newWidth = offsetWidth(element);\n var newHeight = offsetHeight(element);\n var changed = newWidth !== widthLastTime || newHeight !== heightLastTime;\n if (changed) {\n widthLastTime = newWidth;\n heightLastTime = newHeight;\n callback();\n }\n _this.doNextPolyfillTurn(periodicallyCheckWidthAndHeight);\n }\n };\n periodicallyCheckWidthAndHeight();\n // the callback function we return sets running to false\n return function () { return running = false; };\n };\n var suppressResize = this.gridOptionsWrapper.isSuppressBrowserResizeObserver();\n var resizeObserverExists = !!win.ResizeObserver;\n if (resizeObserverExists && !suppressResize) {\n return useBrowserResizeObserver();\n }\n return usePolyfill();\n };\n ResizeObserverService.prototype.doNextPolyfillTurn = function (func) {\n this.polyfillFunctions.push(func);\n this.schedulePolyfill();\n };\n ResizeObserverService.prototype.schedulePolyfill = function () {\n var _this = this;\n if (this.polyfillScheduled) {\n return;\n }\n var executeAllFuncs = function () {\n var funcs = _this.polyfillFunctions;\n // make sure set scheduled to false and clear clear array\n // before executing the funcs, as the funcs could add more funcs\n _this.polyfillScheduled = false;\n _this.polyfillFunctions = [];\n funcs.forEach(function (f) { return f(); });\n };\n this.polyfillScheduled = true;\n this.getFrameworkOverrides().setTimeout(executeAllFuncs, DEBOUNCE_DELAY);\n };\n ResizeObserverService = __decorate([\n Bean('resizeObserverService')\n ], ResizeObserverService);\n return ResizeObserverService;\n}(BeanStub));\nexport { ResizeObserverService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, PostConstruct } from '../../context/context';\nimport { Component } from '../../widgets/component';\nimport { RefSelector } from '../../widgets/componentAnnotations';\nimport { clearElement } from '../../utils/dom';\nimport { LayoutCssClasses, LayoutFeature } from \"../../styling/layoutFeature\";\nimport { Events } from \"../../eventKeys\";\nvar LoadingType;\n(function (LoadingType) {\n LoadingType[LoadingType[\"Loading\"] = 0] = \"Loading\";\n LoadingType[LoadingType[\"NoRows\"] = 1] = \"NoRows\";\n})(LoadingType || (LoadingType = {}));\nvar OverlayWrapperComponent = /** @class */ (function (_super) {\n __extends(OverlayWrapperComponent, _super);\n function OverlayWrapperComponent() {\n var _this = _super.call(this, OverlayWrapperComponent.TEMPLATE) || this;\n _this.inProgress = false;\n _this.destroyRequested = false;\n return _this;\n }\n OverlayWrapperComponent.prototype.updateLayoutClasses = function (cssClass, params) {\n var overlayWrapperClassList = this.eOverlayWrapper.classList;\n overlayWrapperClassList.toggle(LayoutCssClasses.AUTO_HEIGHT, params.autoHeight);\n overlayWrapperClassList.toggle(LayoutCssClasses.NORMAL, params.normal);\n overlayWrapperClassList.toggle(LayoutCssClasses.PRINT, params.print);\n };\n OverlayWrapperComponent.prototype.postConstruct = function () {\n this.createManagedBean(new LayoutFeature(this));\n this.setDisplayed(false);\n this.addManagedListener(this.eventService, Events.EVENT_ROW_DATA_CHANGED, this.onRowDataChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_ROW_DATA_UPDATED, this.onRowDataChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.onNewColumnsLoaded.bind(this));\n if (this.gridOptionsWrapper.isRowModelDefault() && !this.gridOptionsWrapper.getRowData()) {\n this.showLoadingOverlay();\n }\n this.gridApi.registerOverlayWrapperComp(this);\n };\n OverlayWrapperComponent.prototype.setWrapperTypeClass = function (loadingType) {\n var overlayWrapperClassList = this.eOverlayWrapper.classList;\n overlayWrapperClassList.toggle('ag-overlay-loading-wrapper', loadingType === LoadingType.Loading);\n overlayWrapperClassList.toggle('ag-overlay-no-rows-wrapper', loadingType === LoadingType.NoRows);\n };\n OverlayWrapperComponent.prototype.showLoadingOverlay = function () {\n if (this.gridOptionsWrapper.isSuppressLoadingOverlay()) {\n return;\n }\n var params = {\n api: this.gridOptionsWrapper.getApi()\n };\n var compDetails = this.userComponentFactory.getLoadingOverlayCompDetails(params);\n var promise = compDetails.newAgStackInstance();\n this.showOverlay(promise, LoadingType.Loading);\n };\n OverlayWrapperComponent.prototype.showNoRowsOverlay = function () {\n if (this.gridOptionsWrapper.isSuppressNoRowsOverlay()) {\n return;\n }\n var params = {\n api: this.gridOptionsWrapper.getApi()\n };\n var compDetails = this.userComponentFactory.getNoRowsOverlayCompDetails(params);\n var promise = compDetails.newAgStackInstance();\n this.showOverlay(promise, LoadingType.NoRows);\n };\n OverlayWrapperComponent.prototype.showOverlay = function (workItem, type) {\n var _this = this;\n if (this.inProgress) {\n return;\n }\n this.setWrapperTypeClass(type);\n this.destroyActiveOverlay();\n this.inProgress = true;\n if (workItem) {\n workItem.then(function (comp) {\n _this.inProgress = false;\n _this.eOverlayWrapper.appendChild(comp.getGui());\n _this.activeOverlay = comp;\n if (_this.destroyRequested) {\n _this.destroyRequested = false;\n _this.destroyActiveOverlay();\n }\n });\n }\n this.setDisplayed(true);\n };\n OverlayWrapperComponent.prototype.destroyActiveOverlay = function () {\n if (this.inProgress) {\n this.destroyRequested = true;\n return;\n }\n if (!this.activeOverlay) {\n return;\n }\n this.activeOverlay = this.getContext().destroyBean(this.activeOverlay);\n clearElement(this.eOverlayWrapper);\n };\n OverlayWrapperComponent.prototype.hideOverlay = function () {\n this.destroyActiveOverlay();\n this.setDisplayed(false);\n };\n OverlayWrapperComponent.prototype.destroy = function () {\n this.destroyActiveOverlay();\n _super.prototype.destroy.call(this);\n };\n OverlayWrapperComponent.prototype.showOrHideOverlay = function () {\n var isEmpty = this.paginationProxy.isEmpty();\n var isSuppressNoRowsOverlay = this.gridOptionsWrapper.isSuppressNoRowsOverlay();\n if (isEmpty && !isSuppressNoRowsOverlay) {\n this.showNoRowsOverlay();\n }\n else {\n this.hideOverlay();\n }\n };\n OverlayWrapperComponent.prototype.onRowDataChanged = function () {\n this.showOrHideOverlay();\n };\n OverlayWrapperComponent.prototype.onNewColumnsLoaded = function () {\n // hide overlay if columns and rows exist, this can happen if columns are loaded after data.\n // this problem exists before of the race condition between the services (column controller in this case)\n // and the view (grid panel). if the model beans were all initialised first, and then the view beans second,\n // this race condition would not happen.\n if (this.columnModel.isReady() && !this.paginationProxy.isEmpty()) {\n this.hideOverlay();\n }\n };\n // wrapping in outer div, and wrapper, is needed to center the loading icon\n // The idea for centering came from here: http://www.vanseodesign.com/css/vertical-centering/\n OverlayWrapperComponent.TEMPLATE = \"\\n
    \\n
    \\n
    \\n
    \\n
    \";\n __decorate([\n Autowired('userComponentFactory')\n ], OverlayWrapperComponent.prototype, \"userComponentFactory\", void 0);\n __decorate([\n Autowired('paginationProxy')\n ], OverlayWrapperComponent.prototype, \"paginationProxy\", void 0);\n __decorate([\n Autowired('gridApi')\n ], OverlayWrapperComponent.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('columnModel')\n ], OverlayWrapperComponent.prototype, \"columnModel\", void 0);\n __decorate([\n RefSelector('eOverlayWrapper')\n ], OverlayWrapperComponent.prototype, \"eOverlayWrapper\", void 0);\n __decorate([\n PostConstruct\n ], OverlayWrapperComponent.prototype, \"postConstruct\", null);\n return OverlayWrapperComponent;\n}(Component));\nexport { OverlayWrapperComponent };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component } from './component';\nimport { RefSelector } from './componentAnnotations';\nimport { PostConstruct } from '../context/context';\nimport { createIcon } from '../utils/icon';\nimport { setDisplayed } from '../utils/dom';\nimport { KeyCode } from '../constants/keyCode';\nimport { setAriaExpanded } from '../utils/aria';\nvar AgGroupComponent = /** @class */ (function (_super) {\n __extends(AgGroupComponent, _super);\n function AgGroupComponent(params) {\n if (params === void 0) { params = {}; }\n var _this = _super.call(this, AgGroupComponent.getTemplate(params)) || this;\n _this.suppressEnabledCheckbox = true;\n _this.suppressOpenCloseIcons = false;\n var title = params.title, enabled = params.enabled, items = params.items, suppressEnabledCheckbox = params.suppressEnabledCheckbox, suppressOpenCloseIcons = params.suppressOpenCloseIcons;\n _this.title = title;\n _this.cssIdentifier = params.cssIdentifier || 'default';\n _this.enabled = enabled != null ? enabled : true;\n _this.items = items || [];\n _this.alignItems = params.alignItems || 'center';\n if (suppressEnabledCheckbox != null) {\n _this.suppressEnabledCheckbox = suppressEnabledCheckbox;\n }\n if (suppressOpenCloseIcons != null) {\n _this.suppressOpenCloseIcons = suppressOpenCloseIcons;\n }\n return _this;\n }\n AgGroupComponent.getTemplate = function (params) {\n var cssIdentifier = params.cssIdentifier || 'default';\n var direction = params.direction || 'vertical';\n return /* html */ \"
    \\n
    \\n \\n \\n \\n
    \\n
    \\n \\n
    \\n
    \\n
    \";\n };\n AgGroupComponent.prototype.postConstruct = function () {\n if (this.items.length) {\n var initialItems = this.items;\n this.items = [];\n this.addItems(initialItems);\n }\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n this.cbGroupEnabled.setLabel(localeTextFunc('enabled', 'Enabled'));\n if (this.title) {\n this.setTitle(this.title);\n }\n if (this.enabled) {\n this.setEnabled(this.enabled);\n }\n this.setAlignItems(this.alignItems);\n this.hideEnabledCheckbox(this.suppressEnabledCheckbox);\n this.hideOpenCloseIcons(this.suppressOpenCloseIcons);\n this.setupExpandContract();\n this.refreshAriaStatus();\n this.refreshChildDisplay();\n };\n AgGroupComponent.prototype.setupExpandContract = function () {\n var _this = this;\n this.eGroupClosedIcon.appendChild(createIcon('columnSelectClosed', this.gridOptionsWrapper, null));\n this.eGroupOpenedIcon.appendChild(createIcon('columnSelectOpen', this.gridOptionsWrapper, null));\n this.addManagedListener(this.eTitleBar, 'click', function () { return _this.toggleGroupExpand(); });\n this.addManagedListener(this.eTitleBar, 'keydown', function (e) {\n switch (e.key) {\n case KeyCode.ENTER:\n case KeyCode.SPACE:\n e.preventDefault();\n _this.toggleGroupExpand();\n break;\n case KeyCode.RIGHT:\n case KeyCode.LEFT:\n e.preventDefault();\n _this.toggleGroupExpand(e.key === KeyCode.RIGHT);\n break;\n }\n });\n };\n AgGroupComponent.prototype.refreshAriaStatus = function () {\n if (!this.suppressOpenCloseIcons) {\n setAriaExpanded(this.eTitleBar, this.expanded);\n }\n };\n AgGroupComponent.prototype.refreshChildDisplay = function () {\n var showIcon = !this.suppressOpenCloseIcons;\n setDisplayed(this.eToolbar, this.expanded && !this.suppressEnabledCheckbox);\n setDisplayed(this.eGroupOpenedIcon, showIcon && this.expanded);\n setDisplayed(this.eGroupClosedIcon, showIcon && !this.expanded);\n };\n AgGroupComponent.prototype.isExpanded = function () {\n return this.expanded;\n };\n AgGroupComponent.prototype.setAlignItems = function (alignment) {\n if (this.alignItems !== alignment) {\n this.removeCssClass(\"ag-group-item-alignment-\" + this.alignItems);\n }\n this.alignItems = alignment;\n var newCls = \"ag-group-item-alignment-\" + this.alignItems;\n this.addCssClass(newCls);\n return this;\n };\n AgGroupComponent.prototype.toggleGroupExpand = function (expanded) {\n if (this.suppressOpenCloseIcons) {\n this.expanded = true;\n this.refreshChildDisplay();\n setDisplayed(this.eContainer, true);\n return this;\n }\n expanded = expanded != null ? expanded : !this.expanded;\n if (this.expanded === expanded) {\n return this;\n }\n this.expanded = expanded;\n this.refreshAriaStatus();\n this.refreshChildDisplay();\n setDisplayed(this.eContainer, expanded);\n this.dispatchEvent({ type: this.expanded ? AgGroupComponent.EVENT_EXPANDED : AgGroupComponent.EVENT_COLLAPSED });\n return this;\n };\n AgGroupComponent.prototype.addItems = function (items) {\n var _this = this;\n items.forEach(function (item) { return _this.addItem(item); });\n };\n AgGroupComponent.prototype.addItem = function (item) {\n var container = this.eContainer;\n var el = item instanceof Component ? item.getGui() : item;\n el.classList.add('ag-group-item', \"ag-\" + this.cssIdentifier + \"-group-item\");\n container.appendChild(el);\n this.items.push(el);\n };\n AgGroupComponent.prototype.hideItem = function (hide, index) {\n var itemToHide = this.items[index];\n itemToHide.classList.toggle('ag-hidden', hide);\n };\n AgGroupComponent.prototype.setTitle = function (title) {\n this.eTitle.innerText = title;\n return this;\n };\n AgGroupComponent.prototype.addCssClassToTitleBar = function (cssClass) {\n this.eTitleBar.classList.add(cssClass);\n };\n AgGroupComponent.prototype.setEnabled = function (enabled, skipToggle) {\n this.enabled = enabled;\n this.refreshDisabledStyles();\n this.toggleGroupExpand(enabled);\n if (!skipToggle) {\n this.cbGroupEnabled.setValue(enabled);\n }\n return this;\n };\n AgGroupComponent.prototype.isEnabled = function () {\n return this.enabled;\n };\n AgGroupComponent.prototype.onEnableChange = function (callbackFn) {\n var _this = this;\n this.cbGroupEnabled.onValueChange(function (newSelection) {\n _this.setEnabled(newSelection, true);\n callbackFn(newSelection);\n });\n return this;\n };\n AgGroupComponent.prototype.hideEnabledCheckbox = function (hide) {\n this.suppressEnabledCheckbox = hide;\n this.refreshChildDisplay();\n this.refreshDisabledStyles();\n return this;\n };\n AgGroupComponent.prototype.hideOpenCloseIcons = function (hide) {\n this.suppressOpenCloseIcons = hide;\n if (hide) {\n this.toggleGroupExpand(true);\n }\n return this;\n };\n AgGroupComponent.prototype.refreshDisabledStyles = function () {\n this.addOrRemoveCssClass('ag-disabled', !this.enabled);\n if (this.suppressEnabledCheckbox && !this.enabled) {\n this.eTitleBar.classList.add('ag-disabled-group-title-bar');\n this.eTitleBar.removeAttribute('tabindex');\n }\n else {\n this.eTitleBar.classList.remove('ag-disabled-group-title-bar');\n this.eTitleBar.setAttribute('tabindex', '0');\n }\n this.eContainer.classList.toggle('ag-disabled-group-container', !this.enabled);\n };\n AgGroupComponent.EVENT_EXPANDED = 'expanded';\n AgGroupComponent.EVENT_COLLAPSED = 'collapsed';\n __decorate([\n RefSelector('eTitleBar')\n ], AgGroupComponent.prototype, \"eTitleBar\", void 0);\n __decorate([\n RefSelector('eGroupOpenedIcon')\n ], AgGroupComponent.prototype, \"eGroupOpenedIcon\", void 0);\n __decorate([\n RefSelector('eGroupClosedIcon')\n ], AgGroupComponent.prototype, \"eGroupClosedIcon\", void 0);\n __decorate([\n RefSelector('eToolbar')\n ], AgGroupComponent.prototype, \"eToolbar\", void 0);\n __decorate([\n RefSelector('cbGroupEnabled')\n ], AgGroupComponent.prototype, \"cbGroupEnabled\", void 0);\n __decorate([\n RefSelector('eTitle')\n ], AgGroupComponent.prototype, \"eTitle\", void 0);\n __decorate([\n RefSelector('eContainer')\n ], AgGroupComponent.prototype, \"eContainer\", void 0);\n __decorate([\n PostConstruct\n ], AgGroupComponent.prototype, \"postConstruct\", null);\n return AgGroupComponent;\n}(Component));\nexport { AgGroupComponent };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { BeanStub } from \"../../context/beanStub\";\nimport { Autowired } from \"../../context/context\";\nimport { getAbsoluteHeight, getAbsoluteWidth, setFixedHeight, setFixedWidth } from \"../../utils/dom\";\nvar RESIZE_CONTAINER_STYLE = 'ag-resizer-wrapper';\nvar RESIZE_TEMPLATE = /* html */ \"
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \";\nvar PositionableFeature = /** @class */ (function (_super) {\n __extends(PositionableFeature, _super);\n function PositionableFeature(element, config) {\n var _this = _super.call(this) || this;\n _this.element = element;\n _this.dragStartPosition = {\n x: 0,\n y: 0\n };\n _this.position = {\n x: 0,\n y: 0\n };\n _this.lastSize = {\n width: -1,\n height: -1\n };\n _this.positioned = false;\n _this.resizersAdded = false;\n _this.resizeListeners = [];\n _this.boundaryEl = null;\n _this.isResizing = false;\n _this.isMoving = false;\n _this.resizable = {};\n _this.movable = false;\n _this.currentResizer = null;\n _this.config = Object.assign({}, { popup: false }, config);\n return _this;\n }\n PositionableFeature.prototype.center = function () {\n var _a = this.offsetParent, clientHeight = _a.clientHeight, clientWidth = _a.clientWidth;\n var x = (clientWidth / 2) - (this.getWidth() / 2);\n var y = (clientHeight / 2) - (this.getHeight() / 2);\n this.offsetElement(x, y);\n };\n PositionableFeature.prototype.initialisePosition = function () {\n var _a = this.config, centered = _a.centered, forcePopupParentAsOffsetParent = _a.forcePopupParentAsOffsetParent, minWidth = _a.minWidth, width = _a.width, minHeight = _a.minHeight, height = _a.height, x = _a.x, y = _a.y;\n if (!this.offsetParent) {\n this.setOffsetParent();\n }\n var computedMinHeight = 0;\n var computedMinWidth = 0;\n // here we don't use the main offset parent but the element's offsetParent\n // in order to calculated the minWidth and minHeight correctly\n var isVisible = !!this.element.offsetParent;\n if (isVisible) {\n var boundaryEl = this.findBoundaryElement();\n var offsetParentComputedStyles = window.getComputedStyle(boundaryEl);\n if (offsetParentComputedStyles.minWidth != null) {\n var paddingWidth = boundaryEl.offsetWidth - this.element.offsetWidth;\n computedMinWidth = parseInt(offsetParentComputedStyles.minWidth, 10) - paddingWidth;\n }\n if (offsetParentComputedStyles.minHeight != null) {\n var paddingHeight = boundaryEl.offsetHeight - this.element.offsetHeight;\n computedMinHeight = parseInt(offsetParentComputedStyles.minHeight, 10) - paddingHeight;\n }\n }\n this.minHeight = minHeight || computedMinHeight;\n this.minWidth = minWidth || computedMinWidth;\n if (width) {\n this.setWidth(width);\n }\n if (height) {\n this.setHeight(height);\n }\n if (!width || !height) {\n this.refreshSize();\n }\n if (centered) {\n this.center();\n }\n else if (x || y) {\n this.offsetElement(x, y);\n }\n else if (isVisible && forcePopupParentAsOffsetParent && this.boundaryEl) {\n var top_1 = parseFloat(this.boundaryEl.style.top);\n var left = parseFloat(this.boundaryEl.style.left);\n this.offsetElement(isNaN(left) ? 0 : left, isNaN(top_1) ? 0 : top_1);\n }\n this.positioned = !!this.offsetParent;\n };\n PositionableFeature.prototype.isPositioned = function () {\n return this.positioned;\n };\n PositionableFeature.prototype.getPosition = function () {\n return this.position;\n };\n PositionableFeature.prototype.setMovable = function (movable, moveElement) {\n if (!this.config.popup || movable === this.movable) {\n return;\n }\n this.movable = movable;\n var params = this.moveElementDragListener || {\n eElement: moveElement,\n onDragStart: this.onMoveStart.bind(this),\n onDragging: this.onMove.bind(this),\n onDragStop: this.onMoveEnd.bind(this)\n };\n if (movable) {\n this.dragService.addDragSource(params);\n this.moveElementDragListener = params;\n }\n else {\n this.dragService.removeDragSource(params);\n this.moveElementDragListener = undefined;\n }\n };\n PositionableFeature.prototype.setResizable = function (resizable) {\n var _this = this;\n this.clearResizeListeners();\n if (resizable) {\n this.addResizers();\n }\n else {\n this.removeResizers();\n }\n if (typeof resizable === 'boolean') {\n if (resizable === false) {\n return;\n }\n resizable = {\n topLeft: resizable,\n top: resizable,\n topRight: resizable,\n right: resizable,\n bottomRight: resizable,\n bottom: resizable,\n bottomLeft: resizable,\n left: resizable\n };\n }\n Object.keys(resizable).forEach(function (side) {\n var resizableStructure = resizable;\n var val = !!resizableStructure[side];\n var resizerEl = _this.getResizerElement(side);\n var params = {\n dragStartPixels: 0,\n eElement: resizerEl,\n onDragStart: function (e) { return _this.onResizeStart(e, side); },\n onDragging: _this.onResize.bind(_this),\n onDragStop: function (e) { return _this.onResizeEnd(e, side); },\n };\n if (!!_this.resizable[side] !== val || (!_this.isAlive() && !val)) {\n if (val) {\n _this.dragService.addDragSource(params);\n _this.resizeListeners.push(params);\n resizerEl.style.pointerEvents = 'all';\n }\n else {\n resizerEl.style.pointerEvents = 'none';\n }\n }\n });\n };\n PositionableFeature.prototype.removeSizeFromEl = function () {\n this.element.style.removeProperty('height');\n this.element.style.removeProperty('width');\n this.element.style.removeProperty('flex');\n };\n PositionableFeature.prototype.restoreLastSize = function () {\n this.element.style.flex = '0 0 auto';\n var _a = this.lastSize, height = _a.height, width = _a.width;\n if (width !== -1) {\n this.element.style.width = width + \"px\";\n }\n if (height !== -1) {\n this.element.style.height = height + \"px\";\n }\n };\n PositionableFeature.prototype.getHeight = function () {\n return this.element.offsetHeight;\n };\n PositionableFeature.prototype.setHeight = function (height) {\n var popup = this.config.popup;\n var eGui = this.element;\n var isPercent = false;\n if (typeof height === 'string' && height.indexOf('%') !== -1) {\n setFixedHeight(eGui, height);\n height = getAbsoluteHeight(eGui);\n isPercent = true;\n }\n else if (this.positioned) {\n var elRect = this.element.getBoundingClientRect();\n var parentRect = this.offsetParent.getBoundingClientRect();\n height = Math.max(this.minHeight, height);\n var clientHeight = this.offsetParent.clientHeight;\n var yPosition = popup ? this.position.y : elRect.top;\n var parentTop = popup ? 0 : parentRect.top;\n if (clientHeight && (height + yPosition > clientHeight + parentTop)) {\n height = clientHeight - yPosition;\n }\n }\n if (this.getHeight() === height) {\n return;\n }\n if (!isPercent) {\n if (popup) {\n setFixedHeight(eGui, height);\n }\n else {\n eGui.style.height = height + \"px\";\n eGui.style.flex = '0 0 auto';\n this.lastSize.height = typeof height === 'number' ? height : parseFloat(height);\n }\n }\n else {\n eGui.style.maxHeight = 'unset';\n eGui.style.minHeight = 'unset';\n }\n };\n PositionableFeature.prototype.getWidth = function () {\n return this.element.offsetWidth;\n };\n PositionableFeature.prototype.setWidth = function (width) {\n var eGui = this.element;\n var popup = this.config.popup;\n var isPercent = false;\n if (typeof width === 'string' && width.indexOf('%') !== -1) {\n setFixedWidth(eGui, width);\n width = getAbsoluteWidth(eGui);\n isPercent = true;\n }\n else if (this.positioned) {\n width = Math.max(this.minWidth, width);\n var clientWidth = this.offsetParent.clientWidth;\n var xPosition = popup ? this.position.x : this.element.getBoundingClientRect().left;\n if (clientWidth && (width + xPosition > clientWidth)) {\n width = clientWidth - xPosition;\n }\n }\n if (this.getWidth() === width) {\n return;\n }\n if (!isPercent) {\n if (this.config.popup) {\n setFixedWidth(eGui, width);\n }\n else {\n eGui.style.width = width + \"px\";\n eGui.style.flex = ' unset';\n this.lastSize.width = typeof width === 'number' ? width : parseFloat(width);\n }\n }\n else {\n eGui.style.maxWidth = 'unset';\n eGui.style.minWidth = 'unset';\n }\n };\n PositionableFeature.prototype.offsetElement = function (x, y) {\n if (x === void 0) { x = 0; }\n if (y === void 0) { y = 0; }\n var ePopup = this.config.forcePopupParentAsOffsetParent ? this.boundaryEl : this.element;\n this.popupService.positionPopup({\n ePopup: ePopup,\n x: x,\n y: y,\n keepWithinBounds: true\n });\n this.setPosition(parseFloat(ePopup.style.left), parseFloat(ePopup.style.top));\n };\n PositionableFeature.prototype.setPosition = function (x, y) {\n this.position.x = x;\n this.position.y = y;\n };\n PositionableFeature.prototype.updateDragStartPosition = function (x, y) {\n this.dragStartPosition = { x: x, y: y };\n };\n PositionableFeature.prototype.calculateMouseMovement = function (params) {\n var e = params.e, isLeft = params.isLeft, isTop = params.isTop, anywhereWithin = params.anywhereWithin, topBuffer = params.topBuffer;\n var xDiff = e.clientX - this.dragStartPosition.x;\n var yDiff = e.clientY - this.dragStartPosition.y;\n var movementX = this.shouldSkipX(e, !!isLeft, !!anywhereWithin, xDiff) ? 0 : xDiff;\n var movementY = this.shouldSkipY(e, !!isTop, topBuffer, yDiff) ? 0 : yDiff;\n return { movementX: movementX, movementY: movementY };\n };\n PositionableFeature.prototype.shouldSkipX = function (e, isLeft, anywhereWithin, diff) {\n var elRect = this.element.getBoundingClientRect();\n var parentRect = this.offsetParent.getBoundingClientRect();\n var boundaryElRect = this.boundaryEl.getBoundingClientRect();\n var xPosition = this.config.popup ? this.position.x : elRect.left;\n // skip if cursor is outside of popupParent horizontally\n var skipX = ((xPosition <= 0 && parentRect.left >= e.clientX) ||\n (parentRect.right <= e.clientX && parentRect.right <= boundaryElRect.right));\n if (skipX) {\n return true;\n }\n if (isLeft) {\n skipX = (\n // skip if we are moving to the left and the cursor\n // is positioned to the right of the left side anchor\n (diff < 0 && e.clientX > xPosition + parentRect.left) ||\n // skip if we are moving to the right and the cursor\n // is positioned to the left of the dialog\n (diff > 0 && e.clientX < xPosition + parentRect.left));\n }\n else {\n if (anywhereWithin) {\n // if anywhereWithin is true, we allow to move\n // as long as the cursor is within the dialog\n skipX = ((diff < 0 && e.clientX > boundaryElRect.right) ||\n (diff > 0 && e.clientX < xPosition + parentRect.left));\n }\n else {\n skipX = (\n // if the movement is bound to the right side of the dialog\n // we skip if we are moving to the left and the cursor\n // is to the right of the dialog\n (diff < 0 && e.clientX > boundaryElRect.right) ||\n // or skip if we are moving to the right and the cursor\n // is to the left of the right side anchor\n (diff > 0 && e.clientX < boundaryElRect.right));\n }\n }\n return skipX;\n };\n PositionableFeature.prototype.shouldSkipY = function (e, isTop, topBuffer, diff) {\n if (topBuffer === void 0) { topBuffer = 0; }\n var elRect = this.element.getBoundingClientRect();\n var parentRect = this.offsetParent.getBoundingClientRect();\n var boundaryElRect = this.boundaryEl.getBoundingClientRect();\n var yPosition = this.config.popup ? this.position.y : elRect.top;\n // skip if cursor is outside of popupParent vertically\n var skipY = ((yPosition <= 0 && parentRect.top >= e.clientY) ||\n (parentRect.bottom <= e.clientY && parentRect.bottom <= boundaryElRect.bottom));\n if (skipY) {\n return true;\n }\n if (isTop) {\n skipY = (\n // skip if we are moving to towards top and the cursor is\n // below the top anchor + topBuffer\n // note: topBuffer is used when moving the dialog using the title bar\n (diff < 0 && e.clientY > yPosition + parentRect.top + topBuffer) ||\n // skip if we are moving to the bottom and the cursor is\n // above the top anchor\n (diff > 0 && e.clientY < yPosition + parentRect.top));\n }\n else {\n skipY = (\n // skip if we are moving towards the top and the cursor\n // is below the bottom anchor\n (diff < 0 && e.clientY > boundaryElRect.bottom) ||\n // skip if we are moving towards the bottom and the cursor\n // is above the bottom anchor\n (diff > 0 && e.clientY < boundaryElRect.bottom));\n }\n return skipY;\n };\n PositionableFeature.prototype.createResizeMap = function () {\n var eGui = this.element;\n this.resizerMap = {\n topLeft: { element: eGui.querySelector('[ref=eTopLeftResizer]') },\n top: { element: eGui.querySelector('[ref=eTopResizer]') },\n topRight: { element: eGui.querySelector('[ref=eTopRightResizer]') },\n right: { element: eGui.querySelector('[ref=eRightResizer]') },\n bottomRight: { element: eGui.querySelector('[ref=eBottomRightResizer]') },\n bottom: { element: eGui.querySelector('[ref=eBottomResizer]') },\n bottomLeft: { element: eGui.querySelector('[ref=eBottomLeftResizer]') },\n left: { element: eGui.querySelector('[ref=eLeftResizer]') }\n };\n };\n PositionableFeature.prototype.addResizers = function () {\n if (this.resizersAdded) {\n return;\n }\n var eGui = this.element;\n if (!eGui) {\n return;\n }\n var parser = new DOMParser();\n var resizers = parser.parseFromString(RESIZE_TEMPLATE, 'text/html').body;\n eGui.appendChild(resizers.firstChild);\n this.createResizeMap();\n this.resizersAdded = true;\n };\n PositionableFeature.prototype.removeResizers = function () {\n this.resizerMap = undefined;\n var resizerEl = this.element.querySelector(\".\" + RESIZE_CONTAINER_STYLE);\n if (resizerEl) {\n this.element.removeChild(resizerEl);\n }\n this.resizersAdded = false;\n };\n PositionableFeature.prototype.getResizerElement = function (side) {\n return this.resizerMap[side].element;\n };\n PositionableFeature.prototype.onResizeStart = function (e, side) {\n this.boundaryEl = this.findBoundaryElement();\n if (!this.positioned) {\n this.initialisePosition();\n }\n this.currentResizer = {\n isTop: !!side.match(/top/i),\n isRight: !!side.match(/right/i),\n isBottom: !!side.match(/bottom/i),\n isLeft: !!side.match(/left/i),\n };\n this.element.classList.add('ag-resizing');\n this.resizerMap[side].element.classList.add('ag-active');\n var _a = this.config, popup = _a.popup, forcePopupParentAsOffsetParent = _a.forcePopupParentAsOffsetParent;\n if (!popup && !forcePopupParentAsOffsetParent) {\n this.applySizeToSiblings(this.currentResizer.isBottom || this.currentResizer.isTop);\n }\n this.isResizing = true;\n this.updateDragStartPosition(e.clientX, e.clientY);\n };\n PositionableFeature.prototype.getSiblings = function () {\n var element = this.element;\n var parent = element.parentElement;\n if (!parent) {\n return null;\n }\n return Array.prototype.slice.call(parent.children).filter(function (el) { return !el.classList.contains('ag-hidden'); });\n };\n PositionableFeature.prototype.getMinSizeOfSiblings = function () {\n var siblings = this.getSiblings() || [];\n var height = 0;\n var width = 0;\n for (var i = 0; i < siblings.length; i++) {\n var currentEl = siblings[i];\n var isFlex = !!currentEl.style.flex && currentEl.style.flex !== '0 0 auto';\n if (currentEl === this.element) {\n continue;\n }\n var nextHeight = this.minHeight || 0;\n var nextWidth = this.minWidth || 0;\n if (isFlex) {\n var computedStyle = window.getComputedStyle(currentEl);\n if (computedStyle.minHeight) {\n nextHeight = parseInt(computedStyle.minHeight, 10);\n }\n if (computedStyle.minWidth) {\n nextWidth = parseInt(computedStyle.minWidth, 10);\n }\n }\n else {\n nextHeight = currentEl.offsetHeight;\n nextWidth = currentEl.offsetWidth;\n }\n height += nextHeight;\n width += nextWidth;\n }\n return { height: height, width: width };\n };\n PositionableFeature.prototype.applySizeToSiblings = function (vertical) {\n var containerToFlex = null;\n var siblings = this.getSiblings();\n if (!siblings) {\n return;\n }\n for (var i = 0; i < siblings.length; i++) {\n var el = siblings[i];\n if (el === containerToFlex) {\n continue;\n }\n if (vertical) {\n el.style.height = el.offsetHeight + \"px\";\n }\n else {\n el.style.width = el.offsetWidth + \"px\";\n }\n el.style.flex = '0 0 auto';\n if (el === this.element) {\n containerToFlex = siblings[i + 1];\n }\n }\n if (containerToFlex) {\n containerToFlex.style.removeProperty('height');\n containerToFlex.style.removeProperty('min-height');\n containerToFlex.style.removeProperty('max-height');\n containerToFlex.style.flex = '1 1 auto';\n }\n };\n PositionableFeature.prototype.onResize = function (e) {\n if (!this.isResizing || !this.currentResizer) {\n return;\n }\n var _a = this.config, popup = _a.popup, forcePopupParentAsOffsetParent = _a.forcePopupParentAsOffsetParent;\n var _b = this.currentResizer, isTop = _b.isTop, isRight = _b.isRight, isBottom = _b.isBottom, isLeft = _b.isLeft;\n var isHorizontal = isRight || isLeft;\n var isVertical = isBottom || isTop;\n var _c = this.calculateMouseMovement({ e: e, isLeft: isLeft, isTop: isTop }), movementX = _c.movementX, movementY = _c.movementY;\n var xPosition = this.position.x;\n var yPosition = this.position.y;\n var offsetLeft = 0;\n var offsetTop = 0;\n if (isHorizontal && movementX) {\n var direction = isLeft ? -1 : 1;\n var oldWidth = this.getWidth();\n var newWidth = oldWidth + (movementX * direction);\n var skipWidth = false;\n if (isLeft) {\n offsetLeft = oldWidth - newWidth;\n if (xPosition + offsetLeft <= 0 || newWidth <= this.minWidth) {\n skipWidth = true;\n offsetLeft = 0;\n }\n }\n if (!skipWidth) {\n this.setWidth(newWidth);\n }\n }\n if (isVertical && movementY) {\n var direction = isTop ? -1 : 1;\n var oldHeight = this.getHeight();\n var newHeight = oldHeight + (movementY * direction);\n var skipHeight = false;\n if (isTop) {\n offsetTop = oldHeight - newHeight;\n if (yPosition + offsetTop <= 0 || newHeight <= this.minHeight) {\n skipHeight = true;\n offsetTop = 0;\n }\n }\n else {\n // do not let the size of all siblings be higher than the parent container\n if (!this.config.popup &&\n !this.config.forcePopupParentAsOffsetParent &&\n oldHeight < newHeight &&\n (this.getMinSizeOfSiblings().height + newHeight) > this.element.parentElement.offsetHeight) {\n skipHeight = true;\n }\n }\n if (!skipHeight) {\n this.setHeight(newHeight);\n }\n }\n this.updateDragStartPosition(e.clientX, e.clientY);\n if ((popup || forcePopupParentAsOffsetParent) && offsetLeft || offsetTop) {\n this.offsetElement(xPosition + offsetLeft, yPosition + offsetTop);\n }\n };\n PositionableFeature.prototype.onResizeEnd = function (e, side) {\n this.isResizing = false;\n this.currentResizer = null;\n this.boundaryEl = null;\n var params = {\n type: 'resize',\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi()\n };\n this.element.classList.remove('ag-resizing');\n this.resizerMap[side].element.classList.remove('ag-active');\n this.dispatchEvent(params);\n };\n PositionableFeature.prototype.refreshSize = function () {\n var eGui = this.element;\n if (this.config.popup) {\n if (!this.config.width) {\n this.setWidth(eGui.offsetWidth);\n }\n if (!this.config.height) {\n this.setHeight(eGui.offsetHeight);\n }\n }\n };\n PositionableFeature.prototype.onMoveStart = function (e) {\n this.boundaryEl = this.findBoundaryElement();\n if (!this.positioned) {\n this.initialisePosition();\n }\n this.isMoving = true;\n this.element.classList.add('ag-moving');\n this.updateDragStartPosition(e.clientX, e.clientY);\n };\n PositionableFeature.prototype.onMove = function (e) {\n if (!this.isMoving) {\n return;\n }\n var _a = this.position, x = _a.x, y = _a.y;\n var topBuffer;\n if (this.config.calculateTopBuffer) {\n topBuffer = this.config.calculateTopBuffer();\n }\n var _b = this.calculateMouseMovement({\n e: e,\n isTop: true,\n anywhereWithin: true,\n topBuffer: topBuffer\n }), movementX = _b.movementX, movementY = _b.movementY;\n this.offsetElement(x + movementX, y + movementY);\n this.updateDragStartPosition(e.clientX, e.clientY);\n };\n PositionableFeature.prototype.onMoveEnd = function () {\n this.isMoving = false;\n this.boundaryEl = null;\n this.element.classList.remove('ag-moving');\n };\n PositionableFeature.prototype.setOffsetParent = function () {\n if (this.config.forcePopupParentAsOffsetParent) {\n this.offsetParent = this.popupService.getPopupParent();\n }\n else {\n this.offsetParent = this.element.offsetParent;\n }\n };\n PositionableFeature.prototype.findBoundaryElement = function () {\n var el = this.element;\n while (el) {\n if (window.getComputedStyle(el).position !== 'static') {\n return el;\n }\n el = el.parentElement;\n }\n return this.element;\n };\n PositionableFeature.prototype.clearResizeListeners = function () {\n while (this.resizeListeners.length) {\n var params = this.resizeListeners.pop();\n this.dragService.removeDragSource(params);\n }\n };\n PositionableFeature.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.moveElementDragListener) {\n this.dragService.removeDragSource(this.moveElementDragListener);\n }\n this.clearResizeListeners();\n this.removeResizers();\n };\n __decorate([\n Autowired('popupService')\n ], PositionableFeature.prototype, \"popupService\", void 0);\n __decorate([\n Autowired('dragService')\n ], PositionableFeature.prototype, \"dragService\", void 0);\n return PositionableFeature;\n}(BeanStub));\nexport { PositionableFeature };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { RefSelector } from \"./componentAnnotations\";\nimport { PostConstruct } from \"../context/context\";\nimport { Component } from \"./component\";\nimport { getInnerHeight, getInnerWidth } from \"../utils/dom\";\nimport { createIconNoSpan } from \"../utils/icon\";\nimport { PositionableFeature } from \"../rendering/features/positionableFeature\";\nvar AgPanel = /** @class */ (function (_super) {\n __extends(AgPanel, _super);\n function AgPanel(config) {\n var _this = _super.call(this, AgPanel.getTemplate(config)) || this;\n _this.closable = true;\n _this.config = config;\n return _this;\n }\n AgPanel.getTemplate = function (config) {\n var cssIdentifier = (config && config.cssIdentifier) || 'default';\n return /* html */ \"
    \\n
    \\n \\n
    \\n
    \\n
    \\n
    \";\n };\n AgPanel.prototype.postConstruct = function () {\n var _this = this;\n var _a = this.config, component = _a.component, closable = _a.closable, hideTitleBar = _a.hideTitleBar, title = _a.title, _b = _a.minWidth, minWidth = _b === void 0 ? 250 : _b, width = _a.width, _c = _a.minHeight, minHeight = _c === void 0 ? 250 : _c, height = _a.height, centered = _a.centered, popup = _a.popup, x = _a.x, y = _a.y;\n this.positionableFeature = new PositionableFeature(this.getGui(), {\n minWidth: minWidth, width: width, minHeight: minHeight, height: height, centered: centered, x: x, y: y, popup: popup,\n calculateTopBuffer: function () { return _this.positionableFeature.getHeight() - _this.getBodyHeight(); }\n });\n this.createManagedBean(this.positionableFeature);\n var eGui = this.getGui();\n if (component) {\n this.setBodyComponent(component);\n }\n if (!hideTitleBar) {\n if (title) {\n this.setTitle(title);\n }\n this.setClosable(closable != null ? closable : this.closable);\n }\n else {\n this.eTitleBar.classList.add('ag-hidden');\n }\n this.addManagedListener(this.eTitleBar, 'mousedown', function (e) {\n var eDocument = _this.gridOptionsWrapper.getDocument();\n if (eGui.contains(e.relatedTarget) ||\n eGui.contains(eDocument.activeElement) ||\n _this.eTitleBarButtons.contains(e.target)) {\n e.preventDefault();\n return;\n }\n var focusEl = _this.eContentWrapper.querySelector('button, [href], input, select, textarea, [tabindex]');\n if (focusEl) {\n focusEl.focus();\n }\n });\n if (popup && this.positionableFeature.isPositioned()) {\n return;\n }\n if (this.renderComponent) {\n this.renderComponent();\n }\n this.positionableFeature.initialisePosition();\n this.eContentWrapper.style.height = '0';\n };\n AgPanel.prototype.renderComponent = function () {\n var _this = this;\n var eGui = this.getGui();\n eGui.focus();\n this.close = function () {\n eGui.parentElement.removeChild(eGui);\n _this.destroy();\n };\n };\n AgPanel.prototype.getHeight = function () {\n return this.positionableFeature.getHeight();\n };\n AgPanel.prototype.setHeight = function (height) {\n this.positionableFeature.setHeight(height);\n };\n AgPanel.prototype.getWidth = function () {\n return this.positionableFeature.getWidth();\n };\n AgPanel.prototype.setWidth = function (width) {\n this.positionableFeature.setWidth(width);\n };\n AgPanel.prototype.setClosable = function (closable) {\n if (closable !== this.closable) {\n this.closable = closable;\n }\n if (closable) {\n var closeButtonComp = this.closeButtonComp = new Component(AgPanel.CLOSE_BTN_TEMPLATE);\n this.getContext().createBean(closeButtonComp);\n var eGui = closeButtonComp.getGui();\n var child = createIconNoSpan('close', this.gridOptionsWrapper);\n child.classList.add('ag-panel-title-bar-button-icon');\n eGui.appendChild(child);\n this.addTitleBarButton(closeButtonComp);\n closeButtonComp.addManagedListener(eGui, 'click', this.onBtClose.bind(this));\n }\n else if (this.closeButtonComp) {\n var eGui = this.closeButtonComp.getGui();\n eGui.parentElement.removeChild(eGui);\n this.closeButtonComp = this.destroyBean(this.closeButtonComp);\n }\n };\n AgPanel.prototype.setBodyComponent = function (bodyComponent) {\n bodyComponent.setParentComponent(this);\n this.eContentWrapper.appendChild(bodyComponent.getGui());\n };\n AgPanel.prototype.addTitleBarButton = function (button, position) {\n var eTitleBarButtons = this.eTitleBarButtons;\n var buttons = eTitleBarButtons.children;\n var len = buttons.length;\n if (position == null) {\n position = len;\n }\n position = Math.max(0, Math.min(position, len));\n button.addCssClass('ag-panel-title-bar-button');\n var eGui = button.getGui();\n if (position === 0) {\n eTitleBarButtons.insertAdjacentElement('afterbegin', eGui);\n }\n else if (position === len) {\n eTitleBarButtons.insertAdjacentElement('beforeend', eGui);\n }\n else {\n buttons[position - 1].insertAdjacentElement('afterend', eGui);\n }\n button.setParentComponent(this);\n };\n AgPanel.prototype.getBodyHeight = function () {\n return getInnerHeight(this.eContentWrapper);\n };\n AgPanel.prototype.getBodyWidth = function () {\n return getInnerWidth(this.eContentWrapper);\n };\n AgPanel.prototype.setTitle = function (title) {\n this.eTitle.innerText = title;\n };\n // called when user hits the 'x' in the top right\n AgPanel.prototype.onBtClose = function () {\n this.close();\n };\n AgPanel.prototype.destroy = function () {\n if (this.closeButtonComp) {\n this.closeButtonComp = this.destroyBean(this.closeButtonComp);\n }\n var eGui = this.getGui();\n if (eGui && eGui.offsetParent) {\n this.close();\n }\n _super.prototype.destroy.call(this);\n };\n AgPanel.CLOSE_BTN_TEMPLATE = \"
    \";\n __decorate([\n RefSelector('eContentWrapper')\n ], AgPanel.prototype, \"eContentWrapper\", void 0);\n __decorate([\n RefSelector('eTitleBar')\n ], AgPanel.prototype, \"eTitleBar\", void 0);\n __decorate([\n RefSelector('eTitleBarButtons')\n ], AgPanel.prototype, \"eTitleBarButtons\", void 0);\n __decorate([\n RefSelector('eTitle')\n ], AgPanel.prototype, \"eTitle\", void 0);\n __decorate([\n PostConstruct\n ], AgPanel.prototype, \"postConstruct\", null);\n return AgPanel;\n}(Component));\nexport { AgPanel };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __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};\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired } from \"../context/context\";\nimport { AgPanel } from \"./agPanel\";\nimport { Component } from \"./component\";\nimport { setDisplayed } from \"../utils/dom\";\nimport { createIconNoSpan } from \"../utils/icon\";\nvar AgDialog = /** @class */ (function (_super) {\n __extends(AgDialog, _super);\n function AgDialog(config) {\n var _this = _super.call(this, __assign(__assign({}, config), { popup: true })) || this;\n _this.isMaximizable = false;\n _this.isMaximized = false;\n _this.maximizeListeners = [];\n _this.resizeListenerDestroy = null;\n _this.lastPosition = {\n x: 0,\n y: 0,\n width: 0,\n height: 0\n };\n return _this;\n }\n AgDialog.prototype.postConstruct = function () {\n var _this = this;\n var eGui = this.getGui();\n var _a = this.config, movable = _a.movable, resizable = _a.resizable, maximizable = _a.maximizable;\n this.addCssClass('ag-dialog');\n _super.prototype.postConstruct.call(this);\n this.addManagedListener(eGui, 'focusin', function (e) {\n if (eGui.contains(e.relatedTarget)) {\n return;\n }\n _this.popupService.bringPopupToFront(eGui);\n });\n if (movable) {\n this.setMovable(movable);\n }\n if (maximizable) {\n this.setMaximizable(maximizable);\n }\n if (resizable) {\n this.setResizable(resizable);\n }\n };\n AgDialog.prototype.renderComponent = function () {\n var eGui = this.getGui();\n var _a = this.config, alwaysOnTop = _a.alwaysOnTop, modal = _a.modal, title = _a.title;\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var addPopupRes = this.popupService.addPopup({\n modal: modal,\n eChild: eGui,\n closeOnEsc: true,\n closedCallback: this.destroy.bind(this),\n alwaysOnTop: alwaysOnTop,\n ariaLabel: title || translate('ariaLabelDialog', 'Dialog')\n });\n if (addPopupRes) {\n this.close = addPopupRes.hideFunc;\n }\n };\n AgDialog.prototype.toggleMaximize = function () {\n var position = this.positionableFeature.getPosition();\n if (this.isMaximized) {\n var _a = this.lastPosition, x = _a.x, y = _a.y, width = _a.width, height = _a.height;\n this.setWidth(width);\n this.setHeight(height);\n this.positionableFeature.offsetElement(x, y);\n }\n else {\n this.lastPosition.width = this.getWidth();\n this.lastPosition.height = this.getHeight();\n this.lastPosition.x = position.x;\n this.lastPosition.y = position.y;\n this.positionableFeature.offsetElement(0, 0);\n this.setHeight('100%');\n this.setWidth('100%');\n }\n this.isMaximized = !this.isMaximized;\n this.refreshMaximizeIcon();\n };\n AgDialog.prototype.refreshMaximizeIcon = function () {\n setDisplayed(this.maximizeIcon, !this.isMaximized);\n setDisplayed(this.minimizeIcon, this.isMaximized);\n };\n AgDialog.prototype.clearMaximizebleListeners = function () {\n if (this.maximizeListeners.length) {\n this.maximizeListeners.forEach(function (destroyListener) { return destroyListener(); });\n this.maximizeListeners.length = 0;\n }\n if (this.resizeListenerDestroy) {\n this.resizeListenerDestroy();\n this.resizeListenerDestroy = null;\n }\n };\n AgDialog.prototype.destroy = function () {\n this.maximizeButtonComp = this.destroyBean(this.maximizeButtonComp);\n this.clearMaximizebleListeners();\n _super.prototype.destroy.call(this);\n };\n AgDialog.prototype.setResizable = function (resizable) {\n this.positionableFeature.setResizable(resizable);\n };\n AgDialog.prototype.setMovable = function (movable) {\n this.positionableFeature.setMovable(movable, this.eTitleBar);\n };\n AgDialog.prototype.setMaximizable = function (maximizable) {\n var _this = this;\n if (!maximizable) {\n this.clearMaximizebleListeners();\n if (this.maximizeButtonComp) {\n this.destroyBean(this.maximizeButtonComp);\n this.maximizeButtonComp = this.maximizeIcon = this.minimizeIcon = undefined;\n }\n return;\n }\n var eTitleBar = this.eTitleBar;\n if (!eTitleBar || maximizable === this.isMaximizable) {\n return;\n }\n var maximizeButtonComp = this.maximizeButtonComp =\n this.createBean(new Component(/* html */ \"
    \"));\n var eGui = maximizeButtonComp.getGui();\n eGui.appendChild(this.maximizeIcon = createIconNoSpan('maximize', this.gridOptionsWrapper));\n this.maximizeIcon.classList.add('ag-panel-title-bar-button-icon');\n eGui.appendChild(this.minimizeIcon = createIconNoSpan('minimize', this.gridOptionsWrapper));\n this.minimizeIcon.classList.add('ag-panel-title-bar-button-icon', 'ag-hidden');\n maximizeButtonComp.addManagedListener(eGui, 'click', this.toggleMaximize.bind(this));\n this.addTitleBarButton(maximizeButtonComp, 0);\n this.maximizeListeners.push(this.addManagedListener(eTitleBar, 'dblclick', this.toggleMaximize.bind(this)));\n this.resizeListenerDestroy = this.addManagedListener(this, 'resize', function () {\n _this.isMaximized = false;\n _this.refreshMaximizeIcon();\n });\n };\n __decorate([\n Autowired('popupService')\n ], AgDialog.prototype, \"popupService\", void 0);\n return AgDialog;\n}(AgPanel));\nexport { AgDialog };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { AgAbstractInputField } from './agAbstractInputField';\nimport { exists } from '../utils/generic';\nvar AgInputTextField = /** @class */ (function (_super) {\n __extends(AgInputTextField, _super);\n function AgInputTextField(config, className, inputType) {\n if (className === void 0) { className = 'ag-text-field'; }\n if (inputType === void 0) { inputType = 'text'; }\n return _super.call(this, config, className, inputType) || this;\n }\n AgInputTextField.prototype.postConstruct = function () {\n _super.prototype.postConstruct.call(this);\n if (this.config.allowedCharPattern) {\n this.preventDisallowedCharacters();\n }\n };\n AgInputTextField.prototype.setValue = function (value, silent) {\n var ret = _super.prototype.setValue.call(this, value, silent);\n if (this.eInput.value !== value) {\n this.eInput.value = exists(value) ? value : '';\n }\n return ret;\n };\n AgInputTextField.prototype.preventDisallowedCharacters = function () {\n var pattern = new RegExp(\"[\" + this.config.allowedCharPattern + \"]\");\n var preventDisallowedCharacters = function (event) {\n if (event.key && !pattern.test(event.key)) {\n event.preventDefault();\n }\n };\n this.addManagedListener(this.eInput, 'keypress', preventDisallowedCharacters);\n this.addManagedListener(this.eInput, 'paste', function (e) {\n var _a;\n var text = (_a = e.clipboardData) === null || _a === void 0 ? void 0 : _a.getData('text');\n if (text && text.split('').some(function (c) { return !pattern.test(c); })) {\n e.preventDefault();\n }\n });\n };\n return AgInputTextField;\n}(AgAbstractInputField));\nexport { AgInputTextField };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { AgAbstractInputField } from \"./agAbstractInputField\";\nvar AgInputTextArea = /** @class */ (function (_super) {\n __extends(AgInputTextArea, _super);\n function AgInputTextArea(config) {\n return _super.call(this, config, 'ag-text-area', null, 'textarea') || this;\n }\n AgInputTextArea.prototype.setValue = function (value, silent) {\n var ret = _super.prototype.setValue.call(this, value, silent);\n this.eInput.value = value;\n return ret;\n };\n AgInputTextArea.prototype.setCols = function (cols) {\n this.eInput.cols = cols;\n return this;\n };\n AgInputTextArea.prototype.setRows = function (rows) {\n this.eInput.rows = rows;\n return this;\n };\n return AgInputTextArea;\n}(AgAbstractInputField));\nexport { AgInputTextArea };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { RefSelector } from \"./componentAnnotations\";\nimport { AgAbstractLabel } from \"./agAbstractLabel\";\nimport { AgAbstractField } from \"./agAbstractField\";\nimport { PostConstruct } from \"../context/context\";\nvar AgSlider = /** @class */ (function (_super) {\n __extends(AgSlider, _super);\n function AgSlider(config) {\n var _this = _super.call(this, config, AgSlider.TEMPLATE) || this;\n _this.labelAlignment = 'top';\n return _this;\n }\n AgSlider.prototype.init = function () {\n this.eSlider.addCssClass('ag-slider-field');\n };\n AgSlider.prototype.onValueChange = function (callbackFn) {\n var _this = this;\n var eventChanged = AgAbstractField.EVENT_CHANGED;\n this.addManagedListener(this.eText, eventChanged, function () {\n var textValue = parseFloat(_this.eText.getValue());\n _this.eSlider.setValue(textValue.toString(), true);\n callbackFn(textValue || 0);\n });\n this.addManagedListener(this.eSlider, eventChanged, function () {\n var sliderValue = _this.eSlider.getValue();\n _this.eText.setValue(sliderValue, true);\n callbackFn(parseFloat(sliderValue));\n });\n return this;\n };\n AgSlider.prototype.setSliderWidth = function (width) {\n this.eSlider.setWidth(width);\n return this;\n };\n AgSlider.prototype.setTextFieldWidth = function (width) {\n this.eText.setWidth(width);\n return this;\n };\n AgSlider.prototype.setMinValue = function (minValue) {\n this.eSlider.setMinValue(minValue);\n this.eText.setMin(minValue);\n return this;\n };\n AgSlider.prototype.setMaxValue = function (maxValue) {\n this.eSlider.setMaxValue(maxValue);\n this.eText.setMax(maxValue);\n return this;\n };\n AgSlider.prototype.getValue = function () {\n return this.eText.getValue();\n };\n AgSlider.prototype.setValue = function (value) {\n if (this.getValue() === value) {\n return this;\n }\n this.eText.setValue(value, true);\n this.eSlider.setValue(value, true);\n this.dispatchEvent({ type: AgAbstractField.EVENT_CHANGED });\n return this;\n };\n AgSlider.prototype.setStep = function (step) {\n this.eSlider.setStep(step);\n this.eText.setStep(step);\n return this;\n };\n AgSlider.TEMPLATE = \"
    \\n \\n
    \\n \\n \\n
    \\n
    \";\n __decorate([\n RefSelector('eLabel')\n ], AgSlider.prototype, \"eLabel\", void 0);\n __decorate([\n RefSelector('eSlider')\n ], AgSlider.prototype, \"eSlider\", void 0);\n __decorate([\n RefSelector('eText')\n ], AgSlider.prototype, \"eText\", void 0);\n __decorate([\n PostConstruct\n ], AgSlider.prototype, \"init\", null);\n return AgSlider;\n}(AgAbstractLabel));\nexport { AgSlider };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nimport { Component } from \"./component\";\nimport { Color } from \"../utils\";\nimport { RefSelector } from \"./componentAnnotations\";\nimport { PostConstruct } from \"../context/context\";\nimport { exists } from \"../utils/generic\";\nvar AgColorPanel = /** @class */ (function (_super) {\n __extends(AgColorPanel, _super);\n function AgColorPanel(config) {\n var _this = _super.call(this, AgColorPanel.TEMPLATE) || this;\n _this.H = 1; // in the [0, 1] range\n _this.S = 1; // in the [0, 1] range\n _this.B = 1; // in the [0, 1] range\n _this.A = 1; // in the [0, 1] range\n _this.isSpectrumDragging = false;\n _this.isSpectrumHueDragging = false;\n _this.isSpectrumAlphaDragging = false;\n _this.colorChanged = false;\n _this.picker = config.picker;\n return _this;\n }\n AgColorPanel.prototype.postConstruct = function () {\n var eGui = this.getGui();\n this.initRecentColors();\n this.addManagedListener(this.spectrumVal, 'mousedown', this.onSpectrumDraggerDown.bind(this));\n this.addManagedListener(eGui, 'mousemove', this.onSpectrumDraggerMove.bind(this));\n this.addManagedListener(this.spectrumHue, 'mousedown', this.onSpectrumHueDown.bind(this));\n this.addManagedListener(eGui, 'mousemove', this.onSpectrumHueMove.bind(this));\n this.addManagedListener(this.spectrumAlpha, 'mousedown', this.onSpectrumAlphaDown.bind(this));\n this.addManagedListener(eGui, 'mousemove', this.onSpectrumAlphaMove.bind(this));\n // Listening to `mouseup` on the document on purpose. The user might release the mouse button\n // outside the UI control. When the mouse returns back to the control's area, the dragging\n // of the thumb is not expected and seen as a bug.\n this.addManagedListener(document, 'mouseup', this.onMouseUp.bind(this));\n this.addManagedListener(this.recentColors, 'click', this.onRecentColorClick.bind(this));\n };\n AgColorPanel.prototype.refreshSpectrumRect = function () {\n return this.spectrumValRect = this.spectrumVal.getBoundingClientRect();\n };\n AgColorPanel.prototype.refreshHueRect = function () {\n return this.spectrumHueRect = this.spectrumHue.getBoundingClientRect();\n };\n AgColorPanel.prototype.refreshAlphaRect = function () {\n return this.spectrumAlphaRect = this.spectrumAlpha.getBoundingClientRect();\n };\n AgColorPanel.prototype.onSpectrumDraggerDown = function (e) {\n this.refreshSpectrumRect();\n this.isSpectrumDragging = true;\n this.moveDragger(e);\n };\n AgColorPanel.prototype.onSpectrumDraggerMove = function (e) {\n if (this.isSpectrumDragging) {\n this.moveDragger(e);\n }\n };\n AgColorPanel.prototype.onSpectrumHueDown = function (e) {\n this.refreshHueRect();\n this.isSpectrumHueDragging = true;\n this.moveHueSlider(e);\n };\n AgColorPanel.prototype.onSpectrumHueMove = function (e) {\n if (this.isSpectrumHueDragging) {\n this.moveHueSlider(e);\n }\n };\n AgColorPanel.prototype.onSpectrumAlphaDown = function (e) {\n this.refreshAlphaRect();\n this.isSpectrumAlphaDragging = true;\n this.moveAlphaSlider(e);\n };\n AgColorPanel.prototype.onSpectrumAlphaMove = function (e) {\n if (this.isSpectrumAlphaDragging) {\n this.moveAlphaSlider(e);\n }\n };\n AgColorPanel.prototype.onMouseUp = function () {\n this.isSpectrumDragging = false;\n this.isSpectrumHueDragging = false;\n this.isSpectrumAlphaDragging = false;\n };\n AgColorPanel.prototype.moveDragger = function (e) {\n var valRect = this.spectrumValRect;\n if (valRect) {\n var x = e.clientX - valRect.left;\n var y = e.clientY - valRect.top;\n x = Math.max(x, 0);\n x = Math.min(x, valRect.width);\n y = Math.max(y, 0);\n y = Math.min(y, valRect.height);\n this.setSpectrumValue(x / valRect.width, 1 - y / valRect.height);\n }\n };\n AgColorPanel.prototype.moveHueSlider = function (e) {\n var hueRect = this.spectrumHueRect;\n if (hueRect) {\n var slider = this.spectrumHueSlider;\n var sliderRect = slider.getBoundingClientRect();\n var x = e.clientX - hueRect.left;\n x = Math.max(x, 0);\n x = Math.min(x, hueRect.width);\n this.H = 1 - x / hueRect.width;\n slider.style.left = (x + sliderRect.width / 2) + 'px';\n this.update();\n }\n };\n AgColorPanel.prototype.moveAlphaSlider = function (e) {\n var alphaRect = this.spectrumAlphaRect;\n if (alphaRect) {\n var slider = this.spectrumAlphaSlider;\n var sliderRect = slider.getBoundingClientRect();\n var x = e.clientX - alphaRect.left;\n x = Math.max(x, 0);\n x = Math.min(x, alphaRect.width);\n this.A = x / alphaRect.width;\n slider.style.left = (x + sliderRect.width / 2) + 'px';\n this.update();\n }\n };\n AgColorPanel.prototype.update = function () {\n var color = Color.fromHSB(this.H * 360, this.S, this.B, this.A);\n var spectrumColor = Color.fromHSB(this.H * 360, 1, 1);\n var rgbaColor = color.toRgbaString();\n // the recent color list needs to know color has actually changed\n var colorPicker = this.picker;\n var existingColor = Color.fromString(colorPicker.getValue());\n if (existingColor.toRgbaString() !== rgbaColor) {\n this.colorChanged = true;\n }\n colorPicker.setValue(rgbaColor);\n this.spectrumColor.style.backgroundColor = spectrumColor.toRgbaString();\n this.spectrumDragger.style.backgroundColor = rgbaColor;\n };\n /**\n * @param saturation In the [0, 1] interval.\n * @param brightness In the [0, 1] interval.\n */\n AgColorPanel.prototype.setSpectrumValue = function (saturation, brightness) {\n var valRect = this.spectrumValRect || this.refreshSpectrumRect();\n if (valRect) {\n var dragger = this.spectrumDragger;\n var draggerRect = dragger.getBoundingClientRect();\n saturation = Math.max(0, saturation);\n saturation = Math.min(1, saturation);\n brightness = Math.max(0, brightness);\n brightness = Math.min(1, brightness);\n this.S = saturation;\n this.B = brightness;\n dragger.style.left = (saturation * valRect.width - draggerRect.width / 2) + 'px';\n dragger.style.top = ((1 - brightness) * valRect.height - draggerRect.height / 2) + 'px';\n this.update();\n }\n };\n AgColorPanel.prototype.initRecentColors = function () {\n var recentColors = AgColorPanel.recentColors;\n var innerHtml = recentColors.map(function (color, index) {\n return \"
    \";\n });\n this.recentColors.innerHTML = innerHtml.join('');\n };\n AgColorPanel.prototype.setValue = function (val) {\n var color = Color.fromString(val);\n var _a = __read(color.toHSB(), 3), h = _a[0], s = _a[1], b = _a[2];\n this.H = (isNaN(h) ? 0 : h) / 360;\n this.A = color.a;\n var spectrumHueRect = this.spectrumHueRect || this.refreshHueRect();\n var spectrumAlphaRect = this.spectrumAlphaRect || this.refreshAlphaRect();\n this.spectrumHueSlider.style.left = ((this.H - 1) * -spectrumHueRect.width) + \"px\";\n this.spectrumAlphaSlider.style.left = (this.A * spectrumAlphaRect.width) + \"px\";\n this.setSpectrumValue(s, b);\n };\n AgColorPanel.prototype.onRecentColorClick = function (e) {\n var target = e.target;\n if (!exists(target.id)) {\n return;\n }\n var id = parseInt(target.id, 10);\n this.setValue(AgColorPanel.recentColors[id]);\n this.destroy();\n };\n AgColorPanel.prototype.addRecentColor = function () {\n var color = Color.fromHSB(this.H * 360, this.S, this.B, this.A);\n var rgbaColor = color.toRgbaString();\n var recentColors = AgColorPanel.recentColors;\n if (!this.colorChanged || recentColors[0] === rgbaColor) {\n return;\n }\n // remove duplicate color\n recentColors = recentColors.filter(function (currentColor) { return currentColor != rgbaColor; });\n // add color to head\n recentColors = [rgbaColor].concat(recentColors);\n // ensure we don't exceed max number of recent colors\n if (recentColors.length > AgColorPanel.maxRecentColors) {\n recentColors = recentColors.slice(0, AgColorPanel.maxRecentColors);\n }\n AgColorPanel.recentColors = recentColors;\n };\n AgColorPanel.prototype.destroy = function () {\n this.addRecentColor();\n _super.prototype.destroy.call(this);\n };\n AgColorPanel.maxRecentColors = 8;\n AgColorPanel.recentColors = [];\n AgColorPanel.TEMPLATE = \"
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \";\n __decorate([\n RefSelector('spectrumColor')\n ], AgColorPanel.prototype, \"spectrumColor\", void 0);\n __decorate([\n RefSelector('spectrumVal')\n ], AgColorPanel.prototype, \"spectrumVal\", void 0);\n __decorate([\n RefSelector('spectrumDragger')\n ], AgColorPanel.prototype, \"spectrumDragger\", void 0);\n __decorate([\n RefSelector('spectrumHue')\n ], AgColorPanel.prototype, \"spectrumHue\", void 0);\n __decorate([\n RefSelector('spectrumHueSlider')\n ], AgColorPanel.prototype, \"spectrumHueSlider\", void 0);\n __decorate([\n RefSelector('spectrumAlpha')\n ], AgColorPanel.prototype, \"spectrumAlpha\", void 0);\n __decorate([\n RefSelector('spectrumAlphaSlider')\n ], AgColorPanel.prototype, \"spectrumAlphaSlider\", void 0);\n __decorate([\n RefSelector('recentColors')\n ], AgColorPanel.prototype, \"recentColors\", void 0);\n __decorate([\n PostConstruct\n ], AgColorPanel.prototype, \"postConstruct\", null);\n return AgColorPanel;\n}(Component));\nexport { AgColorPanel };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { AgColorPanel } from \"./agColorPanel\";\nimport { AgDialog } from \"./agDialog\";\nimport { AgPickerField } from \"./agPickerField\";\nimport { setAriaExpanded } from \"../utils/aria\";\nvar AgColorPicker = /** @class */ (function (_super) {\n __extends(AgColorPicker, _super);\n function AgColorPicker(config) {\n var _this = _super.call(this, config, 'ag-color-picker', 'colorPicker') || this;\n if (config && config.color) {\n _this.value = config.color;\n }\n return _this;\n }\n AgColorPicker.prototype.postConstruct = function () {\n _super.prototype.postConstruct.call(this);\n if (this.value) {\n this.setValue(this.value);\n }\n };\n AgColorPicker.prototype.showPicker = function () {\n var _this = this;\n var eGuiRect = this.getGui().getBoundingClientRect();\n var colorDialog = this.createBean(new AgDialog({\n closable: false,\n modal: true,\n hideTitleBar: true,\n minWidth: 190,\n width: 190,\n height: 250,\n x: eGuiRect.right - 190,\n y: eGuiRect.top - 250\n }));\n this.isPickerDisplayed = true;\n colorDialog.addCssClass('ag-color-dialog');\n setAriaExpanded(this.eWrapper, true);\n var colorPanel = this.createBean(new AgColorPanel({ picker: this }));\n colorPanel.addDestroyFunc(function () {\n if (colorDialog.isAlive()) {\n _this.destroyBean(colorDialog);\n }\n });\n colorDialog.setParentComponent(this);\n colorDialog.setBodyComponent(colorPanel);\n colorPanel.setValue(this.getValue());\n colorDialog.addDestroyFunc(function () {\n // here we check if the picker was already being\n // destroyed to avoid a stack overflow\n if (!_this.isDestroyingPicker) {\n _this.isDestroyingPicker = true;\n if (colorPanel.isAlive()) {\n _this.destroyBean(colorPanel);\n }\n }\n else {\n _this.isDestroyingPicker = false;\n }\n if (_this.isAlive()) {\n setAriaExpanded(_this.eWrapper, false);\n _this.getFocusableElement().focus();\n }\n _this.isPickerDisplayed = false;\n });\n return colorDialog;\n };\n AgColorPicker.prototype.setValue = function (color) {\n if (this.value === color) {\n return this;\n }\n this.eDisplayField.style.backgroundColor = color;\n return _super.prototype.setValue.call(this, color);\n };\n AgColorPicker.prototype.getValue = function () {\n return this.value;\n };\n return AgColorPicker;\n}(AgPickerField));\nexport { AgColorPicker };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { AgInputTextField } from \"./agInputTextField\";\nimport { addOrRemoveAttribute } from '../utils/dom';\nvar AgInputNumberField = /** @class */ (function (_super) {\n __extends(AgInputNumberField, _super);\n function AgInputNumberField(config) {\n return _super.call(this, config, 'ag-number-field', 'number') || this;\n }\n AgInputNumberField.prototype.postConstruct = function () {\n var _this = this;\n _super.prototype.postConstruct.call(this);\n this.addManagedListener(this.eInput, 'blur', function () {\n var floatedValue = parseFloat(_this.eInput.value);\n var value = isNaN(floatedValue) ? '' : _this.normalizeValue(floatedValue.toString());\n if (_this.value !== value) {\n _this.setValue(value);\n }\n });\n this.eInput.step = 'any';\n };\n AgInputNumberField.prototype.normalizeValue = function (value) {\n if (value === '') {\n return '';\n }\n if (this.precision) {\n value = this.adjustPrecision(value);\n }\n var val = parseFloat(value);\n if (this.min != null && val < this.min) {\n value = this.min.toString();\n }\n else if (this.max != null && val > this.max) {\n value = this.max.toString();\n }\n return value;\n };\n AgInputNumberField.prototype.adjustPrecision = function (value) {\n if (this.precision) {\n var floatString = parseFloat(value).toFixed(this.precision);\n value = parseFloat(floatString).toString();\n }\n return value;\n };\n AgInputNumberField.prototype.setMin = function (min) {\n if (this.min === min) {\n return this;\n }\n this.min = min;\n addOrRemoveAttribute(this.eInput, 'min', min);\n return this;\n };\n AgInputNumberField.prototype.setMax = function (max) {\n if (this.max === max) {\n return this;\n }\n this.max = max;\n addOrRemoveAttribute(this.eInput, 'max', max);\n return this;\n };\n AgInputNumberField.prototype.setPrecision = function (precision) {\n this.precision = precision;\n return this;\n };\n AgInputNumberField.prototype.setStep = function (step) {\n if (this.step === step) {\n return this;\n }\n this.step = step;\n addOrRemoveAttribute(this.eInput, 'step', step);\n return this;\n };\n AgInputNumberField.prototype.setValue = function (value, silent) {\n value = this.adjustPrecision(value);\n var normalizedValue = this.normalizeValue(value);\n if (value != normalizedValue) {\n return this;\n }\n return _super.prototype.setValue.call(this, value, silent);\n };\n return AgInputNumberField;\n}(AgInputTextField));\nexport { AgInputNumberField };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { AgAbstractInputField } from \"./agAbstractInputField\";\nvar AgInputRange = /** @class */ (function (_super) {\n __extends(AgInputRange, _super);\n function AgInputRange(config) {\n return _super.call(this, config, 'ag-range-field', 'range') || this;\n }\n AgInputRange.prototype.postConstruct = function () {\n _super.prototype.postConstruct.call(this);\n var _a = this.config, min = _a.min, max = _a.max, step = _a.step;\n if (min != null) {\n this.setMinValue(min);\n }\n if (max != null) {\n this.setMaxValue(max);\n }\n this.setStep(step || 1);\n };\n AgInputRange.prototype.addInputListeners = function () {\n var _this = this;\n this.addManagedListener(this.eInput, 'input', function (e) {\n var value = e.target.value;\n _this.setValue(value);\n });\n };\n AgInputRange.prototype.setMinValue = function (value) {\n this.min = value;\n this.eInput.setAttribute('min', value.toString());\n return this;\n };\n AgInputRange.prototype.setMaxValue = function (value) {\n this.max = value;\n this.eInput.setAttribute('max', value.toString());\n return this;\n };\n AgInputRange.prototype.setStep = function (value) {\n this.eInput.setAttribute('step', value.toString());\n return this;\n };\n AgInputRange.prototype.setValue = function (value, silent) {\n if (this.min != null) {\n value = Math.max(parseFloat(value), this.min).toString();\n }\n if (this.max != null) {\n value = Math.min(parseFloat(value), this.max).toString();\n }\n var ret = _super.prototype.setValue.call(this, value, silent);\n this.eInput.value = value;\n return ret;\n };\n return AgInputRange;\n}(AgAbstractInputField));\nexport { AgInputRange };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { AgAbstractLabel } from \"./agAbstractLabel\";\nimport { RefSelector } from \"./componentAnnotations\";\nimport { Autowired } from \"../context/context\";\nimport { AgAbstractField } from \"./agAbstractField\";\nimport { exists } from \"../utils/generic\";\nimport { setFixedWidth } from \"../utils/dom\";\nvar AgAngleSelect = /** @class */ (function (_super) {\n __extends(AgAngleSelect, _super);\n function AgAngleSelect(config) {\n var _this = _super.call(this, config, AgAngleSelect.TEMPLATE) || this;\n _this.radius = 0;\n _this.offsetX = 0;\n _this.offsetY = 0;\n return _this;\n }\n AgAngleSelect.prototype.postConstruct = function () {\n var _this = this;\n _super.prototype.postConstruct.call(this);\n this.dragListener = {\n eElement: this.eParentCircle,\n dragStartPixels: 0,\n onDragStart: function (e) {\n _this.parentCircleRect = _this.eParentCircle.getBoundingClientRect();\n },\n onDragging: function (e) { return _this.calculateAngleDrag(e); },\n onDragStop: function () { }\n };\n this.dragService.addDragSource(this.dragListener);\n this.eAngleValue\n .setLabel('')\n .setLabelWidth(5)\n .setInputWidth(45)\n .setMin(0)\n .setMax(360)\n .setValue(\"\" + this.degrees)\n .onValueChange(function (value) {\n if (value == null || value === '') {\n value = '0';\n }\n value = _this.eAngleValue.normalizeValue(value);\n var floatValue = parseFloat(value);\n if (floatValue > 180) {\n floatValue = floatValue - 360;\n }\n _this.setValue(floatValue);\n });\n this.updateNumberInput();\n if (exists(this.getValue())) {\n this.eAngleValue.setValue(this.normalizeNegativeValue(this.getValue()).toString());\n }\n this.addManagedListener(this, AgAbstractField.EVENT_CHANGED, function () {\n var eDocument = _this.gridOptionsWrapper.getDocument();\n if (_this.eAngleValue.getInputElement().contains(eDocument.activeElement)) {\n return;\n }\n _this.updateNumberInput();\n });\n };\n AgAngleSelect.prototype.updateNumberInput = function () {\n var normalizedValue = this.normalizeNegativeValue(this.getValue());\n this.eAngleValue.setValue(normalizedValue.toString());\n };\n AgAngleSelect.prototype.positionChildCircle = function (radians) {\n var rect = this.parentCircleRect || { width: 24, height: 24 };\n var eChildCircle = this.eChildCircle;\n var centerX = rect.width / 2;\n var centerY = rect.height / 2;\n eChildCircle.style.left = centerX + Math.cos(radians) * 8 + \"px\";\n eChildCircle.style.top = centerY + Math.sin(radians) * 8 + \"px\";\n };\n AgAngleSelect.prototype.calculatePolar = function () {\n var x = this.offsetX;\n var y = this.offsetY;\n var radians = Math.atan2(y, x);\n this.degrees = this.toDegrees(radians);\n this.radius = Math.sqrt((x * x) + (y * y));\n this.positionChildCircle(radians);\n };\n AgAngleSelect.prototype.calculateCartesian = function () {\n var radians = this.toRadians(this.getValue());\n var radius = this.getRadius();\n this\n .setOffsetX(Math.cos(radians) * radius)\n .setOffsetY(Math.sin(radians) * radius);\n };\n AgAngleSelect.prototype.setOffsetX = function (offset) {\n if (this.offsetX !== offset) {\n this.offsetX = offset;\n this.calculatePolar();\n }\n return this;\n };\n AgAngleSelect.prototype.setOffsetY = function (offset) {\n if (this.offsetY !== offset) {\n this.offsetY = offset;\n this.calculatePolar();\n }\n return this;\n };\n AgAngleSelect.prototype.calculateAngleDrag = function (e) {\n var rect = this.parentCircleRect;\n var centerX = rect.width / 2;\n var centerY = rect.height / 2;\n var x = e.clientX - rect.left;\n var y = e.clientY - rect.top;\n var dx = x - centerX;\n var dy = y - centerY;\n var radians = Math.atan2(dy, dx);\n this.setValue(radians, true);\n };\n AgAngleSelect.prototype.toDegrees = function (radians) {\n return radians / Math.PI * 180;\n };\n AgAngleSelect.prototype.toRadians = function (degrees) {\n return degrees / 180 * Math.PI;\n };\n AgAngleSelect.prototype.normalizeNegativeValue = function (degrees) {\n return degrees < 0 ? 360 + degrees : degrees;\n };\n AgAngleSelect.prototype.normalizeAngle180 = function (radians) {\n radians %= Math.PI * 2;\n if (radians < -Math.PI) {\n radians += Math.PI * 2;\n }\n else if (radians >= Math.PI) {\n radians -= Math.PI * 2;\n }\n return radians;\n };\n AgAngleSelect.prototype.getRadius = function () {\n return this.radius;\n };\n AgAngleSelect.prototype.setRadius = function (r) {\n if (this.radius === r) {\n return this;\n }\n this.radius = r;\n this.calculateCartesian();\n return this;\n };\n AgAngleSelect.prototype.onValueChange = function (callbackFn) {\n var _this = this;\n this.addManagedListener(this, AgAbstractField.EVENT_CHANGED, function () {\n callbackFn(_this.degrees);\n });\n return this;\n };\n AgAngleSelect.prototype.getValue = function (radians) {\n return radians ? this.toRadians(this.degrees) : this.degrees;\n };\n AgAngleSelect.prototype.setValue = function (degrees, radians) {\n var radiansValue;\n if (!radians) {\n radiansValue = this.normalizeAngle180(this.toRadians(degrees));\n }\n else {\n radiansValue = degrees;\n }\n degrees = this.toDegrees(radiansValue);\n if (this.degrees !== degrees) {\n this.degrees = Math.floor(degrees);\n this.calculateCartesian();\n this.positionChildCircle(radiansValue);\n this.dispatchEvent({ type: AgAbstractField.EVENT_CHANGED });\n }\n return this;\n };\n AgAngleSelect.prototype.setWidth = function (width) {\n setFixedWidth(this.getGui(), width);\n return this;\n };\n AgAngleSelect.prototype.destroy = function () {\n this.dragService.removeDragSource(this.dragListener);\n _super.prototype.destroy.call(this);\n };\n AgAngleSelect.TEMPLATE = \"
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n \\n
    \\n
    \";\n __decorate([\n RefSelector('eLabel')\n ], AgAngleSelect.prototype, \"eLabel\", void 0);\n __decorate([\n RefSelector('eParentCircle')\n ], AgAngleSelect.prototype, \"eParentCircle\", void 0);\n __decorate([\n RefSelector('eChildCircle')\n ], AgAngleSelect.prototype, \"eChildCircle\", void 0);\n __decorate([\n RefSelector('eAngleValue')\n ], AgAngleSelect.prototype, \"eAngleValue\", void 0);\n __decorate([\n Autowired('dragService')\n ], AgAngleSelect.prototype, \"dragService\", void 0);\n return AgAngleSelect;\n}(AgAbstractLabel));\nexport { AgAngleSelect };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { AgCheckbox } from './agCheckbox';\nvar AgToggleButton = /** @class */ (function (_super) {\n __extends(AgToggleButton, _super);\n function AgToggleButton(config) {\n return _super.call(this, config, 'ag-toggle-button') || this;\n }\n AgToggleButton.prototype.setValue = function (value, silent) {\n _super.prototype.setValue.call(this, value, silent);\n this.addOrRemoveCssClass('ag-selected', this.getValue());\n return this;\n };\n return AgToggleButton;\n}(AgCheckbox));\nexport { AgToggleButton };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Bean } from \"../context/context\";\nimport { BeanStub } from \"../context/beanStub\";\nimport { Constants } from \"../constants/constants\";\nimport { exists } from \"../utils/generic\";\nvar RowPositionUtils = /** @class */ (function (_super) {\n __extends(RowPositionUtils, _super);\n function RowPositionUtils() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n RowPositionUtils.prototype.getFirstRow = function () {\n var rowIndex = 0;\n var rowPinned;\n if (this.pinnedRowModel.getPinnedTopRowCount()) {\n rowPinned = Constants.PINNED_TOP;\n }\n else if (this.rowModel.getRowCount()) {\n rowPinned = null;\n rowIndex = this.paginationProxy.getPageFirstRow();\n }\n else if (this.pinnedRowModel.getPinnedBottomRowCount()) {\n rowPinned = Constants.PINNED_BOTTOM;\n }\n return rowPinned === undefined ? null : { rowIndex: rowIndex, rowPinned: rowPinned };\n };\n RowPositionUtils.prototype.getLastRow = function () {\n var rowIndex;\n var rowPinned = null;\n var pinnedBottomCount = this.pinnedRowModel.getPinnedBottomRowCount();\n var pinnedTopCount = this.pinnedRowModel.getPinnedTopRowCount();\n if (pinnedBottomCount) {\n rowPinned = Constants.PINNED_BOTTOM;\n rowIndex = pinnedBottomCount - 1;\n }\n else if (this.rowModel.getRowCount()) {\n rowPinned = null;\n rowIndex = this.paginationProxy.getPageLastRow();\n }\n else if (pinnedTopCount) {\n rowPinned = Constants.PINNED_TOP;\n rowIndex = pinnedTopCount - 1;\n }\n return rowIndex === undefined ? null : { rowIndex: rowIndex, rowPinned: rowPinned };\n };\n RowPositionUtils.prototype.getRowNode = function (gridRow) {\n switch (gridRow.rowPinned) {\n case Constants.PINNED_TOP:\n return this.pinnedRowModel.getPinnedTopRowData()[gridRow.rowIndex];\n case Constants.PINNED_BOTTOM:\n return this.pinnedRowModel.getPinnedBottomRowData()[gridRow.rowIndex];\n default:\n return this.rowModel.getRow(gridRow.rowIndex);\n }\n };\n RowPositionUtils.prototype.sameRow = function (rowA, rowB) {\n // if both missing\n if (!rowA && !rowB) {\n return true;\n }\n // if only one missing\n if ((rowA && !rowB) || (!rowA && rowB)) {\n return false;\n }\n // otherwise compare (use == to compare rowPinned because it can be null or undefined)\n return rowA.rowIndex === rowB.rowIndex && rowA.rowPinned == rowB.rowPinned;\n };\n // tests if this row selection is before the other row selection\n RowPositionUtils.prototype.before = function (rowA, rowB) {\n switch (rowA.rowPinned) {\n case Constants.PINNED_TOP:\n // we we are floating top, and other isn't, then we are always before\n if (rowB.rowPinned !== Constants.PINNED_TOP) {\n return true;\n }\n break;\n case Constants.PINNED_BOTTOM:\n // if we are floating bottom, and the other isn't, then we are never before\n if (rowB.rowPinned !== Constants.PINNED_BOTTOM) {\n return false;\n }\n break;\n default:\n // if we are not floating, but the other one is floating...\n if (exists(rowB.rowPinned)) {\n return rowB.rowPinned !== Constants.PINNED_TOP;\n }\n break;\n }\n return rowA.rowIndex < rowB.rowIndex;\n };\n __decorate([\n Autowired('rowModel')\n ], RowPositionUtils.prototype, \"rowModel\", void 0);\n __decorate([\n Autowired('pinnedRowModel')\n ], RowPositionUtils.prototype, \"pinnedRowModel\", void 0);\n __decorate([\n Autowired('paginationProxy')\n ], RowPositionUtils.prototype, \"paginationProxy\", void 0);\n RowPositionUtils = __decorate([\n Bean('rowPositionUtils')\n ], RowPositionUtils);\n return RowPositionUtils;\n}(BeanStub));\nexport { RowPositionUtils };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Bean } from \"../context/context\";\nimport { BeanStub } from \"../context/beanStub\";\nvar CellPositionUtils = /** @class */ (function (_super) {\n __extends(CellPositionUtils, _super);\n function CellPositionUtils() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n CellPositionUtils.prototype.createId = function (cellPosition) {\n var rowIndex = cellPosition.rowIndex, rowPinned = cellPosition.rowPinned, column = cellPosition.column;\n return this.createIdFromValues(rowIndex, column, rowPinned);\n };\n CellPositionUtils.prototype.createIdFromValues = function (rowIndex, column, rowPinned) {\n return rowIndex + \".\" + (rowPinned == null ? 'null' : rowPinned) + \".\" + column.getId();\n };\n CellPositionUtils.prototype.equals = function (cellA, cellB) {\n var colsMatch = cellA.column === cellB.column;\n var floatingMatch = cellA.rowPinned === cellB.rowPinned;\n var indexMatch = cellA.rowIndex === cellB.rowIndex;\n return colsMatch && floatingMatch && indexMatch;\n };\n CellPositionUtils = __decorate([\n Bean('cellPositionUtils')\n ], CellPositionUtils);\n return CellPositionUtils;\n}(BeanStub));\nexport { CellPositionUtils };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { RowNode } from \"../entities/rowNode\";\nimport { Autowired, Bean, PostConstruct } from \"../context/context\";\nimport { Events } from \"../events\";\nimport { Constants } from \"../constants/constants\";\nimport { BeanStub } from \"../context/beanStub\";\nimport { missingOrEmpty } from \"../utils/generic\";\nimport { last } from \"../utils/array\";\nvar PinnedRowModel = /** @class */ (function (_super) {\n __extends(PinnedRowModel, _super);\n function PinnedRowModel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PinnedRowModel.prototype.init = function () {\n this.setPinnedTopRowData(this.gridOptionsWrapper.getPinnedTopRowData());\n this.setPinnedBottomRowData(this.gridOptionsWrapper.getPinnedBottomRowData());\n };\n PinnedRowModel.prototype.isEmpty = function (floating) {\n var rows = floating === Constants.PINNED_TOP ? this.pinnedTopRows : this.pinnedBottomRows;\n return missingOrEmpty(rows);\n };\n PinnedRowModel.prototype.isRowsToRender = function (floating) {\n return !this.isEmpty(floating);\n };\n PinnedRowModel.prototype.getRowAtPixel = function (pixel, floating) {\n var rows = floating === Constants.PINNED_TOP ? this.pinnedTopRows : this.pinnedBottomRows;\n if (missingOrEmpty(rows)) {\n return 0; // this should never happen, just in case, 0 is graceful failure\n }\n for (var i = 0; i < rows.length; i++) {\n var rowNode = rows[i];\n var rowTopPixel = rowNode.rowTop + rowNode.rowHeight - 1;\n // only need to range check against the top pixel, as we are going through the list\n // in order, first row to hit the pixel wins\n if (rowTopPixel >= pixel) {\n return i;\n }\n }\n return rows.length - 1;\n };\n PinnedRowModel.prototype.setPinnedTopRowData = function (rowData) {\n this.pinnedTopRows = this.createNodesFromData(rowData, true);\n var event = {\n type: Events.EVENT_PINNED_ROW_DATA_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n PinnedRowModel.prototype.setPinnedBottomRowData = function (rowData) {\n this.pinnedBottomRows = this.createNodesFromData(rowData, false);\n var event = {\n type: Events.EVENT_PINNED_ROW_DATA_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n PinnedRowModel.prototype.createNodesFromData = function (allData, isTop) {\n var _this = this;\n var rowNodes = [];\n if (allData) {\n var nextRowTop_1 = 0;\n allData.forEach(function (dataItem, index) {\n var rowNode = new RowNode(_this.beans);\n rowNode.data = dataItem;\n var idPrefix = isTop ? RowNode.ID_PREFIX_TOP_PINNED : RowNode.ID_PREFIX_BOTTOM_PINNED;\n rowNode.id = idPrefix + index;\n rowNode.rowPinned = isTop ? Constants.PINNED_TOP : Constants.PINNED_BOTTOM;\n rowNode.setRowTop(nextRowTop_1);\n rowNode.setRowHeight(_this.gridOptionsWrapper.getRowHeightForNode(rowNode).height);\n rowNode.setRowIndex(index);\n nextRowTop_1 += rowNode.rowHeight;\n rowNodes.push(rowNode);\n });\n }\n return rowNodes;\n };\n PinnedRowModel.prototype.getPinnedTopRowData = function () {\n return this.pinnedTopRows;\n };\n PinnedRowModel.prototype.getPinnedBottomRowData = function () {\n return this.pinnedBottomRows;\n };\n PinnedRowModel.prototype.getPinnedTopTotalHeight = function () {\n return this.getTotalHeight(this.pinnedTopRows);\n };\n PinnedRowModel.prototype.getPinnedTopRowCount = function () {\n return this.pinnedTopRows ? this.pinnedTopRows.length : 0;\n };\n PinnedRowModel.prototype.getPinnedBottomRowCount = function () {\n return this.pinnedBottomRows ? this.pinnedBottomRows.length : 0;\n };\n PinnedRowModel.prototype.getPinnedTopRow = function (index) {\n return this.pinnedTopRows[index];\n };\n PinnedRowModel.prototype.getPinnedBottomRow = function (index) {\n return this.pinnedBottomRows[index];\n };\n PinnedRowModel.prototype.forEachPinnedTopRow = function (callback) {\n if (missingOrEmpty(this.pinnedTopRows)) {\n return;\n }\n this.pinnedTopRows.forEach(callback);\n };\n PinnedRowModel.prototype.forEachPinnedBottomRow = function (callback) {\n if (missingOrEmpty(this.pinnedBottomRows)) {\n return;\n }\n this.pinnedBottomRows.forEach(callback);\n };\n PinnedRowModel.prototype.getPinnedBottomTotalHeight = function () {\n return this.getTotalHeight(this.pinnedBottomRows);\n };\n PinnedRowModel.prototype.getTotalHeight = function (rowNodes) {\n if (!rowNodes || rowNodes.length === 0) {\n return 0;\n }\n var lastNode = last(rowNodes);\n return lastNode.rowTop + lastNode.rowHeight;\n };\n __decorate([\n Autowired('columnApi')\n ], PinnedRowModel.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], PinnedRowModel.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('beans')\n ], PinnedRowModel.prototype, \"beans\", void 0);\n __decorate([\n PostConstruct\n ], PinnedRowModel.prototype, \"init\", null);\n PinnedRowModel = __decorate([\n Bean('pinnedRowModel')\n ], PinnedRowModel);\n return PinnedRowModel;\n}(BeanStub));\nexport { PinnedRowModel };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar UndoRedoAction = /** @class */ (function () {\n function UndoRedoAction(cellValueChanges) {\n this.cellValueChanges = cellValueChanges;\n }\n return UndoRedoAction;\n}());\nexport { UndoRedoAction };\nvar FillUndoRedoAction = /** @class */ (function (_super) {\n __extends(FillUndoRedoAction, _super);\n function FillUndoRedoAction(cellValueChanges, initialRange, finalRange) {\n var _this = _super.call(this, cellValueChanges) || this;\n _this.initialRange = initialRange;\n _this.finalRange = finalRange;\n return _this;\n }\n return FillUndoRedoAction;\n}(UndoRedoAction));\nexport { FillUndoRedoAction };\nvar UndoRedoStack = /** @class */ (function () {\n function UndoRedoStack(maxStackSize) {\n this.actionStack = [];\n this.maxStackSize = maxStackSize ? maxStackSize : UndoRedoStack.DEFAULT_STACK_SIZE;\n this.actionStack = new Array(this.maxStackSize);\n }\n UndoRedoStack.prototype.pop = function () {\n return this.actionStack.pop();\n };\n UndoRedoStack.prototype.push = function (item) {\n var shouldAddActions = item.cellValueChanges && item.cellValueChanges.length > 0;\n if (!shouldAddActions) {\n return;\n }\n if (this.actionStack.length === this.maxStackSize) {\n this.actionStack.shift();\n }\n this.actionStack.push(item);\n };\n UndoRedoStack.prototype.clear = function () {\n this.actionStack = [];\n };\n UndoRedoStack.prototype.getCurrentStackSize = function () {\n return this.actionStack.length;\n };\n UndoRedoStack.DEFAULT_STACK_SIZE = 10;\n return UndoRedoStack;\n}());\nexport { UndoRedoStack };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Bean, PostConstruct } from \"../context/context\";\nimport { Events } from \"../eventKeys\";\nimport { FillUndoRedoAction, UndoRedoAction, UndoRedoStack } from \"./undoRedoStack\";\nimport { Constants } from \"../constants/constants\";\nimport { ModuleNames } from \"../modules/moduleNames\";\nimport { ModuleRegistry } from \"../modules/moduleRegistry\";\nimport { BeanStub } from \"../context/beanStub\";\nvar UndoRedoService = /** @class */ (function (_super) {\n __extends(UndoRedoService, _super);\n function UndoRedoService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.cellValueChanges = [];\n _this.activeCellEdit = null;\n _this.activeRowEdit = null;\n _this.isPasting = false;\n _this.isFilling = false;\n _this.onCellValueChanged = function (event) {\n var eventCell = { column: event.column, rowIndex: event.rowIndex, rowPinned: event.rowPinned };\n var isCellEditing = _this.activeCellEdit !== null && _this.cellPositionUtils.equals(_this.activeCellEdit, eventCell);\n var isRowEditing = _this.activeRowEdit !== null && _this.rowPositionUtils.sameRow(_this.activeRowEdit, eventCell);\n var shouldCaptureAction = isCellEditing || isRowEditing || _this.isPasting || _this.isFilling;\n if (!shouldCaptureAction) {\n return;\n }\n var rowPinned = event.rowPinned, rowIndex = event.rowIndex, column = event.column, oldValue = event.oldValue, value = event.value;\n var cellValueChange = {\n rowPinned: rowPinned,\n rowIndex: rowIndex,\n columnId: column.getColId(),\n newValue: value,\n oldValue: oldValue\n };\n _this.cellValueChanges.push(cellValueChange);\n };\n _this.clearStacks = function () {\n _this.undoStack.clear();\n _this.redoStack.clear();\n };\n return _this;\n }\n UndoRedoService.prototype.init = function () {\n if (!this.gridOptionsWrapper.isUndoRedoCellEditing()) {\n return;\n }\n var undoRedoLimit = this.gridOptionsWrapper.getUndoRedoCellEditingLimit();\n if (undoRedoLimit <= 0) {\n return;\n }\n this.undoStack = new UndoRedoStack(undoRedoLimit);\n this.redoStack = new UndoRedoStack(undoRedoLimit);\n this.addRowEditingListeners();\n this.addCellEditingListeners();\n this.addPasteListeners();\n this.addFillListeners();\n this.addManagedListener(this.eventService, Events.EVENT_CELL_VALUE_CHANGED, this.onCellValueChanged);\n // undo / redo is restricted to actual editing so we clear the stacks when other operations are\n // performed that change the order of the row / cols.\n this.addManagedListener(this.eventService, Events.EVENT_MODEL_UPDATED, this.clearStacks);\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, this.clearStacks);\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.clearStacks);\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_GROUP_OPENED, this.clearStacks);\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.clearStacks);\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_MOVED, this.clearStacks);\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PINNED, this.clearStacks);\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VISIBLE, this.clearStacks);\n this.addManagedListener(this.eventService, Events.EVENT_ROW_DRAG_END, this.clearStacks);\n };\n UndoRedoService.prototype.getCurrentUndoStackSize = function () {\n return this.undoStack ? this.undoStack.getCurrentStackSize() : 0;\n };\n UndoRedoService.prototype.getCurrentRedoStackSize = function () {\n return this.redoStack ? this.redoStack.getCurrentStackSize() : 0;\n };\n UndoRedoService.prototype.undo = function () {\n if (!this.undoStack) {\n return;\n }\n var undoAction = this.undoStack.pop();\n if (!undoAction || !undoAction.cellValueChanges) {\n return;\n }\n this.processAction(undoAction, function (cellValueChange) { return cellValueChange.oldValue; });\n if (undoAction instanceof FillUndoRedoAction) {\n this.processRangeAndCellFocus(undoAction.cellValueChanges, undoAction.initialRange);\n }\n else {\n this.processRangeAndCellFocus(undoAction.cellValueChanges);\n }\n this.redoStack.push(undoAction);\n };\n UndoRedoService.prototype.redo = function () {\n if (!this.redoStack) {\n return;\n }\n var redoAction = this.redoStack.pop();\n if (!redoAction || !redoAction.cellValueChanges) {\n return;\n }\n this.processAction(redoAction, function (cellValueChange) { return cellValueChange.newValue; });\n if (redoAction instanceof FillUndoRedoAction) {\n this.processRangeAndCellFocus(redoAction.cellValueChanges, redoAction.finalRange);\n }\n else {\n this.processRangeAndCellFocus(redoAction.cellValueChanges);\n }\n this.undoStack.push(redoAction);\n };\n UndoRedoService.prototype.processAction = function (action, valueExtractor) {\n var _this = this;\n action.cellValueChanges.forEach(function (cellValueChange) {\n var rowIndex = cellValueChange.rowIndex, rowPinned = cellValueChange.rowPinned, columnId = cellValueChange.columnId;\n var rowPosition = { rowIndex: rowIndex, rowPinned: rowPinned };\n var currentRow = _this.getRowNode(rowPosition);\n // checks if the row has been filtered out\n if (!currentRow.displayed) {\n return;\n }\n currentRow.setDataValue(columnId, valueExtractor(cellValueChange));\n });\n };\n UndoRedoService.prototype.processRangeAndCellFocus = function (cellValueChanges, range) {\n var lastFocusedCell;\n if (range) {\n var startRow = range.startRow;\n var endRow = range.endRow;\n lastFocusedCell = {\n rowPinned: startRow.rowPinned,\n rowIndex: startRow.rowIndex,\n columnId: range.startColumn.getColId()\n };\n this.setLastFocusedCell(lastFocusedCell);\n var cellRangeParams = {\n rowStartIndex: startRow.rowIndex,\n rowStartPinned: startRow.rowPinned,\n rowEndIndex: endRow.rowIndex,\n rowEndPinned: endRow.rowPinned,\n columnStart: range.startColumn,\n columns: range.columns\n };\n this.gridApi.addCellRange(cellRangeParams);\n return;\n }\n var cellValueChange = cellValueChanges[0];\n var rowIndex = cellValueChange.rowIndex, rowPinned = cellValueChange.rowPinned;\n var rowPosition = { rowIndex: rowIndex, rowPinned: rowPinned };\n var row = this.getRowNode(rowPosition);\n lastFocusedCell = {\n rowPinned: cellValueChange.rowPinned,\n rowIndex: row.rowIndex,\n columnId: cellValueChange.columnId\n };\n this.setLastFocusedCell(lastFocusedCell);\n };\n UndoRedoService.prototype.setLastFocusedCell = function (lastFocusedCell) {\n var rowIndex = lastFocusedCell.rowIndex, columnId = lastFocusedCell.columnId, rowPinned = lastFocusedCell.rowPinned;\n this.gridApi.ensureIndexVisible(rowIndex);\n this.gridApi.ensureColumnVisible(columnId);\n if (ModuleRegistry.isRegistered(ModuleNames.RangeSelectionModule)) {\n this.gridApi.clearRangeSelection();\n }\n this.focusService.setFocusedCell(rowIndex, columnId, rowPinned, true);\n };\n UndoRedoService.prototype.addRowEditingListeners = function () {\n var _this = this;\n this.addManagedListener(this.eventService, Events.EVENT_ROW_EDITING_STARTED, function (e) {\n _this.activeRowEdit = { rowIndex: e.rowIndex, rowPinned: e.rowPinned };\n });\n this.addManagedListener(this.eventService, Events.EVENT_ROW_EDITING_STOPPED, function () {\n var action = new UndoRedoAction(_this.cellValueChanges);\n _this.pushActionsToUndoStack(action);\n _this.activeRowEdit = null;\n });\n };\n UndoRedoService.prototype.addCellEditingListeners = function () {\n var _this = this;\n this.addManagedListener(this.eventService, Events.EVENT_CELL_EDITING_STARTED, function (e) {\n _this.activeCellEdit = { column: e.column, rowIndex: e.rowIndex, rowPinned: e.rowPinned };\n });\n this.addManagedListener(this.eventService, Events.EVENT_CELL_EDITING_STOPPED, function () {\n _this.activeCellEdit = null;\n var shouldPushAction = !_this.activeRowEdit && !_this.isPasting && !_this.isFilling;\n if (shouldPushAction) {\n var action = new UndoRedoAction(_this.cellValueChanges);\n _this.pushActionsToUndoStack(action);\n }\n });\n };\n UndoRedoService.prototype.addPasteListeners = function () {\n var _this = this;\n this.addManagedListener(this.eventService, Events.EVENT_PASTE_START, function () {\n _this.isPasting = true;\n });\n this.addManagedListener(this.eventService, Events.EVENT_PASTE_END, function () {\n var action = new UndoRedoAction(_this.cellValueChanges);\n _this.pushActionsToUndoStack(action);\n _this.isPasting = false;\n });\n };\n UndoRedoService.prototype.addFillListeners = function () {\n var _this = this;\n this.addManagedListener(this.eventService, Events.EVENT_FILL_START, function () {\n _this.isFilling = true;\n });\n this.addManagedListener(this.eventService, Events.EVENT_FILL_END, function (event) {\n var action = new FillUndoRedoAction(_this.cellValueChanges, event.initialRange, event.finalRange);\n _this.pushActionsToUndoStack(action);\n _this.isFilling = false;\n });\n };\n UndoRedoService.prototype.pushActionsToUndoStack = function (action) {\n this.undoStack.push(action);\n this.cellValueChanges = [];\n this.redoStack.clear();\n };\n UndoRedoService.prototype.getRowNode = function (gridRow) {\n switch (gridRow.rowPinned) {\n case Constants.PINNED_TOP:\n return this.pinnedRowModel.getPinnedTopRowData()[gridRow.rowIndex];\n case Constants.PINNED_BOTTOM:\n return this.pinnedRowModel.getPinnedBottomRowData()[gridRow.rowIndex];\n default:\n return this.rowModel.getRow(gridRow.rowIndex);\n }\n };\n __decorate([\n Autowired('focusService')\n ], UndoRedoService.prototype, \"focusService\", void 0);\n __decorate([\n Autowired('gridApi')\n ], UndoRedoService.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('rowModel')\n ], UndoRedoService.prototype, \"rowModel\", void 0);\n __decorate([\n Autowired('pinnedRowModel')\n ], UndoRedoService.prototype, \"pinnedRowModel\", void 0);\n __decorate([\n Autowired('cellPositionUtils')\n ], UndoRedoService.prototype, \"cellPositionUtils\", void 0);\n __decorate([\n Autowired('rowPositionUtils')\n ], UndoRedoService.prototype, \"rowPositionUtils\", void 0);\n __decorate([\n PostConstruct\n ], UndoRedoService.prototype, \"init\", null);\n UndoRedoService = __decorate([\n Bean('undoRedoService')\n ], UndoRedoService);\n return UndoRedoService;\n}(BeanStub));\nexport { UndoRedoService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { BeanStub } from \"../../context/beanStub\";\nimport { Autowired, Bean } from \"../../context/context\";\nimport { ColumnGroup } from \"../../entities/columnGroup\";\nimport { HeaderRowType } from \"../row/headerRowComp\";\nvar HeaderPositionUtils = /** @class */ (function (_super) {\n __extends(HeaderPositionUtils, _super);\n function HeaderPositionUtils() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n HeaderPositionUtils.prototype.findHeader = function (focusedHeader, direction) {\n var nextColumn;\n var getGroupMethod;\n var getColMethod;\n if (focusedHeader.column instanceof ColumnGroup) {\n getGroupMethod = \"getDisplayedGroup\" + direction;\n nextColumn = this.columnModel[getGroupMethod](focusedHeader.column);\n }\n else {\n getColMethod = \"getDisplayedCol\" + direction;\n nextColumn = this.columnModel[getColMethod](focusedHeader.column);\n }\n if (nextColumn) {\n return {\n column: nextColumn,\n headerRowIndex: focusedHeader.headerRowIndex\n };\n }\n };\n HeaderPositionUtils.prototype.findColAtEdgeForHeaderRow = function (level, position) {\n var displayedColumns = this.columnModel.getAllDisplayedColumns();\n var column = displayedColumns[position === 'start' ? 0 : displayedColumns.length - 1];\n if (!column) {\n return;\n }\n var childContainer = this.ctrlsService.getHeaderRowContainerCtrl(column.getPinned());\n var type = childContainer.getRowType(level);\n if (type == HeaderRowType.COLUMN_GROUP) {\n var columnGroup = this.columnModel.getColumnGroupAtLevel(column, level);\n return {\n headerRowIndex: level,\n column: columnGroup\n };\n }\n return {\n // if type==null, means the header level didn't exist\n headerRowIndex: type == null ? -1 : level,\n column: column\n };\n };\n __decorate([\n Autowired('columnModel')\n ], HeaderPositionUtils.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('ctrlsService')\n ], HeaderPositionUtils.prototype, \"ctrlsService\", void 0);\n HeaderPositionUtils = __decorate([\n Bean('headerPositionUtils')\n ], HeaderPositionUtils);\n return HeaderPositionUtils;\n}(BeanStub));\nexport { HeaderPositionUtils };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Bean } from \"../context/context\";\nimport { deepCloneDefinition } from \"../utils/object\";\nvar ColumnDefFactory = /** @class */ (function () {\n function ColumnDefFactory() {\n }\n ColumnDefFactory.prototype.buildColumnDefs = function (cols, rowGroupColumns, pivotColumns) {\n var _this = this;\n var res = [];\n var colGroupDefs = {};\n cols.forEach(function (col) {\n var colDef = _this.createDefFromColumn(col, rowGroupColumns, pivotColumns);\n var addToResult = true;\n var childDef = colDef;\n var pointer = col.getOriginalParent();\n while (pointer) {\n var parentDef = null;\n // we don't include padding groups, as the column groups provided\n // by application didn't have these. the whole point of padding groups\n // is to balance the column tree that the user provided.\n if (pointer.isPadding()) {\n pointer = pointer.getOriginalParent();\n continue;\n }\n // if colDef for this group already exists, use it\n var existingParentDef = colGroupDefs[pointer.getGroupId()];\n if (existingParentDef) {\n existingParentDef.children.push(childDef);\n // if we added to result, it would be the second time we did it\n addToResult = false;\n // we don't want to continue up the tree, as it has already been\n // done for this group\n break;\n }\n parentDef = _this.createDefFromGroup(pointer);\n if (parentDef) {\n parentDef.children = [childDef];\n colGroupDefs[parentDef.groupId] = parentDef;\n childDef = parentDef;\n pointer = pointer.getOriginalParent();\n }\n }\n if (addToResult) {\n res.push(childDef);\n }\n });\n return res;\n };\n ColumnDefFactory.prototype.createDefFromGroup = function (group) {\n var defCloned = deepCloneDefinition(group.getColGroupDef(), ['children']);\n if (defCloned) {\n defCloned.groupId = group.getGroupId();\n }\n return defCloned;\n };\n ColumnDefFactory.prototype.createDefFromColumn = function (col, rowGroupColumns, pivotColumns) {\n var colDefCloned = deepCloneDefinition(col.getColDef());\n colDefCloned.colId = col.getColId();\n colDefCloned.width = col.getActualWidth();\n colDefCloned.rowGroup = col.isRowGroupActive();\n colDefCloned.rowGroupIndex = col.isRowGroupActive() ? rowGroupColumns.indexOf(col) : null;\n colDefCloned.pivot = col.isPivotActive();\n colDefCloned.pivotIndex = col.isPivotActive() ? pivotColumns.indexOf(col) : null;\n colDefCloned.aggFunc = col.isValueActive() ? col.getAggFunc() : null;\n colDefCloned.hide = col.isVisible() ? undefined : true;\n colDefCloned.pinned = col.isPinned() ? col.getPinned() : null;\n colDefCloned.sort = col.getSort() ? col.getSort() : null;\n colDefCloned.sortIndex = col.getSortIndex() != null ? col.getSortIndex() : null;\n return colDefCloned;\n };\n ColumnDefFactory = __decorate([\n Bean('columnDefFactory')\n ], ColumnDefFactory);\n return ColumnDefFactory;\n}());\nexport { ColumnDefFactory };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { exists } from \"../../utils/generic\";\nimport { pushAll } from \"../../utils/array\";\nimport { Autowired, Bean } from \"../../context/context\";\nimport { Constants } from \"../../constants/constants\";\nvar RowCssClassCalculator = /** @class */ (function () {\n function RowCssClassCalculator() {\n }\n RowCssClassCalculator.prototype.getInitialRowClasses = function (params) {\n var classes = [];\n if (exists(params.extraCssClass)) {\n classes.push(params.extraCssClass);\n }\n classes.push('ag-row');\n classes.push(params.rowFocused ? 'ag-row-focus' : 'ag-row-no-focus');\n if (params.fadeRowIn) {\n classes.push('ag-opacity-zero');\n }\n classes.push(params.rowIsEven ? 'ag-row-even' : 'ag-row-odd');\n if (params.rowNode.isRowPinned()) {\n classes.push('ag-row-pinned');\n }\n if (params.rowNode.isSelected()) {\n classes.push('ag-row-selected');\n }\n if (params.rowNode.footer) {\n classes.push('ag-row-footer');\n }\n classes.push('ag-row-level-' + params.rowLevel);\n if (params.rowNode.stub) {\n classes.push('ag-row-loading');\n }\n if (params.fullWidthRow) {\n classes.push('ag-full-width-row');\n }\n if (params.expandable) {\n classes.push('ag-row-group');\n classes.push(params.rowNode.expanded ? 'ag-row-group-expanded' : 'ag-row-group-contracted');\n }\n if (params.rowNode.dragging) {\n classes.push('ag-row-dragging');\n }\n pushAll(classes, this.processClassesFromGridOptions(params.rowNode, params.scope));\n pushAll(classes, this.preProcessRowClassRules(params.rowNode, params.scope));\n // we use absolute position unless we are doing print layout\n classes.push(params.printLayout ? 'ag-row-position-relative' : 'ag-row-position-absolute');\n if (params.firstRowOnPage) {\n classes.push('ag-row-first');\n }\n if (params.lastRowOnPage) {\n classes.push('ag-row-last');\n }\n if (params.fullWidthRow) {\n if (params.pinned === Constants.PINNED_LEFT) {\n classes.push('ag-cell-last-left-pinned');\n }\n if (params.pinned === Constants.PINNED_RIGHT) {\n classes.push('ag-cell-first-right-pinned');\n }\n }\n return classes;\n };\n RowCssClassCalculator.prototype.processClassesFromGridOptions = function (rowNode, scope) {\n var res = [];\n var process = function (rowCls) {\n if (typeof rowCls === 'string') {\n res.push(rowCls);\n }\n else if (Array.isArray(rowCls)) {\n rowCls.forEach(function (e) { return res.push(e); });\n }\n };\n // part 1 - rowClass\n var rowClass = this.gridOptionsWrapper.getRowClass();\n if (rowClass) {\n if (typeof rowClass === 'function') {\n console.warn('AG Grid: rowClass should not be a function, please use getRowClass instead');\n return [];\n }\n process(rowClass);\n }\n // part 2 - rowClassFunc\n var rowClassFunc = this.gridOptionsWrapper.getRowClassFunc();\n if (rowClassFunc) {\n var params = {\n data: rowNode.data,\n node: rowNode,\n rowIndex: rowNode.rowIndex,\n $scope: scope,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext()\n };\n var rowClassFuncResult = rowClassFunc(params);\n process(rowClassFuncResult);\n }\n return res;\n };\n RowCssClassCalculator.prototype.preProcessRowClassRules = function (rowNode, scope) {\n var res = [];\n this.processRowClassRules(rowNode, scope, function (className) {\n res.push(className);\n }, function (className) {\n // not catered for, if creating, no need\n // to remove class as it was never there\n });\n return res;\n };\n RowCssClassCalculator.prototype.processRowClassRules = function (rowNode, scope, onApplicableClass, onNotApplicableClass) {\n var rowClassParams = {\n data: rowNode.data,\n node: rowNode,\n rowIndex: rowNode.rowIndex,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n $scope: scope,\n context: this.gridOptionsWrapper.getContext()\n };\n this.stylingService.processClassRules(this.gridOptionsWrapper.rowClassRules(), rowClassParams, onApplicableClass, onNotApplicableClass);\n };\n RowCssClassCalculator.prototype.calculateRowLevel = function (rowNode) {\n if (rowNode.group) {\n return rowNode.level;\n }\n // if a leaf, and a parent exists, put a level of the parent, else put level of 0 for top level item\n return rowNode.parent ? (rowNode.parent.level + 1) : 0;\n };\n __decorate([\n Autowired('stylingService')\n ], RowCssClassCalculator.prototype, \"stylingService\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], RowCssClassCalculator.prototype, \"gridOptionsWrapper\", void 0);\n RowCssClassCalculator = __decorate([\n Bean('rowCssClassCalculator')\n ], RowCssClassCalculator);\n return RowCssClassCalculator;\n}());\nexport { RowCssClassCalculator };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { BeanStub } from \"../context/beanStub\";\nvar RowNodeBlock = /** @class */ (function (_super) {\n __extends(RowNodeBlock, _super);\n function RowNodeBlock(id) {\n var _this = _super.call(this) || this;\n _this.state = RowNodeBlock.STATE_WAITING_TO_LOAD;\n _this.version = 0;\n _this.id = id;\n return _this;\n }\n RowNodeBlock.prototype.getId = function () {\n return this.id;\n };\n RowNodeBlock.prototype.load = function () {\n this.state = RowNodeBlock.STATE_LOADING;\n this.loadFromDatasource();\n };\n RowNodeBlock.prototype.getVersion = function () {\n return this.version;\n };\n RowNodeBlock.prototype.setStateWaitingToLoad = function () {\n // in case any current loads in progress, this will have their results ignored\n this.version++;\n this.state = RowNodeBlock.STATE_WAITING_TO_LOAD;\n };\n RowNodeBlock.prototype.getState = function () {\n return this.state;\n };\n RowNodeBlock.prototype.pageLoadFailed = function (version) {\n var requestMostRecentAndLive = this.isRequestMostRecentAndLive(version);\n if (requestMostRecentAndLive) {\n this.state = RowNodeBlock.STATE_FAILED;\n this.processServerFail();\n }\n this.dispatchLoadCompleted(false);\n };\n RowNodeBlock.prototype.success = function (version, params) {\n this.successCommon(version, params);\n };\n RowNodeBlock.prototype.pageLoaded = function (version, rows, lastRow) {\n this.successCommon(version, { rowData: rows, rowCount: lastRow });\n };\n RowNodeBlock.prototype.isRequestMostRecentAndLive = function (version) {\n // thisIsMostRecentRequest - if block was refreshed, then another request\n // could of been sent after this one.\n var thisIsMostRecentRequest = version === this.version;\n // weAreNotDestroyed - if InfiniteStore is purged, then blocks are destroyed\n // and new blocks created. so data loads of old blocks are discarded.\n var weAreNotDestroyed = this.isAlive();\n return thisIsMostRecentRequest && weAreNotDestroyed;\n };\n RowNodeBlock.prototype.successCommon = function (version, params) {\n // need to dispatch load complete before processing the data, as PaginationComp checks\n // RowNodeBlockLoader to see if it is still loading, so the RowNodeBlockLoader needs to\n // be updated first (via LoadComplete event) before PaginationComp updates (via processServerResult method)\n this.dispatchLoadCompleted();\n var requestMostRecentAndLive = this.isRequestMostRecentAndLive(version);\n if (requestMostRecentAndLive) {\n this.state = RowNodeBlock.STATE_LOADED;\n this.processServerResult(params);\n }\n };\n RowNodeBlock.prototype.dispatchLoadCompleted = function (success) {\n if (success === void 0) { success = true; }\n // we fire event regardless of processing data or now, as we want\n // the concurrentLoadRequests count to be reduced in BlockLoader\n var event = {\n type: RowNodeBlock.EVENT_LOAD_COMPLETE,\n success: success,\n block: this\n };\n this.dispatchEvent(event);\n };\n RowNodeBlock.EVENT_LOAD_COMPLETE = 'loadComplete';\n RowNodeBlock.STATE_WAITING_TO_LOAD = 'needsLoading';\n RowNodeBlock.STATE_LOADING = 'loading';\n RowNodeBlock.STATE_LOADED = 'loaded';\n RowNodeBlock.STATE_FAILED = 'failed';\n return RowNodeBlock;\n}(BeanStub));\nexport { RowNodeBlock };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { RowNodeBlock } from \"./rowNodeBlock\";\nimport { Bean, PostConstruct, Qualifier } from \"../context/context\";\nimport { BeanStub } from \"../context/beanStub\";\nimport { _ } from \"../utils\";\nvar RowNodeBlockLoader = /** @class */ (function (_super) {\n __extends(RowNodeBlockLoader, _super);\n function RowNodeBlockLoader() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.activeBlockLoadsCount = 0;\n _this.blocks = [];\n _this.active = true;\n return _this;\n }\n RowNodeBlockLoader_1 = RowNodeBlockLoader;\n RowNodeBlockLoader.prototype.postConstruct = function () {\n this.maxConcurrentRequests = this.gridOptionsWrapper.getMaxConcurrentDatasourceRequests();\n var blockLoadDebounceMillis = this.gridOptionsWrapper.getBlockLoadDebounceMillis();\n if (blockLoadDebounceMillis && blockLoadDebounceMillis > 0) {\n this.checkBlockToLoadDebounce = _.debounce(this.performCheckBlocksToLoad.bind(this), blockLoadDebounceMillis);\n }\n };\n RowNodeBlockLoader.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('RowNodeBlockLoader');\n };\n RowNodeBlockLoader.prototype.addBlock = function (block) {\n this.blocks.push(block);\n // note that we do not remove this listener when removing the block. this is because the\n // cache can get destroyed (and containing blocks) when a block is loading. however the loading block\n // is still counted as an active loading block and we must decrement activeBlockLoadsCount when it finishes.\n block.addEventListener(RowNodeBlock.EVENT_LOAD_COMPLETE, this.loadComplete.bind(this));\n this.checkBlockToLoad();\n };\n RowNodeBlockLoader.prototype.removeBlock = function (block) {\n _.removeFromArray(this.blocks, block);\n };\n RowNodeBlockLoader.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.active = false;\n };\n RowNodeBlockLoader.prototype.loadComplete = function () {\n this.activeBlockLoadsCount--;\n this.checkBlockToLoad();\n if (this.activeBlockLoadsCount == 0) {\n this.dispatchEvent({ type: RowNodeBlockLoader_1.BLOCK_LOADER_FINISHED_EVENT });\n }\n };\n RowNodeBlockLoader.prototype.checkBlockToLoad = function () {\n if (this.checkBlockToLoadDebounce) {\n this.checkBlockToLoadDebounce();\n }\n else {\n this.performCheckBlocksToLoad();\n }\n };\n RowNodeBlockLoader.prototype.performCheckBlocksToLoad = function () {\n if (!this.active) {\n return;\n }\n this.printCacheStatus();\n if (this.maxConcurrentRequests != null && this.activeBlockLoadsCount >= this.maxConcurrentRequests) {\n this.logger.log(\"checkBlockToLoad: max loads exceeded\");\n return;\n }\n var blockToLoad = null;\n this.blocks.forEach(function (block) {\n if (block.getState() === RowNodeBlock.STATE_WAITING_TO_LOAD) {\n blockToLoad = block;\n }\n });\n if (blockToLoad) {\n blockToLoad.load();\n this.activeBlockLoadsCount++;\n this.printCacheStatus();\n }\n };\n RowNodeBlockLoader.prototype.getBlockState = function () {\n var result = {};\n this.blocks.forEach(function (block) {\n var _a = block.getBlockStateJson(), id = _a.id, state = _a.state;\n result[id] = state;\n });\n return result;\n };\n RowNodeBlockLoader.prototype.printCacheStatus = function () {\n if (this.logger.isLogging()) {\n this.logger.log(\"printCacheStatus: activePageLoadsCount = \" + this.activeBlockLoadsCount + \",\"\n + (\" blocks = \" + JSON.stringify(this.getBlockState())));\n }\n };\n RowNodeBlockLoader.prototype.isLoading = function () {\n return this.activeBlockLoadsCount > 0;\n };\n var RowNodeBlockLoader_1;\n RowNodeBlockLoader.BLOCK_LOADER_FINISHED_EVENT = 'blockLoaderFinished';\n __decorate([\n PostConstruct\n ], RowNodeBlockLoader.prototype, \"postConstruct\", null);\n __decorate([\n __param(0, Qualifier('loggerFactory'))\n ], RowNodeBlockLoader.prototype, \"setBeans\", null);\n RowNodeBlockLoader = RowNodeBlockLoader_1 = __decorate([\n Bean('rowNodeBlockLoader')\n ], RowNodeBlockLoader);\n return RowNodeBlockLoader;\n}(BeanStub));\nexport { RowNodeBlockLoader };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Bean } from \"../context/context\";\nimport { _ } from \"../utils\";\nimport { Constants } from \"../constants/constants\";\n// this logic is used by both SSRM and CSRM\nvar RowNodeSorter = /** @class */ (function () {\n function RowNodeSorter() {\n }\n RowNodeSorter.prototype.doFullSort = function (rowNodes, sortOptions) {\n var mapper = function (rowNode, pos) { return ({ currentPos: pos, rowNode: rowNode }); };\n var sortedRowNodes = rowNodes.map(mapper);\n sortedRowNodes.sort(this.compareRowNodes.bind(this, sortOptions));\n return sortedRowNodes.map(function (item) { return item.rowNode; });\n };\n RowNodeSorter.prototype.compareRowNodes = function (sortOptions, sortedNodeA, sortedNodeB) {\n var nodeA = sortedNodeA.rowNode;\n var nodeB = sortedNodeB.rowNode;\n // Iterate columns, return the first that doesn't match\n for (var i = 0, len = sortOptions.length; i < len; i++) {\n var sortOption = sortOptions[i];\n var isInverted = sortOption.sort === Constants.SORT_DESC;\n var valueA = this.getValue(nodeA, sortOption.column);\n var valueB = this.getValue(nodeB, sortOption.column);\n var comparatorResult = void 0;\n var providedComparator = this.getComparator(sortOption, nodeA);\n if (providedComparator) {\n //if comparator provided, use it\n comparatorResult = providedComparator(valueA, valueB, nodeA, nodeB, isInverted);\n }\n else {\n //otherwise do our own comparison\n comparatorResult = _.defaultComparator(valueA, valueB, this.gridOptionsWrapper.isAccentedSort());\n }\n // user provided comparators can return 'NaN' if they don't correctly handle 'undefined' values, this\n // typically occurs when the comparator is used on a group row\n var validResult = !isNaN(comparatorResult);\n if (validResult && comparatorResult !== 0) {\n return sortOption.sort === Constants.SORT_ASC ? comparatorResult : comparatorResult * -1;\n }\n }\n // All matched, we make is so that the original sort order is kept:\n return sortedNodeA.currentPos - sortedNodeB.currentPos;\n };\n RowNodeSorter.prototype.getComparator = function (sortOption, rowNode) {\n var column = sortOption.column;\n // comparator on col get preference over everything else\n var comparatorOnCol = column.getColDef().comparator;\n if (comparatorOnCol != null) {\n return comparatorOnCol;\n }\n // if no comparator on col, see if we are showing a group, and if we are, get comparator from row group col\n if (rowNode.rowGroupColumn) {\n return rowNode.rowGroupColumn.getColDef().comparator;\n }\n if (!column.getColDef().showRowGroup) {\n return;\n }\n // if a 'field' is supplied on the autoGroupColumnDef we need to use the associated column comparator\n var groupLeafField = !rowNode.group && column.getColDef().field;\n if (!groupLeafField) {\n return;\n }\n var primaryColumn = this.columnModel.getPrimaryColumn(groupLeafField);\n if (!primaryColumn) {\n return;\n }\n return primaryColumn.getColDef().comparator;\n };\n RowNodeSorter.prototype.getValue = function (nodeA, column) {\n return this.valueService.getValue(column, nodeA, false, false);\n };\n __decorate([\n Autowired('gridOptionsWrapper')\n ], RowNodeSorter.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('valueService')\n ], RowNodeSorter.prototype, \"valueService\", void 0);\n __decorate([\n Autowired('columnModel')\n ], RowNodeSorter.prototype, \"columnModel\", void 0);\n RowNodeSorter = __decorate([\n Bean('rowNodeSorter')\n ], RowNodeSorter);\n return RowNodeSorter;\n}());\nexport { RowNodeSorter };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Bean } from \"./context/context\";\nimport { BeanStub } from \"./context/beanStub\";\nimport { Constants } from \"./constants/constants\";\nvar CtrlsService = /** @class */ (function (_super) {\n __extends(CtrlsService, _super);\n function CtrlsService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.ready = false;\n _this.readyCallbacks = [];\n return _this;\n }\n CtrlsService_1 = CtrlsService;\n CtrlsService.prototype.checkReady = function () {\n this.ready =\n this.gridCtrl != null\n && this.gridBodyCtrl != null\n && this.centerRowContainerCtrl != null\n && this.leftRowContainerCtrl != null\n && this.rightRowContainerCtrl != null\n && this.bottomCenterRowContainerCtrl != null\n && this.bottomLeftRowContainerCtrl != null\n && this.bottomRightRowContainerCtrl != null\n && this.topCenterRowContainerCtrl != null\n && this.topLeftRowContainerCtrl != null\n && this.topRightRowContainerCtrl != null\n && this.centerHeaderRowContainerCtrl != null\n && this.leftHeaderRowContainerCtrl != null\n && this.rightHeaderRowContainerCtrl != null\n && this.fakeHScrollCtrl != null\n && this.gridHeaderCtrl != null;\n if (this.ready) {\n var p_1 = this.createReadyParams();\n this.readyCallbacks.forEach(function (c) { return c(p_1); });\n this.readyCallbacks.length = 0;\n }\n };\n CtrlsService.prototype.whenReady = function (callback) {\n if (this.ready) {\n callback(this.createReadyParams());\n }\n else {\n this.readyCallbacks.push(callback);\n }\n };\n CtrlsService.prototype.createReadyParams = function () {\n return {\n centerRowContainerCtrl: this.centerRowContainerCtrl,\n leftRowContainerCtrl: this.leftRowContainerCtrl,\n rightRowContainerCtrl: this.rightRowContainerCtrl,\n bottomCenterRowContainerCtrl: this.bottomCenterRowContainerCtrl,\n bottomLeftRowContainerCtrl: this.bottomLeftRowContainerCtrl,\n bottomRightRowContainerCtrl: this.bottomRightRowContainerCtrl,\n topCenterRowContainerCtrl: this.topCenterRowContainerCtrl,\n topLeftRowContainerCtrl: this.topLeftRowContainerCtrl,\n topRightRowContainerCtrl: this.topRightRowContainerCtrl,\n centerHeaderRowContainerCtrl: this.centerHeaderRowContainerCtrl,\n leftHeaderRowContainerCtrl: this.leftHeaderRowContainerCtrl,\n rightHeaderRowContainerCtrl: this.rightHeaderRowContainerCtrl,\n fakeHScrollCtrl: this.fakeHScrollCtrl,\n gridBodyCtrl: this.gridBodyCtrl,\n gridCtrl: this.gridCtrl,\n gridHeaderCtrl: this.gridHeaderCtrl,\n };\n };\n CtrlsService.prototype.registerFakeHScrollCtrl = function (ctrl) {\n this.fakeHScrollCtrl = ctrl;\n this.checkReady();\n };\n CtrlsService.prototype.registerGridHeaderCtrl = function (gridHeaderCtrl) {\n this.gridHeaderCtrl = gridHeaderCtrl;\n this.checkReady();\n };\n CtrlsService.prototype.registerCenterRowContainerCtrl = function (ctrl) {\n this.centerRowContainerCtrl = ctrl;\n this.checkReady();\n };\n CtrlsService.prototype.registerLeftRowContainerCtrl = function (ctrl) {\n this.leftRowContainerCtrl = ctrl;\n this.checkReady();\n };\n CtrlsService.prototype.registerRightRowContainerCtrl = function (ctrl) {\n this.rightRowContainerCtrl = ctrl;\n this.checkReady();\n };\n CtrlsService.prototype.registerTopCenterRowContainerCtrl = function (ctrl) {\n this.topCenterRowContainerCtrl = ctrl;\n this.checkReady();\n };\n CtrlsService.prototype.registerTopLeftRowContainerCon = function (ctrl) {\n this.topLeftRowContainerCtrl = ctrl;\n this.checkReady();\n };\n CtrlsService.prototype.registerTopRightRowContainerCtrl = function (ctrl) {\n this.topRightRowContainerCtrl = ctrl;\n this.checkReady();\n };\n CtrlsService.prototype.registerBottomCenterRowContainerCtrl = function (ctrl) {\n this.bottomCenterRowContainerCtrl = ctrl;\n this.checkReady();\n };\n CtrlsService.prototype.registerBottomLeftRowContainerCtrl = function (ctrl) {\n this.bottomLeftRowContainerCtrl = ctrl;\n this.checkReady();\n };\n CtrlsService.prototype.registerBottomRightRowContainerCtrl = function (ctrl) {\n this.bottomRightRowContainerCtrl = ctrl;\n this.checkReady();\n };\n CtrlsService.prototype.registerHeaderContainer = function (ctrl, pinned) {\n switch (pinned) {\n case Constants.PINNED_LEFT:\n this.leftHeaderRowContainerCtrl = ctrl;\n break;\n case Constants.PINNED_RIGHT:\n this.rightHeaderRowContainerCtrl = ctrl;\n break;\n default:\n this.centerHeaderRowContainerCtrl = ctrl;\n break;\n }\n this.checkReady();\n };\n CtrlsService.prototype.registerGridBodyCtrl = function (ctrl) {\n this.gridBodyCtrl = ctrl;\n this.checkReady();\n };\n CtrlsService.prototype.registerGridCtrl = function (ctrl) {\n this.gridCtrl = ctrl;\n this.checkReady();\n };\n CtrlsService.prototype.getFakeHScrollCtrl = function () {\n return this.fakeHScrollCtrl;\n };\n CtrlsService.prototype.getGridHeaderCtrl = function () {\n return this.gridHeaderCtrl;\n };\n CtrlsService.prototype.getGridCtrl = function () {\n return this.gridCtrl;\n };\n CtrlsService.prototype.getCenterRowContainerCtrl = function () {\n return this.centerRowContainerCtrl;\n };\n CtrlsService.prototype.getTopCenterRowContainerCtrl = function () {\n return this.topCenterRowContainerCtrl;\n };\n CtrlsService.prototype.getBottomCenterRowContainerCtrl = function () {\n return this.bottomCenterRowContainerCtrl;\n };\n CtrlsService.prototype.getGridBodyCtrl = function () {\n return this.gridBodyCtrl;\n };\n CtrlsService.prototype.getHeaderRowContainerCtrls = function () {\n return [this.leftHeaderRowContainerCtrl, this.rightHeaderRowContainerCtrl, this.centerHeaderRowContainerCtrl];\n };\n CtrlsService.prototype.getHeaderRowContainerCtrl = function (pinned) {\n switch (pinned) {\n case Constants.PINNED_LEFT: return this.leftHeaderRowContainerCtrl;\n case Constants.PINNED_RIGHT: return this.rightHeaderRowContainerCtrl;\n default: return this.centerHeaderRowContainerCtrl;\n }\n };\n var CtrlsService_1;\n CtrlsService.NAME = 'ctrlsService';\n CtrlsService = CtrlsService_1 = __decorate([\n Bean(CtrlsService_1.NAME)\n ], CtrlsService);\n return CtrlsService;\n}(BeanStub));\nexport { CtrlsService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { BeanStub } from \"./context/beanStub\";\nimport { Bean } from \"./context/context\";\nvar CtrlsFactory = /** @class */ (function (_super) {\n __extends(CtrlsFactory, _super);\n function CtrlsFactory() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.registry = {};\n return _this;\n }\n CtrlsFactory.prototype.register = function (meta) {\n this.registry[meta.controllerName] = meta.controllerClass;\n };\n CtrlsFactory.prototype.getInstance = function (name) {\n var ControllerClass = this.registry[name];\n if (ControllerClass == null) {\n return undefined;\n }\n return new ControllerClass();\n };\n CtrlsFactory = __decorate([\n Bean('ctrlsFactory')\n ], CtrlsFactory);\n return CtrlsFactory;\n}(BeanStub));\nexport { CtrlsFactory };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { BeanStub } from \"../context/beanStub\";\nimport { isInvisibleScrollbar } from \"../utils/browser\";\nimport { Autowired, PostConstruct } from \"../context/context\";\nimport { Events } from \"../eventKeys\";\nimport { GridOptionsWrapper } from \"../gridOptionsWrapper\";\nvar FakeHScrollCtrl = /** @class */ (function (_super) {\n __extends(FakeHScrollCtrl, _super);\n function FakeHScrollCtrl() {\n return _super.call(this) || this;\n }\n FakeHScrollCtrl.prototype.setComp = function (view, eGui, eViewport, eContainer) {\n this.view = view;\n this.eViewport = eViewport;\n this.eContainer = eContainer;\n this.eGui = eGui;\n this.addManagedListener(this.eventService, Events.EVENT_SCROLL_VISIBILITY_CHANGED, this.onScrollVisibilityChanged.bind(this));\n this.onScrollVisibilityChanged();\n // When doing printing, this changes whether cols are pinned or not\n var spacerWidthsListener = this.setFakeHScrollSpacerWidths.bind(this);\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, spacerWidthsListener);\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, spacerWidthsListener);\n this.addManagedListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_DOM_LAYOUT, spacerWidthsListener);\n this.setFakeHScrollSpacerWidths();\n if (this.invisibleScrollbar) {\n this.hideAndShowInvisibleScrollAsNeeded();\n this.addActiveListenerToggles();\n }\n this.ctrlsService.registerFakeHScrollCtrl(this);\n };\n FakeHScrollCtrl.prototype.addActiveListenerToggles = function () {\n var _this = this;\n var activateEvents = ['mouseenter', 'mousedown', 'touchstart'];\n var deactivateEvents = ['mouseleave', 'mouseup', 'touchend'];\n activateEvents.forEach(function (eventName) { return _this.addManagedListener(_this.eGui, eventName, function () { return _this.view.addOrRemoveCssClass('ag-scrollbar-active', true); }); });\n deactivateEvents.forEach(function (eventName) { return _this.addManagedListener(_this.eGui, eventName, function () { return _this.view.addOrRemoveCssClass('ag-scrollbar-active', false); }); });\n };\n FakeHScrollCtrl.prototype.postConstruct = function () {\n this.enableRtl = this.gridOptionsWrapper.isEnableRtl();\n this.invisibleScrollbar = isInvisibleScrollbar();\n };\n FakeHScrollCtrl.prototype.onScrollVisibilityChanged = function () {\n this.setScrollVisible();\n this.setFakeHScrollSpacerWidths();\n };\n FakeHScrollCtrl.prototype.hideAndShowInvisibleScrollAsNeeded = function () {\n var _this = this;\n this.addManagedListener(this.eventService, Events.EVENT_BODY_SCROLL, function (params) {\n if (params.direction === 'horizontal') {\n _this.view.addOrRemoveCssClass('ag-scrollbar-scrolling', true);\n }\n });\n this.addManagedListener(this.eventService, Events.EVENT_BODY_SCROLL_END, function () { return _this.view.addOrRemoveCssClass('ag-scrollbar-scrolling', false); });\n };\n FakeHScrollCtrl.prototype.setFakeHScrollSpacerWidths = function () {\n var vScrollShowing = this.scrollVisibleService.isVerticalScrollShowing();\n // we pad the right based on a) if cols are pinned to the right and\n // b) if v scroll is showing on the right (normal position of scroll)\n var rightSpacing = this.columnModel.getDisplayedColumnsRightWidth();\n var scrollOnRight = !this.enableRtl && vScrollShowing;\n var scrollbarWidth = this.gridOptionsWrapper.getScrollbarWidth();\n if (scrollOnRight) {\n rightSpacing += scrollbarWidth;\n }\n this.view.setRightSpacerFixedWidth(rightSpacing);\n this.view.includeRightSpacerScrollerCss('ag-scroller-corner', rightSpacing <= scrollbarWidth);\n // we pad the left based on a) if cols are pinned to the left and\n // b) if v scroll is showing on the left (happens in LTR layout only)\n var leftSpacing = this.columnModel.getDisplayedColumnsLeftWidth();\n var scrollOnLeft = this.enableRtl && vScrollShowing;\n if (scrollOnLeft) {\n leftSpacing += scrollbarWidth;\n }\n this.view.setLeftSpacerFixedWidth(leftSpacing);\n this.view.includeLeftSpacerScrollerCss('ag-scroller-corner', leftSpacing <= scrollbarWidth);\n };\n FakeHScrollCtrl.prototype.setScrollVisible = function () {\n var hScrollShowing = this.scrollVisibleService.isHorizontalScrollShowing();\n var invisibleScrollbar = this.invisibleScrollbar;\n var isSuppressHorizontalScroll = this.gridOptionsWrapper.isSuppressHorizontalScroll();\n var scrollbarWidth = hScrollShowing ? (this.gridOptionsWrapper.getScrollbarWidth() || 0) : 0;\n var adjustedScrollbarWidth = (scrollbarWidth === 0 && invisibleScrollbar) ? 15 : scrollbarWidth;\n var scrollContainerSize = !isSuppressHorizontalScroll ? adjustedScrollbarWidth : 0;\n this.view.addOrRemoveCssClass('ag-scrollbar-invisible', invisibleScrollbar);\n this.view.setHeight(scrollContainerSize);\n this.view.setViewportHeight(scrollContainerSize);\n this.view.setContainerHeight(scrollContainerSize);\n };\n FakeHScrollCtrl.prototype.getViewport = function () {\n return this.eViewport;\n };\n FakeHScrollCtrl.prototype.getContainer = function () {\n return this.eContainer;\n };\n __decorate([\n Autowired('scrollVisibleService')\n ], FakeHScrollCtrl.prototype, \"scrollVisibleService\", void 0);\n __decorate([\n Autowired('columnModel')\n ], FakeHScrollCtrl.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('ctrlsService')\n ], FakeHScrollCtrl.prototype, \"ctrlsService\", void 0);\n __decorate([\n PostConstruct\n ], FakeHScrollCtrl.prototype, \"postConstruct\", null);\n return FakeHScrollCtrl;\n}(BeanStub));\nexport { FakeHScrollCtrl };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component } from \"../widgets/component\";\nimport { RefSelector } from \"../widgets/componentAnnotations\";\nimport { PostConstruct } from \"../context/context\";\nimport { FakeHScrollCtrl } from \"./fakeHScrollCtrl\";\nimport { setFixedHeight, setFixedWidth } from \"../utils/dom\";\nimport { CenterWidthFeature } from \"./centerWidthFeature\";\nvar FakeHScrollComp = /** @class */ (function (_super) {\n __extends(FakeHScrollComp, _super);\n function FakeHScrollComp() {\n return _super.call(this, FakeHScrollComp.TEMPLATE) || this;\n }\n FakeHScrollComp.prototype.postConstruct = function () {\n var _this = this;\n var compProxy = {\n addOrRemoveCssClass: function (cssClassName, on) { return _this.addOrRemoveCssClass(cssClassName, on); },\n setHeight: function (height) { return setFixedHeight(_this.getGui(), height); },\n setContainerHeight: function (height) { return setFixedHeight(_this.eContainer, height); },\n setViewportHeight: function (height) { return setFixedHeight(_this.eViewport, height); },\n setRightSpacerFixedWidth: function (width) { return setFixedWidth(_this.eRightSpacer, width); },\n setLeftSpacerFixedWidth: function (width) { return setFixedWidth(_this.eLeftSpacer, width); },\n includeLeftSpacerScrollerCss: function (cssClass, include) {\n return _this.eLeftSpacer.classList.toggle(cssClass, include);\n },\n includeRightSpacerScrollerCss: function (cssClass, include) {\n return _this.eRightSpacer.classList.toggle(cssClass, include);\n },\n };\n var ctrl = this.createManagedBean(new FakeHScrollCtrl());\n ctrl.setComp(compProxy, this.getGui(), this.eViewport, this.eContainer);\n this.createManagedBean(new CenterWidthFeature(function (width) { return _this.eContainer.style.width = width + \"px\"; }));\n };\n FakeHScrollComp.TEMPLATE = \"
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \";\n __decorate([\n RefSelector('eLeftSpacer')\n ], FakeHScrollComp.prototype, \"eLeftSpacer\", void 0);\n __decorate([\n RefSelector('eRightSpacer')\n ], FakeHScrollComp.prototype, \"eRightSpacer\", void 0);\n __decorate([\n RefSelector('eViewport')\n ], FakeHScrollComp.prototype, \"eViewport\", void 0);\n __decorate([\n RefSelector('eContainer')\n ], FakeHScrollComp.prototype, \"eContainer\", void 0);\n __decorate([\n PostConstruct\n ], FakeHScrollComp.prototype, \"postConstruct\", null);\n return FakeHScrollComp;\n}(Component));\nexport { FakeHScrollComp };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { BeanStub } from \"../context/beanStub\";\nimport { Autowired, Bean, PostConstruct } from \"../context/context\";\nimport { GridOptionsWrapper } from \"../gridOptionsWrapper\";\nimport { Events } from \"../eventKeys\";\nimport { Constants } from \"../constants/constants\";\nvar PinnedWidthService = /** @class */ (function (_super) {\n __extends(PinnedWidthService, _super);\n function PinnedWidthService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PinnedWidthService.prototype.postConstruct = function () {\n var listener = this.checkContainerWidths.bind(this);\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_CHANGED, listener);\n this.addManagedListener(this.eventService, Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, listener);\n this.addManagedListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_DOM_LAYOUT, listener);\n };\n PinnedWidthService.prototype.checkContainerWidths = function () {\n var printLayout = this.gridOptionsWrapper.getDomLayout() === Constants.DOM_LAYOUT_PRINT;\n var newLeftWidth = printLayout ? 0 : this.columnModel.getDisplayedColumnsLeftWidth();\n var newRightWidth = printLayout ? 0 : this.columnModel.getDisplayedColumnsRightWidth();\n if (newLeftWidth != this.leftWidth) {\n this.leftWidth = newLeftWidth;\n this.eventService.dispatchEvent({ type: Events.EVENT_LEFT_PINNED_WIDTH_CHANGED });\n }\n if (newRightWidth != this.rightWidth) {\n this.rightWidth = newRightWidth;\n this.eventService.dispatchEvent({ type: Events.EVENT_RIGHT_PINNED_WIDTH_CHANGED });\n }\n };\n PinnedWidthService.prototype.getPinnedRightWidth = function () {\n return this.rightWidth;\n };\n PinnedWidthService.prototype.getPinnedLeftWidth = function () {\n return this.leftWidth;\n };\n __decorate([\n Autowired('columnModel')\n ], PinnedWidthService.prototype, \"columnModel\", void 0);\n __decorate([\n PostConstruct\n ], PinnedWidthService.prototype, \"postConstruct\", null);\n PinnedWidthService = __decorate([\n Bean('pinnedWidthService')\n ], PinnedWidthService);\n return PinnedWidthService;\n}(BeanStub));\nexport { PinnedWidthService };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { PopupComponent } from \"../../widgets/popupComponent\";\nimport { isUserSuppressingKeyboardEvent } from \"../../utils/keyboard\";\nimport { PostConstruct } from \"../../context/context\";\nvar PopupEditorWrapper = /** @class */ (function (_super) {\n __extends(PopupEditorWrapper, _super);\n function PopupEditorWrapper(params) {\n var _this = _super.call(this, /* html */ \"
    \") || this;\n _this.params = params;\n return _this;\n }\n PopupEditorWrapper.prototype.postConstruct = function () {\n this.gridOptionsWrapper.setDomData(this.getGui(), PopupEditorWrapper.DOM_KEY_POPUP_EDITOR_WRAPPER, true);\n this.addKeyDownListener();\n };\n PopupEditorWrapper.prototype.addKeyDownListener = function () {\n var _this = this;\n var eGui = this.getGui();\n var params = this.params;\n var listener = function (event) {\n if (!isUserSuppressingKeyboardEvent(_this.gridOptionsWrapper, event, params.node, params.column, true)) {\n params.onKeyDown(event);\n }\n };\n this.addManagedListener(eGui, 'keydown', listener);\n };\n PopupEditorWrapper.DOM_KEY_POPUP_EDITOR_WRAPPER = 'popupEditorWrapper';\n __decorate([\n PostConstruct\n ], PopupEditorWrapper.prototype, \"postConstruct\", null);\n return PopupEditorWrapper;\n}(PopupComponent));\nexport { PopupEditorWrapper };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __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};\nimport { Component } from \"../../widgets/component\";\nimport { PopupEditorWrapper } from \"./../cellEditors/popupEditorWrapper\";\nimport { setAriaDescribedBy, setAriaRole } from \"../../utils/aria\";\nimport { escapeString } from \"../../utils/string\";\nimport { missing } from \"../../utils/generic\";\nimport { addStylesToElement, clearElement, loadTemplate, removeFromParent } from \"../../utils/dom\";\nvar CellComp = /** @class */ (function (_super) {\n __extends(CellComp, _super);\n function CellComp(scope, beans, cellCtrl, printLayout, eRow, editingRow) {\n var _this = _super.call(this) || this;\n _this.scope = null;\n // every time we go into edit mode, or back again, this gets incremented.\n // it's the components way of dealing with the async nature of framework components,\n // so if a framework component takes a while to be created, we know if the object\n // is still relevant when creating is finished. eg we could click edit / un-edit 20\n // times before the first React edit component comes back - we should discard\n // the first 19.\n _this.rendererVersion = 0;\n _this.editorVersion = 0;\n _this.scope = scope;\n _this.beans = beans;\n _this.column = cellCtrl.getColumn();\n _this.rowNode = cellCtrl.getRowNode();\n _this.rowCtrl = cellCtrl.getRowCtrl();\n _this.eRow = eRow;\n _this.setTemplate(/* html */ \"
    \");\n var eGui = _this.getGui();\n _this.forceWrapper = cellCtrl.isForceWrapper();\n _this.refreshWrapper(false);\n var setAttribute = function (name, value, element) {\n var actualElement = element ? element : eGui;\n if (value != null && value != '') {\n actualElement.setAttribute(name, value);\n }\n else {\n actualElement.removeAttribute(name);\n }\n };\n var compProxy = {\n addOrRemoveCssClass: function (cssClassName, on) { return _this.addOrRemoveCssClass(cssClassName, on); },\n setUserStyles: function (styles) { return addStylesToElement(eGui, styles); },\n getFocusableElement: function () { return _this.getFocusableElement(); },\n setTabIndex: function (tabIndex) { return setAttribute('tabindex', tabIndex.toString()); },\n setRole: function (role) { return setAriaRole(eGui, role); },\n setColId: function (colId) { return setAttribute('col-id', colId); },\n setTitle: function (title) { return setAttribute('title', title); },\n setIncludeSelection: function (include) { return _this.includeSelection = include; },\n setIncludeRowDrag: function (include) { return _this.includeRowDrag = include; },\n setIncludeDndSource: function (include) { return _this.includeDndSource = include; },\n setRenderDetails: function (compDetails, valueToDisplay, force) {\n return _this.setRenderDetails(compDetails, valueToDisplay, force);\n },\n setEditDetails: function (compDetails, popup, position) {\n return _this.setEditDetails(compDetails, popup, position);\n },\n getCellEditor: function () { return _this.cellEditor || null; },\n getCellRenderer: function () { return _this.cellRenderer || null; },\n getParentOfValue: function () { return _this.getParentOfValue(); }\n };\n _this.cellCtrl = cellCtrl;\n cellCtrl.setComp(compProxy, _this.scope, _this.getGui(), _this.eCellWrapper, printLayout, editingRow);\n return _this;\n }\n CellComp.prototype.getParentOfValue = function () {\n if (this.eCellValue) {\n // if not editing, and using wrapper, then value goes in eCellValue\n return this.eCellValue;\n }\n if (this.eCellWrapper) {\n // if editing, and using wrapper, value (cell editor) goes in eCellWrapper\n return this.eCellWrapper;\n }\n // if editing or rendering, and not using wrapper, value (or comp) is directly inside cell\n return this.getGui();\n };\n CellComp.prototype.setRenderDetails = function (compDetails, valueToDisplay, forceNewCellRendererInstance) {\n // this can happen if the users asks for the cell to refresh, but we are not showing the vale as we are editing\n var isInlineEditing = this.cellEditor && !this.cellEditorPopupWrapper;\n if (isInlineEditing) {\n return;\n }\n // this means firstRender will be true for one pass only, as it's initialised to undefined\n this.firstRender = this.firstRender == null;\n var usingAngular1Template = this.isUsingAngular1Template();\n // if display template has changed, means any previous Cell Renderer is in the wrong location\n var controlWrapperChanged = this.refreshWrapper(false);\n // all of these have dependencies on the eGui, so only do them after eGui is set\n if (compDetails) {\n var neverRefresh = forceNewCellRendererInstance || controlWrapperChanged;\n var cellRendererRefreshSuccessful = neverRefresh ? false : this.refreshCellRenderer(compDetails);\n if (!cellRendererRefreshSuccessful) {\n this.destroyRenderer();\n this.createCellRendererInstance(compDetails);\n }\n }\n else {\n this.destroyRenderer();\n if (usingAngular1Template) {\n this.insertValueUsingAngular1Template();\n }\n else {\n this.insertValueWithoutCellRenderer(valueToDisplay);\n }\n }\n };\n CellComp.prototype.setEditDetails = function (compDetails, popup, position) {\n if (compDetails) {\n this.createCellEditorInstance(compDetails, popup, position);\n }\n else {\n this.destroyEditor();\n }\n };\n CellComp.prototype.removeControls = function () {\n this.checkboxSelectionComp = this.beans.context.destroyBean(this.checkboxSelectionComp);\n this.dndSourceComp = this.beans.context.destroyBean(this.dndSourceComp);\n this.rowDraggingComp = this.beans.context.destroyBean(this.rowDraggingComp);\n };\n // returns true if wrapper was changed\n CellComp.prototype.refreshWrapper = function (editing) {\n var providingControls = this.includeRowDrag || this.includeDndSource || this.includeSelection;\n var usingWrapper = providingControls || this.forceWrapper;\n var putWrapperIn = usingWrapper && this.eCellWrapper == null;\n if (putWrapperIn) {\n this.eCellWrapper = loadTemplate(\"
    \");\n this.getGui().appendChild(this.eCellWrapper);\n }\n var takeWrapperOut = !usingWrapper && this.eCellWrapper != null;\n if (takeWrapperOut) {\n removeFromParent(this.eCellWrapper);\n this.eCellWrapper = undefined;\n }\n this.addOrRemoveCssClass('ag-cell-value', !usingWrapper);\n var usingCellValue = !editing && usingWrapper;\n var putCellValueIn = usingCellValue && this.eCellValue == null;\n if (putCellValueIn) {\n this.eCellValue = loadTemplate(\"\");\n this.eCellWrapper.appendChild(this.eCellValue);\n }\n var takeCellValueOut = !usingCellValue && this.eCellValue != null;\n if (takeCellValueOut) {\n removeFromParent(this.eCellValue);\n this.eCellValue = undefined;\n }\n var templateChanged = putWrapperIn || takeWrapperOut || putCellValueIn || takeCellValueOut;\n if (templateChanged) {\n this.removeControls();\n }\n if (!editing && providingControls) {\n this.addControls();\n }\n return templateChanged;\n };\n CellComp.prototype.addControls = function () {\n var id = this.eCellValue.id = \"cell-\" + this.getCompId();\n var describedByIds = [];\n if (this.includeRowDrag) {\n if (this.rowDraggingComp == null) {\n this.rowDraggingComp = this.cellCtrl.createRowDragComp();\n if (this.rowDraggingComp) {\n // put the checkbox in before the value\n this.eCellWrapper.insertBefore(this.rowDraggingComp.getGui(), this.eCellValue);\n }\n }\n }\n if (this.includeDndSource) {\n if (this.dndSourceComp == null) {\n this.dndSourceComp = this.cellCtrl.createDndSource();\n // put the checkbox in before the value\n this.eCellWrapper.insertBefore(this.dndSourceComp.getGui(), this.eCellValue);\n }\n }\n if (this.includeSelection) {\n if (this.checkboxSelectionComp == null) {\n this.checkboxSelectionComp = this.cellCtrl.createSelectionCheckbox();\n this.eCellWrapper.insertBefore(this.checkboxSelectionComp.getGui(), this.eCellValue);\n }\n describedByIds.push(this.checkboxSelectionComp.getCheckboxId());\n }\n describedByIds.push(id);\n setAriaDescribedBy(this.getGui(), describedByIds.join(' '));\n };\n CellComp.prototype.createCellEditorInstance = function (compDetails, popup, position) {\n var _this = this;\n var versionCopy = this.editorVersion;\n var cellEditorPromise = compDetails.newAgStackInstance();\n if (!cellEditorPromise) {\n return;\n } // if empty, userComponentFactory already did a console message\n var params = compDetails.params;\n cellEditorPromise.then(function (c) { return _this.afterCellEditorCreated(versionCopy, c, params, popup, position); });\n // if we don't do this, and editor component is async, then there will be a period\n // when the component isn't present and keyboard navigation won't work - so example\n // of user hitting tab quickly (more quickly than renderers getting created) won't work\n var cellEditorAsync = missing(this.cellEditor);\n if (cellEditorAsync && params.cellStartedEdit) {\n this.cellCtrl.focusCell(true);\n }\n };\n CellComp.prototype.insertValueWithoutCellRenderer = function (valueToDisplay) {\n var eParent = this.getParentOfValue();\n clearElement(eParent);\n var escapedValue = valueToDisplay != null ? escapeString(valueToDisplay) : null;\n if (escapedValue != null) {\n eParent.innerHTML = escapedValue;\n }\n };\n CellComp.prototype.insertValueUsingAngular1Template = function () {\n var _this = this;\n var _a = this.column.getColDef(), template = _a.template, templateUrl = _a.templateUrl;\n var templateToInsert;\n if (template != null) {\n templateToInsert = template;\n }\n else if (templateUrl != null) {\n // first time this happens it will return nothing, as the template will still be loading async,\n // however once loaded it will refresh the cell and second time around it will be returned sync\n // as in cache.\n templateToInsert = this.beans.templateService.getTemplate(templateUrl, function () { return _this.cellCtrl.refreshCell({ forceRefresh: true }); });\n }\n else {\n // should never happen, as we only enter this method when template or templateUrl exist\n }\n if (templateToInsert != null) {\n var eParent = this.getParentOfValue();\n eParent.innerHTML = templateToInsert;\n this.updateAngular1ScopeAndCompile();\n }\n };\n CellComp.prototype.destroyEditorAndRenderer = function () {\n this.destroyRenderer();\n this.destroyEditor();\n };\n CellComp.prototype.destroyRenderer = function () {\n var context = this.beans.context;\n this.cellRenderer = context.destroyBean(this.cellRenderer);\n removeFromParent(this.cellRendererGui);\n this.cellRendererGui = null;\n this.rendererVersion++;\n };\n CellComp.prototype.destroyEditor = function () {\n var context = this.beans.context;\n if (this.hideEditorPopup) {\n this.hideEditorPopup();\n }\n this.hideEditorPopup = undefined;\n this.cellEditor = context.destroyBean(this.cellEditor);\n this.cellEditorPopupWrapper = context.destroyBean(this.cellEditorPopupWrapper);\n removeFromParent(this.cellEditorGui);\n this.cellEditorGui = null;\n this.editorVersion++;\n };\n CellComp.prototype.refreshCellRenderer = function (compClassAndParams) {\n if (this.cellRenderer == null || this.cellRenderer.refresh == null) {\n return false;\n }\n // if different Cell Renderer configured this time (eg user is using selector, and\n // returns different component) then don't refresh, force recreate of Cell Renderer\n if (this.cellRendererClass !== compClassAndParams.componentClass) {\n return false;\n }\n // take any custom params off of the user\n var result = this.cellRenderer.refresh(compClassAndParams.params);\n // NOTE on undefined: previous version of the cellRenderer.refresh() interface\n // returned nothing, if the method existed, we assumed it refreshed. so for\n // backwards compatibility, we assume if method exists and returns nothing,\n // that it was successful.\n return result === true || result === undefined;\n };\n CellComp.prototype.createCellRendererInstance = function (compDetails) {\n var _this = this;\n // never use task service if angularCompileRows=true, as that assume the cell renderers\n // are finished when the row is created. also we never use it if animation frame service\n // is turned off.\n // and lastly we never use it if doing auto-height, as the auto-height service checks the\n // row height directly after the cell is created, it doesn't wait around for the tasks to complete\n var angularCompileRows = this.beans.gridOptionsWrapper.isAngularCompileRows();\n var suppressAnimationFrame = this.beans.gridOptionsWrapper.isSuppressAnimationFrame();\n var useTaskService = !angularCompileRows && !suppressAnimationFrame;\n var displayComponentVersionCopy = this.rendererVersion;\n var componentClass = compDetails.componentClass;\n var createCellRendererFunc = function () {\n var staleTask = _this.rendererVersion !== displayComponentVersionCopy || !_this.isAlive();\n if (staleTask) {\n return;\n }\n // this can return null in the event that the user has switched from a renderer component to nothing, for example\n // when using a cellRendererSelect to return a component or null depending on row data etc\n var componentPromise = compDetails.newAgStackInstance();\n var callback = _this.afterCellRendererCreated.bind(_this, displayComponentVersionCopy, componentClass);\n if (componentPromise) {\n componentPromise.then(callback);\n }\n };\n // we only use task service when rendering for first time, which means it is not used when doing edits.\n // if we changed this (always use task service) would make sense, however it would break tests, possibly\n // test of users.\n if (useTaskService && this.firstRender) {\n this.beans.animationFrameService.createTask(createCellRendererFunc, this.rowNode.rowIndex, 'createTasksP2');\n }\n else {\n createCellRendererFunc();\n }\n };\n CellComp.prototype.isUsingAngular1Template = function () {\n var colDef = this.column.getColDef();\n var res = colDef.template != null || colDef.templateUrl != null;\n return res;\n };\n CellComp.prototype.getCtrl = function () {\n return this.cellCtrl;\n };\n CellComp.prototype.getRowCtrl = function () {\n return this.rowCtrl;\n };\n CellComp.prototype.getCellRenderer = function () {\n return this.cellRenderer;\n };\n CellComp.prototype.getCellEditor = function () {\n return this.cellEditor;\n };\n CellComp.prototype.afterCellRendererCreated = function (cellRendererVersion, cellRendererClass, cellRenderer) {\n var staleTask = !this.isAlive() || cellRendererVersion !== this.rendererVersion;\n if (staleTask) {\n this.beans.context.destroyBean(cellRenderer);\n return;\n }\n this.cellRenderer = cellRenderer;\n this.cellRendererClass = cellRendererClass;\n this.cellRendererGui = this.cellRenderer.getGui();\n if (this.cellRendererGui != null) {\n var eParent = this.getParentOfValue();\n clearElement(eParent);\n eParent.appendChild(this.cellRendererGui);\n this.updateAngular1ScopeAndCompile();\n }\n };\n CellComp.prototype.afterCellEditorCreated = function (requestVersion, cellEditor, params, popup, position) {\n // if editingCell=false, means user cancelled the editor before component was ready.\n // if versionMismatch, then user cancelled the edit, then started the edit again, and this\n // is the first editor which is now stale.\n var staleComp = requestVersion !== this.editorVersion;\n if (staleComp) {\n this.beans.context.destroyBean(cellEditor);\n return;\n }\n var editingCancelledByUserComp = cellEditor.isCancelBeforeStart && cellEditor.isCancelBeforeStart();\n if (editingCancelledByUserComp) {\n this.beans.context.destroyBean(cellEditor);\n this.cellCtrl.stopEditing();\n return;\n }\n if (!cellEditor.getGui) {\n console.warn(\"AG Grid: cellEditor for column \" + this.column.getId() + \" is missing getGui() method\");\n this.beans.context.destroyBean(cellEditor);\n return;\n }\n this.cellEditor = cellEditor;\n this.cellEditorGui = cellEditor.getGui();\n var cellEditorInPopup = popup || (cellEditor.isPopup !== undefined && cellEditor.isPopup());\n if (cellEditorInPopup) {\n if (!popup) {\n this.cellCtrl.hackSayEditingInPopup();\n }\n this.addPopupCellEditor(params, position);\n }\n else {\n this.addInCellEditor();\n }\n if (cellEditor.afterGuiAttached) {\n cellEditor.afterGuiAttached();\n }\n };\n CellComp.prototype.addInCellEditor = function () {\n var eGui = this.getGui();\n // if focus is inside the cell, we move focus to the cell itself\n // before removing it's contents, otherwise errors could be thrown.\n var eDocument = this.beans.gridOptionsWrapper.getDocument();\n if (eGui.contains(eDocument.activeElement)) {\n eGui.focus();\n }\n this.destroyRenderer();\n this.refreshWrapper(true);\n this.clearParentOfValue();\n if (this.cellEditorGui) {\n var eParent = this.getParentOfValue();\n eParent.appendChild(this.cellEditorGui);\n }\n };\n CellComp.prototype.addPopupCellEditor = function (params, position) {\n var _this = this;\n if (this.beans.gridOptionsWrapper.isFullRowEdit()) {\n console.warn('AG Grid: popup cellEditor does not work with fullRowEdit - you cannot use them both ' +\n '- either turn off fullRowEdit, or stop using popup editors.');\n }\n var cellEditor = this.cellEditor;\n // if a popup, then we wrap in a popup editor and return the popup\n this.cellEditorPopupWrapper = this.beans.context.createBean(new PopupEditorWrapper(params));\n var ePopupGui = this.cellEditorPopupWrapper.getGui();\n if (this.cellEditorGui) {\n ePopupGui.appendChild(this.cellEditorGui);\n }\n var popupService = this.beans.popupService;\n var useModelPopup = this.beans.gridOptionsWrapper.isStopEditingWhenCellsLoseFocus();\n // see if position provided by colDef, if not then check old way of method on cellComp\n var positionToUse = position != null ? position : cellEditor.getPopupPosition ? cellEditor.getPopupPosition() : 'over';\n var positionParams = {\n column: this.column,\n rowNode: this.rowNode,\n type: 'popupCellEditor',\n eventSource: this.getGui(),\n ePopup: ePopupGui,\n keepWithinBounds: true\n };\n var positionCallback = positionToUse === 'under' ?\n popupService.positionPopupUnderComponent.bind(popupService, positionParams)\n : popupService.positionPopupOverComponent.bind(popupService, positionParams);\n var translate = this.beans.gridOptionsWrapper.getLocaleTextFunc();\n var addPopupRes = popupService.addPopup({\n modal: useModelPopup,\n eChild: ePopupGui,\n closeOnEsc: true,\n closedCallback: function () { _this.cellCtrl.onPopupEditorClosed(); },\n anchorToElement: this.getGui(),\n positionCallback: positionCallback,\n ariaLabel: translate('ariaLabelCellEditor', 'Cell Editor')\n });\n if (addPopupRes) {\n this.hideEditorPopup = addPopupRes.hideFunc;\n }\n };\n CellComp.prototype.detach = function () {\n this.eRow.removeChild(this.getGui());\n };\n // if the row is also getting destroyed, then we don't need to remove from dom,\n // as the row will also get removed, so no need to take out the cells from the row\n // if the row is going (removing is an expensive operation, so only need to remove\n // the top part)\n //\n // note - this is NOT called by context, as we don't wire / unwire the CellComp for performance reasons.\n CellComp.prototype.destroy = function () {\n this.cellCtrl.stopEditing();\n this.destroyEditorAndRenderer();\n this.removeControls();\n if (this.angularCompiledElement) {\n this.angularCompiledElement.remove();\n this.angularCompiledElement = undefined;\n }\n _super.prototype.destroy.call(this);\n };\n CellComp.prototype.clearParentOfValue = function () {\n var eGui = this.getGui();\n // if focus is inside the cell, we move focus to the cell itself\n // before removing it's contents, otherwise errors could be thrown.\n var eDocument = this.beans.gridOptionsWrapper.getDocument();\n if (eGui.contains(eDocument.activeElement)) {\n eGui.focus({\n preventScroll: true\n });\n }\n clearElement(this.getParentOfValue());\n };\n CellComp.prototype.updateAngular1ScopeAndCompile = function () {\n if (this.beans.gridOptionsWrapper.isAngularCompileRows() && this.scope) {\n this.scope.data = __assign({}, this.rowNode.data);\n if (this.angularCompiledElement) {\n this.angularCompiledElement.remove();\n }\n var eParent = this.getParentOfValue();\n this.angularCompiledElement = this.beans.$compile(eParent.children)(this.scope);\n // because this.scope is set, we are guaranteed GridBodyComp is vanilla JS, ie it's GridBodyComp.ts from AG Stack and and not react\n this.beans.ctrlsService.getGridBodyCtrl().requestAngularApply();\n }\n };\n return CellComp;\n}(Component));\nexport { CellComp };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Component } from \"../../widgets/component\";\nimport { addStylesToElement, setDomChildOrder } from \"../../utils/dom\";\nimport { CellComp } from \"../cell/cellComp\";\nimport { getAllValuesInObject } from \"../../utils/object\";\nimport { setAriaRole } from \"../../utils/aria\";\nvar RowComp = /** @class */ (function (_super) {\n __extends(RowComp, _super);\n function RowComp(ctrl, beans, containerType) {\n var _this = _super.call(this) || this;\n _this.cellComps = {};\n _this.beans = beans;\n _this.rowCtrl = ctrl;\n _this.setTemplate(/* html */ \"
    \");\n var eGui = _this.getGui();\n var style = eGui.style;\n var compProxy = {\n setDomOrder: function (domOrder) { return _this.domOrder = domOrder; },\n setCellCtrls: function (cellCtrls) { return _this.setCellCtrls(cellCtrls); },\n showFullWidth: function (compDetails) { return _this.showFullWidth(compDetails); },\n getFullWidthCellRenderer: function () { return _this.getFullWidthCellRenderer(); },\n addOrRemoveCssClass: function (name, on) { return _this.addOrRemoveCssClass(name, on); },\n setUserStyles: function (styles) { return addStylesToElement(eGui, styles); },\n setTop: function (top) { return style.top = top; },\n setTransform: function (transform) { return style.transform = transform; },\n setRowIndex: function (rowIndex) { return eGui.setAttribute('row-index', rowIndex); },\n setRole: function (role) { return setAriaRole(eGui, role); },\n setRowId: function (rowId) { return eGui.setAttribute('row-id', rowId); },\n setRowBusinessKey: function (businessKey) { return eGui.setAttribute('row-business-key', businessKey); },\n setTabIndex: function (tabIndex) { return eGui.setAttribute('tabindex', tabIndex.toString()); }\n };\n ctrl.setComp(compProxy, _this.getGui(), containerType);\n return _this;\n }\n RowComp.prototype.getInitialStyle = function () {\n var transform = this.rowCtrl.getInitialTransform();\n var top = this.rowCtrl.getInitialRowTop();\n return transform ? \"transform: \" + transform : \"top: \" + top;\n };\n RowComp.prototype.showFullWidth = function (compDetails) {\n var _this = this;\n var callback = function (cellRenderer) {\n if (_this.isAlive()) {\n var eGui = cellRenderer.getGui();\n _this.getGui().appendChild(eGui);\n _this.rowCtrl.setupDetailRowAutoHeight(eGui);\n _this.setFullWidthRowComp(cellRenderer);\n }\n else {\n _this.beans.context.destroyBean(cellRenderer);\n }\n };\n // if not in cache, create new one\n var res = compDetails.newAgStackInstance();\n if (!res) {\n return;\n }\n res.then(callback);\n };\n RowComp.prototype.setCellCtrls = function (cellCtrls) {\n var _this = this;\n var cellsToRemove = Object.assign({}, this.cellComps);\n cellCtrls.forEach(function (cellCtrl) {\n var key = cellCtrl.getInstanceId();\n var existingCellComp = _this.cellComps[key];\n if (existingCellComp == null) {\n _this.newCellComp(cellCtrl);\n }\n else {\n cellsToRemove[key] = null;\n }\n });\n var cellCompsToRemove = getAllValuesInObject(cellsToRemove)\n .filter(function (cellComp) { return cellComp != null; });\n this.destroyCells(cellCompsToRemove);\n this.ensureDomOrder(cellCtrls);\n };\n RowComp.prototype.ensureDomOrder = function (cellCtrls) {\n var _this = this;\n if (!this.domOrder) {\n return;\n }\n var elementsInOrder = [];\n cellCtrls.forEach(function (cellCtrl) {\n var cellComp = _this.cellComps[cellCtrl.getInstanceId()];\n if (cellComp) {\n elementsInOrder.push(cellComp.getGui());\n }\n });\n setDomChildOrder(this.getGui(), elementsInOrder);\n };\n RowComp.prototype.newCellComp = function (cellCtrl) {\n var cellComp = new CellComp(this.rowCtrl.getScope(), this.beans, cellCtrl, this.rowCtrl.isPrintLayout(), this.getGui(), this.rowCtrl.isEditing());\n this.cellComps[cellCtrl.getInstanceId()] = cellComp;\n this.getGui().appendChild(cellComp.getGui());\n };\n RowComp.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.destroyAllCells();\n };\n RowComp.prototype.destroyAllCells = function () {\n var cellsToDestroy = getAllValuesInObject(this.cellComps).filter(function (cp) { return cp != null; });\n this.destroyCells(cellsToDestroy);\n };\n RowComp.prototype.setFullWidthRowComp = function (fullWidthRowComponent) {\n var _this = this;\n if (this.fullWidthCellRenderer) {\n console.error('AG Grid - should not be setting fullWidthRowComponent twice');\n }\n this.fullWidthCellRenderer = fullWidthRowComponent;\n this.addDestroyFunc(function () {\n _this.fullWidthCellRenderer = _this.beans.context.destroyBean(_this.fullWidthCellRenderer);\n });\n };\n RowComp.prototype.getFullWidthCellRenderer = function () {\n return this.fullWidthCellRenderer;\n };\n RowComp.prototype.destroyCells = function (cellComps) {\n var _this = this;\n cellComps.forEach(function (cellComp) {\n // could be old reference, ie removed cell\n if (!cellComp) {\n return;\n }\n // check cellComp belongs in this container\n var instanceId = cellComp.getCtrl().getInstanceId();\n if (_this.cellComps[instanceId] !== cellComp) {\n return;\n }\n cellComp.detach();\n cellComp.destroy();\n _this.cellComps[instanceId] = null;\n });\n };\n return RowComp;\n}(Component));\nexport { RowComp };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __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};\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component } from \"../../widgets/component\";\nimport { RefSelector } from \"../../widgets/componentAnnotations\";\nimport { Autowired, PostConstruct, PreDestroy } from \"../../context/context\";\nimport { getRowContainerTypeForName, RowContainerCtrl, RowContainerName } from \"./rowContainerCtrl\";\nimport { ensureDomOrder, insertWithDomOrder } from \"../../utils/dom\";\nimport { RowComp } from \"../../rendering/row/rowComp\";\nimport { getAllValuesInObject } from \"../../utils/object\";\nfunction templateFactory() {\n var name = Component.elementGettingCreated.getAttribute('name');\n var cssClasses = RowContainerCtrl.getRowContainerCssClasses(name);\n var res;\n var template1 = name === RowContainerName.CENTER;\n var template2 = name === RowContainerName.TOP_CENTER || name === RowContainerName.BOTTOM_CENTER;\n if (template1) {\n res = /* html */\n \"
    \\n
    \\n
    \\n
    \\n
    \";\n }\n else if (template2) {\n res = /* html */\n \"
    \\n
    \\n
    \";\n }\n else {\n res = /* html */\n \"
    \";\n }\n return res;\n}\nvar RowContainerComp = /** @class */ (function (_super) {\n __extends(RowContainerComp, _super);\n function RowContainerComp() {\n var _this = _super.call(this, templateFactory()) || this;\n _this.rowComps = {};\n _this.name = Component.elementGettingCreated.getAttribute('name');\n _this.type = getRowContainerTypeForName(_this.name);\n return _this;\n }\n RowContainerComp.prototype.postConstruct = function () {\n var _this = this;\n var compProxy = {\n setViewportHeight: function (height) { return _this.eViewport.style.height = height; },\n setRowCtrls: function (rowCtrls) { return _this.setRowCtrls(rowCtrls); },\n setDomOrder: function (domOrder) {\n _this.domOrder = domOrder;\n },\n setContainerWidth: function (width) { return _this.eContainer.style.width = width; }\n };\n var ctrl = this.createManagedBean(new RowContainerCtrl(this.name));\n ctrl.setComp(compProxy, this.eContainer, this.eViewport, this.eWrapper);\n };\n RowContainerComp.prototype.preDestroy = function () {\n // destroys all row comps\n this.setRowCtrls([]);\n };\n RowContainerComp.prototype.setRowCtrls = function (rowCtrls) {\n var _this = this;\n var oldRows = __assign({}, this.rowComps);\n this.rowComps = {};\n this.lastPlacedElement = null;\n var processRow = function (rowCon) {\n var instanceId = rowCon.getInstanceId();\n var existingRowComp = oldRows[instanceId];\n if (existingRowComp) {\n _this.rowComps[instanceId] = existingRowComp;\n delete oldRows[instanceId];\n _this.ensureDomOrder(existingRowComp.getGui());\n }\n else {\n var rowComp = _this.newRowComp(rowCon);\n _this.rowComps[instanceId] = rowComp;\n _this.appendRow(rowComp.getGui());\n }\n };\n rowCtrls.forEach(processRow);\n getAllValuesInObject(oldRows).forEach(function (oldRowComp) {\n _this.eContainer.removeChild(oldRowComp.getGui());\n oldRowComp.destroy();\n });\n };\n RowContainerComp.prototype.appendRow = function (element) {\n if (this.domOrder) {\n insertWithDomOrder(this.eContainer, element, this.lastPlacedElement);\n }\n else {\n this.eContainer.appendChild(element);\n }\n this.lastPlacedElement = element;\n };\n RowContainerComp.prototype.ensureDomOrder = function (eRow) {\n if (this.domOrder) {\n ensureDomOrder(this.eContainer, eRow, this.lastPlacedElement);\n this.lastPlacedElement = eRow;\n }\n };\n RowContainerComp.prototype.newRowComp = function (rowCtrl) {\n var pinned = RowContainerCtrl.getPinned(this.name);\n var res = new RowComp(rowCtrl, this.beans, this.type);\n return res;\n };\n __decorate([\n Autowired('beans')\n ], RowContainerComp.prototype, \"beans\", void 0);\n __decorate([\n RefSelector('eViewport')\n ], RowContainerComp.prototype, \"eViewport\", void 0);\n __decorate([\n RefSelector('eContainer')\n ], RowContainerComp.prototype, \"eContainer\", void 0);\n __decorate([\n RefSelector('eWrapper')\n ], RowContainerComp.prototype, \"eWrapper\", void 0);\n __decorate([\n PostConstruct\n ], RowContainerComp.prototype, \"postConstruct\", null);\n __decorate([\n PreDestroy\n ], RowContainerComp.prototype, \"preDestroy\", null);\n return RowContainerComp;\n}(Component));\nexport { RowContainerComp };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Constants } from \"../constants/constants\";\nimport { BeanStub } from \"../context/beanStub\";\nimport { Autowired, Bean, PostConstruct } from \"../context/context\";\nvar RowNodeEventThrottle = /** @class */ (function (_super) {\n __extends(RowNodeEventThrottle, _super);\n function RowNodeEventThrottle() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.events = [];\n return _this;\n }\n RowNodeEventThrottle.prototype.postConstruct = function () {\n if (this.rowModel.getType() == Constants.ROW_MODEL_TYPE_CLIENT_SIDE) {\n this.clientSideRowModel = this.rowModel;\n }\n };\n // because the user can call rowNode.setExpanded() many times in one VM turn,\n // we throttle the calls to ClientSideRowModel using animationFrameService. this means for 100\n // row nodes getting expanded, we only update the CSRM once, and then we fire all events after\n // CSRM has updated.\n //\n // if we did not do this, then the user could call setExpanded on 100+ rows, causing the grid\n // to re-render 100+ times, which would be a performance lag.\n //\n // we use animationFrameService\n // rather than _.debounce() so this will get done if anyone flushes the animationFrameService\n // (eg user calls api.ensureRowVisible(), which in turn flushes ).\n RowNodeEventThrottle.prototype.dispatchExpanded = function (event) {\n var _this = this;\n // if not using CSRM, we don't debounce. otherwise this breaks the SSRM.\n if (this.clientSideRowModel == null) {\n this.eventService.dispatchEvent(event);\n return;\n }\n this.events.push(event);\n var func = function () {\n if (_this.clientSideRowModel) {\n _this.clientSideRowModel.onRowGroupOpened();\n }\n _this.events.forEach(function (e) { return _this.eventService.dispatchEvent(e); });\n _this.events = [];\n };\n if (this.dispatchExpandedDebounced == null) {\n this.dispatchExpandedDebounced = this.animationFrameService.debounce(func);\n }\n this.dispatchExpandedDebounced();\n };\n __decorate([\n Autowired('animationFrameService')\n ], RowNodeEventThrottle.prototype, \"animationFrameService\", void 0);\n __decorate([\n Autowired('rowModel')\n ], RowNodeEventThrottle.prototype, \"rowModel\", void 0);\n __decorate([\n PostConstruct\n ], RowNodeEventThrottle.prototype, \"postConstruct\", null);\n RowNodeEventThrottle = __decorate([\n Bean('rowNodeEventThrottle')\n ], RowNodeEventThrottle);\n return RowNodeEventThrottle;\n}(BeanStub));\nexport { RowNodeEventThrottle };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Bean } from '../../../context/context';\nimport { BeanStub } from \"../../../context/beanStub\";\nimport { isVisible } from '../../../utils/dom';\nimport { KeyCode } from '../../../constants/keyCode';\nimport { setAriaRole } from '../../../utils/aria';\nvar StandardMenuFactory = /** @class */ (function (_super) {\n __extends(StandardMenuFactory, _super);\n function StandardMenuFactory() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n StandardMenuFactory.prototype.hideActiveMenu = function () {\n if (this.hidePopup) {\n this.hidePopup();\n }\n };\n StandardMenuFactory.prototype.showMenuAfterMouseEvent = function (column, mouseEvent) {\n var _this = this;\n this.showPopup(column, function (eMenu) {\n _this.popupService.positionPopupUnderMouseEvent({\n column: column,\n type: 'columnMenu',\n mouseEvent: mouseEvent,\n ePopup: eMenu\n });\n }, mouseEvent.target);\n };\n StandardMenuFactory.prototype.showMenuAfterButtonClick = function (column, eventSource, containerType) {\n var _this = this;\n this.showPopup(column, function (eMenu) {\n _this.popupService.positionPopupUnderComponent({\n type: containerType,\n eventSource: eventSource,\n ePopup: eMenu,\n keepWithinBounds: true,\n column: column\n });\n }, eventSource);\n };\n StandardMenuFactory.prototype.showPopup = function (column, positionCallback, eventSource) {\n var _this = this;\n var filterWrapper = this.filterManager.getOrCreateFilterWrapper(column, 'COLUMN_MENU');\n if (!filterWrapper) {\n throw new Error('AG Grid - unable to show popup filter, filter instantiation failed');\n }\n var eMenu = document.createElement('div');\n setAriaRole(eMenu, 'presentation');\n eMenu.classList.add('ag-menu');\n this.tabListener = this.addManagedListener(eMenu, 'keydown', function (e) { return _this.trapFocusWithin(e, eMenu); });\n filterWrapper.guiPromise.then(function (gui) { return eMenu.appendChild(gui); });\n var hidePopup;\n var anchorToElement = eventSource || this.ctrlsService.getGridBodyCtrl().getGui();\n var closedCallback = function (e) {\n column.setMenuVisible(false, 'contextMenu');\n var isKeyboardEvent = e instanceof KeyboardEvent;\n if (_this.tabListener) {\n _this.tabListener = _this.tabListener();\n }\n if (isKeyboardEvent && eventSource && isVisible(eventSource)) {\n var focusableEl = _this.focusService.findTabbableParent(eventSource);\n if (focusableEl) {\n focusableEl.focus();\n }\n }\n };\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var addPopupRes = this.popupService.addPopup({\n modal: true,\n eChild: eMenu,\n closeOnEsc: true,\n closedCallback: closedCallback,\n positionCallback: function () { return positionCallback(eMenu); },\n anchorToElement: anchorToElement,\n ariaLabel: translate('ariaLabelColumnMenu', 'Column Menu')\n });\n if (addPopupRes) {\n this.hidePopup = hidePopup = addPopupRes.hideFunc;\n }\n filterWrapper.filterPromise.then(function (filter) {\n // need to make sure the filter is present before positioning, as only\n // after filter it is visible can we find out what the width of it is\n positionCallback(eMenu);\n if (filter.afterGuiAttached) {\n filter.afterGuiAttached({ container: 'columnMenu', hidePopup: hidePopup });\n }\n });\n column.setMenuVisible(true, 'contextMenu');\n };\n StandardMenuFactory.prototype.trapFocusWithin = function (e, menu) {\n if (e.key !== KeyCode.TAB ||\n e.defaultPrevented ||\n this.focusService.findNextFocusableElement(menu, false, e.shiftKey)) {\n return;\n }\n e.preventDefault();\n this.focusService.focusInto(menu, e.shiftKey);\n };\n StandardMenuFactory.prototype.isMenuEnabled = function (column) {\n // for standard, we show menu if filter is enabled, and the menu is not suppressed\n return column.isFilterAllowed();\n };\n __decorate([\n Autowired('filterManager')\n ], StandardMenuFactory.prototype, \"filterManager\", void 0);\n __decorate([\n Autowired('popupService')\n ], StandardMenuFactory.prototype, \"popupService\", void 0);\n __decorate([\n Autowired('focusService')\n ], StandardMenuFactory.prototype, \"focusService\", void 0);\n __decorate([\n Autowired('ctrlsService')\n ], StandardMenuFactory.prototype, \"ctrlsService\", void 0);\n StandardMenuFactory = __decorate([\n Bean('menuFactory')\n ], StandardMenuFactory);\n return StandardMenuFactory;\n}(BeanStub));\nexport { StandardMenuFactory };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nimport { GridOptionsWrapper } from \"./gridOptionsWrapper\";\nimport { SelectionService } from \"./selectionService\";\nimport { ColumnApi } from \"./columns/columnApi\";\nimport { ColumnModel } from \"./columns/columnModel\";\nimport { RowRenderer } from \"./rendering/rowRenderer\";\nimport { GridHeaderComp } from \"./headerRendering/gridHeaderComp\";\nimport { FilterManager } from \"./filter/filterManager\";\nimport { ValueService } from \"./valueService/valueService\";\nimport { EventService } from \"./eventService\";\nimport { GridBodyComp } from \"./gridBodyComp/gridBodyComp\";\nimport { GridApi } from \"./gridApi\";\nimport { ColumnFactory } from \"./columns/columnFactory\";\nimport { DisplayedGroupCreator } from \"./columns/displayedGroupCreator\";\nimport { ExpressionService } from \"./valueService/expressionService\";\nimport { TemplateService } from \"./templateService\";\nimport { PopupService } from \"./widgets/popupService\";\nimport { Logger, LoggerFactory } from \"./logger\";\nimport { ColumnUtils } from \"./columns/columnUtils\";\nimport { AutoWidthCalculator } from \"./rendering/autoWidthCalculator\";\nimport { HorizontalResizeService } from \"./headerRendering/common/horizontalResizeService\";\nimport { Context } from \"./context/context\";\nimport { GridComp } from \"./gridComp/gridComp\";\nimport { DragAndDropService } from \"./dragAndDrop/dragAndDropService\";\nimport { DragService } from \"./dragAndDrop/dragService\";\nimport { SortController } from \"./sortController\";\nimport { FocusService } from \"./focusService\";\nimport { MouseEventService } from \"./gridBodyComp/mouseEventService\";\nimport { CellNavigationService } from \"./cellNavigationService\";\nimport { Events } from \"./events\";\nimport { ValueFormatterService } from \"./rendering/valueFormatterService\";\nimport { AgCheckbox } from \"./widgets/agCheckbox\";\nimport { AgRadioButton } from \"./widgets/agRadioButton\";\nimport { VanillaFrameworkOverrides } from \"./vanillaFrameworkOverrides\";\nimport { ScrollVisibleService } from \"./gridBodyComp/scrollVisibleService\";\nimport { StylingService } from \"./styling/stylingService\";\nimport { ColumnHoverService } from \"./rendering/columnHoverService\";\nimport { ColumnAnimationService } from \"./rendering/columnAnimationService\";\nimport { AutoGroupColService } from \"./columns/autoGroupColService\";\nimport { PaginationProxy } from \"./pagination/paginationProxy\";\nimport { PaginationAutoPageSizeService } from \"./pagination/paginationAutoPageSizeService\";\nimport { Constants } from \"./constants/constants\";\nimport { ValueCache } from \"./valueService/valueCache\";\nimport { ChangeDetectionService } from \"./valueService/changeDetectionService\";\nimport { AlignedGridsService } from \"./alignedGridsService\";\nimport { UserComponentFactory } from \"./components/framework/userComponentFactory\";\nimport { UserComponentRegistry } from \"./components/framework/userComponentRegistry\";\nimport { AgComponentUtils } from \"./components/framework/agComponentUtils\";\nimport { ComponentMetadataProvider } from \"./components/framework/componentMetadataProvider\";\nimport { Beans } from \"./rendering/beans\";\nimport { Environment } from \"./environment\";\nimport { AnimationFrameService } from \"./misc/animationFrameService\";\nimport { NavigationService } from \"./gridBodyComp/navigationService\";\nimport { RowContainerHeightService } from \"./rendering/rowContainerHeightService\";\nimport { SelectableService } from \"./rowNodes/selectableService\";\nimport { PaginationComp } from \"./pagination/paginationComp\";\nimport { ResizeObserverService } from \"./misc/resizeObserverService\";\nimport { OverlayWrapperComponent } from \"./rendering/overlays/overlayWrapperComponent\";\nimport { AgGroupComponent } from \"./widgets/agGroupComponent\";\nimport { AgDialog } from \"./widgets/agDialog\";\nimport { AgPanel } from \"./widgets/agPanel\";\nimport { AgInputTextField } from \"./widgets/agInputTextField\";\nimport { AgInputTextArea } from \"./widgets/agInputTextArea\";\nimport { AgSlider } from \"./widgets/agSlider\";\nimport { AgColorPicker } from \"./widgets/agColorPicker\";\nimport { AgInputNumberField } from \"./widgets/agInputNumberField\";\nimport { AgInputRange } from \"./widgets/agInputRange\";\nimport { AgSelect } from \"./widgets/agSelect\";\nimport { AgAngleSelect } from \"./widgets/agAngleSelect\";\nimport { AgToggleButton } from \"./widgets/agToggleButton\";\nimport { RowPositionUtils } from \"./entities/rowPosition\";\nimport { CellPositionUtils } from \"./entities/cellPosition\";\nimport { PinnedRowModel } from \"./pinnedRowModel/pinnedRowModel\";\nimport { ModuleRegistry } from \"./modules/moduleRegistry\";\nimport { ModuleNames } from \"./modules/moduleNames\";\nimport { UndoRedoService } from \"./undoRedo/undoRedoService\";\nimport { AgStackComponentsRegistry } from \"./components/agStackComponentsRegistry\";\nimport { HeaderPositionUtils } from \"./headerRendering/common/headerPosition\";\nimport { HeaderNavigationService } from \"./headerRendering/common/headerNavigationService\";\nimport { exists, missing } from \"./utils/generic\";\nimport { iterateObject } from \"./utils/object\";\nimport { ColumnDefFactory } from \"./columns/columnDefFactory\";\nimport { RowCssClassCalculator } from \"./rendering/row/rowCssClassCalculator\";\nimport { RowNodeBlockLoader } from \"./rowNodeCache/rowNodeBlockLoader\";\nimport { RowNodeSorter } from \"./rowNodes/rowNodeSorter\";\nimport { CtrlsService } from \"./ctrlsService\";\nimport { CtrlsFactory } from \"./ctrlsFactory\";\nimport { FakeHScrollComp } from \"./gridBodyComp/fakeHScrollComp\";\nimport { PinnedWidthService } from \"./gridBodyComp/pinnedWidthService\";\nimport { RowContainerComp } from \"./gridBodyComp/rowContainer/rowContainerComp\";\nimport { RowNodeEventThrottle } from \"./entities/rowNodeEventThrottle\";\nimport { StandardMenuFactory } from \"./headerRendering/cells/column/standardMenu\";\n// creates JavaScript vanilla Grid, including JavaScript (ag-stack) components, which can\n// be wrapped by the framework wrappers\nvar Grid = /** @class */ (function () {\n function Grid(eGridDiv, gridOptions, params) {\n if (!gridOptions) {\n console.error('AG Grid: no gridOptions provided to the grid');\n return;\n }\n this.gridOptions = gridOptions;\n new GridCoreCreator().create(eGridDiv, gridOptions, function (context) {\n var gridComp = new GridComp(eGridDiv);\n context.createBean(gridComp);\n }, undefined, params);\n }\n Grid.prototype.destroy = function () {\n if (this.gridOptions && this.gridOptions.api) {\n this.gridOptions.api.destroy();\n }\n };\n return Grid;\n}());\nexport { Grid };\n// created services of grid only, no UI, so frameworks can use this if providing\n// their own UI\nvar GridCoreCreator = /** @class */ (function () {\n function GridCoreCreator() {\n }\n GridCoreCreator.prototype.create = function (eGridDiv, gridOptions, createUi, acceptChanges, params) {\n var _this = this;\n var debug = !!gridOptions.debug;\n var registeredModules = this.getRegisteredModules(params);\n var beanClasses = this.createBeansList(gridOptions.rowModelType, registeredModules);\n var providedBeanInstances = this.createProvidedBeans(eGridDiv, gridOptions, params);\n if (!beanClasses) {\n return;\n } // happens when no row model found\n var contextParams = {\n providedBeanInstances: providedBeanInstances,\n beanClasses: beanClasses,\n debug: debug\n };\n var logger = new Logger('AG Grid', function () { return gridOptions.debug; });\n var contextLogger = new Logger('Context', function () { return contextParams.debug; });\n var context = new Context(contextParams, contextLogger);\n var beans = context.getBean('beans');\n this.registerModuleUserComponents(beans, registeredModules);\n this.registerStackComponents(beans, registeredModules);\n this.registerControllers(beans, registeredModules);\n createUi(context);\n // we wait until the UI has finished initialising before setting in columns and rows\n beans.ctrlsService.whenReady(function () {\n _this.setColumnsAndData(beans);\n _this.dispatchGridReadyEvent(beans, gridOptions);\n var isEnterprise = ModuleRegistry.isRegistered(ModuleNames.EnterpriseCoreModule);\n logger.log(\"initialised successfully, enterprise = \" + isEnterprise);\n });\n if (acceptChanges) {\n acceptChanges(context);\n }\n };\n GridCoreCreator.prototype.registerControllers = function (beans, registeredModules) {\n registeredModules.forEach(function (module) {\n if (module.controllers) {\n module.controllers.forEach(function (meta) { return beans.ctrlsFactory.register(meta); });\n }\n });\n };\n GridCoreCreator.prototype.registerStackComponents = function (beans, registeredModules) {\n var agStackComponents = this.createAgStackComponentsList(registeredModules);\n beans.agStackComponentsRegistry.setupComponents(agStackComponents);\n };\n GridCoreCreator.prototype.getRegisteredModules = function (params) {\n var passedViaConstructor = params ? params.modules : null;\n var registered = ModuleRegistry.getRegisteredModules();\n var allModules = [];\n var mapNames = {};\n // adds to list and removes duplicates\n function addModule(moduleBased, mod) {\n function addIndividualModule(currentModule) {\n if (!mapNames[currentModule.moduleName]) {\n mapNames[currentModule.moduleName] = true;\n allModules.push(currentModule);\n ModuleRegistry.register(currentModule, moduleBased);\n }\n }\n addIndividualModule(mod);\n if (mod.dependantModules) {\n mod.dependantModules.forEach(addModule.bind(null, moduleBased));\n }\n }\n if (passedViaConstructor) {\n passedViaConstructor.forEach(addModule.bind(null, true));\n }\n if (registered) {\n registered.forEach(addModule.bind(null, !ModuleRegistry.isPackageBased()));\n }\n return allModules;\n };\n GridCoreCreator.prototype.registerModuleUserComponents = function (beans, registeredModules) {\n var moduleUserComps = this.extractModuleEntity(registeredModules, function (module) { return module.userComponents ? module.userComponents : []; });\n moduleUserComps.forEach(function (compMeta) {\n beans.userComponentRegistry.registerDefaultComponent(compMeta.componentName, compMeta.componentClass);\n });\n };\n GridCoreCreator.prototype.createProvidedBeans = function (eGridDiv, gridOptions, params) {\n var frameworkOverrides = params ? params.frameworkOverrides : null;\n if (missing(frameworkOverrides)) {\n frameworkOverrides = new VanillaFrameworkOverrides();\n }\n var seed = {\n gridOptions: gridOptions,\n eGridDiv: eGridDiv,\n $scope: params ? params.$scope : null,\n $compile: params ? params.$compile : null,\n globalEventListener: params ? params.globalEventListener : null,\n frameworkOverrides: frameworkOverrides\n };\n if (params && params.providedBeanInstances) {\n Object.assign(seed, params.providedBeanInstances);\n }\n return seed;\n };\n GridCoreCreator.prototype.createAgStackComponentsList = function (registeredModules) {\n var components = [\n { componentName: 'AgCheckbox', componentClass: AgCheckbox },\n { componentName: 'AgRadioButton', componentClass: AgRadioButton },\n { componentName: 'AgToggleButton', componentClass: AgToggleButton },\n { componentName: 'AgInputTextField', componentClass: AgInputTextField },\n { componentName: 'AgInputTextArea', componentClass: AgInputTextArea },\n { componentName: 'AgInputNumberField', componentClass: AgInputNumberField },\n { componentName: 'AgInputRange', componentClass: AgInputRange },\n { componentName: 'AgSelect', componentClass: AgSelect },\n { componentName: 'AgSlider', componentClass: AgSlider },\n { componentName: 'AgAngleSelect', componentClass: AgAngleSelect },\n { componentName: 'AgColorPicker', componentClass: AgColorPicker },\n { componentName: 'AgGridBody', componentClass: GridBodyComp },\n { componentName: 'AgHeaderRoot', componentClass: GridHeaderComp },\n { componentName: 'AgPagination', componentClass: PaginationComp },\n { componentName: 'AgOverlayWrapper', componentClass: OverlayWrapperComponent },\n { componentName: 'AgGroupComponent', componentClass: AgGroupComponent },\n { componentName: 'AgPanel', componentClass: AgPanel },\n { componentName: 'AgDialog', componentClass: AgDialog },\n { componentName: 'AgRowContainer', componentClass: RowContainerComp },\n { componentName: 'AgFakeHorizontalScroll', componentClass: FakeHScrollComp }\n ];\n var moduleAgStackComps = this.extractModuleEntity(registeredModules, function (module) { return module.agStackComponents ? module.agStackComponents : []; });\n components = components.concat(moduleAgStackComps);\n return components;\n };\n GridCoreCreator.prototype.createBeansList = function (rowModelType, registeredModules) {\n var rowModelClass = this.getRowModelClass(rowModelType, registeredModules);\n if (!rowModelClass) {\n return;\n }\n // beans should only contain SERVICES, it should NEVER contain COMPONENTS\n var beans = [\n rowModelClass, Beans, RowPositionUtils, CellPositionUtils, HeaderPositionUtils,\n PaginationAutoPageSizeService, GridApi, UserComponentRegistry, AgComponentUtils,\n ComponentMetadataProvider, ResizeObserverService, UserComponentFactory,\n RowContainerHeightService, HorizontalResizeService,\n PinnedRowModel, DragService, DisplayedGroupCreator, EventService, GridOptionsWrapper,\n PopupService, SelectionService, FilterManager, ColumnModel, HeaderNavigationService,\n PaginationProxy, RowRenderer, ExpressionService, ColumnFactory, TemplateService,\n AlignedGridsService, NavigationService, ValueCache, ValueService, LoggerFactory,\n ColumnUtils, AutoWidthCalculator, StandardMenuFactory, DragAndDropService, ColumnApi,\n FocusService, MouseEventService, Environment, CellNavigationService, ValueFormatterService,\n StylingService, ScrollVisibleService, SortController, ColumnHoverService, ColumnAnimationService,\n SelectableService, AutoGroupColService, ChangeDetectionService, AnimationFrameService,\n UndoRedoService, AgStackComponentsRegistry, ColumnDefFactory,\n RowCssClassCalculator, RowNodeBlockLoader, RowNodeSorter, CtrlsService,\n PinnedWidthService, RowNodeEventThrottle, CtrlsFactory\n ];\n var moduleBeans = this.extractModuleEntity(registeredModules, function (module) { return module.beans ? module.beans : []; });\n beans.push.apply(beans, __spread(moduleBeans));\n // check for duplicates, as different modules could include the same beans that\n // they depend on, eg ClientSideRowModel in enterprise, and ClientSideRowModel in community\n var beansNoDuplicates = [];\n beans.forEach(function (bean) {\n if (beansNoDuplicates.indexOf(bean) < 0) {\n beansNoDuplicates.push(bean);\n }\n });\n return beansNoDuplicates;\n };\n GridCoreCreator.prototype.extractModuleEntity = function (moduleEntities, extractor) {\n return [].concat.apply([], __spread(moduleEntities.map(extractor)));\n };\n GridCoreCreator.prototype.setColumnsAndData = function (beans) {\n var columnDefs = beans.gridOptionsWrapper.getColumnDefs();\n beans.columnModel.setColumnDefs(columnDefs || [], \"gridInitializing\");\n beans.rowModel.start();\n };\n GridCoreCreator.prototype.dispatchGridReadyEvent = function (beans, gridOptions) {\n var readyEvent = {\n type: Events.EVENT_GRID_READY,\n api: gridOptions.api,\n columnApi: gridOptions.columnApi\n };\n beans.eventService.dispatchEvent(readyEvent);\n };\n GridCoreCreator.prototype.getRowModelClass = function (rowModelType, registeredModules) {\n // default to client side\n if (!rowModelType) {\n rowModelType = Constants.ROW_MODEL_TYPE_CLIENT_SIDE;\n }\n var rowModelClasses = {};\n registeredModules.forEach(function (module) {\n iterateObject(module.rowModels, function (key, value) {\n rowModelClasses[key] = value;\n });\n });\n var rowModelClass = rowModelClasses[rowModelType];\n if (exists(rowModelClass)) {\n return rowModelClass;\n }\n if (rowModelType === Constants.ROW_MODEL_TYPE_INFINITE) {\n console.error(\"AG Grid: Row Model \\\"Infinite\\\" not found. Please ensure the \" + ModuleNames.InfiniteRowModelModule + \" is registered.';\");\n }\n console.error('AG Grid: could not find matching row model for rowModelType ' + rowModelType);\n if (rowModelType === Constants.ROW_MODEL_TYPE_VIEWPORT) {\n console.error(\"AG Grid: Row Model \\\"Viewport\\\" not found. Please ensure the AG Grid Enterprise Module \" + ModuleNames.ViewportRowModelModule + \" is registered.';\");\n }\n if (rowModelType === Constants.ROW_MODEL_TYPE_SERVER_SIDE) {\n console.error(\"AG Grid: Row Model \\\"Server Side\\\" not found. Please ensure the AG Grid Enterprise Module \" + ModuleNames.ServerSideRowModelModule + \" is registered.';\");\n }\n if (rowModelType === Constants.ROW_MODEL_TYPE_CLIENT_SIDE) {\n console.error(\"AG Grid: Row Model \\\"Client Side\\\" not found. Please ensure the \" + ModuleNames.ClientSideRowModelModule + \" is registered.';\");\n }\n };\n return GridCoreCreator;\n}());\nexport { GridCoreCreator };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { RefSelector } from '../widgets/componentAnnotations';\nimport { ManagedFocusFeature } from '../widgets/managedFocusFeature';\nimport { clearElement } from '../utils/dom';\nimport { setAriaLabel, setAriaRole } from '../utils/aria';\nimport { callIfPresent } from '../utils/function';\nimport { KeyCode } from '../constants/keyCode';\nimport { Component } from '../widgets/component';\nimport { PostConstruct, Autowired } from '../context/context';\nvar TabbedLayout = /** @class */ (function (_super) {\n __extends(TabbedLayout, _super);\n function TabbedLayout(params) {\n var _this = _super.call(this, TabbedLayout.getTemplate(params.cssClass)) || this;\n _this.items = [];\n _this.tabbedItemScrollMap = new Map();\n _this.params = params;\n if (params.items) {\n params.items.forEach(function (item) { return _this.addItem(item); });\n }\n return _this;\n }\n TabbedLayout.prototype.postConstruct = function () {\n this.createManagedBean(new ManagedFocusFeature(this.getFocusableElement(), {\n onTabKeyDown: this.onTabKeyDown.bind(this),\n handleKeyDown: this.handleKeyDown.bind(this)\n }));\n };\n TabbedLayout.getTemplate = function (cssClass) {\n return /* html */ \"
    \\n
    \\n
    \\n
    \";\n };\n TabbedLayout.prototype.handleKeyDown = function (e) {\n var eDocument = this.gridOptionsWrapper.getDocument();\n switch (e.key) {\n case KeyCode.RIGHT:\n case KeyCode.LEFT:\n if (!this.eHeader.contains(eDocument.activeElement)) {\n return;\n }\n var currentPosition = this.items.indexOf(this.activeItem);\n var nextPosition = e.key === KeyCode.RIGHT ? Math.min(currentPosition + 1, this.items.length - 1) : Math.max(currentPosition - 1, 0);\n if (currentPosition === nextPosition) {\n return;\n }\n e.preventDefault();\n var nextItem = this.items[nextPosition];\n this.showItemWrapper(nextItem);\n nextItem.eHeaderButton.focus();\n break;\n case KeyCode.UP:\n case KeyCode.DOWN:\n e.stopPropagation();\n break;\n }\n };\n TabbedLayout.prototype.onTabKeyDown = function (e) {\n if (e.defaultPrevented) {\n return;\n }\n var _a = this, focusService = _a.focusService, eHeader = _a.eHeader, eBody = _a.eBody, activeItem = _a.activeItem;\n var eDocument = this.gridOptionsWrapper.getDocument();\n var activeElement = eDocument.activeElement;\n e.preventDefault();\n if (eHeader.contains(activeElement)) {\n // focus is in header, move into body of popup\n focusService.focusInto(eBody, e.shiftKey);\n }\n else {\n // focus is in body, establish if it should return to header\n if (focusService.isFocusUnderManagedComponent(eBody)) {\n // focus was in a managed focus component and has now left, so we can return to the header\n activeItem.eHeaderButton.focus();\n }\n else {\n var nextEl = focusService.findNextFocusableElement(eBody, false, e.shiftKey);\n if (nextEl) {\n // if another element exists in the body that can be focussed, go to that\n nextEl.focus();\n }\n else {\n // otherwise return to the header\n activeItem.eHeaderButton.focus();\n }\n }\n }\n };\n TabbedLayout.prototype.setAfterAttachedParams = function (params) {\n this.afterAttachedParams = params;\n };\n TabbedLayout.prototype.showFirstItem = function () {\n if (this.items.length > 0) {\n this.showItemWrapper(this.items[0]);\n }\n };\n TabbedLayout.prototype.addItem = function (item) {\n var eHeaderButton = document.createElement('span');\n setAriaRole(eHeaderButton, 'tab');\n eHeaderButton.setAttribute('tabIndex', '-1');\n eHeaderButton.appendChild(item.title);\n eHeaderButton.classList.add('ag-tab');\n this.eHeader.appendChild(eHeaderButton);\n setAriaLabel(eHeaderButton, item.titleLabel);\n var wrapper = {\n tabbedItem: item,\n eHeaderButton: eHeaderButton\n };\n this.items.push(wrapper);\n eHeaderButton.addEventListener('click', this.showItemWrapper.bind(this, wrapper));\n };\n TabbedLayout.prototype.showItem = function (tabbedItem) {\n var itemWrapper = this.items.find(function (wrapper) { return wrapper.tabbedItem === tabbedItem; });\n if (itemWrapper) {\n this.showItemWrapper(itemWrapper);\n }\n };\n TabbedLayout.prototype.showItemWrapper = function (wrapper) {\n var _this = this;\n var tabbedItem = wrapper.tabbedItem, eHeaderButton = wrapper.eHeaderButton;\n if (this.params.onItemClicked) {\n this.params.onItemClicked({ item: tabbedItem });\n }\n if (this.activeItem === wrapper) {\n callIfPresent(this.params.onActiveItemClicked);\n return;\n }\n if (this.lastScrollListener) {\n this.lastScrollListener = this.lastScrollListener();\n }\n clearElement(this.eBody);\n tabbedItem.bodyPromise.then(function (body) {\n _this.eBody.appendChild(body);\n var onlyUnmanaged = !_this.focusService.isKeyboardMode();\n _this.focusService.focusInto(_this.eBody, false, onlyUnmanaged);\n if (tabbedItem.afterAttachedCallback) {\n tabbedItem.afterAttachedCallback(_this.afterAttachedParams);\n }\n if (_this.params.keepScrollPosition) {\n var scrollableContainer_1 = (tabbedItem.getScrollableContainer && tabbedItem.getScrollableContainer()) || body;\n _this.lastScrollListener = _this.addManagedListener(scrollableContainer_1, 'scroll', function () {\n _this.tabbedItemScrollMap.set(tabbedItem.name, scrollableContainer_1.scrollTop);\n });\n var scrollPosition_1 = _this.tabbedItemScrollMap.get(tabbedItem.name);\n if (scrollPosition_1 !== undefined) {\n // Safari needs a small timeout or it will fire a scroll event to position 0\n setTimeout(function () {\n scrollableContainer_1.scrollTop = scrollPosition_1;\n }, 0);\n }\n }\n });\n if (this.activeItem) {\n this.activeItem.eHeaderButton.classList.remove('ag-tab-selected');\n }\n eHeaderButton.classList.add('ag-tab-selected');\n this.activeItem = wrapper;\n };\n __decorate([\n Autowired('focusService')\n ], TabbedLayout.prototype, \"focusService\", void 0);\n __decorate([\n RefSelector('eHeader')\n ], TabbedLayout.prototype, \"eHeader\", void 0);\n __decorate([\n RefSelector('eBody')\n ], TabbedLayout.prototype, \"eBody\", void 0);\n __decorate([\n PostConstruct\n ], TabbedLayout.prototype, \"postConstruct\", null);\n return TabbedLayout;\n}(Component));\nexport { TabbedLayout };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nexport var ServerSideTransactionResultStatus;\n(function (ServerSideTransactionResultStatus) {\n /** Transaction was successfully applied */\n ServerSideTransactionResultStatus[\"Applied\"] = \"Applied\";\n /**\n * Store was not found, transaction not applied.\n * Either invalid route, or the parent row has not yet been expanded.\n */\n ServerSideTransactionResultStatus[\"StoreNotFound\"] = \"StoreNotFound\";\n /**\n * Store is loading, transaction not applied.\n */\n ServerSideTransactionResultStatus[\"StoreLoading\"] = \"StoreLoading\";\n /**\n * Store is loading (as max loads exceeded), transaction not applied.\n */\n ServerSideTransactionResultStatus[\"StoreWaitingToLoad\"] = \"StoreWaitingToLoad\";\n /**\n * Store load attempt failed, transaction not applied.\n */\n ServerSideTransactionResultStatus[\"StoreLoadingFailed\"] = \"StoreLoadingFailed\";\n /**\n * Store is type Partial, which doesn't accept transactions\n */\n ServerSideTransactionResultStatus[\"StoreWrongType\"] = \"StoreWrongType\";\n /**\n * Transaction was cancelled, due to grid.\n * Callback isApplyServerSideTransaction() returning false\n */\n ServerSideTransactionResultStatus[\"Cancelled\"] = \"Cancelled\";\n})(ServerSideTransactionResultStatus || (ServerSideTransactionResultStatus = {}));\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __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};\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, PostConstruct } from \"../context/context\";\nimport { AgMenuItemComponent } from \"./agMenuItemComponent\";\nimport { TabGuardComp } from \"./tabGuardComp\";\nimport { KeyCode } from \"../constants/keyCode\";\nimport { loadTemplate } from \"../utils/dom\";\nimport { last } from \"../utils/array\";\nimport { setAriaLevel } from \"../utils/aria\";\nvar AgMenuList = /** @class */ (function (_super) {\n __extends(AgMenuList, _super);\n function AgMenuList(level) {\n if (level === void 0) { level = 1; }\n var _this = _super.call(this, /* html */ \"
    \") || this;\n _this.level = level;\n _this.menuItems = [];\n return _this;\n }\n AgMenuList.prototype.postConstruct = function () {\n var _this = this;\n this.initialiseTabGuard({\n onTabKeyDown: function (e) { return _this.onTabKeyDown(e); },\n handleKeyDown: function (e) { return _this.handleKeyDown(e); }\n });\n };\n AgMenuList.prototype.onTabKeyDown = function (e) {\n var parent = this.getParentComponent();\n var parentGui = parent && parent.getGui();\n var isManaged = parentGui && parentGui.classList.contains('ag-focus-managed');\n if (!isManaged) {\n e.preventDefault();\n }\n if (e.shiftKey) {\n this.closeIfIsChild(e);\n }\n };\n AgMenuList.prototype.handleKeyDown = function (e) {\n switch (e.key) {\n case KeyCode.UP:\n case KeyCode.RIGHT:\n case KeyCode.DOWN:\n case KeyCode.LEFT:\n e.preventDefault();\n this.handleNavKey(e.key);\n break;\n case KeyCode.ESCAPE:\n var topMenu = this.findTopMenu();\n if (topMenu) {\n this.focusService.focusInto(topMenu.getGui());\n }\n break;\n }\n };\n AgMenuList.prototype.clearActiveItem = function () {\n if (this.activeMenuItem) {\n this.activeMenuItem.deactivate();\n this.activeMenuItem = null;\n }\n };\n AgMenuList.prototype.addMenuItems = function (menuItems) {\n var _this = this;\n if (menuItems == null) {\n return;\n }\n menuItems.forEach(function (menuItemOrString) {\n if (menuItemOrString === 'separator') {\n _this.addSeparator();\n }\n else if (typeof menuItemOrString === 'string') {\n console.warn(\"AG Grid: unrecognised menu item \" + menuItemOrString);\n }\n else {\n _this.addItem(menuItemOrString);\n }\n });\n };\n AgMenuList.prototype.addItem = function (menuItemDef) {\n var _this = this;\n var menuItem = this.createManagedBean(new AgMenuItemComponent(__assign(__assign({}, menuItemDef), { isAnotherSubMenuOpen: function () { return _this.menuItems.some(function (m) { return m.isSubMenuOpen(); }); } })));\n menuItem.setParentComponent(this);\n setAriaLevel(menuItem.getGui(), this.level);\n this.menuItems.push(menuItem);\n this.appendChild(menuItem.getGui());\n this.addManagedListener(menuItem, AgMenuItemComponent.EVENT_MENU_ITEM_SELECTED, function (event) {\n _this.dispatchEvent(event);\n });\n this.addManagedListener(menuItem, AgMenuItemComponent.EVENT_MENU_ITEM_ACTIVATED, function (event) {\n if (_this.activeMenuItem && _this.activeMenuItem !== event.menuItem) {\n _this.activeMenuItem.deactivate();\n }\n _this.activeMenuItem = event.menuItem;\n });\n };\n AgMenuList.prototype.activateFirstItem = function () {\n var item = this.menuItems.filter(function (currentItem) { return !currentItem.isDisabled(); })[0];\n if (!item) {\n return;\n }\n item.activate();\n };\n AgMenuList.prototype.addSeparator = function () {\n var separatorHtml = /* html */ \"\\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \";\n this.appendChild(loadTemplate(separatorHtml));\n };\n AgMenuList.prototype.findTopMenu = function () {\n var parent = this.getParentComponent();\n if (!parent && this instanceof AgMenuList) {\n return this;\n }\n while (true) {\n var nextParent = parent && parent.getParentComponent && parent.getParentComponent();\n if (!nextParent || (!(nextParent instanceof AgMenuList || nextParent instanceof AgMenuItemComponent))) {\n break;\n }\n parent = nextParent;\n }\n return parent instanceof AgMenuList ? parent : undefined;\n };\n AgMenuList.prototype.handleNavKey = function (key) {\n switch (key) {\n case KeyCode.UP:\n case KeyCode.DOWN:\n var nextItem = this.findNextItem(key === KeyCode.UP);\n if (nextItem && nextItem !== this.activeMenuItem) {\n nextItem.activate();\n }\n return;\n }\n var left = this.gridOptionsWrapper.isEnableRtl() ? KeyCode.RIGHT : KeyCode.LEFT;\n if (key === left) {\n this.closeIfIsChild();\n }\n else {\n this.openChild();\n }\n };\n AgMenuList.prototype.closeIfIsChild = function (e) {\n var parentItem = this.getParentComponent();\n if (parentItem && parentItem instanceof AgMenuItemComponent) {\n if (e) {\n e.preventDefault();\n }\n parentItem.closeSubMenu();\n parentItem.getGui().focus();\n }\n };\n AgMenuList.prototype.openChild = function () {\n if (this.activeMenuItem) {\n this.activeMenuItem.openSubMenu(true);\n }\n };\n AgMenuList.prototype.findNextItem = function (up) {\n var items = this.menuItems.filter(function (item) { return !item.isDisabled(); });\n if (!items.length) {\n return;\n }\n if (!this.activeMenuItem) {\n return up ? last(items) : items[0];\n }\n if (up) {\n items.reverse();\n }\n var nextItem;\n var foundCurrent = false;\n for (var i = 0; i < items.length; i++) {\n var item = items[i];\n if (!foundCurrent) {\n if (item === this.activeMenuItem) {\n foundCurrent = true;\n }\n continue;\n }\n nextItem = item;\n break;\n }\n return nextItem || this.activeMenuItem;\n };\n AgMenuList.prototype.destroy = function () {\n this.clearActiveItem();\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Autowired('focusService')\n ], AgMenuList.prototype, \"focusService\", void 0);\n __decorate([\n PostConstruct\n ], AgMenuList.prototype, \"postConstruct\", null);\n return AgMenuList;\n}(TabGuardComp));\nexport { AgMenuList };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { PostConstruct } from '../context/context';\nimport { KeyCode } from '../constants/keyCode';\nimport { TabGuardComp } from './tabGuardComp';\nvar AgMenuPanel = /** @class */ (function (_super) {\n __extends(AgMenuPanel, _super);\n function AgMenuPanel(wrappedComponent) {\n var _this = _super.call(this) || this;\n _this.wrappedComponent = wrappedComponent;\n _this.setTemplateFromElement(wrappedComponent.getGui());\n return _this;\n }\n AgMenuPanel.prototype.postConstruct = function () {\n var _this = this;\n this.initialiseTabGuard({\n onTabKeyDown: function (e) { return _this.onTabKeyDown(e); },\n handleKeyDown: function (e) { return _this.handleKeyDown(e); }\n });\n };\n AgMenuPanel.prototype.handleKeyDown = function (e) {\n if (e.key === KeyCode.ESCAPE) {\n this.closePanel();\n }\n };\n AgMenuPanel.prototype.onTabKeyDown = function (e) {\n if (e.defaultPrevented) {\n return;\n }\n this.closePanel();\n e.preventDefault();\n };\n AgMenuPanel.prototype.closePanel = function () {\n var menuItem = this.parentComponent;\n menuItem.closeSubMenu();\n setTimeout(function () { return menuItem.getGui().focus(); }, 0);\n };\n __decorate([\n PostConstruct\n ], AgMenuPanel.prototype, \"postConstruct\", null);\n return AgMenuPanel;\n}(TabGuardComp));\nexport { AgMenuPanel };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired } from '../context/context';\nimport { AgMenuList } from './agMenuList';\nimport { AgMenuPanel } from './agMenuPanel';\nimport { Component } from './component';\nimport { KeyCode } from '../constants/keyCode';\nimport { PostConstruct } from '../context/context';\nimport { createIconNoSpan } from '../utils/icon';\nimport { isNodeOrElement, loadTemplate } from '../utils/dom';\nimport { CustomTooltipFeature } from './customTooltipFeature';\nimport { getAriaLevel, setAriaDisabled, setAriaExpanded } from '../utils/aria';\nvar AgMenuItemComponent = /** @class */ (function (_super) {\n __extends(AgMenuItemComponent, _super);\n function AgMenuItemComponent(params) {\n var _this = _super.call(this) || this;\n _this.params = params;\n _this.isActive = false;\n _this.subMenuIsOpen = false;\n _this.setTemplate(/* html */ \"
    \");\n return _this;\n }\n AgMenuItemComponent.prototype.init = function () {\n var _this = this;\n this.addIcon();\n this.addName();\n this.addShortcut();\n this.addSubMenu();\n this.addTooltip();\n var eGui = this.getGui();\n if (this.params.disabled) {\n this.addCssClass(this.getClassName('disabled'));\n setAriaDisabled(eGui, true);\n }\n else {\n this.addGuiEventListener('click', function (e) { return _this.onItemSelected(e); });\n this.addGuiEventListener('keydown', function (e) {\n if (e.key === KeyCode.ENTER || e.key === KeyCode.SPACE) {\n e.preventDefault();\n _this.onItemSelected(e);\n }\n });\n this.addGuiEventListener('mousedown', function (e) {\n // Prevent event bubbling to other event handlers such as PopupService triggering\n // premature closing of any open sub-menu popup.\n e.stopPropagation();\n e.preventDefault();\n });\n this.addGuiEventListener('mouseenter', function () { return _this.onMouseEnter(); });\n this.addGuiEventListener('mouseleave', function () { return _this.onMouseLeave(); });\n }\n if (this.params.cssClasses) {\n this.params.cssClasses.forEach(function (it) { return _this.addCssClass(it); });\n }\n };\n AgMenuItemComponent.prototype.isDisabled = function () {\n return !!this.params.disabled;\n };\n AgMenuItemComponent.prototype.openSubMenu = function (activateFirstItem) {\n var _this = this;\n if (activateFirstItem === void 0) { activateFirstItem = false; }\n this.closeSubMenu();\n if (!this.params.subMenu) {\n return;\n }\n var ePopup = loadTemplate(/* html */ \"
    \");\n var destroySubMenu;\n if (this.params.subMenu instanceof Array) {\n var currentLevel = getAriaLevel(this.getGui());\n var nextLevel = isNaN(currentLevel) ? 1 : (currentLevel + 1);\n var childMenu_1 = this.createBean(new AgMenuList(nextLevel));\n childMenu_1.setParentComponent(this);\n childMenu_1.addMenuItems(this.params.subMenu);\n ePopup.appendChild(childMenu_1.getGui());\n // bubble menu item selected events\n this.addManagedListener(childMenu_1, AgMenuItemComponent.EVENT_MENU_ITEM_SELECTED, function (e) { return _this.dispatchEvent(e); });\n childMenu_1.addGuiEventListener('mouseenter', function () { return _this.cancelDeactivate(); });\n destroySubMenu = function () { return _this.destroyBean(childMenu_1); };\n if (activateFirstItem) {\n setTimeout(function () { return childMenu_1.activateFirstItem(); }, 0);\n }\n }\n else {\n var subMenu_1 = this.params.subMenu;\n var menuPanel = this.createBean(new AgMenuPanel(subMenu_1));\n menuPanel.setParentComponent(this);\n var subMenuGui_1 = menuPanel.getGui();\n var mouseEvent_1 = 'mouseenter';\n var mouseEnterListener_1 = function () { return _this.cancelDeactivate(); };\n subMenuGui_1.addEventListener(mouseEvent_1, mouseEnterListener_1);\n destroySubMenu = function () { return subMenuGui_1.removeEventListener(mouseEvent_1, mouseEnterListener_1); };\n ePopup.appendChild(subMenuGui_1);\n if (subMenu_1.afterGuiAttached) {\n setTimeout(function () { return subMenu_1.afterGuiAttached(); }, 0);\n }\n }\n var eGui = this.getGui();\n var positionCallback = this.popupService.positionPopupForMenu.bind(this.popupService, { eventSource: eGui, ePopup: ePopup });\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var addPopupRes = this.popupService.addPopup({\n modal: true,\n eChild: ePopup,\n positionCallback: positionCallback,\n anchorToElement: eGui,\n ariaLabel: translate('ariaLabelSubMenu', 'SubMenu')\n });\n this.subMenuIsOpen = true;\n setAriaExpanded(eGui, true);\n this.hideSubMenu = function () {\n if (addPopupRes) {\n addPopupRes.hideFunc();\n }\n _this.subMenuIsOpen = false;\n setAriaExpanded(eGui, false);\n destroySubMenu();\n };\n };\n AgMenuItemComponent.prototype.closeSubMenu = function () {\n if (!this.hideSubMenu) {\n return;\n }\n this.hideSubMenu();\n this.hideSubMenu = null;\n setAriaExpanded(this.getGui(), false);\n };\n AgMenuItemComponent.prototype.isSubMenuOpen = function () {\n return this.subMenuIsOpen;\n };\n AgMenuItemComponent.prototype.activate = function (openSubMenu) {\n var _this = this;\n this.cancelActivate();\n if (this.params.disabled) {\n return;\n }\n this.isActive = true;\n this.addCssClass(this.getClassName('active'));\n this.getGui().focus();\n if (openSubMenu && this.params.subMenu) {\n window.setTimeout(function () {\n if (_this.isAlive() && _this.isActive) {\n _this.openSubMenu();\n }\n }, 300);\n }\n this.onItemActivated();\n };\n AgMenuItemComponent.prototype.deactivate = function () {\n this.cancelDeactivate();\n this.removeCssClass(this.getClassName('active'));\n this.isActive = false;\n if (this.subMenuIsOpen) {\n this.hideSubMenu();\n }\n };\n AgMenuItemComponent.prototype.addIcon = function () {\n if (!this.params.checked && !this.params.icon && this.params.isCompact) {\n return;\n }\n var icon = loadTemplate(/* html */ \"\");\n if (this.params.checked) {\n icon.appendChild(createIconNoSpan('check', this.gridOptionsWrapper));\n }\n else if (this.params.icon) {\n if (isNodeOrElement(this.params.icon)) {\n icon.appendChild(this.params.icon);\n }\n else if (typeof this.params.icon === 'string') {\n icon.innerHTML = this.params.icon;\n }\n else {\n console.warn('AG Grid: menu item icon must be DOM node or string');\n }\n }\n this.getGui().appendChild(icon);\n };\n AgMenuItemComponent.prototype.addName = function () {\n if (!this.params.name && this.params.isCompact) {\n return;\n }\n var name = loadTemplate(/* html */ \"\" + (this.params.name || '') + \"\");\n this.getGui().appendChild(name);\n };\n AgMenuItemComponent.prototype.addTooltip = function () {\n if (!this.params.tooltip) {\n return;\n }\n this.tooltip = this.params.tooltip;\n if (this.gridOptionsWrapper.isEnableBrowserTooltips()) {\n this.getGui().setAttribute('title', this.tooltip);\n }\n else {\n this.createManagedBean(new CustomTooltipFeature(this));\n }\n };\n AgMenuItemComponent.prototype.getTooltipParams = function () {\n return {\n location: 'menu',\n value: this.tooltip\n };\n };\n AgMenuItemComponent.prototype.addShortcut = function () {\n if (!this.params.shortcut && this.params.isCompact) {\n return;\n }\n var shortcut = loadTemplate(/* html */ \"\" + (this.params.shortcut || '') + \"\");\n this.getGui().appendChild(shortcut);\n };\n AgMenuItemComponent.prototype.addSubMenu = function () {\n if (!this.params.subMenu && this.params.isCompact) {\n return;\n }\n var pointer = loadTemplate(/* html */ \"\");\n var eGui = this.getGui();\n if (this.params.subMenu) {\n var iconName = this.gridOptionsWrapper.isEnableRtl() ? 'smallLeft' : 'smallRight';\n setAriaExpanded(eGui, false);\n pointer.appendChild(createIconNoSpan(iconName, this.gridOptionsWrapper));\n }\n eGui.appendChild(pointer);\n };\n AgMenuItemComponent.prototype.onItemSelected = function (event) {\n if (this.params.action) {\n this.params.action();\n }\n else {\n this.openSubMenu(event && event.type === 'keydown');\n }\n if (this.params.subMenu && !this.params.action) {\n return;\n }\n var e = {\n type: AgMenuItemComponent.EVENT_MENU_ITEM_SELECTED,\n action: this.params.action,\n checked: this.params.checked,\n cssClasses: this.params.cssClasses,\n disabled: this.params.disabled,\n icon: this.params.icon,\n name: this.params.name,\n shortcut: this.params.shortcut,\n subMenu: this.params.subMenu,\n tooltip: this.params.tooltip,\n event: event\n };\n this.dispatchEvent(e);\n };\n AgMenuItemComponent.prototype.onItemActivated = function () {\n var event = {\n type: AgMenuItemComponent.EVENT_MENU_ITEM_ACTIVATED,\n menuItem: this,\n };\n this.dispatchEvent(event);\n };\n AgMenuItemComponent.prototype.cancelActivate = function () {\n if (this.activateTimeoutId) {\n window.clearTimeout(this.activateTimeoutId);\n this.activateTimeoutId = 0;\n }\n };\n AgMenuItemComponent.prototype.cancelDeactivate = function () {\n if (this.deactivateTimeoutId) {\n window.clearTimeout(this.deactivateTimeoutId);\n this.deactivateTimeoutId = 0;\n }\n };\n AgMenuItemComponent.prototype.onMouseEnter = function () {\n var _this = this;\n this.cancelDeactivate();\n if (this.params.isAnotherSubMenuOpen()) {\n // wait to see if the user enters the open sub-menu\n this.activateTimeoutId = window.setTimeout(function () { return _this.activate(true); }, AgMenuItemComponent.ACTIVATION_DELAY);\n }\n else {\n // activate immediately\n this.activate(true);\n }\n };\n AgMenuItemComponent.prototype.onMouseLeave = function () {\n var _this = this;\n this.cancelActivate();\n if (this.isSubMenuOpen()) {\n // wait to see if the user enters the sub-menu\n this.deactivateTimeoutId = window.setTimeout(function () { return _this.deactivate(); }, AgMenuItemComponent.ACTIVATION_DELAY);\n }\n else {\n // de-activate immediately\n this.deactivate();\n }\n };\n AgMenuItemComponent.prototype.getClassName = function (suffix) {\n var prefix = this.params.isCompact ? 'ag-compact-menu-option' : 'ag-menu-option';\n return suffix ? prefix + \"-\" + suffix : prefix;\n };\n AgMenuItemComponent.EVENT_MENU_ITEM_SELECTED = 'menuItemSelected';\n AgMenuItemComponent.EVENT_MENU_ITEM_ACTIVATED = 'menuItemActivated';\n AgMenuItemComponent.ACTIVATION_DELAY = 80;\n __decorate([\n Autowired('popupService')\n ], AgMenuItemComponent.prototype, \"popupService\", void 0);\n __decorate([\n PostConstruct\n ], AgMenuItemComponent.prototype, \"init\", null);\n return AgMenuItemComponent;\n}(Component));\nexport { AgMenuItemComponent };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, PostConstruct } from '../context/context';\nimport { RefSelector } from './componentAnnotations';\nimport { getAriaPosInSet, setAriaSetSize, setAriaPosInSet, setAriaSelected, setAriaChecked, setAriaRole, setAriaLabel } from '../utils/aria';\nimport { KeyCode } from '../constants/keyCode';\nimport { waitUntil } from '../utils/function';\nimport { TabGuardComp } from './tabGuardComp';\nvar VirtualList = /** @class */ (function (_super) {\n __extends(VirtualList, _super);\n function VirtualList(cssIdentifier, ariaRole, listName) {\n if (cssIdentifier === void 0) { cssIdentifier = 'default'; }\n if (ariaRole === void 0) { ariaRole = 'listbox'; }\n var _this = _super.call(this, VirtualList.getTemplate(cssIdentifier)) || this;\n _this.cssIdentifier = cssIdentifier;\n _this.ariaRole = ariaRole;\n _this.listName = listName;\n _this.renderedRows = new Map();\n _this.rowHeight = 20;\n _this.isDestroyed = false;\n return _this;\n }\n VirtualList.prototype.postConstruct = function () {\n var _this = this;\n this.addScrollListener();\n this.rowHeight = this.getItemHeight();\n this.addResizeObserver();\n this.initialiseTabGuard({\n onFocusIn: function (e) { return _this.onFocusIn(e); },\n onFocusOut: function (e) { return _this.onFocusOut(e); },\n focusInnerElement: function (fromBottom) { return _this.focusInnerElement(fromBottom); },\n onTabKeyDown: function (e) { return _this.onTabKeyDown(e); },\n handleKeyDown: function (e) { return _this.handleKeyDown(e); }\n });\n this.setAriaProperties();\n };\n VirtualList.prototype.setAriaProperties = function () {\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var listName = translate('ariaDefaultListName', this.listName || 'List');\n var ariaEl = this.eContainer;\n setAriaRole(ariaEl, this.ariaRole);\n setAriaLabel(ariaEl, listName);\n };\n VirtualList.prototype.addResizeObserver = function () {\n var listener = this.drawVirtualRows.bind(this);\n var destroyObserver = this.resizeObserverService.observeResize(this.getGui(), listener);\n this.addDestroyFunc(destroyObserver);\n };\n VirtualList.prototype.focusInnerElement = function (fromBottom) {\n this.focusRow(fromBottom ? this.model.getRowCount() - 1 : 0);\n };\n VirtualList.prototype.onFocusIn = function (e) {\n var target = e.target;\n if (target.classList.contains('ag-virtual-list-item')) {\n this.lastFocusedRowIndex = getAriaPosInSet(target) - 1;\n }\n return false;\n };\n VirtualList.prototype.onFocusOut = function (e) {\n if (!this.getFocusableElement().contains(e.relatedTarget)) {\n this.lastFocusedRowIndex = null;\n }\n return false;\n };\n VirtualList.prototype.handleKeyDown = function (e) {\n switch (e.key) {\n case KeyCode.UP:\n case KeyCode.DOWN:\n if (this.navigate(e.key === KeyCode.UP)) {\n e.preventDefault();\n }\n break;\n }\n };\n VirtualList.prototype.onTabKeyDown = function (e) {\n if (this.navigate(e.shiftKey)) {\n e.preventDefault();\n }\n else {\n // focus on the first or last focusable element to ensure that any other handlers start from there\n this.focusService.focusInto(this.getGui(), !e.shiftKey);\n }\n };\n VirtualList.prototype.navigate = function (up) {\n if (this.lastFocusedRowIndex == null) {\n return false;\n }\n var nextRow = this.lastFocusedRowIndex + (up ? -1 : 1);\n if (nextRow < 0 || nextRow >= this.model.getRowCount()) {\n return false;\n }\n this.focusRow(nextRow);\n return true;\n };\n VirtualList.prototype.getLastFocusedRow = function () {\n return this.lastFocusedRowIndex;\n };\n VirtualList.prototype.focusRow = function (rowNumber) {\n var _this = this;\n this.ensureIndexVisible(rowNumber);\n window.setTimeout(function () {\n var renderedRow = _this.renderedRows.get(rowNumber);\n if (renderedRow) {\n renderedRow.eDiv.focus();\n }\n }, 10);\n };\n VirtualList.prototype.getComponentAt = function (rowIndex) {\n var comp = this.renderedRows.get(rowIndex);\n return comp && comp.rowComponent;\n };\n VirtualList.getTemplate = function (cssIdentifier) {\n return /* html */ \"\\n
    \\n
    \\n
    \";\n };\n VirtualList.prototype.getItemHeight = function () {\n return this.gridOptionsWrapper.getListItemHeight();\n };\n VirtualList.prototype.ensureIndexVisible = function (index) {\n var lastRow = this.model.getRowCount();\n if (typeof index !== 'number' || index < 0 || index >= lastRow) {\n console.warn('AG Grid: invalid row index for ensureIndexVisible: ' + index);\n return;\n }\n var rowTopPixel = index * this.rowHeight;\n var rowBottomPixel = rowTopPixel + this.rowHeight;\n var eGui = this.getGui();\n var viewportTopPixel = eGui.scrollTop;\n var viewportHeight = eGui.offsetHeight;\n var viewportBottomPixel = viewportTopPixel + viewportHeight;\n var viewportScrolledPastRow = viewportTopPixel > rowTopPixel;\n var viewportScrolledBeforeRow = viewportBottomPixel < rowBottomPixel;\n if (viewportScrolledPastRow) {\n // if row is before, scroll up with row at top\n eGui.scrollTop = rowTopPixel;\n }\n else if (viewportScrolledBeforeRow) {\n // if row is below, scroll down with row at bottom\n var newScrollPosition = rowBottomPixel - viewportHeight;\n eGui.scrollTop = newScrollPosition;\n }\n };\n VirtualList.prototype.setComponentCreator = function (componentCreator) {\n this.componentCreator = componentCreator;\n };\n VirtualList.prototype.getRowHeight = function () {\n return this.rowHeight;\n };\n VirtualList.prototype.getScrollTop = function () {\n return this.getGui().scrollTop;\n };\n VirtualList.prototype.setRowHeight = function (rowHeight) {\n this.rowHeight = rowHeight;\n this.refresh();\n };\n VirtualList.prototype.refresh = function () {\n var _this = this;\n if (this.model == null || this.isDestroyed) {\n return;\n }\n var rowCount = this.model.getRowCount();\n this.eContainer.style.height = rowCount * this.rowHeight + \"px\";\n // ensure height is applied before attempting to redraw rows\n waitUntil(function () { return _this.eContainer.clientHeight >= rowCount * _this.rowHeight; }, function () {\n if (_this.isDestroyed) {\n return;\n }\n _this.clearVirtualRows();\n _this.drawVirtualRows();\n });\n };\n VirtualList.prototype.clearVirtualRows = function () {\n var _this = this;\n this.renderedRows.forEach(function (_, rowIndex) { return _this.removeRow(rowIndex); });\n };\n VirtualList.prototype.drawVirtualRows = function () {\n var gui = this.getGui();\n var topPixel = gui.scrollTop;\n var bottomPixel = topPixel + gui.offsetHeight;\n var firstRow = Math.floor(topPixel / this.rowHeight);\n var lastRow = Math.floor(bottomPixel / this.rowHeight);\n this.ensureRowsRendered(firstRow, lastRow);\n };\n VirtualList.prototype.ensureRowsRendered = function (start, finish) {\n var _this = this;\n // remove any rows that are no longer required\n this.renderedRows.forEach(function (_, rowIndex) {\n if ((rowIndex < start || rowIndex > finish) && rowIndex !== _this.lastFocusedRowIndex) {\n _this.removeRow(rowIndex);\n }\n });\n // insert any required new rows\n for (var rowIndex = start; rowIndex <= finish; rowIndex++) {\n if (this.renderedRows.has(rowIndex)) {\n continue;\n }\n // check this row actually exists (in case overflow buffer window exceeds real data)\n if (rowIndex < this.model.getRowCount()) {\n this.insertRow(rowIndex);\n }\n }\n };\n VirtualList.prototype.insertRow = function (rowIndex) {\n var _this = this;\n var value = this.model.getRow(rowIndex);\n var eDiv = document.createElement('div');\n eDiv.classList.add('ag-virtual-list-item', \"ag-\" + this.cssIdentifier + \"-virtual-list-item\");\n setAriaRole(eDiv, this.ariaRole === 'tree' ? 'treeitem' : 'option');\n setAriaSetSize(eDiv, this.model.getRowCount());\n setAriaPosInSet(eDiv, rowIndex + 1);\n eDiv.setAttribute('tabindex', '-1');\n if (typeof this.model.isRowSelected === 'function') {\n var isSelected = this.model.isRowSelected(rowIndex);\n setAriaSelected(eDiv, !!isSelected);\n setAriaChecked(eDiv, isSelected);\n }\n eDiv.style.height = this.rowHeight + \"px\";\n eDiv.style.top = this.rowHeight * rowIndex + \"px\";\n var rowComponent = this.componentCreator(value, eDiv);\n rowComponent.addGuiEventListener('focusin', function () { return _this.lastFocusedRowIndex = rowIndex; });\n eDiv.appendChild(rowComponent.getGui());\n // keep the DOM order consistent with the order of the rows\n if (this.renderedRows.has(rowIndex - 1)) {\n this.renderedRows.get(rowIndex - 1).eDiv.insertAdjacentElement('afterend', eDiv);\n }\n else if (this.renderedRows.has(rowIndex + 1)) {\n this.renderedRows.get(rowIndex + 1).eDiv.insertAdjacentElement('beforebegin', eDiv);\n }\n else {\n this.eContainer.appendChild(eDiv);\n }\n this.renderedRows.set(rowIndex, { rowComponent: rowComponent, eDiv: eDiv });\n };\n VirtualList.prototype.removeRow = function (rowIndex) {\n var component = this.renderedRows.get(rowIndex);\n this.eContainer.removeChild(component.eDiv);\n this.destroyBean(component.rowComponent);\n this.renderedRows.delete(rowIndex);\n };\n VirtualList.prototype.addScrollListener = function () {\n var _this = this;\n this.addGuiEventListener('scroll', function () { return _this.drawVirtualRows(); });\n };\n VirtualList.prototype.setModel = function (model) {\n this.model = model;\n };\n VirtualList.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n this.clearVirtualRows();\n this.isDestroyed = true;\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Autowired('resizeObserverService')\n ], VirtualList.prototype, \"resizeObserverService\", void 0);\n __decorate([\n Autowired('focusService')\n ], VirtualList.prototype, \"focusService\", void 0);\n __decorate([\n RefSelector('eContainer')\n ], VirtualList.prototype, \"eContainer\", void 0);\n __decorate([\n PostConstruct\n ], VirtualList.prototype, \"postConstruct\", null);\n return VirtualList;\n}(TabGuardComp));\nexport { VirtualList };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar BaseComponentWrapper = /** @class */ (function () {\n function BaseComponentWrapper() {\n }\n BaseComponentWrapper.prototype.wrap = function (OriginalConstructor, mandatoryMethodList, optionalMethodList, componentType) {\n var _this = this;\n if (optionalMethodList === void 0) { optionalMethodList = []; }\n var wrapper = this.createWrapper(OriginalConstructor, componentType);\n mandatoryMethodList.forEach((function (methodName) {\n _this.createMethod(wrapper, methodName, true);\n }));\n optionalMethodList.forEach((function (methodName) {\n _this.createMethod(wrapper, methodName, false);\n }));\n return wrapper;\n };\n BaseComponentWrapper.prototype.unwrap = function (comp) {\n return comp;\n };\n BaseComponentWrapper.prototype.createMethod = function (wrapper, methodName, mandatory) {\n wrapper.addMethod(methodName, this.createMethodProxy(wrapper, methodName, mandatory));\n };\n BaseComponentWrapper.prototype.createMethodProxy = function (wrapper, methodName, mandatory) {\n return function () {\n if (wrapper.hasMethod(methodName)) {\n return wrapper.callMethod(methodName, arguments);\n }\n if (mandatory) {\n console.warn('AG Grid: Framework component is missing the method ' + methodName + '()');\n }\n return null;\n };\n };\n return BaseComponentWrapper;\n}());\nexport { BaseComponentWrapper };\n","/**\n * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue\n * @version v27.1.0\n * @link http://www.ag-grid.com/\n * @license MIT\n */\nvar globalObj = typeof global === 'undefined' ? {} : global;\nglobalObj.HTMLElement = typeof HTMLElement === 'undefined' ? {} : HTMLElement;\nglobalObj.HTMLButtonElement = typeof HTMLButtonElement === 'undefined' ? {} : HTMLButtonElement;\nglobalObj.HTMLSelectElement = typeof HTMLSelectElement === 'undefined' ? {} : HTMLSelectElement;\nglobalObj.HTMLInputElement = typeof HTMLInputElement === 'undefined' ? {} : HTMLInputElement;\nglobalObj.Node = typeof Node === 'undefined' ? {} : Node;\nglobalObj.MouseEvent = typeof MouseEvent === 'undefined' ? {} : MouseEvent;\n// columns\nexport { ColumnFactory } from \"./columns/columnFactory\";\nexport { ColumnModel } from \"./columns/columnModel\";\nexport { ColumnKeyCreator } from \"./columns/columnKeyCreator\";\nexport { ColumnUtils } from \"./columns/columnUtils\";\nexport { DisplayedGroupCreator } from \"./columns/displayedGroupCreator\";\nexport { GroupInstanceIdCreator } from \"./columns/groupInstanceIdCreator\";\n// components\nexport { ComponentUtil } from \"./components/componentUtil\";\nexport { AgStackComponentsRegistry } from \"./components/agStackComponentsRegistry\";\nexport { ColDefUtil } from \"./components/colDefUtil\";\nexport { UserComponentRegistry } from \"./components/framework/userComponentRegistry\";\nexport { UserComponentFactory } from \"./components/framework/userComponentFactory\";\nexport { initialiseAgGridWithAngular1 } from \"./components/agGridNg1\";\n// context\nexport { BeanStub } from \"./context/beanStub\";\nexport { Context, Autowired, PostConstruct, PreConstruct, Optional, Bean, Qualifier, PreDestroy } from \"./context/context\";\nexport { QuerySelector, RefSelector } from \"./widgets/componentAnnotations\";\n// excel\nexport { ExcelFactoryMode } from \"./interfaces/iExcelCreator\";\n// dragAndDrop\nexport { DragAndDropService, DragSourceType, HorizontalDirection, VerticalDirection } from \"./dragAndDrop/dragAndDropService\";\nexport { DragService } from \"./dragAndDrop/dragService\";\n// entities\nexport { Column } from \"./entities/column\";\nexport { ColumnGroup } from \"./entities/columnGroup\";\nexport { ProvidedColumnGroup } from \"./entities/providedColumnGroup\";\nexport { RowNode, RowHighlightPosition } from \"./entities/rowNode\";\nexport { FilterManager } from \"./filter/filterManager\";\nexport { ProvidedFilter } from \"./filter/provided/providedFilter\";\nexport { SimpleFilter } from \"./filter/provided/simpleFilter\";\nexport { ScalarFilter } from \"./filter/provided/scalarFilter\";\nexport { NumberFilter } from \"./filter/provided/number/numberFilter\";\nexport { TextFilter } from \"./filter/provided/text/textFilter\";\nexport { DateFilter } from \"./filter/provided/date/dateFilter\";\nexport { TextFloatingFilter } from './filter/provided/text/textFloatingFilter';\nexport { HeaderFilterCellComp } from './headerRendering/cells/floatingFilter/headerFilterCellComp';\nexport { FloatingFilterMapper } from './filter/floating/floatingFilterMapper';\n// gridPanel\nexport { GridBodyComp } from \"./gridBodyComp/gridBodyComp\";\nexport { GridBodyCtrl, RowAnimationCssClasses } from \"./gridBodyComp/gridBodyCtrl\";\nexport { ScrollVisibleService } from \"./gridBodyComp/scrollVisibleService\";\nexport { MouseEventService } from \"./gridBodyComp/mouseEventService\";\nexport { NavigationService } from \"./gridBodyComp/navigationService\";\n// rowContainer\nexport { RowContainerComp } from \"./gridBodyComp/rowContainer/rowContainerComp\";\nexport { RowContainerName, RowContainerCtrl, RowContainerType, getRowContainerTypeForName } from \"./gridBodyComp/rowContainer/rowContainerCtrl\";\n// headerRendering\nexport { BodyDropPivotTarget } from \"./headerRendering/columnDrag/bodyDropPivotTarget\";\nexport { BodyDropTarget } from \"./headerRendering/columnDrag/bodyDropTarget\";\nexport { CssClassApplier } from \"./headerRendering/cells/cssClassApplier\";\nexport { HeaderRowContainerComp } from \"./headerRendering/rowContainer/headerRowContainerComp\";\nexport { GridHeaderComp } from \"./headerRendering/gridHeaderComp\";\nexport { GridHeaderCtrl } from \"./headerRendering/gridHeaderCtrl\";\nexport { HeaderRowComp, HeaderRowType } from \"./headerRendering/row/headerRowComp\";\nexport { HeaderRowCtrl } from \"./headerRendering/row/headerRowCtrl\";\nexport { HeaderCellCtrl } from \"./headerRendering/cells/column/headerCellCtrl\";\nexport { HeaderFilterCellCtrl } from \"./headerRendering/cells/floatingFilter/headerFilterCellCtrl\";\nexport { HeaderGroupCellCtrl } from \"./headerRendering/cells/columnGroup/headerGroupCellCtrl\";\nexport { AbstractHeaderCellCtrl } from \"./headerRendering/cells/abstractCell/abstractHeaderCellCtrl\";\nexport { HeaderRowContainerCtrl } from \"./headerRendering/rowContainer/headerRowContainerCtrl\";\nexport { HorizontalResizeService } from \"./headerRendering/common/horizontalResizeService\";\nexport { MoveColumnFeature } from \"./headerRendering/columnDrag/moveColumnFeature\";\nexport { StandardMenuFactory } from \"./headerRendering/cells/column/standardMenu\";\n// layout\nexport { TabbedLayout } from \"./layout/tabbedLayout\";\n// misc\nexport { simpleHttpRequest } from \"./misc/simpleHttpRequest\";\nexport { ResizeObserverService } from \"./misc/resizeObserverService\";\nexport { AnimationFrameService } from \"./misc/animationFrameService\";\nexport { LargeTextCellEditor } from \"./rendering/cellEditors/largeTextCellEditor\";\nexport { PopupEditorWrapper } from \"./rendering/cellEditors/popupEditorWrapper\";\nexport { PopupSelectCellEditor } from \"./rendering/cellEditors/popupSelectCellEditor\";\nexport { PopupTextCellEditor } from \"./rendering/cellEditors/popupTextCellEditor\";\nexport { SelectCellEditor } from \"./rendering/cellEditors/selectCellEditor\";\nexport { TextCellEditor } from \"./rendering/cellEditors/textCellEditor\";\n// rendering / cellRenderers\nexport { Beans } from \"./rendering/beans\";\nexport { AnimateShowChangeCellRenderer } from \"./rendering/cellRenderers/animateShowChangeCellRenderer\";\nexport { AnimateSlideCellRenderer } from \"./rendering/cellRenderers/animateSlideCellRenderer\";\nexport { GroupCellRenderer, } from \"./rendering/cellRenderers/groupCellRenderer\";\nexport { GroupCellRendererCtrl } from \"./rendering/cellRenderers/groupCellRendererCtrl\";\n// features\nexport { SetLeftFeature } from \"./rendering/features/setLeftFeature\";\nexport { PositionableFeature } from \"./rendering/features/positionableFeature\";\n// rendering\nexport { AutoWidthCalculator } from \"./rendering/autoWidthCalculator\";\nexport { CheckboxSelectionComponent } from \"./rendering/checkboxSelectionComponent\";\nexport { CellComp } from \"./rendering/cell/cellComp\";\nexport { CellCtrl } from \"./rendering/cell/cellCtrl\";\nexport { RowCtrl } from \"./rendering/row/rowCtrl\";\nexport { RowRenderer } from \"./rendering/rowRenderer\";\nexport { ValueFormatterService } from \"./rendering/valueFormatterService\";\n// row models\nexport { PinnedRowModel } from \"./pinnedRowModel/pinnedRowModel\";\nexport { ServerSideTransactionResultStatus } from \"./interfaces/serverSideTransaction\";\nexport { ChangedPath } from \"./utils/changedPath\";\nexport { RowNodeBlock } from \"./rowNodeCache/rowNodeBlock\";\nexport { RowNodeBlockLoader } from \"./rowNodeCache/rowNodeBlockLoader\";\nexport { PaginationProxy } from \"./pagination/paginationProxy\";\nexport { ClientSideRowModelSteps } from \"./interfaces/iClientSideRowModel\";\n//styling\nexport { StylingService } from \"./styling/stylingService\";\nexport { LayoutCssClasses } from \"./styling/layoutFeature\";\n// widgets\nexport { AgAbstractField } from \"./widgets/agAbstractField\";\nexport { AgCheckbox } from \"./widgets/agCheckbox\";\nexport { AgRadioButton } from \"./widgets/agRadioButton\";\nexport { AgToggleButton } from \"./widgets/agToggleButton\";\nexport { AgInputTextField } from \"./widgets/agInputTextField\";\nexport { AgInputTextArea } from \"./widgets/agInputTextArea\";\nexport { AgInputNumberField } from \"./widgets/agInputNumberField\";\nexport { AgInputRange } from \"./widgets/agInputRange\";\nexport { AgSelect } from \"./widgets/agSelect\";\nexport { AgSlider } from \"./widgets/agSlider\";\nexport { AgAngleSelect } from \"./widgets/agAngleSelect\";\nexport { AgColorPicker } from \"./widgets/agColorPicker\";\nexport { AgGroupComponent } from \"./widgets/agGroupComponent\";\nexport { AgMenuItemComponent } from \"./widgets/agMenuItemComponent\";\nexport { AgMenuList } from \"./widgets/agMenuList\";\nexport { AgMenuPanel } from \"./widgets/agMenuPanel\";\nexport { AgDialog } from \"./widgets/agDialog\";\nexport { AgPanel } from \"./widgets/agPanel\";\nexport { Component, CssClassManager } from \"./widgets/component\";\nexport { ManagedFocusFeature } from \"./widgets/managedFocusFeature\";\nexport { TabGuardComp } from \"./widgets/tabGuardComp\";\nexport { TabGuardCtrl } from \"./widgets/tabGuardCtrl\";\nexport { PopupComponent } from \"./widgets/popupComponent\";\nexport { PopupService } from \"./widgets/popupService\";\nexport { TouchListener } from \"./widgets/touchListener\";\nexport { VirtualList } from \"./widgets/virtualList\";\n// range\nexport { CellRangeType, SelectionHandleType } from \"./interfaces/IRangeService\";\n// root\nexport { AutoScrollService } from './autoScrollService';\nexport { VanillaFrameworkOverrides } from \"./vanillaFrameworkOverrides\";\nexport { CellNavigationService } from \"./cellNavigationService\";\nexport { AlignedGridsService } from \"./alignedGridsService\";\nexport { Constants } from \"./constants/constants\";\nexport { KeyCode } from \"./constants/keyCode\";\nexport { Grid, GridCoreCreator } from \"./grid\";\nexport { GridApi } from \"./gridApi\";\nexport { Events } from \"./eventKeys\";\nexport { FocusService } from \"./focusService\";\nexport { defaultGroupComparator } from \"./functions\";\nexport { GridOptionsWrapper } from \"./gridOptionsWrapper\";\nexport { EventService } from \"./eventService\";\nexport { SelectableService } from \"./rowNodes/selectableService\";\nexport { RowNodeSorter } from \"./rowNodes/rowNodeSorter\";\nexport { CtrlsService } from \"./ctrlsService\";\nexport { GridComp } from \"./gridComp/gridComp\";\nexport { GridCtrl } from \"./gridComp/gridCtrl\";\nexport { Logger, LoggerFactory } from \"./logger\";\nexport { SelectionService } from \"./selectionService\";\nexport { SortController } from \"./sortController\";\nexport { TemplateService } from \"./templateService\";\nexport * from \"./utils\";\nexport { ValueService } from \"./valueService/valueService\";\nexport { ValueCache } from \"./valueService/valueCache\";\nexport { ExpressionService } from \"./valueService/expressionService\";\nexport { CellPositionUtils } from \"./entities/cellPosition\";\nexport { RowPositionUtils } from \"./entities/rowPosition\";\nexport { HeaderPositionUtils } from \"./headerRendering/common/headerPosition\";\nexport { HeaderNavigationService, HeaderNavigationDirection } from \"./headerRendering/common/headerNavigationService\";\nexport * from \"./propertyKeys\";\nexport { ColumnApi } from \"./columns/columnApi\";\nexport { BaseComponentWrapper } from \"./components/framework/frameworkComponentWrapper\";\nexport { Environment } from \"./environment\";\nexport { CustomTooltipFeature } from \"./widgets/customTooltipFeature\";\n// sparklines\nexport * from \"./interfaces/iSparklineCellRendererParams\";\nexport { ModuleNames } from \"./modules/moduleNames\";\nexport { ModuleRegistry } from \"./modules/moduleRegistry\";\n// events\nexport * from \"./events\";\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { _, Autowired, Bean, BeanStub, ChangedPath, Constants, Events, GridOptionsWrapper, Optional, PostConstruct, ClientSideRowModelSteps, RowNode, RowHighlightPosition } from \"@ag-grid-community/core\";\nimport { ClientSideNodeManager } from \"./clientSideNodeManager\";\nvar RecursionType;\n(function (RecursionType) {\n RecursionType[RecursionType[\"Normal\"] = 0] = \"Normal\";\n RecursionType[RecursionType[\"AfterFilter\"] = 1] = \"AfterFilter\";\n RecursionType[RecursionType[\"AfterFilterAndSort\"] = 2] = \"AfterFilterAndSort\";\n RecursionType[RecursionType[\"PivotNodes\"] = 3] = \"PivotNodes\";\n})(RecursionType || (RecursionType = {}));\nvar ClientSideRowModel = /** @class */ (function (_super) {\n __extends(ClientSideRowModel, _super);\n function ClientSideRowModel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ClientSideRowModel.prototype.init = function () {\n var refreshEverythingFunc = this.refreshModel.bind(this, { step: ClientSideRowModelSteps.EVERYTHING });\n var animate = !this.gridOptionsWrapper.isSuppressAnimationFrame();\n var refreshEverythingAfterColsChangedFunc = this.refreshModel.bind(this, {\n step: ClientSideRowModelSteps.EVERYTHING,\n afterColumnsChanged: true,\n keepRenderedRows: true,\n animate: animate\n });\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, refreshEverythingAfterColsChangedFunc);\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, refreshEverythingFunc);\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VALUE_CHANGED, this.onValueChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_CHANGED, this.refreshModel.bind(this, { step: ClientSideRowModelSteps.PIVOT }));\n this.addManagedListener(this.eventService, Events.EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_SORT_CHANGED, this.onSortChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, refreshEverythingFunc);\n var refreshMapListener = this.refreshModel.bind(this, {\n step: ClientSideRowModelSteps.MAP,\n keepRenderedRows: true,\n animate: animate\n });\n this.addManagedListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_GROUP_REMOVE_SINGLE_CHILDREN, refreshMapListener);\n this.addManagedListener(this.gridOptionsWrapper, GridOptionsWrapper.PROP_GROUP_REMOVE_LOWEST_SINGLE_CHILDREN, refreshMapListener);\n this.rootNode = new RowNode(this.beans);\n this.nodeManager = new ClientSideNodeManager(this.rootNode, this.gridOptionsWrapper, this.eventService, this.columnModel, this.gridApi, this.columnApi, this.selectionService, this.beans);\n };\n ClientSideRowModel.prototype.start = function () {\n var rowData = this.gridOptionsWrapper.getRowData();\n if (rowData) {\n this.setRowData(rowData);\n }\n };\n ClientSideRowModel.prototype.ensureRowHeightsValid = function (startPixel, endPixel, startLimitIndex, endLimitIndex) {\n var atLeastOneChange;\n var res = false;\n // we do this multiple times as changing the row heights can also change the first and last rows,\n // so the first pass can make lots of rows smaller, which means the second pass we end up changing\n // more rows.\n do {\n atLeastOneChange = false;\n var rowAtStartPixel = this.getRowIndexAtPixel(startPixel);\n var rowAtEndPixel = this.getRowIndexAtPixel(endPixel);\n // keep check to current page if doing pagination\n var firstRow = Math.max(rowAtStartPixel, startLimitIndex);\n var lastRow = Math.min(rowAtEndPixel, endLimitIndex);\n for (var rowIndex = firstRow; rowIndex <= lastRow; rowIndex++) {\n var rowNode = this.getRow(rowIndex);\n if (rowNode.rowHeightEstimated) {\n var rowHeight = this.gridOptionsWrapper.getRowHeightForNode(rowNode);\n rowNode.setRowHeight(rowHeight.height);\n atLeastOneChange = true;\n res = true;\n }\n }\n if (atLeastOneChange) {\n this.setRowTopAndRowIndex();\n }\n } while (atLeastOneChange);\n return res;\n };\n ClientSideRowModel.prototype.setRowTopAndRowIndex = function () {\n var defaultRowHeight = this.gridOptionsWrapper.getDefaultRowHeight();\n var nextRowTop = 0;\n // mapping displayed rows is not needed for this method, however it's used in\n // clearRowTopAndRowIndex(), and given we are looping through this.rowsToDisplay here,\n // we create the map here for performance reasons, so we don't loop a second time\n // in clearRowTopAndRowIndex()\n var displayedRowsMapped = new Set();\n // we don't estimate if doing fullHeight or autoHeight, as all rows get rendered all the time\n // with these two layouts.\n var allowEstimate = this.gridOptionsWrapper.getDomLayout() === Constants.DOM_LAYOUT_NORMAL;\n for (var i = 0; i < this.rowsToDisplay.length; i++) {\n var rowNode = this.rowsToDisplay[i];\n if (rowNode.id != null) {\n displayedRowsMapped.add(rowNode.id);\n }\n if (rowNode.rowHeight == null) {\n var rowHeight = this.gridOptionsWrapper.getRowHeightForNode(rowNode, allowEstimate, defaultRowHeight);\n rowNode.setRowHeight(rowHeight.height, rowHeight.estimated);\n }\n rowNode.setRowTop(nextRowTop);\n rowNode.setRowIndex(i);\n nextRowTop += rowNode.rowHeight;\n }\n return displayedRowsMapped;\n };\n ClientSideRowModel.prototype.clearRowTopAndRowIndex = function (changedPath, displayedRowsMapped) {\n var changedPathActive = changedPath.isActive();\n var clearIfNotDisplayed = function (rowNode) {\n if (rowNode && rowNode.id != null && !displayedRowsMapped.has(rowNode.id)) {\n rowNode.clearRowTopAndRowIndex();\n }\n };\n var recurse = function (rowNode) {\n clearIfNotDisplayed(rowNode);\n clearIfNotDisplayed(rowNode.detailNode);\n clearIfNotDisplayed(rowNode.sibling);\n if (rowNode.hasChildren()) {\n if (rowNode.childrenAfterGroup) {\n // if a changedPath is active, it means we are here because of a transaction update or\n // a change detection. neither of these impacts the open/closed state of groups. so if\n // a group is not open this time, it was not open last time. so we know all closed groups\n // already have their top positions cleared. so there is no need to traverse all the way\n // when changedPath is active and the rowNode is not expanded.\n var isRootNode = rowNode.level == -1; // we need to give special consideration for root node,\n // as expanded=undefined for root node\n var skipChildren = changedPathActive && !isRootNode && !rowNode.expanded;\n if (!skipChildren) {\n rowNode.childrenAfterGroup.forEach(recurse);\n }\n }\n }\n };\n recurse(this.rootNode);\n };\n // returns false if row was moved, otherwise true\n ClientSideRowModel.prototype.ensureRowsAtPixel = function (rowNodes, pixel, increment) {\n var _this = this;\n if (increment === void 0) { increment = 0; }\n var indexAtPixelNow = this.getRowIndexAtPixel(pixel);\n var rowNodeAtPixelNow = this.getRow(indexAtPixelNow);\n var animate = !this.gridOptionsWrapper.isSuppressAnimationFrame();\n if (rowNodeAtPixelNow === rowNodes[0]) {\n return false;\n }\n rowNodes.forEach(function (rowNode) {\n _.removeFromArray(_this.rootNode.allLeafChildren, rowNode);\n });\n rowNodes.forEach(function (rowNode, idx) {\n _.insertIntoArray(_this.rootNode.allLeafChildren, rowNode, Math.max(indexAtPixelNow + increment, 0) + idx);\n });\n this.refreshModel({\n step: ClientSideRowModelSteps.EVERYTHING,\n keepRenderedRows: true,\n keepEditingRows: true,\n animate: animate\n });\n return true;\n };\n ClientSideRowModel.prototype.highlightRowAtPixel = function (rowNode, pixel) {\n var indexAtPixelNow = pixel != null ? this.getRowIndexAtPixel(pixel) : null;\n var rowNodeAtPixelNow = indexAtPixelNow != null ? this.getRow(indexAtPixelNow) : null;\n if (!rowNodeAtPixelNow || !rowNode || rowNodeAtPixelNow === rowNode || pixel == null) {\n if (this.lastHighlightedRow) {\n this.lastHighlightedRow.setHighlighted(null);\n this.lastHighlightedRow = null;\n }\n return;\n }\n var highlight = this.getHighlightPosition(pixel, rowNodeAtPixelNow);\n if (this.lastHighlightedRow && this.lastHighlightedRow !== rowNodeAtPixelNow) {\n this.lastHighlightedRow.setHighlighted(null);\n this.lastHighlightedRow = null;\n }\n rowNodeAtPixelNow.setHighlighted(highlight);\n this.lastHighlightedRow = rowNodeAtPixelNow;\n };\n ClientSideRowModel.prototype.getHighlightPosition = function (pixel, rowNode) {\n if (!rowNode) {\n var index = this.getRowIndexAtPixel(pixel);\n rowNode = this.getRow(index || 0);\n if (!rowNode) {\n return RowHighlightPosition.Below;\n }\n }\n var rowTop = rowNode.rowTop, rowHeight = rowNode.rowHeight;\n return pixel - rowTop < rowHeight / 2 ? RowHighlightPosition.Above : RowHighlightPosition.Below;\n };\n ClientSideRowModel.prototype.getLastHighlightedRowNode = function () {\n return this.lastHighlightedRow;\n };\n ClientSideRowModel.prototype.isLastRowIndexKnown = function () {\n return true;\n };\n ClientSideRowModel.prototype.getRowCount = function () {\n if (this.rowsToDisplay) {\n return this.rowsToDisplay.length;\n }\n return 0;\n };\n ClientSideRowModel.prototype.getTopLevelRowCount = function () {\n var showingRootNode = this.rowsToDisplay && this.rowsToDisplay[0] === this.rootNode;\n if (showingRootNode) {\n return 1;\n }\n return this.rootNode.childrenAfterFilter ? this.rootNode.childrenAfterFilter.length : 0;\n };\n ClientSideRowModel.prototype.getTopLevelRowDisplayedIndex = function (topLevelIndex) {\n var showingRootNode = this.rowsToDisplay && this.rowsToDisplay[0] === this.rootNode;\n if (showingRootNode) {\n return topLevelIndex;\n }\n var rowNode = this.rootNode.childrenAfterSort[topLevelIndex];\n if (this.gridOptionsWrapper.isGroupHideOpenParents()) {\n // if hideOpenParents, and this row open, then this row is now displayed at this index, first child is\n while (rowNode.expanded && rowNode.childrenAfterSort && rowNode.childrenAfterSort.length > 0) {\n rowNode = rowNode.childrenAfterSort[0];\n }\n }\n return rowNode.rowIndex;\n };\n ClientSideRowModel.prototype.getRowBounds = function (index) {\n if (_.missing(this.rowsToDisplay)) {\n return null;\n }\n var rowNode = this.rowsToDisplay[index];\n if (rowNode) {\n return {\n rowTop: rowNode.rowTop,\n rowHeight: rowNode.rowHeight\n };\n }\n return null;\n };\n ClientSideRowModel.prototype.onRowGroupOpened = function () {\n var animate = this.gridOptionsWrapper.isAnimateRows();\n this.refreshModel({ step: ClientSideRowModelSteps.MAP, keepRenderedRows: true, animate: animate });\n };\n ClientSideRowModel.prototype.onFilterChanged = function (event) {\n if (event.afterDataChange) {\n return;\n }\n var animate = this.gridOptionsWrapper.isAnimateRows();\n this.refreshModel({ step: ClientSideRowModelSteps.FILTER, keepRenderedRows: true, animate: animate });\n };\n ClientSideRowModel.prototype.onSortChanged = function () {\n var animate = this.gridOptionsWrapper.isAnimateRows();\n this.refreshModel({ step: ClientSideRowModelSteps.SORT, keepRenderedRows: true, animate: animate, keepEditingRows: true });\n };\n ClientSideRowModel.prototype.getType = function () {\n return Constants.ROW_MODEL_TYPE_CLIENT_SIDE;\n };\n ClientSideRowModel.prototype.onValueChanged = function () {\n if (this.columnModel.isPivotActive()) {\n this.refreshModel({ step: ClientSideRowModelSteps.PIVOT });\n }\n else {\n this.refreshModel({ step: ClientSideRowModelSteps.AGGREGATE });\n }\n };\n ClientSideRowModel.prototype.createChangePath = function (rowNodeTransactions) {\n // for updates, if the row is updated at all, then we re-calc all the values\n // in that row. we could compare each value to each old value, however if we\n // did this, we would be calling the valueService twice, once on the old value\n // and once on the new value. so it's less valueGetter calls if we just assume\n // each column is different. that way the changedPath is used so that only\n // the impacted parent rows are recalculated, parents who's children have\n // not changed are not impacted.\n var noTransactions = _.missingOrEmpty(rowNodeTransactions);\n var changedPath = new ChangedPath(false, this.rootNode);\n if (noTransactions || this.gridOptionsWrapper.isTreeData()) {\n changedPath.setInactive();\n }\n return changedPath;\n };\n ClientSideRowModel.prototype.isSuppressModelUpdateAfterUpdateTransaction = function (params) {\n if (!this.gridOptionsWrapper.isSuppressModelUpdateAfterUpdateTransaction()) {\n return false;\n }\n // return true if we are only doing update transactions\n if (params.rowNodeTransactions == null) {\n return false;\n }\n var transWithAddsOrDeletes = params.rowNodeTransactions.filter(function (tx) {\n return (tx.add != null && tx.add.length > 0) || (tx.remove != null && tx.remove.length > 0);\n });\n var transactionsContainUpdatesOnly = transWithAddsOrDeletes == null || transWithAddsOrDeletes.length == 0;\n return transactionsContainUpdatesOnly;\n };\n ClientSideRowModel.prototype.refreshModel = function (params) {\n var _this = this;\n if (this.isSuppressModelUpdateAfterUpdateTransaction(params)) {\n return;\n }\n // this goes through the pipeline of stages. what's in my head is similar\n // to the diagram on this page:\n // http://commons.apache.org/sandbox/commons-pipeline/pipeline_basics.html\n // however we want to keep the results of each stage, hence we manually call\n // each step rather than have them chain each other.\n // fallthrough in below switch is on purpose,\n // eg if STEP_FILTER, then all steps below this\n // step get done\n // let start: number;\n // console.log('======= start =======');\n var changedPath = this.createChangePath(params.rowNodeTransactions);\n switch (params.step) {\n case ClientSideRowModelSteps.EVERYTHING:\n this.doRowGrouping(params.groupState, params.rowNodeTransactions, params.rowNodeOrder, changedPath, !!params.afterColumnsChanged);\n case ClientSideRowModelSteps.FILTER:\n this.doFilter(changedPath);\n case ClientSideRowModelSteps.PIVOT:\n this.doPivot(changedPath);\n case ClientSideRowModelSteps.AGGREGATE: // depends on agg fields\n this.doAggregate(changedPath);\n case ClientSideRowModelSteps.SORT:\n this.doSort(params.rowNodeTransactions, changedPath);\n case ClientSideRowModelSteps.MAP:\n this.doRowsToDisplay();\n }\n // set all row tops to null, then set row tops on all visible rows. if we don't\n // do this, then the algorithm below only sets row tops, old row tops from old rows\n // will still lie around\n var displayedNodesMapped = this.setRowTopAndRowIndex();\n this.clearRowTopAndRowIndex(changedPath, displayedNodesMapped);\n var event = {\n type: Events.EVENT_MODEL_UPDATED,\n api: this.gridApi,\n columnApi: this.columnApi,\n animate: params.animate,\n keepRenderedRows: params.keepRenderedRows,\n newData: params.newData,\n newPage: false\n };\n this.eventService.dispatchEvent(event);\n if (this.$scope) {\n window.setTimeout(function () {\n _this.$scope.$apply();\n }, 0);\n }\n };\n ClientSideRowModel.prototype.isEmpty = function () {\n var rowsMissing = _.missing(this.rootNode.allLeafChildren) || this.rootNode.allLeafChildren.length === 0;\n return _.missing(this.rootNode) || rowsMissing || !this.columnModel.isReady();\n };\n ClientSideRowModel.prototype.isRowsToRender = function () {\n return _.exists(this.rowsToDisplay) && this.rowsToDisplay.length > 0;\n };\n ClientSideRowModel.prototype.getNodesInRangeForSelection = function (firstInRange, lastInRange) {\n // if lastSelectedNode is missing, we start at the first row\n var firstRowHit = !lastInRange;\n var lastRowHit = false;\n var lastRow;\n var result = [];\n var groupsSelectChildren = this.gridOptionsWrapper.isGroupSelectsChildren();\n this.forEachNodeAfterFilterAndSort(function (rowNode) {\n var lookingForLastRow = firstRowHit && !lastRowHit;\n // check if we need to flip the select switch\n if (!firstRowHit) {\n if (rowNode === lastInRange || rowNode === firstInRange) {\n firstRowHit = true;\n }\n }\n var skipThisGroupNode = rowNode.group && groupsSelectChildren;\n if (!skipThisGroupNode) {\n var inRange = firstRowHit && !lastRowHit;\n var childOfLastRow = rowNode.isParentOfNode(lastRow);\n if (inRange || childOfLastRow) {\n result.push(rowNode);\n }\n }\n if (lookingForLastRow) {\n if (rowNode === lastInRange || rowNode === firstInRange) {\n lastRowHit = true;\n if (rowNode === lastInRange) {\n lastRow = lastInRange;\n }\n else {\n lastRow = firstInRange;\n }\n }\n }\n });\n return result;\n };\n ClientSideRowModel.prototype.setDatasource = function (datasource) {\n console.error('AG Grid: should never call setDatasource on clientSideRowController');\n };\n ClientSideRowModel.prototype.getTopLevelNodes = function () {\n return this.rootNode ? this.rootNode.childrenAfterGroup : null;\n };\n ClientSideRowModel.prototype.getRootNode = function () {\n return this.rootNode;\n };\n ClientSideRowModel.prototype.getRow = function (index) {\n return this.rowsToDisplay[index];\n };\n ClientSideRowModel.prototype.isRowPresent = function (rowNode) {\n return this.rowsToDisplay.indexOf(rowNode) >= 0;\n };\n ClientSideRowModel.prototype.getRowIndexAtPixel = function (pixelToMatch) {\n if (this.isEmpty()) {\n return -1;\n }\n // do binary search of tree\n // http://oli.me.uk/2013/06/08/searching-javascript-arrays-with-a-binary-search/\n var bottomPointer = 0;\n var topPointer = this.rowsToDisplay.length - 1;\n // quick check, if the pixel is out of bounds, then return last row\n if (pixelToMatch <= 0) {\n // if pixel is less than or equal zero, it's always the first row\n return 0;\n }\n var lastNode = _.last(this.rowsToDisplay);\n if (lastNode.rowTop <= pixelToMatch) {\n return this.rowsToDisplay.length - 1;\n }\n while (true) {\n var midPointer = Math.floor((bottomPointer + topPointer) / 2);\n var currentRowNode = this.rowsToDisplay[midPointer];\n if (this.isRowInPixel(currentRowNode, pixelToMatch)) {\n return midPointer;\n }\n if (currentRowNode.rowTop < pixelToMatch) {\n bottomPointer = midPointer + 1;\n }\n else if (currentRowNode.rowTop > pixelToMatch) {\n topPointer = midPointer - 1;\n }\n }\n };\n ClientSideRowModel.prototype.isRowInPixel = function (rowNode, pixelToMatch) {\n var topPixel = rowNode.rowTop;\n var bottomPixel = rowNode.rowTop + rowNode.rowHeight;\n var pixelInRow = topPixel <= pixelToMatch && bottomPixel > pixelToMatch;\n return pixelInRow;\n };\n ClientSideRowModel.prototype.forEachLeafNode = function (callback) {\n if (this.rootNode.allLeafChildren) {\n this.rootNode.allLeafChildren.forEach(function (rowNode, index) { return callback(rowNode, index); });\n }\n };\n ClientSideRowModel.prototype.forEachNode = function (callback) {\n this.recursivelyWalkNodesAndCallback(this.rootNode.childrenAfterGroup, callback, RecursionType.Normal, 0);\n };\n ClientSideRowModel.prototype.forEachNodeAfterFilter = function (callback) {\n this.recursivelyWalkNodesAndCallback(this.rootNode.childrenAfterFilter, callback, RecursionType.AfterFilter, 0);\n };\n ClientSideRowModel.prototype.forEachNodeAfterFilterAndSort = function (callback) {\n this.recursivelyWalkNodesAndCallback(this.rootNode.childrenAfterSort, callback, RecursionType.AfterFilterAndSort, 0);\n };\n ClientSideRowModel.prototype.forEachPivotNode = function (callback) {\n this.recursivelyWalkNodesAndCallback([this.rootNode], callback, RecursionType.PivotNodes, 0);\n };\n // iterates through each item in memory, and calls the callback function\n // nodes - the rowNodes to traverse\n // callback - the user provided callback\n // recursion type - need this to know what child nodes to recurse, eg if looking at all nodes, or filtered notes etc\n // index - works similar to the index in forEach in javascript's array function\n ClientSideRowModel.prototype.recursivelyWalkNodesAndCallback = function (nodes, callback, recursionType, index) {\n if (!nodes) {\n return index;\n }\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n callback(node, index++);\n // go to the next level if it is a group\n if (node.hasChildren()) {\n // depending on the recursion type, we pick a difference set of children\n var nodeChildren = null;\n switch (recursionType) {\n case RecursionType.Normal:\n nodeChildren = node.childrenAfterGroup;\n break;\n case RecursionType.AfterFilter:\n nodeChildren = node.childrenAfterFilter;\n break;\n case RecursionType.AfterFilterAndSort:\n nodeChildren = node.childrenAfterSort;\n break;\n case RecursionType.PivotNodes:\n // for pivot, we don't go below leafGroup levels\n nodeChildren = !node.leafGroup ? node.childrenAfterSort : null;\n break;\n }\n if (nodeChildren) {\n index = this.recursivelyWalkNodesAndCallback(nodeChildren, callback, recursionType, index);\n }\n }\n }\n return index;\n };\n // it's possible to recompute the aggregate without doing the other parts\n // + gridApi.recomputeAggregates()\n ClientSideRowModel.prototype.doAggregate = function (changedPath) {\n if (this.aggregationStage) {\n this.aggregationStage.execute({ rowNode: this.rootNode, changedPath: changedPath });\n }\n };\n // + gridApi.expandAll()\n // + gridApi.collapseAll()\n ClientSideRowModel.prototype.expandOrCollapseAll = function (expand) {\n var usingTreeData = this.gridOptionsWrapper.isTreeData();\n if (this.rootNode) {\n recursiveExpandOrCollapse(this.rootNode.childrenAfterGroup);\n }\n function recursiveExpandOrCollapse(rowNodes) {\n if (!rowNodes) {\n return;\n }\n rowNodes.forEach(function (rowNode) {\n var shouldExpandOrCollapse = usingTreeData ? _.exists(rowNode.childrenAfterGroup) : rowNode.group;\n if (shouldExpandOrCollapse) {\n rowNode.expanded = expand;\n recursiveExpandOrCollapse(rowNode.childrenAfterGroup);\n }\n });\n }\n this.refreshModel({ step: ClientSideRowModelSteps.MAP });\n var eventSource = expand ? 'expandAll' : 'collapseAll';\n var event = {\n api: this.gridApi,\n columnApi: this.columnApi,\n type: Events.EVENT_EXPAND_COLLAPSE_ALL,\n source: eventSource\n };\n this.eventService.dispatchEvent(event);\n };\n ClientSideRowModel.prototype.doSort = function (rowNodeTransactions, changedPath) {\n this.sortStage.execute({\n rowNode: this.rootNode,\n rowNodeTransactions: rowNodeTransactions,\n changedPath: changedPath\n });\n };\n ClientSideRowModel.prototype.doRowGrouping = function (groupState, rowNodeTransactions, rowNodeOrder, changedPath, afterColumnsChanged) {\n if (this.groupStage) {\n if (rowNodeTransactions) {\n this.groupStage.execute({\n rowNode: this.rootNode,\n rowNodeTransactions: rowNodeTransactions,\n rowNodeOrder: rowNodeOrder,\n changedPath: changedPath\n });\n }\n else {\n this.groupStage.execute({\n rowNode: this.rootNode,\n changedPath: changedPath,\n afterColumnsChanged: afterColumnsChanged\n });\n // set open/closed state on groups\n this.restoreGroupState(groupState);\n }\n if (this.gridOptionsWrapper.isGroupSelectsChildren()) {\n this.selectionService.updateGroupsFromChildrenSelections(changedPath);\n }\n }\n else {\n this.rootNode.childrenAfterGroup = this.rootNode.allLeafChildren;\n if (this.rootNode.sibling) {\n this.rootNode.sibling.childrenAfterGroup = this.rootNode.childrenAfterGroup;\n }\n this.rootNode.updateHasChildren();\n }\n };\n ClientSideRowModel.prototype.restoreGroupState = function (groupState) {\n if (!groupState) {\n return;\n }\n _.traverseNodesWithKey(this.rootNode.childrenAfterGroup, function (node, key) {\n // if the group was open last time, then open it this time. however\n // if was not open last time, then don't touch the group, so the 'groupDefaultExpanded'\n // setting will take effect.\n if (typeof groupState[key] === 'boolean') {\n node.expanded = groupState[key];\n }\n });\n };\n ClientSideRowModel.prototype.doFilter = function (changedPath) {\n this.filterStage.execute({ rowNode: this.rootNode, changedPath: changedPath });\n };\n ClientSideRowModel.prototype.doPivot = function (changedPath) {\n if (this.pivotStage) {\n this.pivotStage.execute({ rowNode: this.rootNode, changedPath: changedPath });\n }\n };\n ClientSideRowModel.prototype.getGroupState = function () {\n if (!this.rootNode.childrenAfterGroup || !this.gridOptionsWrapper.isRememberGroupStateWhenNewData()) {\n return null;\n }\n var result = {};\n _.traverseNodesWithKey(this.rootNode.childrenAfterGroup, function (node, key) { return result[key] = node.expanded; });\n return result;\n };\n ClientSideRowModel.prototype.getCopyOfNodesMap = function () {\n return this.nodeManager.getCopyOfNodesMap();\n };\n ClientSideRowModel.prototype.getRowNode = function (id) {\n // although id is typed a string, this could be called by the user, and they could have passed a number\n var idIsGroup = typeof id == 'string' && id.indexOf(RowNode.ID_PREFIX_ROW_GROUP) == 0;\n if (idIsGroup) {\n // only one users complained about getRowNode not working for groups, after years of\n // this working for normal rows. so have done quick implementation. if users complain\n // about performance, then GroupStage should store / manage created groups in a map,\n // which is a chunk of work.\n var res_1 = undefined;\n this.forEachNode(function (node) {\n if (node.id === id) {\n res_1 = node;\n }\n });\n return res_1;\n }\n else {\n return this.nodeManager.getRowNode(id);\n }\n };\n // rows: the rows to put into the model\n ClientSideRowModel.prototype.setRowData = function (rowData) {\n // no need to invalidate cache, as the cache is stored on the rowNode,\n // so new rowNodes means the cache is wiped anyway.\n // remember group state, so we can expand groups that should be expanded\n var groupState = this.getGroupState();\n this.nodeManager.setRowData(rowData);\n // this event kicks off:\n // - clears selection\n // - updates filters\n // - shows 'no rows' overlay if needed\n var rowDataChangedEvent = {\n type: Events.EVENT_ROW_DATA_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(rowDataChangedEvent);\n this.refreshModel({\n step: ClientSideRowModelSteps.EVERYTHING,\n groupState: groupState,\n newData: true\n });\n };\n ClientSideRowModel.prototype.batchUpdateRowData = function (rowDataTransaction, callback) {\n var _this = this;\n if (this.applyAsyncTransactionsTimeout == null) {\n this.rowDataTransactionBatch = [];\n var waitMillis = this.gridOptionsWrapper.getAsyncTransactionWaitMillis();\n this.applyAsyncTransactionsTimeout = window.setTimeout(function () {\n _this.executeBatchUpdateRowData();\n }, waitMillis);\n }\n this.rowDataTransactionBatch.push({ rowDataTransaction: rowDataTransaction, callback: callback });\n };\n ClientSideRowModel.prototype.flushAsyncTransactions = function () {\n if (this.applyAsyncTransactionsTimeout != null) {\n clearTimeout(this.applyAsyncTransactionsTimeout);\n this.executeBatchUpdateRowData();\n }\n };\n ClientSideRowModel.prototype.executeBatchUpdateRowData = function () {\n var _this = this;\n this.valueCache.onDataChanged();\n var callbackFuncsBound = [];\n var rowNodeTrans = [];\n // The rowGroup stage uses rowNodeOrder if order was provided. if we didn't pass 'true' to\n // commonUpdateRowData, using addIndex would have no effect when grouping.\n var forceRowNodeOrder = false;\n if (this.rowDataTransactionBatch) {\n this.rowDataTransactionBatch.forEach(function (tranItem) {\n var rowNodeTran = _this.nodeManager.updateRowData(tranItem.rowDataTransaction, undefined);\n rowNodeTrans.push(rowNodeTran);\n if (tranItem.callback) {\n callbackFuncsBound.push(tranItem.callback.bind(null, rowNodeTran));\n }\n if (typeof tranItem.rowDataTransaction.addIndex === 'number') {\n forceRowNodeOrder = true;\n }\n });\n }\n this.commonUpdateRowData(rowNodeTrans, undefined, forceRowNodeOrder);\n // do callbacks in next VM turn so it's async\n if (callbackFuncsBound.length > 0) {\n window.setTimeout(function () {\n callbackFuncsBound.forEach(function (func) { return func(); });\n }, 0);\n }\n if (rowNodeTrans.length > 0) {\n var event_1 = {\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n type: Events.EVENT_ASYNC_TRANSACTIONS_FLUSHED,\n results: rowNodeTrans\n };\n this.eventService.dispatchEvent(event_1);\n }\n this.rowDataTransactionBatch = null;\n this.applyAsyncTransactionsTimeout = undefined;\n };\n ClientSideRowModel.prototype.updateRowData = function (rowDataTran, rowNodeOrder) {\n this.valueCache.onDataChanged();\n var rowNodeTran = this.nodeManager.updateRowData(rowDataTran, rowNodeOrder);\n // if doing immutableData, addIndex is never present. however if doing standard transaction, and user\n // provided addIndex, then this is used in updateRowData. However if doing Enterprise, then the rowGroup\n // stage also uses the\n var forceRowNodeOrder = typeof rowDataTran.addIndex === 'number';\n this.commonUpdateRowData([rowNodeTran], rowNodeOrder, forceRowNodeOrder);\n return rowNodeTran;\n };\n ClientSideRowModel.prototype.createRowNodeOrder = function () {\n var suppressSortOrder = this.gridOptionsWrapper.isSuppressMaintainUnsortedOrder();\n if (suppressSortOrder) {\n return;\n }\n var orderMap = {};\n if (this.rootNode && this.rootNode.allLeafChildren) {\n for (var index = 0; index < this.rootNode.allLeafChildren.length; index++) {\n var node = this.rootNode.allLeafChildren[index];\n orderMap[node.id] = index;\n }\n }\n return orderMap;\n };\n // common to updateRowData and batchUpdateRowData\n ClientSideRowModel.prototype.commonUpdateRowData = function (rowNodeTrans, rowNodeOrder, forceRowNodeOrder) {\n var animate = !this.gridOptionsWrapper.isSuppressAnimationFrame();\n if (forceRowNodeOrder) {\n rowNodeOrder = this.createRowNodeOrder();\n }\n this.refreshModel({\n step: ClientSideRowModelSteps.EVERYTHING,\n rowNodeTransactions: rowNodeTrans,\n rowNodeOrder: rowNodeOrder,\n keepRenderedRows: true,\n keepEditingRows: true,\n animate: animate\n });\n var event = {\n type: Events.EVENT_ROW_DATA_UPDATED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event);\n };\n ClientSideRowModel.prototype.doRowsToDisplay = function () {\n this.rowsToDisplay = this.flattenStage.execute({ rowNode: this.rootNode });\n };\n ClientSideRowModel.prototype.onRowHeightChanged = function () {\n this.refreshModel({ step: ClientSideRowModelSteps.MAP, keepRenderedRows: true, keepEditingRows: true });\n };\n ClientSideRowModel.prototype.resetRowHeights = function () {\n var atLeastOne = false;\n this.forEachNode(function (rowNode) {\n rowNode.setRowHeight(rowNode.rowHeight, true);\n // we keep the height each row is at, however we set estimated=true rather than clear the height.\n // this means the grid will not reset the row heights back to defaults, rather it will re-calc\n // the height for each row as the row is displayed. otherwise the scroll will jump when heights are reset.\n var detailNode = rowNode.detailNode;\n if (detailNode) {\n detailNode.setRowHeight(detailNode.rowHeight, true);\n }\n atLeastOne = true;\n });\n if (atLeastOne) {\n this.onRowHeightChanged();\n }\n };\n __decorate([\n Autowired('columnModel')\n ], ClientSideRowModel.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('$scope')\n ], ClientSideRowModel.prototype, \"$scope\", void 0);\n __decorate([\n Autowired('selectionService')\n ], ClientSideRowModel.prototype, \"selectionService\", void 0);\n __decorate([\n Autowired('valueCache')\n ], ClientSideRowModel.prototype, \"valueCache\", void 0);\n __decorate([\n Autowired('columnApi')\n ], ClientSideRowModel.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], ClientSideRowModel.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('animationFrameService')\n ], ClientSideRowModel.prototype, \"animationFrameService\", void 0);\n __decorate([\n Autowired('beans')\n ], ClientSideRowModel.prototype, \"beans\", void 0);\n __decorate([\n Autowired('filterStage')\n ], ClientSideRowModel.prototype, \"filterStage\", void 0);\n __decorate([\n Autowired('sortStage')\n ], ClientSideRowModel.prototype, \"sortStage\", void 0);\n __decorate([\n Autowired('flattenStage')\n ], ClientSideRowModel.prototype, \"flattenStage\", void 0);\n __decorate([\n Optional('groupStage')\n ], ClientSideRowModel.prototype, \"groupStage\", void 0);\n __decorate([\n Optional('aggregationStage')\n ], ClientSideRowModel.prototype, \"aggregationStage\", void 0);\n __decorate([\n Optional('pivotStage')\n ], ClientSideRowModel.prototype, \"pivotStage\", void 0);\n __decorate([\n PostConstruct\n ], ClientSideRowModel.prototype, \"init\", null);\n ClientSideRowModel = __decorate([\n Bean('rowModel')\n ], ClientSideRowModel);\n return ClientSideRowModel;\n}(BeanStub));\nexport { ClientSideRowModel };\n","var __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nimport { _, Events, RowNode } from \"@ag-grid-community/core\";\nvar ClientSideNodeManager = /** @class */ (function () {\n function ClientSideNodeManager(rootNode, gridOptionsWrapper, eventService, columnModel, gridApi, columnApi, selectionService, beans) {\n this.nextId = 0;\n // when user is provide the id's, we also keep a map of ids to row nodes for convenience\n this.allNodesMap = {};\n this.rootNode = rootNode;\n this.gridOptionsWrapper = gridOptionsWrapper;\n this.eventService = eventService;\n this.columnModel = columnModel;\n this.gridApi = gridApi;\n this.columnApi = columnApi;\n this.beans = beans;\n this.selectionService = selectionService;\n this.rootNode.group = true;\n this.rootNode.level = -1;\n this.rootNode.id = ClientSideNodeManager.ROOT_NODE_ID;\n this.rootNode.allLeafChildren = [];\n this.rootNode.childrenAfterGroup = [];\n this.rootNode.childrenAfterSort = [];\n this.rootNode.childrenAfterFilter = [];\n // if we make this class a bean, then can annotate postConstruct\n this.postConstruct();\n }\n // @PostConstruct - this is not a bean, so postConstruct called by constructor\n ClientSideNodeManager.prototype.postConstruct = function () {\n // func below doesn't have 'this' pointer, so need to pull out these bits\n this.suppressParentsInRowNodes = this.gridOptionsWrapper.isSuppressParentsInRowNodes();\n this.isRowMasterFunc = this.gridOptionsWrapper.getIsRowMasterFunc();\n this.doingTreeData = this.gridOptionsWrapper.isTreeData();\n this.doingMasterDetail = this.gridOptionsWrapper.isMasterDetail();\n };\n ClientSideNodeManager.prototype.getCopyOfNodesMap = function () {\n return _.cloneObject(this.allNodesMap);\n };\n ClientSideNodeManager.prototype.getRowNode = function (id) {\n return this.allNodesMap[id];\n };\n ClientSideNodeManager.prototype.setRowData = function (rowData) {\n var _this = this;\n if (typeof rowData === 'string') {\n console.warn('AG Grid: rowData must be an array, however you passed in a string. If you are loading JSON, make sure you convert the JSON string to JavaScript objects first');\n return;\n }\n var rootNode = this.rootNode;\n var sibling = this.rootNode.sibling;\n rootNode.childrenAfterFilter = null;\n rootNode.childrenAfterGroup = null;\n rootNode.childrenAfterSort = null;\n rootNode.childrenMapped = null;\n rootNode.updateHasChildren();\n this.nextId = 0;\n this.allNodesMap = {};\n if (rowData) {\n // we use rootNode as the parent, however if using ag-grid-enterprise, the grouping stage\n // sets the parent node on each row (even if we are not grouping). so setting parent node\n // here is for benefit of ag-grid-community users\n rootNode.allLeafChildren = rowData.map(function (dataItem) { return _this.createNode(dataItem, _this.rootNode, ClientSideNodeManager.TOP_LEVEL); });\n }\n else {\n rootNode.allLeafChildren = [];\n rootNode.childrenAfterGroup = [];\n }\n if (sibling) {\n sibling.childrenAfterFilter = rootNode.childrenAfterFilter;\n sibling.childrenAfterGroup = rootNode.childrenAfterGroup;\n sibling.childrenAfterSort = rootNode.childrenAfterSort;\n sibling.childrenMapped = rootNode.childrenMapped;\n sibling.allLeafChildren = rootNode.allLeafChildren;\n }\n };\n ClientSideNodeManager.prototype.updateRowData = function (rowDataTran, rowNodeOrder) {\n var rowNodeTransaction = {\n remove: [],\n update: [],\n add: []\n };\n var nodesToUnselect = [];\n this.executeRemove(rowDataTran, rowNodeTransaction, nodesToUnselect);\n this.executeUpdate(rowDataTran, rowNodeTransaction, nodesToUnselect);\n this.executeAdd(rowDataTran, rowNodeTransaction);\n this.updateSelection(nodesToUnselect);\n if (rowNodeOrder) {\n _.sortRowNodesByOrder(this.rootNode.allLeafChildren, rowNodeOrder);\n }\n return rowNodeTransaction;\n };\n ClientSideNodeManager.prototype.updateSelection = function (nodesToUnselect) {\n var selectionChanged = nodesToUnselect.length > 0;\n if (selectionChanged) {\n nodesToUnselect.forEach(function (rowNode) {\n rowNode.setSelected(false, false, true);\n });\n }\n // we do this regardless of nodes to unselect or not, as it's possible\n // a new node was inserted, so a parent that was previously selected (as all\n // children were selected) should not be tri-state (as new one unselected against\n // all other selected children).\n this.selectionService.updateGroupsFromChildrenSelections();\n if (selectionChanged) {\n var event_1 = {\n type: Events.EVENT_SELECTION_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event_1);\n }\n };\n ClientSideNodeManager.prototype.executeAdd = function (rowDataTran, rowNodeTransaction) {\n var _this = this;\n var add = rowDataTran.add, addIndex = rowDataTran.addIndex;\n if (_.missingOrEmpty(add)) {\n return;\n }\n // create new row nodes for each data item\n var newNodes = add.map(function (item) { return _this.createNode(item, _this.rootNode, ClientSideNodeManager.TOP_LEVEL); });\n // add new row nodes to the root nodes 'allLeafChildren'\n var useIndex = typeof addIndex === 'number' && addIndex >= 0;\n if (useIndex) {\n // new rows are inserted in one go by concatenating them in between the existing rows at the desired index.\n // this is much faster than splicing them individually into 'allLeafChildren' when there are large inserts.\n var existingLeafChildren = this.rootNode.allLeafChildren;\n var nodesBeforeIndex = existingLeafChildren.slice(0, addIndex);\n var nodesAfterIndex = existingLeafChildren.slice(addIndex, existingLeafChildren.length);\n this.rootNode.allLeafChildren = __spread(nodesBeforeIndex, newNodes, nodesAfterIndex);\n }\n else {\n this.rootNode.allLeafChildren = __spread(this.rootNode.allLeafChildren, newNodes);\n }\n if (this.rootNode.sibling) {\n this.rootNode.sibling.allLeafChildren = this.rootNode.allLeafChildren;\n }\n // add new row nodes to the transaction add items\n rowNodeTransaction.add = newNodes;\n };\n ClientSideNodeManager.prototype.executeRemove = function (rowDataTran, rowNodeTransaction, nodesToUnselect) {\n var _this = this;\n var remove = rowDataTran.remove;\n if (_.missingOrEmpty(remove)) {\n return;\n }\n var rowIdsRemoved = {};\n remove.forEach(function (item) {\n var rowNode = _this.lookupRowNode(item);\n if (!rowNode) {\n return;\n }\n // do delete - setting 'suppressFinishActions = true' to ensure EVENT_SELECTION_CHANGED is not raised for\n // each row node updated, instead it is raised once by the calling code if any selected nodes exist.\n if (rowNode.isSelected()) {\n nodesToUnselect.push(rowNode);\n }\n // so row renderer knows to fade row out (and not reposition it)\n rowNode.clearRowTopAndRowIndex();\n // NOTE: were we could remove from allLeaveChildren, however _.removeFromArray() is expensive, especially\n // if called multiple times (eg deleting lots of rows) and if allLeafChildren is a large list\n rowIdsRemoved[rowNode.id] = true;\n // _.removeFromArray(this.rootNode.allLeafChildren, rowNode);\n delete _this.allNodesMap[rowNode.id];\n rowNodeTransaction.remove.push(rowNode);\n });\n this.rootNode.allLeafChildren = this.rootNode.allLeafChildren.filter(function (rowNode) { return !rowIdsRemoved[rowNode.id]; });\n if (this.rootNode.sibling) {\n this.rootNode.sibling.allLeafChildren = this.rootNode.allLeafChildren;\n }\n };\n ClientSideNodeManager.prototype.executeUpdate = function (rowDataTran, rowNodeTransaction, nodesToUnselect) {\n var _this = this;\n var update = rowDataTran.update;\n if (_.missingOrEmpty(update)) {\n return;\n }\n update.forEach(function (item) {\n var rowNode = _this.lookupRowNode(item);\n if (!rowNode) {\n return;\n }\n rowNode.updateData(item);\n if (!rowNode.selectable && rowNode.isSelected()) {\n nodesToUnselect.push(rowNode);\n }\n _this.setMasterForRow(rowNode, item, ClientSideNodeManager.TOP_LEVEL, false);\n rowNodeTransaction.update.push(rowNode);\n });\n };\n ClientSideNodeManager.prototype.lookupRowNode = function (data) {\n var getRowIdFunc = this.gridOptionsWrapper.getRowIdFunc();\n var rowNode;\n if (getRowIdFunc) {\n // find rowNode using id\n var id = getRowIdFunc({ data: data, level: 0, api: this.gridApi, columnApi: this.columnApi });\n rowNode = this.allNodesMap[id];\n if (!rowNode) {\n console.error(\"AG Grid: could not find row id=\" + id + \", data item was not found for this id\");\n return null;\n }\n }\n else {\n // find rowNode using object references\n rowNode = this.rootNode.allLeafChildren.find(function (node) { return node.data === data; });\n if (!rowNode) {\n console.error(\"AG Grid: could not find data item as object was not found\", data);\n console.error(\"Consider using getRowId to help the Grid find matching row data\");\n return null;\n }\n }\n return rowNode || null;\n };\n ClientSideNodeManager.prototype.createNode = function (dataItem, parent, level) {\n var node = new RowNode(this.beans);\n node.group = false;\n this.setMasterForRow(node, dataItem, level, true);\n if (parent && !this.suppressParentsInRowNodes) {\n node.parent = parent;\n }\n node.level = level;\n node.setDataAndId(dataItem, this.nextId.toString());\n if (this.allNodesMap[node.id]) {\n console.warn(\"AG Grid: duplicate node id '\" + node.id + \"' detected from getRowNodeId callback, this could cause issues in your grid.\");\n }\n this.allNodesMap[node.id] = node;\n this.nextId++;\n return node;\n };\n ClientSideNodeManager.prototype.setMasterForRow = function (rowNode, data, level, setExpanded) {\n if (this.doingTreeData) {\n rowNode.setMaster(false);\n if (setExpanded) {\n rowNode.expanded = false;\n }\n }\n else {\n // this is the default, for when doing grid data\n if (this.doingMasterDetail) {\n // if we are doing master detail, then the\n // default is that everything can be a Master Row.\n if (this.isRowMasterFunc) {\n rowNode.setMaster(this.isRowMasterFunc(data));\n }\n else {\n rowNode.setMaster(true);\n }\n }\n else {\n rowNode.setMaster(false);\n }\n if (setExpanded) {\n var rowGroupColumns = this.columnModel.getRowGroupColumns();\n var numRowGroupColumns = rowGroupColumns ? rowGroupColumns.length : 0;\n // need to take row group into account when determining level\n var masterRowLevel = level + numRowGroupColumns;\n rowNode.expanded = rowNode.master ? this.isExpanded(masterRowLevel) : false;\n }\n }\n };\n ClientSideNodeManager.prototype.isExpanded = function (level) {\n var expandByDefault = this.gridOptionsWrapper.getGroupDefaultExpanded();\n if (expandByDefault === -1) {\n return true;\n }\n return level < expandByDefault;\n };\n ClientSideNodeManager.TOP_LEVEL = 0;\n ClientSideNodeManager.ROOT_NODE_ID = 'ROOT_NODE_ID';\n return ClientSideNodeManager;\n}());\nexport { ClientSideNodeManager };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Bean, BeanStub } from \"@ag-grid-community/core\";\nvar FilterStage = /** @class */ (function (_super) {\n __extends(FilterStage, _super);\n function FilterStage() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FilterStage.prototype.execute = function (params) {\n var rowNode = params.rowNode, changedPath = params.changedPath;\n this.filterService.filter(changedPath);\n this.selectableService.updateSelectableAfterFiltering(rowNode);\n };\n __decorate([\n Autowired('selectableService')\n ], FilterStage.prototype, \"selectableService\", void 0);\n __decorate([\n Autowired('filterService')\n ], FilterStage.prototype, \"filterService\", void 0);\n FilterStage = __decorate([\n Bean('filterStage')\n ], FilterStage);\n return FilterStage;\n}(BeanStub));\nexport { FilterStage };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { _, Autowired, Bean, BeanStub } from \"@ag-grid-community/core\";\nvar SortStage = /** @class */ (function (_super) {\n __extends(SortStage, _super);\n function SortStage() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SortStage.prototype.execute = function (params) {\n var sortOptions = this.sortController.getSortOptions();\n var sortActive = _.exists(sortOptions) && sortOptions.length > 0;\n var deltaSort = sortActive\n && _.exists(params.rowNodeTransactions)\n // in time we can remove this check, so that delta sort is always\n // on if transactions are present. it's off for now so that we can\n // selectively turn it on and test it with some select users before\n // rolling out to everyone.\n && this.gridOptionsWrapper.isDeltaSort();\n // we only need dirty nodes if doing delta sort\n var dirtyLeafNodes = deltaSort ? this.calculateDirtyNodes(params.rowNodeTransactions) : null;\n var noAggregations = _.missingOrEmpty(this.columnModel.getValueColumns());\n var sortContainsGroupColumns = sortOptions.some(function (opt) { return !!opt.column.getColDef().showRowGroup; });\n this.sortService.sort(sortOptions, sortActive, deltaSort, dirtyLeafNodes, params.changedPath, noAggregations, sortContainsGroupColumns);\n };\n SortStage.prototype.calculateDirtyNodes = function (rowNodeTransactions) {\n var dirtyNodes = {};\n var addNodesFunc = function (rowNodes) {\n if (rowNodes) {\n rowNodes.forEach(function (rowNode) { return dirtyNodes[rowNode.id] = true; });\n }\n };\n // all leaf level nodes in the transaction were impacted\n if (rowNodeTransactions) {\n rowNodeTransactions.forEach(function (tran) {\n addNodesFunc(tran.add);\n addNodesFunc(tran.update);\n addNodesFunc(tran.remove);\n });\n }\n return dirtyNodes;\n };\n __decorate([\n Autowired('sortService')\n ], SortStage.prototype, \"sortService\", void 0);\n __decorate([\n Autowired('sortController')\n ], SortStage.prototype, \"sortController\", void 0);\n __decorate([\n Autowired('columnModel')\n ], SortStage.prototype, \"columnModel\", void 0);\n SortStage = __decorate([\n Bean('sortStage')\n ], SortStage);\n return SortStage;\n}(BeanStub));\nexport { SortStage };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { _, Autowired, Bean, BeanStub, RowNode } from \"@ag-grid-community/core\";\nvar FlattenStage = /** @class */ (function (_super) {\n __extends(FlattenStage, _super);\n function FlattenStage() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FlattenStage.prototype.execute = function (params) {\n var rootNode = params.rowNode;\n // even if not doing grouping, we do the mapping, as the client might\n // of passed in data that already has a grouping in it somewhere\n var result = [];\n // putting value into a wrapper so it's passed by reference\n var nextRowTop = { value: 0 };\n var skipLeafNodes = this.columnModel.isPivotMode();\n // if we are reducing, and not grouping, then we want to show the root node, as that\n // is where the pivot values are\n var showRootNode = skipLeafNodes && rootNode.leafGroup;\n var topList = showRootNode ? [rootNode] : rootNode.childrenAfterSort;\n this.recursivelyAddToRowsToDisplay(topList, result, nextRowTop, skipLeafNodes, 0);\n // we do not want the footer total if the gris is empty\n var atLeastOneRowPresent = result.length > 0;\n var includeGroupTotalFooter = !showRootNode\n // don't show total footer when showRootNode is true (i.e. in pivot mode and no groups)\n && atLeastOneRowPresent\n && this.gridOptionsWrapper.isGroupIncludeTotalFooter();\n if (includeGroupTotalFooter) {\n this.ensureFooterNodeExists(rootNode);\n this.addRowNodeToRowsToDisplay(rootNode.sibling, result, nextRowTop, 0);\n }\n return result;\n };\n FlattenStage.prototype.recursivelyAddToRowsToDisplay = function (rowsToFlatten, result, nextRowTop, skipLeafNodes, uiLevel) {\n if (_.missingOrEmpty(rowsToFlatten)) {\n return;\n }\n var hideOpenParents = this.gridOptionsWrapper.isGroupHideOpenParents();\n // these two are mutually exclusive, so if first set, we don't set the second\n var groupRemoveSingleChildren = this.gridOptionsWrapper.isGroupRemoveSingleChildren();\n var groupRemoveLowestSingleChildren = !groupRemoveSingleChildren && this.gridOptionsWrapper.isGroupRemoveLowestSingleChildren();\n for (var i = 0; i < rowsToFlatten.length; i++) {\n var rowNode = rowsToFlatten[i];\n // check all these cases, for working out if this row should be included in the final mapped list\n var isParent = rowNode.hasChildren();\n var isSkippedLeafNode = skipLeafNodes && !isParent;\n var isRemovedSingleChildrenGroup = groupRemoveSingleChildren &&\n isParent &&\n rowNode.childrenAfterGroup.length === 1;\n var isRemovedLowestSingleChildrenGroup = groupRemoveLowestSingleChildren &&\n isParent &&\n rowNode.leafGroup &&\n rowNode.childrenAfterGroup.length === 1;\n // hide open parents means when group is open, we don't show it. we also need to make sure the\n // group is expandable in the first place (as leaf groups are not expandable if pivot mode is on).\n // the UI will never allow expanding leaf groups, however the user might via the API (or menu option 'expand all')\n var neverAllowToExpand = skipLeafNodes && rowNode.leafGroup;\n var isHiddenOpenParent = hideOpenParents && rowNode.expanded && (!neverAllowToExpand);\n var thisRowShouldBeRendered = !isSkippedLeafNode && !isHiddenOpenParent &&\n !isRemovedSingleChildrenGroup && !isRemovedLowestSingleChildrenGroup;\n if (thisRowShouldBeRendered) {\n this.addRowNodeToRowsToDisplay(rowNode, result, nextRowTop, uiLevel);\n }\n // if we are pivoting, we never map below the leaf group\n if (skipLeafNodes && rowNode.leafGroup) {\n continue;\n }\n if (isParent) {\n var excludedParent = isRemovedSingleChildrenGroup || isRemovedLowestSingleChildrenGroup;\n // we traverse the group if it is expended, however we always traverse if the parent node\n // was removed (as the group will never be opened if it is not displayed, we show the children instead)\n if (rowNode.expanded || excludedParent) {\n // if the parent was excluded, then ui level is that of the parent\n var uiLevelForChildren = excludedParent ? uiLevel : uiLevel + 1;\n this.recursivelyAddToRowsToDisplay(rowNode.childrenAfterSort, result, nextRowTop, skipLeafNodes, uiLevelForChildren);\n // put a footer in if user is looking for it\n if (this.gridOptionsWrapper.isGroupIncludeFooter()) {\n this.ensureFooterNodeExists(rowNode);\n this.addRowNodeToRowsToDisplay(rowNode.sibling, result, nextRowTop, uiLevel);\n }\n }\n }\n else if (rowNode.master && rowNode.expanded) {\n var detailNode = this.createDetailNode(rowNode);\n this.addRowNodeToRowsToDisplay(detailNode, result, nextRowTop, uiLevel);\n }\n }\n };\n // duplicated method, it's also in floatingRowModel\n FlattenStage.prototype.addRowNodeToRowsToDisplay = function (rowNode, result, nextRowTop, uiLevel) {\n var isGroupMultiAutoColumn = this.gridOptionsWrapper.isGroupMultiAutoColumn();\n result.push(rowNode);\n rowNode.setUiLevel(isGroupMultiAutoColumn ? 0 : uiLevel);\n };\n FlattenStage.prototype.ensureFooterNodeExists = function (groupNode) {\n // only create footer node once, otherwise we have daemons and\n // the animate screws up with the daemons hanging around\n if (_.exists(groupNode.sibling)) {\n return;\n }\n var footerNode = new RowNode(this.beans);\n Object.keys(groupNode).forEach(function (key) {\n footerNode[key] = groupNode[key];\n });\n footerNode.footer = true;\n footerNode.setRowTop(null);\n footerNode.setRowIndex(null);\n // manually set oldRowTop to null so we discard any\n // previous information about its position.\n footerNode.oldRowTop = null;\n if (_.exists(footerNode.id)) {\n footerNode.id = 'rowGroupFooter_' + footerNode.id;\n }\n // get both header and footer to reference each other as siblings. this is never undone,\n // only overwritten. so if a group is expanded, then contracted, it will have a ghost\n // sibling - but that's fine, as we can ignore this if the header is contracted.\n footerNode.sibling = groupNode;\n groupNode.sibling = footerNode;\n };\n FlattenStage.prototype.createDetailNode = function (masterNode) {\n if (_.exists(masterNode.detailNode)) {\n return masterNode.detailNode;\n }\n var detailNode = new RowNode(this.beans);\n detailNode.detail = true;\n detailNode.selectable = false;\n detailNode.parent = masterNode;\n if (_.exists(masterNode.id)) {\n detailNode.id = 'detail_' + masterNode.id;\n }\n detailNode.data = masterNode.data;\n detailNode.level = masterNode.level + 1;\n masterNode.detailNode = detailNode;\n return detailNode;\n };\n __decorate([\n Autowired('columnModel')\n ], FlattenStage.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('beans')\n ], FlattenStage.prototype, \"beans\", void 0);\n FlattenStage = __decorate([\n Bean('flattenStage')\n ], FlattenStage);\n return FlattenStage;\n}(BeanStub));\nexport { FlattenStage };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { _, Autowired, Bean, PostConstruct, BeanStub } from \"@ag-grid-community/core\";\nvar SortService = /** @class */ (function (_super) {\n __extends(SortService, _super);\n function SortService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SortService.prototype.init = function () {\n this.postSortFunc = this.gridOptionsWrapper.getPostSortFunc();\n };\n SortService.prototype.sort = function (sortOptions, sortActive, deltaSort, dirtyLeafNodes, changedPath, noAggregations, sortContainsGroupColumns) {\n var _this = this;\n var groupMaintainOrder = this.gridOptionsWrapper.isGroupMaintainOrder();\n var groupColumnsPresent = this.columnModel.getAllGridColumns().some(function (c) { return c.isRowGroupActive(); });\n var callback = function (rowNode) {\n // we clear out the 'pull down open parents' first, as the values mix up the sorting\n _this.pullDownGroupDataForHideOpenParents(rowNode.childrenAfterFilter, true);\n // Javascript sort is non deterministic when all the array items are equals, ie Comparator always returns 0,\n // so to ensure the array keeps its order, add an additional sorting condition manually, in this case we\n // are going to inspect the original array position. This is what sortedRowNodes is for.\n if (sortActive) {\n // when 'groupMaintainOrder' is enabled we skip sorting groups unless we are sorting on group columns\n var skipSortingGroups = groupMaintainOrder && groupColumnsPresent && !rowNode.leafGroup && !sortContainsGroupColumns;\n if (skipSortingGroups) {\n rowNode.childrenAfterSort = rowNode.childrenAfterFilter.slice(0);\n }\n else {\n rowNode.childrenAfterSort = deltaSort ?\n _this.doDeltaSort(rowNode, sortOptions, dirtyLeafNodes, changedPath, noAggregations)\n : _this.rowNodeSorter.doFullSort(rowNode.childrenAfterFilter, sortOptions);\n }\n }\n else {\n rowNode.childrenAfterSort = rowNode.childrenAfterFilter.slice(0);\n }\n if (rowNode.sibling) {\n rowNode.sibling.childrenAfterSort = rowNode.childrenAfterSort;\n }\n _this.updateChildIndexes(rowNode);\n if (_this.postSortFunc) {\n _this.postSortFunc(rowNode.childrenAfterSort);\n }\n };\n if (changedPath) {\n changedPath.forEachChangedNodeDepthFirst(callback);\n }\n this.updateGroupDataForHideOpenParents(changedPath);\n };\n SortService.prototype.mapNodeToSortedNode = function (rowNode, pos) {\n return { currentPos: pos, rowNode: rowNode };\n };\n SortService.prototype.doDeltaSort = function (rowNode, sortOptions, dirtyLeafNodes, changedPath, noAggregations) {\n // clean nodes will be a list of all row nodes that remain in the set\n // and ordered. we start with the old sorted set and take out any nodes\n // that were removed or changed (but not added, added doesn't make sense,\n // if a node was added, there is no way it could be here from last time).\n var cleanNodes = rowNode.childrenAfterSort\n .filter(function (node) {\n // take out all nodes that were changed as part of the current transaction.\n // a changed node could a) be in a different sort position or b) may\n // no longer be in this set as the changed node may not pass filtering,\n // or be in a different group.\n var passesDirtyNodesCheck = !dirtyLeafNodes[node.id];\n // also remove group nodes in the changed path, as they can have different aggregate\n // values which could impact the sort order.\n // note: changed path is not active if a) no value columns or b) no transactions. it is never\n // (b) in deltaSort as we only do deltaSort for transactions. for (a) if no value columns, then\n // there is no value in the group that could of changed (ie no aggregate values)\n var passesChangedPathCheck = noAggregations || (changedPath && changedPath.canSkip(node));\n return passesDirtyNodesCheck && passesChangedPathCheck;\n })\n .map(this.mapNodeToSortedNode.bind(this));\n // for fast access below, we map them\n var cleanNodesMapped = {};\n cleanNodes.forEach(function (sortedRowNode) { return cleanNodesMapped[sortedRowNode.rowNode.id] = sortedRowNode.rowNode; });\n // these are all nodes that need to be placed\n var changedNodes = rowNode.childrenAfterFilter\n // ignore nodes in the clean list\n .filter(function (node) { return !cleanNodesMapped[node.id]; })\n .map(this.mapNodeToSortedNode.bind(this));\n // sort changed nodes. note that we don't need to sort cleanNodes as they are\n // already sorted from last time.\n changedNodes.sort(this.rowNodeSorter.compareRowNodes.bind(this, sortOptions));\n var result;\n if (changedNodes.length === 0) {\n result = cleanNodes;\n }\n else if (cleanNodes.length === 0) {\n result = changedNodes;\n }\n else {\n result = this.mergeSortedArrays(sortOptions, cleanNodes, changedNodes);\n }\n return result.map(function (item) { return item.rowNode; });\n };\n // Merge two sorted arrays into each other\n SortService.prototype.mergeSortedArrays = function (sortOptions, arr1, arr2) {\n var res = [];\n var i = 0;\n var j = 0;\n // Traverse both array, adding them in order\n while (i < arr1.length && j < arr2.length) {\n // Check if current element of first\n // array is smaller than current element\n // of second array. If yes, store first\n // array element and increment first array\n // index. Otherwise do same with second array\n var compareResult = this.rowNodeSorter.compareRowNodes(sortOptions, arr1[i], arr2[j]);\n if (compareResult < 0) {\n res.push(arr1[i++]);\n }\n else {\n res.push(arr2[j++]);\n }\n }\n // add remaining from arr1\n while (i < arr1.length) {\n res.push(arr1[i++]);\n }\n // add remaining from arr2\n while (j < arr2.length) {\n res.push(arr2[j++]);\n }\n return res;\n };\n SortService.prototype.updateChildIndexes = function (rowNode) {\n if (_.missing(rowNode.childrenAfterSort)) {\n return;\n }\n var listToSort = rowNode.childrenAfterSort;\n for (var i = 0; i < listToSort.length; i++) {\n var child = listToSort[i];\n var firstChild = i === 0;\n var lastChild = i === rowNode.childrenAfterSort.length - 1;\n child.setFirstChild(firstChild);\n child.setLastChild(lastChild);\n child.setChildIndex(i);\n }\n };\n SortService.prototype.updateGroupDataForHideOpenParents = function (changedPath) {\n var _this = this;\n if (!this.gridOptionsWrapper.isGroupHideOpenParents()) {\n return;\n }\n if (this.gridOptionsWrapper.isTreeData()) {\n var msg_1 = \"AG Grid: The property hideOpenParents dose not work with Tree Data. This is because Tree Data has values at the group level, it doesn't make sense to hide them (as opposed to Row Grouping, which only has Aggregated Values at the group level).\";\n _.doOnce(function () { return console.warn(msg_1); }, 'sortService.hideOpenParentsWithTreeData');\n return false;\n }\n // recurse breadth first over group nodes after sort to 'pull down' group data to child groups\n var callback = function (rowNode) {\n _this.pullDownGroupDataForHideOpenParents(rowNode.childrenAfterSort, false);\n rowNode.childrenAfterSort.forEach(function (child) {\n if (child.hasChildren()) {\n callback(child);\n }\n });\n };\n if (changedPath) {\n changedPath.executeFromRootNode(function (rowNode) { return callback(rowNode); });\n }\n };\n SortService.prototype.pullDownGroupDataForHideOpenParents = function (rowNodes, clearOperation) {\n var _this = this;\n if (!this.gridOptionsWrapper.isGroupHideOpenParents() || _.missing(rowNodes)) {\n return;\n }\n rowNodes.forEach(function (childRowNode) {\n var groupDisplayCols = _this.columnModel.getGroupDisplayColumns();\n groupDisplayCols.forEach(function (groupDisplayCol) {\n var showRowGroup = groupDisplayCol.getColDef().showRowGroup;\n if (typeof showRowGroup !== 'string') {\n console.error('AG Grid: groupHideOpenParents only works when specifying specific columns for colDef.showRowGroup');\n return;\n }\n var displayingGroupKey = showRowGroup;\n var rowGroupColumn = _this.columnModel.getPrimaryColumn(displayingGroupKey);\n var thisRowNodeMatches = rowGroupColumn === childRowNode.rowGroupColumn;\n if (thisRowNodeMatches) {\n return;\n }\n if (clearOperation) {\n // if doing a clear operation, we clear down the value for every possible group column\n childRowNode.setGroupValue(groupDisplayCol.getId(), undefined);\n }\n else {\n // if doing a set operation, we set only where the pull down is to occur\n var parentToStealFrom = childRowNode.getFirstChildOfFirstChild(rowGroupColumn);\n if (parentToStealFrom) {\n childRowNode.setGroupValue(groupDisplayCol.getId(), parentToStealFrom.key);\n }\n }\n });\n });\n };\n __decorate([\n Autowired('columnModel')\n ], SortService.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('rowNodeSorter')\n ], SortService.prototype, \"rowNodeSorter\", void 0);\n __decorate([\n PostConstruct\n ], SortService.prototype, \"init\", null);\n SortService = __decorate([\n Bean('sortService')\n ], SortService);\n return SortService;\n}(BeanStub));\nexport { SortService };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Bean, PostConstruct, BeanStub } from \"@ag-grid-community/core\";\nvar FilterService = /** @class */ (function (_super) {\n __extends(FilterService, _super);\n function FilterService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FilterService.prototype.postConstruct = function () {\n this.doingTreeData = this.gridOptionsWrapper.isTreeData();\n };\n FilterService.prototype.filter = function (changedPath) {\n var filterActive = this.filterManager.isAnyFilterPresent();\n this.filterNodes(filterActive, changedPath);\n };\n FilterService.prototype.filterNodes = function (filterActive, changedPath) {\n var _this = this;\n var filterCallback = function (rowNode, includeChildNodes) {\n // recursively get all children that are groups to also filter\n if (rowNode.hasChildren()) {\n // result of filter for this node. when filtering tree data, includeChildNodes = true when parent passes\n if (filterActive && !includeChildNodes) {\n rowNode.childrenAfterFilter = rowNode.childrenAfterGroup.filter(function (childNode) {\n // a group is included in the result if it has any children of it's own.\n // by this stage, the child groups are already filtered\n var passBecauseChildren = childNode.childrenAfterFilter && childNode.childrenAfterFilter.length > 0;\n // both leaf level nodes and tree data nodes have data. these get added if\n // the data passes the filter\n var passBecauseDataPasses = childNode.data\n && _this.filterManager.doesRowPassFilter({ rowNode: childNode });\n // note - tree data nodes pass either if a) they pass themselves or b) any children of that node pass\n return passBecauseChildren || passBecauseDataPasses;\n });\n }\n else {\n // if not filtering, the result is the original list\n rowNode.childrenAfterFilter = rowNode.childrenAfterGroup;\n }\n _this.setAllChildrenCount(rowNode);\n }\n else {\n rowNode.childrenAfterFilter = rowNode.childrenAfterGroup;\n rowNode.setAllChildrenCount(null);\n }\n if (rowNode.sibling) {\n rowNode.sibling.childrenAfterFilter = rowNode.childrenAfterFilter;\n }\n };\n if (this.doingTreeDataFiltering()) {\n var treeDataDepthFirstFilter_1 = function (rowNode, alreadyFoundInParent) {\n // tree data filter traverses the hierarchy depth first and includes child nodes if parent passes\n // filter, and parent nodes will be include if any children exist.\n if (rowNode.childrenAfterGroup) {\n for (var i = 0; i < rowNode.childrenAfterGroup.length; i++) {\n var childNode = rowNode.childrenAfterGroup[i];\n // first check if current node passes filter before invoking child nodes\n var foundInParent = alreadyFoundInParent\n || _this.filterManager.doesRowPassFilter({ rowNode: childNode });\n if (childNode.childrenAfterGroup) {\n treeDataDepthFirstFilter_1(rowNode.childrenAfterGroup[i], foundInParent);\n }\n else {\n filterCallback(childNode, foundInParent);\n }\n }\n }\n filterCallback(rowNode, alreadyFoundInParent);\n };\n var treeDataFilterCallback = function (rowNode) { return treeDataDepthFirstFilter_1(rowNode, false); };\n changedPath.executeFromRootNode(treeDataFilterCallback);\n }\n else {\n var defaultFilterCallback = function (rowNode) { return filterCallback(rowNode, false); };\n changedPath.forEachChangedNodeDepthFirst(defaultFilterCallback, true);\n }\n };\n FilterService.prototype.setAllChildrenCountTreeData = function (rowNode) {\n // for tree data, we include all children, groups and leafs\n var allChildrenCount = 0;\n rowNode.childrenAfterFilter.forEach(function (child) {\n // include child itself\n allChildrenCount++;\n // include children of children\n allChildrenCount += child.allChildrenCount;\n });\n rowNode.setAllChildrenCount(allChildrenCount);\n };\n FilterService.prototype.setAllChildrenCountGridGrouping = function (rowNode) {\n // for grid data, we only count the leafs\n var allChildrenCount = 0;\n rowNode.childrenAfterFilter.forEach(function (child) {\n if (child.group) {\n allChildrenCount += child.allChildrenCount;\n }\n else {\n allChildrenCount++;\n }\n });\n rowNode.setAllChildrenCount(allChildrenCount);\n };\n FilterService.prototype.setAllChildrenCount = function (rowNode) {\n if (this.doingTreeData) {\n this.setAllChildrenCountTreeData(rowNode);\n }\n else {\n this.setAllChildrenCountGridGrouping(rowNode);\n }\n };\n FilterService.prototype.doingTreeDataFiltering = function () {\n return this.gridOptionsWrapper.isTreeData() && !this.gridOptionsWrapper.isExcludeChildrenWhenTreeDataFiltering();\n };\n __decorate([\n Autowired('filterManager')\n ], FilterService.prototype, \"filterManager\", void 0);\n __decorate([\n PostConstruct\n ], FilterService.prototype, \"postConstruct\", null);\n FilterService = __decorate([\n Bean(\"filterService\")\n ], FilterService);\n return FilterService;\n}(BeanStub));\nexport { FilterService };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nimport { _, Autowired, Bean, Constants, PostConstruct, BeanStub } from \"@ag-grid-community/core\";\nvar ImmutableService = /** @class */ (function (_super) {\n __extends(ImmutableService, _super);\n function ImmutableService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ImmutableService.prototype.postConstruct = function () {\n if (this.rowModel.getType() === Constants.ROW_MODEL_TYPE_CLIENT_SIDE) {\n this.clientSideRowModel = this.rowModel;\n }\n };\n ImmutableService.prototype.isActive = function () {\n return this.gridOptionsWrapper.isImmutableData();\n };\n ImmutableService.prototype.setRowData = function (rowData) {\n var transactionAndMap = this.createTransactionForRowData(rowData);\n if (!transactionAndMap) {\n return;\n }\n var _a = __read(transactionAndMap, 2), transaction = _a[0], orderIdMap = _a[1];\n var nodeTransaction = this.clientSideRowModel.updateRowData(transaction, orderIdMap);\n // need to force updating of full width rows - note this wouldn't be necessary the full width cell comp listened\n // to the data change event on the row node and refreshed itself.\n if (nodeTransaction) {\n this.rowRenderer.refreshFullWidthRows(nodeTransaction.update);\n }\n };\n // converts the setRowData() command to a transaction\n ImmutableService.prototype.createTransactionForRowData = function (rowData) {\n var _this = this;\n if (_.missing(this.clientSideRowModel)) {\n console.error('AG Grid: ImmutableService only works with ClientSideRowModel');\n return;\n }\n var getRowIdFunc = this.gridOptionsWrapper.getRowIdFunc();\n if (getRowIdFunc == null) {\n console.error('AG Grid: ImmutableService requires getRowId() callback to be implemented, your row data needs IDs!');\n return;\n }\n // convert the data into a transaction object by working out adds, removes and updates\n var transaction = {\n remove: [],\n update: [],\n add: []\n };\n var existingNodesMap = this.clientSideRowModel.getCopyOfNodesMap();\n var suppressSortOrder = this.gridOptionsWrapper.isSuppressMaintainUnsortedOrder();\n var orderMap = suppressSortOrder ? undefined : {};\n if (_.exists(rowData)) {\n // split all the new data in the following:\n // if new, push to 'add'\n // if update, push to 'update'\n // if not changed, do not include in the transaction\n rowData.forEach(function (data, index) {\n var id = getRowIdFunc({ data: data, level: 0, api: _this.gridApi, columnApi: _this.columnApi });\n var existingNode = existingNodesMap[id];\n if (orderMap) {\n orderMap[id] = index;\n }\n if (existingNode) {\n var dataHasChanged = existingNode.data !== data;\n if (dataHasChanged) {\n transaction.update.push(data);\n }\n // otherwise, if data not changed, we just don't include it anywhere, as it's not a delta\n // remove from list, so we know the item is not to be removed\n existingNodesMap[id] = undefined;\n }\n else {\n transaction.add.push(data);\n }\n });\n }\n // at this point, all rows that are left, should be removed\n _.iterateObject(existingNodesMap, function (id, rowNode) {\n if (rowNode) {\n transaction.remove.push(rowNode.data);\n }\n });\n return [transaction, orderMap];\n };\n __decorate([\n Autowired('rowModel')\n ], ImmutableService.prototype, \"rowModel\", void 0);\n __decorate([\n Autowired('rowRenderer')\n ], ImmutableService.prototype, \"rowRenderer\", void 0);\n __decorate([\n Autowired('columnApi')\n ], ImmutableService.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], ImmutableService.prototype, \"gridApi\", void 0);\n __decorate([\n PostConstruct\n ], ImmutableService.prototype, \"postConstruct\", null);\n ImmutableService = __decorate([\n Bean('immutableService')\n ], ImmutableService);\n return ImmutableService;\n}(BeanStub));\nexport { ImmutableService };\n","import { ModuleNames } from \"@ag-grid-community/core\";\nimport { ClientSideRowModel } from \"./clientSideRowModel/clientSideRowModel\";\nimport { FilterStage } from \"./clientSideRowModel/filterStage\";\nimport { SortStage } from \"./clientSideRowModel/sortStage\";\nimport { FlattenStage } from \"./clientSideRowModel/flattenStage\";\nimport { SortService } from \"./clientSideRowModel/sortService\";\nimport { FilterService } from \"./clientSideRowModel/filterService\";\nimport { ImmutableService } from \"./clientSideRowModel/immutableService\";\nexport var ClientSideRowModelModule = {\n moduleName: ModuleNames.ClientSideRowModelModule,\n beans: [FilterStage, SortStage, FlattenStage, SortService, FilterService, ImmutableService],\n rowModels: { clientSide: ClientSideRowModel }\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { _, PostConstruct, PreDestroy, RowNode, RowNodeBlock, Autowired } from \"@ag-grid-community/core\";\nvar InfiniteBlock = /** @class */ (function (_super) {\n __extends(InfiniteBlock, _super);\n function InfiniteBlock(id, parentCache, params) {\n var _this = _super.call(this, id) || this;\n _this.parentCache = parentCache;\n _this.params = params;\n // we don't need to calculate these now, as the inputs don't change,\n // however it makes the code easier to read if we work them out up front\n _this.startRow = id * params.blockSize;\n _this.endRow = _this.startRow + params.blockSize;\n return _this;\n }\n InfiniteBlock.prototype.postConstruct = function () {\n this.createRowNodes();\n };\n InfiniteBlock.prototype.getBlockStateJson = function () {\n return {\n id: '' + this.getId(),\n state: {\n blockNumber: this.getId(),\n startRow: this.getStartRow(),\n endRow: this.getEndRow(),\n pageStatus: this.getState()\n }\n };\n };\n InfiniteBlock.prototype.setDataAndId = function (rowNode, data, index) {\n // if there's no id and the rowNode was rendered before, it means this\n // was a placeholder rowNode and should not be recycled. Setting\n // `alreadyRendered` to `false` forces the rowRenderer to flush it.\n if (!rowNode.id && rowNode.alreadyRendered) {\n rowNode.alreadyRendered = false;\n }\n if (_.exists(data)) {\n // this means if the user is not providing id's we just use the\n // index for the row. this will allow selection to work (that is based\n // on index) as long user is not inserting or deleting rows,\n // or wanting to keep selection between server side sorting or filtering\n rowNode.setDataAndId(data, index.toString());\n }\n else {\n rowNode.setDataAndId(undefined, undefined);\n }\n };\n InfiniteBlock.prototype.loadFromDatasource = function () {\n var _this = this;\n var params = this.createLoadParams();\n if (_.missing(this.params.datasource.getRows)) {\n console.warn(\"AG Grid: datasource is missing getRows method\");\n return;\n }\n // put in timeout, to force result to be async\n window.setTimeout(function () {\n _this.params.datasource.getRows(params);\n }, 0);\n };\n InfiniteBlock.prototype.processServerFail = function () {\n // todo - this method has better handling in SSRM\n };\n InfiniteBlock.prototype.createLoadParams = function () {\n // PROBLEM . . . . when the user sets sort via colDef.sort, then this code\n // is executing before the sort is set up, so server is not getting the sort\n // model. need to change with regards order - so the server side request is\n // AFTER thus it gets the right sort model.\n var params = {\n startRow: this.getStartRow(),\n endRow: this.getEndRow(),\n successCallback: this.pageLoaded.bind(this, this.getVersion()),\n failCallback: this.pageLoadFailed.bind(this, this.getVersion()),\n sortModel: this.params.sortModel,\n filterModel: this.params.filterModel,\n context: this.gridOptionsWrapper.getContext()\n };\n return params;\n };\n InfiniteBlock.prototype.forEachNode = function (callback, sequence, rowCount) {\n var _this = this;\n this.rowNodes.forEach(function (rowNode, index) {\n var rowIndex = _this.startRow + index;\n if (rowIndex < rowCount) {\n callback(rowNode, sequence.next());\n }\n });\n };\n InfiniteBlock.prototype.getLastAccessed = function () {\n return this.lastAccessed;\n };\n InfiniteBlock.prototype.getRow = function (rowIndex, dontTouchLastAccessed) {\n if (dontTouchLastAccessed === void 0) { dontTouchLastAccessed = false; }\n if (!dontTouchLastAccessed) {\n this.lastAccessed = this.params.lastAccessedSequence.next();\n }\n var localIndex = rowIndex - this.startRow;\n return this.rowNodes[localIndex];\n };\n InfiniteBlock.prototype.getStartRow = function () {\n return this.startRow;\n };\n InfiniteBlock.prototype.getEndRow = function () {\n return this.endRow;\n };\n // creates empty row nodes, data is missing as not loaded yet\n InfiniteBlock.prototype.createRowNodes = function () {\n this.rowNodes = [];\n for (var i = 0; i < this.params.blockSize; i++) {\n var rowIndex = this.startRow + i;\n var rowNode = new RowNode(this.beans);\n rowNode.setRowHeight(this.params.rowHeight);\n rowNode.uiLevel = 0;\n rowNode.setRowIndex(rowIndex);\n rowNode.setRowTop(this.params.rowHeight * rowIndex);\n this.rowNodes.push(rowNode);\n }\n };\n InfiniteBlock.prototype.processServerResult = function (params) {\n var _this = this;\n this.rowNodes.forEach(function (rowNode, index) {\n var data = params.rowData ? params.rowData[index] : undefined;\n _this.setDataAndId(rowNode, data, _this.startRow + index);\n });\n var finalRowCount = params.rowCount != null && params.rowCount >= 0 ? params.rowCount : undefined;\n this.parentCache.pageLoaded(this, finalRowCount);\n };\n InfiniteBlock.prototype.destroyRowNodes = function () {\n this.rowNodes.forEach(function (rowNode) {\n // this is needed, so row render knows to fade out the row, otherwise it\n // sees row top is present, and thinks the row should be shown.\n rowNode.clearRowTopAndRowIndex();\n });\n };\n __decorate([\n Autowired('beans')\n ], InfiniteBlock.prototype, \"beans\", void 0);\n __decorate([\n PostConstruct\n ], InfiniteBlock.prototype, \"postConstruct\", null);\n __decorate([\n PreDestroy\n ], InfiniteBlock.prototype, \"destroyRowNodes\", null);\n return InfiniteBlock;\n}(RowNodeBlock));\nexport { InfiniteBlock };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { Autowired, BeanStub, Events, NumberSequence, PreDestroy, Qualifier, _ } from \"@ag-grid-community/core\";\nimport { InfiniteBlock } from \"./infiniteBlock\";\nvar InfiniteCache = /** @class */ (function (_super) {\n __extends(InfiniteCache, _super);\n function InfiniteCache(params) {\n var _this = _super.call(this) || this;\n _this.lastRowIndexKnown = false;\n _this.blocks = {};\n _this.blockCount = 0;\n _this.rowCount = params.initialRowCount;\n _this.params = params;\n return _this;\n }\n InfiniteCache.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('InfiniteCache');\n };\n // the rowRenderer will not pass dontCreatePage, meaning when rendering the grid,\n // it will want new pages in the cache as it asks for rows. only when we are inserting /\n // removing rows via the api is dontCreatePage set, where we move rows between the pages.\n InfiniteCache.prototype.getRow = function (rowIndex, dontCreatePage) {\n if (dontCreatePage === void 0) { dontCreatePage = false; }\n var blockId = Math.floor(rowIndex / this.params.blockSize);\n var block = this.blocks[blockId];\n if (!block) {\n if (dontCreatePage) {\n return undefined;\n }\n block = this.createBlock(blockId);\n }\n return block.getRow(rowIndex);\n };\n InfiniteCache.prototype.createBlock = function (blockNumber) {\n var newBlock = this.createBean(new InfiniteBlock(blockNumber, this, this.params));\n this.blocks[newBlock.getId()] = newBlock;\n this.blockCount++;\n this.purgeBlocksIfNeeded(newBlock);\n this.params.rowNodeBlockLoader.addBlock(newBlock);\n return newBlock;\n };\n // we have this on infinite row model only, not server side row model,\n // because for server side, it would leave the children in inconsistent\n // state - eg if a node had children, but after the refresh it had data\n // for a different row, then the children would be with the wrong row node.\n InfiniteCache.prototype.refreshCache = function () {\n var nothingToRefresh = this.blockCount == 0;\n if (nothingToRefresh) {\n this.purgeCache();\n return;\n }\n this.getBlocksInOrder().forEach(function (block) { return block.setStateWaitingToLoad(); });\n this.params.rowNodeBlockLoader.checkBlockToLoad();\n };\n InfiniteCache.prototype.destroyAllBlocks = function () {\n var _this = this;\n this.getBlocksInOrder().forEach(function (block) { return _this.destroyBlock(block); });\n };\n InfiniteCache.prototype.getRowCount = function () {\n return this.rowCount;\n };\n InfiniteCache.prototype.isLastRowIndexKnown = function () {\n return this.lastRowIndexKnown;\n };\n // block calls this, when page loaded\n InfiniteCache.prototype.pageLoaded = function (block, lastRow) {\n // if we are not active, then we ignore all events, otherwise we could end up getting the\n // grid to refresh even though we are no longer the active cache\n if (!this.isAlive()) {\n return;\n }\n this.logger.log(\"onPageLoaded: page = \" + block.getId() + \", lastRow = \" + lastRow);\n this.checkRowCount(block, lastRow);\n // we fire cacheUpdated even if the row count has not changed, as some items need updating even\n // if no new rows to render. for example the pagination panel has '?' as the total rows when loading\n // is underway, which would need to get updated when loading finishes.\n this.onCacheUpdated();\n };\n InfiniteCache.prototype.purgeBlocksIfNeeded = function (blockToExclude) {\n var _this = this;\n // we exclude checking for the page just created, as this has yet to be accessed and hence\n // the lastAccessed stamp will not be updated for the first time yet\n var blocksForPurging = this.getBlocksInOrder().filter(function (b) { return b != blockToExclude; });\n var lastAccessedComparator = function (a, b) { return b.getLastAccessed() - a.getLastAccessed(); };\n blocksForPurging.sort(lastAccessedComparator);\n // we remove (maxBlocksInCache - 1) as we already excluded the 'just created' page.\n // in other words, after the splice operation below, we have taken out the blocks\n // we want to keep, which means we are left with blocks that we can potentially purge\n var maxBlocksProvided = this.params.maxBlocksInCache > 0;\n var blocksToKeep = maxBlocksProvided ? this.params.maxBlocksInCache - 1 : null;\n var emptyBlocksToKeep = InfiniteCache.MAX_EMPTY_BLOCKS_TO_KEEP - 1;\n blocksForPurging.forEach(function (block, index) {\n var purgeBecauseBlockEmpty = block.getState() === InfiniteBlock.STATE_WAITING_TO_LOAD && index >= emptyBlocksToKeep;\n var purgeBecauseCacheFull = maxBlocksProvided ? index >= blocksToKeep : false;\n if (purgeBecauseBlockEmpty || purgeBecauseCacheFull) {\n // if the block currently has rows been displayed, then don't remove it either.\n // this can happen if user has maxBlocks=2, and blockSize=5 (thus 10 max rows in cache)\n // but the screen is showing 20 rows, so at least 4 blocks are needed.\n if (_this.isBlockCurrentlyDisplayed(block)) {\n return;\n }\n // don't want to loose keyboard focus, so keyboard navigation can continue. so keep focused blocks.\n if (_this.isBlockFocused(block)) {\n return;\n }\n // at this point, block is not needed, so burn baby burn\n _this.removeBlockFromCache(block);\n }\n });\n };\n InfiniteCache.prototype.isBlockFocused = function (block) {\n var focusedCell = this.focusService.getFocusCellToUseAfterRefresh();\n if (!focusedCell) {\n return false;\n }\n if (focusedCell.rowPinned != null) {\n return false;\n }\n var blockIndexStart = block.getStartRow();\n var blockIndexEnd = block.getEndRow();\n var hasFocus = focusedCell.rowIndex >= blockIndexStart && focusedCell.rowIndex < blockIndexEnd;\n return hasFocus;\n };\n InfiniteCache.prototype.isBlockCurrentlyDisplayed = function (block) {\n var startIndex = block.getStartRow();\n var endIndex = block.getEndRow() - 1;\n return this.rowRenderer.isRangeInRenderedViewport(startIndex, endIndex);\n };\n InfiniteCache.prototype.removeBlockFromCache = function (blockToRemove) {\n if (!blockToRemove) {\n return;\n }\n this.destroyBlock(blockToRemove);\n // we do not want to remove the 'loaded' event listener, as the\n // concurrent loads count needs to be updated when the load is complete\n // if the purged page is in loading state\n };\n InfiniteCache.prototype.checkRowCount = function (block, lastRow) {\n // if client provided a last row, we always use it, as it could change between server calls\n // if user deleted data and then called refresh on the grid.\n if (typeof lastRow === 'number' && lastRow >= 0) {\n this.rowCount = lastRow;\n this.lastRowIndexKnown = true;\n }\n else if (!this.lastRowIndexKnown) {\n // otherwise, see if we need to add some virtual rows\n var lastRowIndex = (block.getId() + 1) * this.params.blockSize;\n var lastRowIndexPlusOverflow = lastRowIndex + this.params.overflowSize;\n if (this.rowCount < lastRowIndexPlusOverflow) {\n this.rowCount = lastRowIndexPlusOverflow;\n }\n }\n };\n InfiniteCache.prototype.setRowCount = function (rowCount, lastRowIndexKnown) {\n this.rowCount = rowCount;\n // if undefined is passed, we do not set this value, if one of {true,false}\n // is passed, we do set the value.\n if (_.exists(lastRowIndexKnown)) {\n this.lastRowIndexKnown = lastRowIndexKnown;\n }\n // if we are still searching, then the row count must not end at the end\n // of a particular page, otherwise the searching will not pop into the\n // next page\n if (!this.lastRowIndexKnown) {\n if (this.rowCount % this.params.blockSize === 0) {\n this.rowCount++;\n }\n }\n this.onCacheUpdated();\n };\n InfiniteCache.prototype.forEachNodeDeep = function (callback) {\n var _this = this;\n var sequence = new NumberSequence();\n this.getBlocksInOrder().forEach(function (block) { return block.forEachNode(callback, sequence, _this.rowCount); });\n };\n InfiniteCache.prototype.getBlocksInOrder = function () {\n // get all page id's as NUMBERS (not strings, as we need to sort as numbers) and in descending order\n var blockComparator = function (a, b) { return a.getId() - b.getId(); };\n var blocks = _.getAllValuesInObject(this.blocks).sort(blockComparator);\n return blocks;\n };\n InfiniteCache.prototype.destroyBlock = function (block) {\n delete this.blocks[block.getId()];\n this.destroyBean(block);\n this.blockCount--;\n this.params.rowNodeBlockLoader.removeBlock(block);\n };\n // gets called 1) row count changed 2) cache purged 3) items inserted\n InfiniteCache.prototype.onCacheUpdated = function () {\n if (this.isAlive()) {\n // if the virtualRowCount is shortened, then it's possible blocks exist that are no longer\n // in the valid range. so we must remove these. this can happen if user explicitly sets\n // the virtual row count, or the datasource returns a result and sets lastRow to something\n // less than virtualRowCount (can happen if user scrolls down, server reduces dataset size).\n this.destroyAllBlocksPastVirtualRowCount();\n // this results in both row models (infinite and server side) firing ModelUpdated,\n // however server side row model also updates the row indexes first\n var event_1 = {\n type: Events.EVENT_STORE_UPDATED\n };\n this.eventService.dispatchEvent(event_1);\n }\n };\n InfiniteCache.prototype.destroyAllBlocksPastVirtualRowCount = function () {\n var _this = this;\n var blocksToDestroy = [];\n this.getBlocksInOrder().forEach(function (block) {\n var startRow = block.getId() * _this.params.blockSize;\n if (startRow >= _this.rowCount) {\n blocksToDestroy.push(block);\n }\n });\n if (blocksToDestroy.length > 0) {\n blocksToDestroy.forEach(function (block) { return _this.destroyBlock(block); });\n }\n };\n InfiniteCache.prototype.purgeCache = function () {\n var _this = this;\n this.getBlocksInOrder().forEach(function (block) { return _this.removeBlockFromCache(block); });\n this.lastRowIndexKnown = false;\n // if zero rows in the cache, we need to get the SSRM to start asking for rows again.\n // otherwise if set to zero rows last time, and we don't update the row count, then after\n // the purge there will still be zero rows, meaning the SSRM won't request any rows.\n // to kick things off, at least one row needs to be asked for.\n if (this.rowCount === 0) {\n this.rowCount = this.params.initialRowCount;\n }\n this.onCacheUpdated();\n };\n InfiniteCache.prototype.getRowNodesInRange = function (firstInRange, lastInRange) {\n var _this = this;\n var result = [];\n var lastBlockId = -1;\n var inActiveRange = false;\n var numberSequence = new NumberSequence();\n // if only one node passed, we start the selection at the top\n if (_.missing(firstInRange)) {\n inActiveRange = true;\n }\n var foundGapInSelection = false;\n this.getBlocksInOrder().forEach(function (block) {\n if (foundGapInSelection) {\n return;\n }\n if (inActiveRange && (lastBlockId + 1 !== block.getId())) {\n foundGapInSelection = true;\n return;\n }\n lastBlockId = block.getId();\n block.forEachNode(function (rowNode) {\n var hitFirstOrLast = rowNode === firstInRange || rowNode === lastInRange;\n if (inActiveRange || hitFirstOrLast) {\n result.push(rowNode);\n }\n if (hitFirstOrLast) {\n inActiveRange = !inActiveRange;\n }\n }, numberSequence, _this.rowCount);\n });\n // inActiveRange will be still true if we never hit the second rowNode\n var invalidRange = foundGapInSelection || inActiveRange;\n return invalidRange ? [] : result;\n };\n // this property says how many empty blocks should be in a cache, eg if scrolls down fast and creates 10\n // blocks all for loading, the grid will only load the last 2 - it will assume the blocks the user quickly\n // scrolled over are not needed to be loaded.\n InfiniteCache.MAX_EMPTY_BLOCKS_TO_KEEP = 2;\n __decorate([\n Autowired('rowRenderer')\n ], InfiniteCache.prototype, \"rowRenderer\", void 0);\n __decorate([\n Autowired(\"focusService\")\n ], InfiniteCache.prototype, \"focusService\", void 0);\n __decorate([\n __param(0, Qualifier('loggerFactory'))\n ], InfiniteCache.prototype, \"setBeans\", null);\n __decorate([\n PreDestroy\n ], InfiniteCache.prototype, \"destroyAllBlocks\", null);\n return InfiniteCache;\n}(BeanStub));\nexport { InfiniteCache };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { _, Autowired, Bean, BeanStub, Constants, Events, NumberSequence, PostConstruct, PreDestroy } from \"@ag-grid-community/core\";\nimport { InfiniteCache } from \"./infiniteCache\";\nvar InfiniteRowModel = /** @class */ (function (_super) {\n __extends(InfiniteRowModel, _super);\n function InfiniteRowModel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n InfiniteRowModel.prototype.getRowBounds = function (index) {\n return {\n rowHeight: this.rowHeight,\n rowTop: this.rowHeight * index\n };\n };\n // we don't implement as lazy row heights is not supported in this row model\n InfiniteRowModel.prototype.ensureRowHeightsValid = function (startPixel, endPixel, startLimitIndex, endLimitIndex) {\n return false;\n };\n InfiniteRowModel.prototype.init = function () {\n var _this = this;\n if (!this.gridOptionsWrapper.isRowModelInfinite()) {\n return;\n }\n this.rowHeight = this.gridOptionsWrapper.getRowHeightAsNumber();\n this.addEventListeners();\n this.addDestroyFunc(function () { return _this.destroyCache(); });\n this.verifyProps();\n };\n InfiniteRowModel.prototype.verifyProps = function () {\n if (this.gridOptionsWrapper.getDefaultGroupOrderComparator() != null) {\n var message_1 = \"AG Grid: defaultGroupOrderComparator cannot be used with Infinite Row Model. If using Infinite Row Model, then sorting is done on the server side, nothing to do with the client.\";\n _.doOnce(function () { return console.warn(message_1); }, 'IRM.DefaultGroupOrderComparator');\n }\n };\n InfiniteRowModel.prototype.start = function () {\n this.setDatasource(this.gridOptionsWrapper.getDatasource());\n };\n InfiniteRowModel.prototype.destroyDatasource = function () {\n if (this.datasource) {\n this.getContext().destroyBean(this.datasource);\n this.rowRenderer.datasourceChanged();\n this.datasource = null;\n }\n };\n InfiniteRowModel.prototype.addEventListeners = function () {\n this.addManagedListener(this.eventService, Events.EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_SORT_CHANGED, this.onSortChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.onColumnEverything.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_STORE_UPDATED, this.onCacheUpdated.bind(this));\n };\n InfiniteRowModel.prototype.onFilterChanged = function () {\n this.reset();\n };\n InfiniteRowModel.prototype.onSortChanged = function () {\n this.reset();\n };\n InfiniteRowModel.prototype.onColumnEverything = function () {\n var resetRequired;\n // if cache params, we require reset only if sort model has changed. we don't need to check\n // for filter model, as the filter manager will fire an event when columns change that result\n // in the filter changing.\n if (this.cacheParams) {\n resetRequired = this.isSortModelDifferent();\n }\n else {\n // if no cacheParams, means first time creating the cache, so always create one\n resetRequired = true;\n }\n if (resetRequired) {\n this.reset();\n }\n };\n InfiniteRowModel.prototype.isSortModelDifferent = function () {\n return !_.jsonEquals(this.cacheParams.sortModel, this.sortController.getSortModel());\n };\n InfiniteRowModel.prototype.getType = function () {\n return Constants.ROW_MODEL_TYPE_INFINITE;\n };\n InfiniteRowModel.prototype.setDatasource = function (datasource) {\n this.destroyDatasource();\n this.datasource = datasource;\n // only reset if we have a valid datasource to working with\n if (datasource) {\n this.reset();\n }\n };\n InfiniteRowModel.prototype.isEmpty = function () {\n return !this.infiniteCache;\n };\n InfiniteRowModel.prototype.isRowsToRender = function () {\n return !!this.infiniteCache;\n };\n InfiniteRowModel.prototype.getNodesInRangeForSelection = function (firstInRange, lastInRange) {\n return this.infiniteCache ? this.infiniteCache.getRowNodesInRange(firstInRange, lastInRange) : [];\n };\n InfiniteRowModel.prototype.reset = function () {\n // important to return here, as the user could be setting filter or sort before\n // data-source is set\n if (!this.datasource) {\n return;\n }\n // if user is providing id's, then this means we can keep the selection between datasource hits,\n // as the rows will keep their unique id's even if, for example, server side sorting or filtering\n // is done.\n var getRowIdFunc = this.gridOptionsWrapper.getRowIdFunc();\n var userGeneratingIds = getRowIdFunc != null;\n if (!userGeneratingIds) {\n this.selectionService.reset();\n }\n this.resetCache();\n var event = this.createModelUpdatedEvent();\n this.eventService.dispatchEvent(event);\n };\n InfiniteRowModel.prototype.createModelUpdatedEvent = function () {\n return {\n type: Events.EVENT_MODEL_UPDATED,\n api: this.gridApi,\n columnApi: this.columnApi,\n // not sure if these should all be false - noticed if after implementing,\n // maybe they should be true?\n newPage: false,\n newData: false,\n keepRenderedRows: true,\n animate: false\n };\n };\n InfiniteRowModel.prototype.resetCache = function () {\n // if not first time creating a cache, need to destroy the old one\n this.destroyCache();\n this.cacheParams = {\n // the user provided datasource\n datasource: this.datasource,\n // sort and filter model\n filterModel: this.filterManager.getFilterModel(),\n sortModel: this.sortController.getSortModel(),\n rowNodeBlockLoader: this.rowNodeBlockLoader,\n // properties - this way we take a snapshot of them, so if user changes any, they will be\n // used next time we create a new cache, which is generally after a filter or sort change,\n // or a new datasource is set\n initialRowCount: this.defaultIfInvalid(this.gridOptionsWrapper.getInfiniteInitialRowCount(), 1),\n maxBlocksInCache: this.gridOptionsWrapper.getMaxBlocksInCache(),\n rowHeight: this.gridOptionsWrapper.getRowHeightAsNumber(),\n // if user doesn't provide overflow, we use default overflow of 1, so user can scroll past\n // the current page and request first row of next page\n overflowSize: this.defaultIfInvalid(this.gridOptionsWrapper.getCacheOverflowSize(), 1),\n // page size needs to be 1 or greater. having it at 1 would be silly, as you would be hitting the\n // server for one page at a time. so the default if not specified is 100.\n blockSize: this.defaultIfInvalid(this.gridOptionsWrapper.getCacheBlockSize(), 100),\n // the cache could create this, however it is also used by the pages, so handy to create it\n // here as the settings are also passed to the pages\n lastAccessedSequence: new NumberSequence()\n };\n this.infiniteCache = this.createBean(new InfiniteCache(this.cacheParams));\n };\n InfiniteRowModel.prototype.defaultIfInvalid = function (value, defaultValue) {\n return value > 0 ? value : defaultValue;\n };\n InfiniteRowModel.prototype.destroyCache = function () {\n if (this.infiniteCache) {\n this.infiniteCache = this.destroyBean(this.infiniteCache);\n }\n };\n InfiniteRowModel.prototype.onCacheUpdated = function () {\n var event = this.createModelUpdatedEvent();\n this.eventService.dispatchEvent(event);\n };\n InfiniteRowModel.prototype.getRow = function (rowIndex) {\n if (!this.infiniteCache) {\n return undefined;\n }\n if (rowIndex >= this.infiniteCache.getRowCount()) {\n return undefined;\n }\n return this.infiniteCache.getRow(rowIndex);\n };\n InfiniteRowModel.prototype.getRowNode = function (id) {\n var result;\n this.forEachNode(function (rowNode) {\n if (rowNode.id === id) {\n result = rowNode;\n }\n });\n return result;\n };\n InfiniteRowModel.prototype.forEachNode = function (callback) {\n if (this.infiniteCache) {\n this.infiniteCache.forEachNodeDeep(callback);\n }\n };\n InfiniteRowModel.prototype.getTopLevelRowCount = function () {\n return this.getRowCount();\n };\n InfiniteRowModel.prototype.getTopLevelRowDisplayedIndex = function (topLevelIndex) {\n return topLevelIndex;\n };\n InfiniteRowModel.prototype.getRowIndexAtPixel = function (pixel) {\n if (this.rowHeight !== 0) { // avoid divide by zero error\n var rowIndexForPixel = Math.floor(pixel / this.rowHeight);\n var lastRowIndex = this.getRowCount() - 1;\n if (rowIndexForPixel > lastRowIndex) {\n return lastRowIndex;\n }\n return rowIndexForPixel;\n }\n return 0;\n };\n InfiniteRowModel.prototype.getRowCount = function () {\n return this.infiniteCache ? this.infiniteCache.getRowCount() : 0;\n };\n InfiniteRowModel.prototype.isRowPresent = function (rowNode) {\n var foundRowNode = this.getRowNode(rowNode.id);\n return !!foundRowNode;\n };\n InfiniteRowModel.prototype.refreshCache = function () {\n if (this.infiniteCache) {\n this.infiniteCache.refreshCache();\n }\n };\n InfiniteRowModel.prototype.purgeCache = function () {\n if (this.infiniteCache) {\n this.infiniteCache.purgeCache();\n }\n };\n // for iRowModel\n InfiniteRowModel.prototype.isLastRowIndexKnown = function () {\n if (this.infiniteCache) {\n return this.infiniteCache.isLastRowIndexKnown();\n }\n return false;\n };\n InfiniteRowModel.prototype.setRowCount = function (rowCount, lastRowIndexKnown) {\n if (this.infiniteCache) {\n this.infiniteCache.setRowCount(rowCount, lastRowIndexKnown);\n }\n };\n __decorate([\n Autowired('filterManager')\n ], InfiniteRowModel.prototype, \"filterManager\", void 0);\n __decorate([\n Autowired('sortController')\n ], InfiniteRowModel.prototype, \"sortController\", void 0);\n __decorate([\n Autowired('selectionService')\n ], InfiniteRowModel.prototype, \"selectionService\", void 0);\n __decorate([\n Autowired('gridApi')\n ], InfiniteRowModel.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('columnApi')\n ], InfiniteRowModel.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('rowRenderer')\n ], InfiniteRowModel.prototype, \"rowRenderer\", void 0);\n __decorate([\n Autowired('rowNodeBlockLoader')\n ], InfiniteRowModel.prototype, \"rowNodeBlockLoader\", void 0);\n __decorate([\n PostConstruct\n ], InfiniteRowModel.prototype, \"init\", null);\n __decorate([\n PreDestroy\n ], InfiniteRowModel.prototype, \"destroyDatasource\", null);\n InfiniteRowModel = __decorate([\n Bean('rowModel')\n ], InfiniteRowModel);\n return InfiniteRowModel;\n}(BeanStub));\nexport { InfiniteRowModel };\n","import { ModuleNames } from \"@ag-grid-community/core\";\nimport { InfiniteRowModel } from \"./infiniteRowModel/infiniteRowModel\";\nexport var InfiniteRowModelModule = {\n moduleName: ModuleNames.InfiniteRowModelModule,\n rowModels: { infinite: InfiniteRowModel }\n};\n","var BaseCreator = /** @class */ (function () {\n function BaseCreator() {\n }\n BaseCreator.prototype.setBeans = function (beans) {\n this.beans = beans;\n };\n BaseCreator.prototype.getFileName = function (fileName) {\n var extension = this.getDefaultFileExtension();\n if (fileName == null || !fileName.length) {\n fileName = this.getDefaultFileName();\n }\n return fileName.indexOf('.') === -1 ? fileName + \".\" + extension : fileName;\n };\n BaseCreator.prototype.getData = function (params) {\n var serializingSession = this.createSerializingSession(params);\n var data = this.beans.gridSerializer.serialize(serializingSession, params);\n return data;\n };\n return BaseCreator;\n}());\nexport { BaseCreator };\n","var BaseGridSerializingSession = /** @class */ (function () {\n function BaseGridSerializingSession(config) {\n this.groupColumns = [];\n var columnModel = config.columnModel, valueService = config.valueService, gridOptionsWrapper = config.gridOptionsWrapper, processCellCallback = config.processCellCallback, processHeaderCallback = config.processHeaderCallback, processGroupHeaderCallback = config.processGroupHeaderCallback, processRowGroupCallback = config.processRowGroupCallback;\n this.columnModel = columnModel;\n this.valueService = valueService;\n this.gridOptionsWrapper = gridOptionsWrapper;\n this.processCellCallback = processCellCallback;\n this.processHeaderCallback = processHeaderCallback;\n this.processGroupHeaderCallback = processGroupHeaderCallback;\n this.processRowGroupCallback = processRowGroupCallback;\n }\n BaseGridSerializingSession.prototype.prepare = function (columnsToExport) {\n this.groupColumns = columnsToExport.filter(function (col) { return !!col.getColDef().showRowGroup; });\n };\n BaseGridSerializingSession.prototype.extractHeaderValue = function (column) {\n var value = this.getHeaderName(this.processHeaderCallback, column);\n return value != null ? value : '';\n };\n BaseGridSerializingSession.prototype.extractRowCellValue = function (column, index, accumulatedRowIndex, type, node) {\n // we render the group summary text e.g. \"-> Parent -> Child\"...\n var groupIndex = this.gridOptionsWrapper.isGroupMultiAutoColumn() ? node.rowGroupIndex : 0;\n var renderGroupSummaryCell = \n // on group rows\n node && node.group\n && (\n // in the group column if groups appear in regular grid cells\n index === groupIndex && this.groupColumns.indexOf(column) !== -1\n // or the first cell in the row, if we're doing full width rows\n || (index === 0 && this.gridOptionsWrapper.isGroupUseEntireRow(this.columnModel.isPivotMode())));\n var valueForCell;\n if (renderGroupSummaryCell) {\n valueForCell = this.createValueForGroupNode(node);\n }\n else {\n valueForCell = this.valueService.getValue(column, node);\n }\n var value = this.processCell(accumulatedRowIndex, node, column, valueForCell, this.processCellCallback, type);\n return value != null ? value : '';\n };\n BaseGridSerializingSession.prototype.getHeaderName = function (callback, column) {\n if (callback) {\n return callback({\n column: column,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext()\n });\n }\n return this.columnModel.getDisplayNameForColumn(column, 'csv', true);\n };\n BaseGridSerializingSession.prototype.createValueForGroupNode = function (node) {\n if (this.processRowGroupCallback) {\n return this.processRowGroupCallback({\n node: node,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext(),\n });\n }\n var keys = [node.key];\n if (!this.gridOptionsWrapper.isGroupMultiAutoColumn()) {\n while (node.parent) {\n node = node.parent;\n keys.push(node.key);\n }\n }\n return keys.reverse().join(' -> ');\n };\n BaseGridSerializingSession.prototype.processCell = function (accumulatedRowIndex, rowNode, column, value, processCellCallback, type) {\n if (processCellCallback) {\n return processCellCallback({\n accumulatedRowIndex: accumulatedRowIndex,\n column: column,\n node: rowNode,\n value: value,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext(),\n type: type\n });\n }\n return value != null ? value : '';\n };\n return BaseGridSerializingSession;\n}());\nexport { BaseGridSerializingSession };\n","var Downloader = /** @class */ (function () {\n function Downloader() {\n }\n Downloader.download = function (fileName, content) {\n var win = document.defaultView || window;\n if (!win) {\n console.warn('AG Grid: There is no `window` associated with the current `document`');\n return;\n }\n var element = document.createElement('a');\n // @ts-ignore\n var url = win.URL.createObjectURL(content);\n element.setAttribute('href', url);\n element.setAttribute('download', fileName);\n element.style.display = 'none';\n document.body.appendChild(element);\n element.dispatchEvent(new MouseEvent('click', {\n bubbles: false,\n cancelable: true,\n view: win\n }));\n document.body.removeChild(element);\n win.setTimeout(function () {\n // @ts-ignore\n win.URL.revokeObjectURL(url);\n }, 0);\n };\n return Downloader;\n}());\nexport { Downloader };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Constants } from \"@ag-grid-community/core\";\nimport { BaseGridSerializingSession } from \"./baseGridSerializingSession\";\nvar LINE_SEPARATOR = '\\r\\n';\nvar CsvSerializingSession = /** @class */ (function (_super) {\n __extends(CsvSerializingSession, _super);\n function CsvSerializingSession(config) {\n var _this = _super.call(this, config) || this;\n _this.isFirstLine = true;\n _this.result = '';\n var suppressQuotes = config.suppressQuotes, columnSeparator = config.columnSeparator;\n _this.suppressQuotes = suppressQuotes;\n _this.columnSeparator = columnSeparator;\n return _this;\n }\n CsvSerializingSession.prototype.addCustomContent = function (content) {\n var _this = this;\n if (!content) {\n return;\n }\n if (typeof content === 'string') {\n if (!/^\\s*\\n/.test(content)) {\n this.beginNewLine();\n }\n // replace whatever newlines are supplied with the style we're using\n content = content.replace(/\\r?\\n/g, LINE_SEPARATOR);\n this.result += content;\n }\n else {\n content.forEach(function (row) {\n _this.beginNewLine();\n row.forEach(function (cell, index) {\n if (index !== 0) {\n _this.result += _this.columnSeparator;\n }\n _this.result += _this.putInQuotes(cell.data.value || '');\n if (cell.mergeAcross) {\n _this.appendEmptyCells(cell.mergeAcross);\n }\n });\n });\n }\n };\n CsvSerializingSession.prototype.onNewHeaderGroupingRow = function () {\n this.beginNewLine();\n return {\n onColumn: this.onNewHeaderGroupingRowColumn.bind(this)\n };\n };\n CsvSerializingSession.prototype.onNewHeaderGroupingRowColumn = function (header, index, span) {\n if (index != 0) {\n this.result += this.columnSeparator;\n }\n this.result += this.putInQuotes(header);\n this.appendEmptyCells(span);\n };\n CsvSerializingSession.prototype.appendEmptyCells = function (count) {\n for (var i = 1; i <= count; i++) {\n this.result += this.columnSeparator + this.putInQuotes(\"\");\n }\n };\n CsvSerializingSession.prototype.onNewHeaderRow = function () {\n this.beginNewLine();\n return {\n onColumn: this.onNewHeaderRowColumn.bind(this)\n };\n };\n CsvSerializingSession.prototype.onNewHeaderRowColumn = function (column, index) {\n if (index != 0) {\n this.result += this.columnSeparator;\n }\n this.result += this.putInQuotes(this.extractHeaderValue(column));\n };\n CsvSerializingSession.prototype.onNewBodyRow = function () {\n this.beginNewLine();\n return {\n onColumn: this.onNewBodyRowColumn.bind(this)\n };\n };\n CsvSerializingSession.prototype.onNewBodyRowColumn = function (column, index, node) {\n if (index != 0) {\n this.result += this.columnSeparator;\n }\n this.result += this.putInQuotes(this.extractRowCellValue(column, index, index, Constants.EXPORT_TYPE_CSV, node));\n };\n CsvSerializingSession.prototype.putInQuotes = function (value) {\n if (this.suppressQuotes) {\n return value;\n }\n if (value === null || value === undefined) {\n return '\"\"';\n }\n var stringValue;\n if (typeof value === 'string') {\n stringValue = value;\n }\n else if (typeof value.toString === 'function') {\n stringValue = value.toString();\n }\n else {\n console.warn('AG Grid: unknown value type during csv conversion');\n stringValue = '';\n }\n // replace each \" with \"\" (ie two sets of double quotes is how to do double quotes in csv)\n var valueEscaped = stringValue.replace(/\"/g, \"\\\"\\\"\");\n return '\"' + valueEscaped + '\"';\n };\n CsvSerializingSession.prototype.parse = function () {\n return this.result;\n };\n CsvSerializingSession.prototype.beginNewLine = function () {\n if (!this.isFirstLine) {\n this.result += LINE_SEPARATOR;\n }\n this.isFirstLine = false;\n };\n return CsvSerializingSession;\n}(BaseGridSerializingSession));\nexport { CsvSerializingSession };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Bean, PostConstruct } from \"@ag-grid-community/core\";\nimport { BaseCreator } from \"./baseCreator\";\nimport { Downloader } from \"./downloader\";\nimport { CsvSerializingSession } from \"./sessions/csvSerializingSession\";\nvar CsvCreator = /** @class */ (function (_super) {\n __extends(CsvCreator, _super);\n function CsvCreator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n CsvCreator.prototype.postConstruct = function () {\n this.setBeans({\n gridSerializer: this.gridSerializer,\n gridOptionsWrapper: this.gridOptionsWrapper\n });\n };\n CsvCreator.prototype.getMergedParams = function (params) {\n var baseParams = this.gridOptionsWrapper.getDefaultExportParams('csv');\n return Object.assign({}, baseParams, params);\n };\n CsvCreator.prototype.export = function (userParams) {\n if (this.isExportSuppressed()) {\n console.warn(\"AG Grid: Export cancelled. Export is not allowed as per your configuration.\");\n return '';\n }\n var mergedParams = this.getMergedParams(userParams);\n var data = this.getData(mergedParams);\n var packagedFile = new Blob([\"\\ufeff\", data], { type: 'text/plain' });\n Downloader.download(this.getFileName(mergedParams.fileName), packagedFile);\n return data;\n };\n CsvCreator.prototype.exportDataAsCsv = function (params) {\n return this.export(params);\n };\n CsvCreator.prototype.getDataAsCsv = function (params) {\n var mergedParams = this.getMergedParams(params);\n return this.getData(mergedParams);\n };\n CsvCreator.prototype.getDefaultFileName = function () {\n return 'export.csv';\n };\n CsvCreator.prototype.getDefaultFileExtension = function () {\n return 'csv';\n };\n CsvCreator.prototype.createSerializingSession = function (params) {\n var _a = this, columnModel = _a.columnModel, valueService = _a.valueService, gridOptionsWrapper = _a.gridOptionsWrapper;\n var _b = params, processCellCallback = _b.processCellCallback, processHeaderCallback = _b.processHeaderCallback, processGroupHeaderCallback = _b.processGroupHeaderCallback, processRowGroupCallback = _b.processRowGroupCallback, suppressQuotes = _b.suppressQuotes, columnSeparator = _b.columnSeparator;\n return new CsvSerializingSession({\n columnModel: columnModel,\n valueService: valueService,\n gridOptionsWrapper: gridOptionsWrapper,\n processCellCallback: processCellCallback || undefined,\n processHeaderCallback: processHeaderCallback || undefined,\n processGroupHeaderCallback: processGroupHeaderCallback || undefined,\n processRowGroupCallback: processRowGroupCallback || undefined,\n suppressQuotes: suppressQuotes || false,\n columnSeparator: columnSeparator || ','\n });\n };\n CsvCreator.prototype.isExportSuppressed = function () {\n return this.gridOptionsWrapper.isSuppressCsvExport();\n };\n __decorate([\n Autowired('columnModel')\n ], CsvCreator.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('valueService')\n ], CsvCreator.prototype, \"valueService\", void 0);\n __decorate([\n Autowired('gridSerializer')\n ], CsvCreator.prototype, \"gridSerializer\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], CsvCreator.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n PostConstruct\n ], CsvCreator.prototype, \"postConstruct\", null);\n CsvCreator = __decorate([\n Bean('csvCreator')\n ], CsvCreator);\n return CsvCreator;\n}(BaseCreator));\nexport { CsvCreator };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { _, Autowired, Bean, BeanStub, ColumnGroup, Constants, GroupInstanceIdCreator } from \"@ag-grid-community/core\";\nexport var RowType;\n(function (RowType) {\n RowType[RowType[\"HEADER_GROUPING\"] = 0] = \"HEADER_GROUPING\";\n RowType[RowType[\"HEADER\"] = 1] = \"HEADER\";\n RowType[RowType[\"BODY\"] = 2] = \"BODY\";\n})(RowType || (RowType = {}));\nvar GridSerializer = /** @class */ (function (_super) {\n __extends(GridSerializer, _super);\n function GridSerializer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n GridSerializer.prototype.serialize = function (gridSerializingSession, params) {\n if (params === void 0) { params = {}; }\n var columnsToExport = this.getColumnsToExport(params.allColumns, params.columnKeys);\n var serializeChain = _.compose(\n // first pass, put in the header names of the cols\n this.prepareSession(columnsToExport), this.prependContent(params), this.exportColumnGroups(params, columnsToExport), this.exportHeaders(params, columnsToExport), this.processPinnedTopRows(params, columnsToExport), this.processRows(params, columnsToExport), this.processPinnedBottomRows(params, columnsToExport), this.appendContent(params));\n return serializeChain(gridSerializingSession).parse();\n };\n GridSerializer.prototype.processRow = function (gridSerializingSession, params, columnsToExport, node) {\n var _this = this;\n var rowSkipper = params.shouldRowBeSkipped || (function () { return false; });\n var gridOptionsWrapper = this.gridOptionsWrapper;\n var context = gridOptionsWrapper.getContext();\n var api = gridOptionsWrapper.getApi();\n var columnApi = gridOptionsWrapper.getColumnApi();\n var skipSingleChildrenGroup = gridOptionsWrapper.isGroupRemoveSingleChildren();\n var hideOpenParents = gridOptionsWrapper.isGroupHideOpenParents();\n var skipLowestSingleChildrenGroup = gridOptionsWrapper.isGroupRemoveLowestSingleChildren();\n var isLeafNode = this.columnModel.isPivotMode() ? node.leafGroup : !node.group;\n var skipRowGroups = params.skipGroups || params.skipRowGroups;\n var shouldSkipLowestGroup = skipLowestSingleChildrenGroup && node.leafGroup;\n var shouldSkipCurrentGroup = node.allChildrenCount === 1 && (skipSingleChildrenGroup || shouldSkipLowestGroup);\n if (skipRowGroups && params.skipGroups) {\n _.doOnce(function () { return console.warn('AG Grid: Since v25.2 `skipGroups` has been renamed to `skipRowGroups`.'); }, 'gridSerializer-skipGroups');\n }\n var rowPosition = { rowIndex: node.rowIndex, rowPinned: node.rowPinned };\n if ((!isLeafNode && (params.skipRowGroups || shouldSkipCurrentGroup || hideOpenParents)) ||\n (params.onlySelected && !node.isSelected()) ||\n (params.rowNodes && !params.rowNodes.some(function (position) { return _this.rowPositionUtils.sameRow(position, rowPosition); })) ||\n (params.skipPinnedTop && node.rowPinned === 'top') ||\n (params.skipPinnedBottom && node.rowPinned === 'bottom')) {\n return;\n }\n // if we are in pivotMode, then the grid will show the root node only\n // if it's not a leaf group\n var nodeIsRootNode = node.level === -1;\n if (nodeIsRootNode && !node.leafGroup) {\n return;\n }\n var shouldRowBeSkipped = rowSkipper({ node: node, api: api, context: context });\n if (shouldRowBeSkipped) {\n return;\n }\n var rowAccumulator = gridSerializingSession.onNewBodyRow();\n columnsToExport.forEach(function (column, index) {\n rowAccumulator.onColumn(column, index, node);\n });\n if (params.getCustomContentBelowRow) {\n var content = params.getCustomContentBelowRow({ node: node, api: api, columnApi: columnApi, context: context });\n if (content) {\n gridSerializingSession.addCustomContent(content);\n }\n }\n };\n GridSerializer.prototype.appendContent = function (params) {\n return function (gridSerializingSession) {\n var appendContent = params.customFooter || params.appendContent;\n if (appendContent) {\n if (params.customFooter) {\n _.doOnce(function () { return console.warn('AG Grid: Since version 25.2.0 the `customFooter` param has been deprecated. Use `appendContent` instead.'); }, 'gridSerializer-customFooter');\n }\n gridSerializingSession.addCustomContent(appendContent);\n }\n return gridSerializingSession;\n };\n };\n GridSerializer.prototype.prependContent = function (params) {\n return function (gridSerializingSession) {\n var prependContent = params.customHeader || params.prependContent;\n if (prependContent) {\n if (params.customHeader) {\n _.doOnce(function () { return console.warn('AG Grid: Since version 25.2.0 the `customHeader` param has been deprecated. Use `prependContent` instead.'); }, 'gridSerializer-customHeader');\n }\n gridSerializingSession.addCustomContent(prependContent);\n }\n return gridSerializingSession;\n };\n };\n GridSerializer.prototype.prepareSession = function (columnsToExport) {\n return function (gridSerializingSession) {\n gridSerializingSession.prepare(columnsToExport);\n return gridSerializingSession;\n };\n };\n GridSerializer.prototype.exportColumnGroups = function (params, columnsToExport) {\n var _this = this;\n return function (gridSerializingSession) {\n if (!params.skipColumnGroupHeaders) {\n var groupInstanceIdCreator = new GroupInstanceIdCreator();\n var displayedGroups = _this.displayedGroupCreator.createDisplayedGroups(columnsToExport, _this.columnModel.getGridBalancedTree(), groupInstanceIdCreator, null);\n _this.recursivelyAddHeaderGroups(displayedGroups, gridSerializingSession, params.processGroupHeaderCallback);\n }\n else if (params.columnGroups) {\n _.doOnce(function () { return console.warn('AG Grid: Since v25.2 the `columnGroups` param has deprecated, and groups are exported by default.'); }, 'gridSerializer-columnGroups');\n }\n return gridSerializingSession;\n };\n };\n GridSerializer.prototype.exportHeaders = function (params, columnsToExport) {\n return function (gridSerializingSession) {\n if (!params.skipHeader && !params.skipColumnHeaders) {\n var gridRowIterator_1 = gridSerializingSession.onNewHeaderRow();\n columnsToExport.forEach(function (column, index) {\n gridRowIterator_1.onColumn(column, index, undefined);\n });\n }\n else if (params.skipHeader) {\n _.doOnce(function () { return console.warn('AG Grid: Since v25.2 the `skipHeader` param has been renamed to `skipColumnHeaders`.'); }, 'gridSerializer-skipHeader');\n }\n return gridSerializingSession;\n };\n };\n GridSerializer.prototype.processPinnedTopRows = function (params, columnsToExport) {\n var _this = this;\n return function (gridSerializingSession) {\n var processRow = _this.processRow.bind(_this, gridSerializingSession, params, columnsToExport);\n _this.pinnedRowModel.forEachPinnedTopRow(processRow);\n return gridSerializingSession;\n };\n };\n GridSerializer.prototype.processRows = function (params, columnsToExport) {\n var _this = this;\n return function (gridSerializingSession) {\n // when in pivot mode, we always render cols on screen, never 'all columns'\n var rowModel = _this.rowModel;\n var rowModelType = rowModel.getType();\n var usingCsrm = rowModelType === Constants.ROW_MODEL_TYPE_CLIENT_SIDE;\n var usingSsrm = rowModelType === Constants.ROW_MODEL_TYPE_SERVER_SIDE;\n var onlySelectedNonStandardModel = !usingCsrm && params.onlySelected;\n var processRow = _this.processRow.bind(_this, gridSerializingSession, params, columnsToExport);\n if (_this.columnModel.isPivotMode()) {\n if (usingCsrm) {\n rowModel.forEachPivotNode(processRow);\n }\n else {\n // must be enterprise, so we can just loop through all the nodes\n rowModel.forEachNode(processRow);\n }\n }\n else {\n // onlySelectedAllPages: user doing pagination and wants selected items from\n // other pages, so cannot use the standard row model as it won't have rows from\n // other pages.\n // onlySelectedNonStandardModel: if user wants selected in non standard row model\n // (eg viewport) then again RowModel cannot be used, so need to use selected instead.\n if (params.onlySelectedAllPages || onlySelectedNonStandardModel) {\n var selectedNodes = _this.selectionService.getSelectedNodes();\n selectedNodes.forEach(processRow);\n }\n else {\n // here is everything else - including standard row model and selected. we don't use\n // the selection model even when just using selected, so that the result is the order\n // of the rows appearing on the screen.\n if (usingCsrm) {\n rowModel.forEachNodeAfterFilterAndSort(processRow);\n }\n else if (usingSsrm) {\n rowModel.forEachNodeAfterFilterAndSort(processRow);\n }\n else {\n rowModel.forEachNode(processRow);\n }\n }\n }\n return gridSerializingSession;\n };\n };\n GridSerializer.prototype.processPinnedBottomRows = function (params, columnsToExport) {\n var _this = this;\n return function (gridSerializingSession) {\n var processRow = _this.processRow.bind(_this, gridSerializingSession, params, columnsToExport);\n _this.pinnedRowModel.forEachPinnedBottomRow(processRow);\n return gridSerializingSession;\n };\n };\n GridSerializer.prototype.getColumnsToExport = function (allColumns, columnKeys) {\n if (allColumns === void 0) { allColumns = false; }\n var isPivotMode = this.columnModel.isPivotMode();\n if (columnKeys && columnKeys.length) {\n return this.columnModel.getGridColumns(columnKeys);\n }\n if (allColumns && !isPivotMode) {\n // add auto group column for tree data\n var columns = this.gridOptionsWrapper.isTreeData()\n ? this.columnModel.getGridColumns([Constants.GROUP_AUTO_COLUMN_ID])\n : [];\n return columns.concat(this.columnModel.getAllPrimaryColumns() || []);\n }\n return this.columnModel.getAllDisplayedColumns();\n };\n GridSerializer.prototype.recursivelyAddHeaderGroups = function (displayedGroups, gridSerializingSession, processGroupHeaderCallback) {\n var directChildrenHeaderGroups = [];\n displayedGroups.forEach(function (columnGroupChild) {\n var columnGroup = columnGroupChild;\n if (!columnGroup.getChildren) {\n return;\n }\n columnGroup.getChildren().forEach(function (it) { return directChildrenHeaderGroups.push(it); });\n });\n if (displayedGroups.length > 0 && displayedGroups[0] instanceof ColumnGroup) {\n this.doAddHeaderHeader(gridSerializingSession, displayedGroups, processGroupHeaderCallback);\n }\n if (directChildrenHeaderGroups && directChildrenHeaderGroups.length > 0) {\n this.recursivelyAddHeaderGroups(directChildrenHeaderGroups, gridSerializingSession, processGroupHeaderCallback);\n }\n };\n GridSerializer.prototype.doAddHeaderHeader = function (gridSerializingSession, displayedGroups, processGroupHeaderCallback) {\n var _this = this;\n var gridRowIterator = gridSerializingSession.onNewHeaderGroupingRow();\n var columnIndex = 0;\n displayedGroups.forEach(function (columnGroupChild) {\n var columnGroup = columnGroupChild;\n var name;\n if (processGroupHeaderCallback) {\n name = processGroupHeaderCallback({\n columnGroup: columnGroup,\n api: _this.gridOptionsWrapper.getApi(),\n columnApi: _this.gridOptionsWrapper.getColumnApi(),\n context: _this.gridOptionsWrapper.getContext()\n });\n }\n else {\n name = _this.columnModel.getDisplayNameForColumnGroup(columnGroup, 'header');\n }\n var collapsibleGroupRanges = columnGroup.getLeafColumns().reduce(function (collapsibleGroups, currentColumn, currentIdx, arr) {\n var lastGroup = _.last(collapsibleGroups);\n var groupShow = currentColumn.getColumnGroupShow() === 'open';\n if (!groupShow) {\n if (lastGroup && lastGroup[1] == null) {\n lastGroup[1] = currentIdx - 1;\n }\n }\n else if (!lastGroup || lastGroup[1] != null) {\n lastGroup = [currentIdx];\n collapsibleGroups.push(lastGroup);\n }\n if (currentIdx === arr.length - 1 && lastGroup && lastGroup[1] == null) {\n lastGroup[1] = currentIdx;\n }\n return collapsibleGroups;\n }, []);\n gridRowIterator.onColumn(name || '', columnIndex++, columnGroup.getLeafColumns().length - 1, collapsibleGroupRanges);\n });\n };\n __decorate([\n Autowired('displayedGroupCreator')\n ], GridSerializer.prototype, \"displayedGroupCreator\", void 0);\n __decorate([\n Autowired('columnModel')\n ], GridSerializer.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('rowModel')\n ], GridSerializer.prototype, \"rowModel\", void 0);\n __decorate([\n Autowired('pinnedRowModel')\n ], GridSerializer.prototype, \"pinnedRowModel\", void 0);\n __decorate([\n Autowired('selectionService')\n ], GridSerializer.prototype, \"selectionService\", void 0);\n __decorate([\n Autowired('rowPositionUtils')\n ], GridSerializer.prototype, \"rowPositionUtils\", void 0);\n GridSerializer = __decorate([\n Bean(\"gridSerializer\")\n ], GridSerializer);\n return GridSerializer;\n}(BeanStub));\nexport { GridSerializer };\n","import { ModuleNames } from \"@ag-grid-community/core\";\nimport { CsvCreator } from \"./csvExport/csvCreator\";\nimport { GridSerializer } from \"./csvExport/gridSerializer\";\nexport var CsvExportModule = {\n moduleName: ModuleNames.CsvExportModule,\n beans: [CsvCreator, GridSerializer]\n};\n","var LINE_SEPARATOR = '\\r\\n';\nvar XmlFactory = /** @class */ (function () {\n function XmlFactory() {\n }\n XmlFactory.createHeader = function (headerElement) {\n if (headerElement === void 0) { headerElement = {}; }\n var headerStart = '';\n var keys = ['version'];\n if (!headerElement.version) {\n headerElement.version = \"1.0\";\n }\n if (headerElement.encoding) {\n keys.push('encoding');\n }\n if (headerElement.standalone) {\n keys.push('standalone');\n }\n var att = keys.map(function (key) { return key + \"=\\\"\" + headerElement[key] + \"\\\"\"; }).join(' ');\n return headerStart + \"xml \" + att + \" \" + headerEnd;\n };\n XmlFactory.createXml = function (xmlElement, booleanTransformer) {\n var _this = this;\n var props = '';\n if (xmlElement.properties) {\n if (xmlElement.properties.prefixedAttributes) {\n xmlElement.properties.prefixedAttributes.forEach(function (prefixedSet) {\n Object.keys(prefixedSet.map).forEach(function (key) {\n props += _this.returnAttributeIfPopulated(prefixedSet.prefix + key, prefixedSet.map[key], booleanTransformer);\n });\n });\n }\n if (xmlElement.properties.rawMap) {\n Object.keys(xmlElement.properties.rawMap).forEach(function (key) {\n props += _this.returnAttributeIfPopulated(key, xmlElement.properties.rawMap[key], booleanTransformer);\n });\n }\n }\n var result = '<' + xmlElement.name + props;\n if (!xmlElement.children && xmlElement.textNode == null) {\n return result + '/>' + LINE_SEPARATOR;\n }\n if (xmlElement.textNode != null) {\n return result + '>' + xmlElement.textNode + '' + LINE_SEPARATOR;\n }\n result += '>' + LINE_SEPARATOR;\n if (xmlElement.children) {\n xmlElement.children.forEach(function (it) {\n result += _this.createXml(it, booleanTransformer);\n });\n }\n return result + '' + LINE_SEPARATOR;\n };\n XmlFactory.returnAttributeIfPopulated = function (key, value, booleanTransformer) {\n if (!value && value !== '' && value !== 0) {\n return '';\n }\n var xmlValue = value;\n if ((typeof (value) === 'boolean')) {\n if (booleanTransformer) {\n xmlValue = booleanTransformer(value);\n }\n }\n return \" \" + key + \"=\\\"\" + xmlValue + \"\\\"\";\n };\n return XmlFactory;\n}());\nexport { XmlFactory };\n","var __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nimport { _ } from \"@ag-grid-community/core\";\n// table for crc calculation\n// from: https://referencesource.microsoft.com/#System/sys/System/IO/compression/Crc32Helper.cs,3b31978c7d7f7246,references\nvar crcTable = new Uint32Array([\n 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f,\n 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,\n 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2,\n 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,\n 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,\n 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,\n 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c,\n 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,\n 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423,\n 0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,\n 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106,\n 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,\n 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d,\n 0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,\n 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,\n 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,\n 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7,\n 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,\n 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa,\n 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,\n 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81,\n 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,\n 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84,\n 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,\n 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,\n 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,\n 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e,\n 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,\n 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55,\n 0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,\n 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28,\n 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,\n 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f,\n 0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,\n 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,\n 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,\n 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69,\n 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,\n 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc,\n 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,\n 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693,\n 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,\n 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d\n]);\nvar ZipContainer = /** @class */ (function () {\n function ZipContainer() {\n }\n ZipContainer.addFolders = function (paths) {\n paths.forEach(this.addFolder.bind(this));\n };\n ZipContainer.addFolder = function (path) {\n this.folders.push({\n path: path,\n created: new Date(),\n isBase64: false\n });\n };\n ZipContainer.addFile = function (path, content, isBase64) {\n if (isBase64 === void 0) { isBase64 = false; }\n this.files.push({\n path: path,\n created: new Date(),\n content: content,\n isBase64: isBase64\n });\n };\n ZipContainer.getContent = function (mimeType) {\n if (mimeType === void 0) { mimeType = 'application/zip'; }\n var textOutput = this.buildFileStream();\n var uInt8Output = this.buildUint8Array(textOutput);\n this.clearStream();\n return new Blob([uInt8Output], { type: mimeType });\n };\n ZipContainer.clearStream = function () {\n this.folders = [];\n this.files = [];\n };\n ZipContainer.buildFileStream = function (fData) {\n var e_1, _a;\n if (fData === void 0) { fData = ''; }\n var totalFiles = this.folders.concat(this.files);\n var len = totalFiles.length;\n var foData = '';\n var lL = 0;\n var cL = 0;\n try {\n for (var totalFiles_1 = __values(totalFiles), totalFiles_1_1 = totalFiles_1.next(); !totalFiles_1_1.done; totalFiles_1_1 = totalFiles_1.next()) {\n var currentFile = totalFiles_1_1.value;\n var _b = this.getHeader(currentFile, lL), fileHeader = _b.fileHeader, folderHeader = _b.folderHeader, content = _b.content;\n lL += fileHeader.length + content.length;\n cL += folderHeader.length;\n fData += fileHeader + content;\n foData += folderHeader;\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (totalFiles_1_1 && !totalFiles_1_1.done && (_a = totalFiles_1.return)) _a.call(totalFiles_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n var foEnd = this.buildFolderEnd(len, cL, lL);\n return fData + foData + foEnd;\n };\n ZipContainer.getHeader = function (currentFile, offset) {\n var content = currentFile.content, path = currentFile.path, created = currentFile.created, isBase64 = currentFile.isBase64;\n var utf8_encode = _.utf8_encode, decToHex = _.decToHex;\n var utfPath = utf8_encode(path);\n var isUTF8 = utfPath !== path;\n var time = this.convertTime(created);\n var dt = this.convertDate(created);\n var extraFields = '';\n if (isUTF8) {\n var uExtraFieldPath = decToHex(1, 1) + decToHex(this.getFromCrc32Table(utfPath), 4) + utfPath;\n extraFields = \"\\x75\\x70\" + decToHex(uExtraFieldPath.length, 2) + uExtraFieldPath;\n }\n var _a = !content ? { size: 0, content: '' } : this.getConvertedContent(content, isBase64), size = _a.size, convertedContent = _a.content;\n var header = '\\x0A\\x00' +\n (isUTF8 ? '\\x00\\x08' : '\\x00\\x00') +\n '\\x00\\x00' +\n decToHex(time, 2) + // last modified time\n decToHex(dt, 2) + // last modified date\n decToHex(size ? this.getFromCrc32Table(convertedContent) : 0, 4) +\n decToHex(size, 4) + // compressed size\n decToHex(size, 4) + // uncompressed size\n decToHex(utfPath.length, 2) + // file name length\n decToHex(extraFields.length, 2); // extra field length\n var fileHeader = 'PK\\x03\\x04' + header + utfPath + extraFields;\n var folderHeader = 'PK\\x01\\x02' + // central header\n '\\x14\\x00' +\n header + // file header\n '\\x00\\x00' +\n '\\x00\\x00' +\n '\\x00\\x00' +\n (content ? '\\x00\\x00\\x00\\x00' : '\\x10\\x00\\x00\\x00') + // external file attributes\n decToHex(offset, 4) + // relative offset of local header\n utfPath + // file name\n extraFields; // extra field\n return { fileHeader: fileHeader, folderHeader: folderHeader, content: convertedContent || '' };\n };\n ZipContainer.getConvertedContent = function (content, isBase64) {\n if (isBase64 === void 0) { isBase64 = false; }\n if (isBase64) {\n content = content.split(';base64,')[1];\n }\n content = isBase64 ? atob(content) : content;\n return {\n size: content.length,\n content: content\n };\n };\n ZipContainer.buildFolderEnd = function (tLen, cLen, lLen) {\n var decToHex = _.decToHex;\n return 'PK\\x05\\x06' + // central folder end\n '\\x00\\x00' +\n '\\x00\\x00' +\n decToHex(tLen, 2) + // total number of entries in the central folder\n decToHex(tLen, 2) + // total number of entries in the central folder\n decToHex(cLen, 4) + // size of the central folder\n decToHex(lLen, 4) + // central folder start offset\n '\\x00\\x00';\n };\n ZipContainer.buildUint8Array = function (content) {\n var uint8 = new Uint8Array(content.length);\n for (var i = 0; i < uint8.length; i++) {\n uint8[i] = content.charCodeAt(i);\n }\n return uint8;\n };\n ZipContainer.getFromCrc32Table = function (content) {\n if (!content.length) {\n return 0;\n }\n var size = content.length;\n var iterable = new Uint8Array(size);\n for (var i = 0; i < size; i++) {\n iterable[i] = content.charCodeAt(i);\n }\n var crc = 0 ^ (-1);\n var j = 0;\n var k = 0;\n var l = 0;\n for (var i = 0; i < size; i++) {\n j = iterable[i];\n k = (crc ^ j) & 0xFF;\n l = crcTable[k];\n crc = (crc >>> 8) ^ l;\n }\n return crc ^ (-1);\n };\n ZipContainer.convertTime = function (date) {\n var time = date.getHours();\n time <<= 6;\n time = time | date.getMinutes();\n time <<= 5;\n time = time | date.getSeconds() / 2;\n return time;\n };\n ZipContainer.convertDate = function (date) {\n var dt = date.getFullYear() - 1980;\n dt <<= 4;\n dt = dt | (date.getMonth() + 1);\n dt <<= 5;\n dt = dt | date.getDate();\n return dt;\n };\n ZipContainer.folders = [];\n ZipContainer.files = [];\n return ZipContainer;\n}());\nexport { ZipContainer };\n","import { ClientSideRowModelModule } from '@ag-grid-community/client-side-row-model';\nimport { InfiniteRowModelModule } from '@ag-grid-community/infinite-row-model';\nimport { CsvExportModule } from '@ag-grid-community/csv-export';\nexport var AllCommunityModules = [ClientSideRowModelModule, InfiniteRowModelModule, CsvExportModule];\nexport * from \"@ag-grid-community/client-side-row-model\";\nexport * from \"@ag-grid-community/csv-export\";\nexport * from \"@ag-grid-community/infinite-row-model\";\nexport * from \"@ag-grid-community/core\";\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nimport { _, Autowired, Bean, BeanStub, PreConstruct } from '@ag-grid-community/core';\nvar LicenseManager = /** @class */ (function (_super) {\n __extends(LicenseManager, _super);\n function LicenseManager() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.watermarkMessage = undefined;\n return _this;\n }\n LicenseManager_1 = LicenseManager;\n LicenseManager.prototype.validateLicense = function () {\n if (_.missingOrEmpty(LicenseManager_1.licenseKey)) {\n this.outputMissingLicenseKey();\n }\n else if (LicenseManager_1.licenseKey.length > 32) {\n var _a = LicenseManager_1.extractLicenseComponents(LicenseManager_1.licenseKey), md5 = _a.md5, license = _a.license, version = _a.version, isTrial = _a.isTrial;\n if (md5 === this.md5.md5(license)) {\n if (_.exists(version) && version) {\n this.validateLicenseKeyForVersion(version, !!isTrial, license);\n }\n else {\n this.validateLegacyKey(license);\n }\n }\n else {\n this.outputInvalidLicenseKey();\n }\n }\n else {\n this.outputInvalidLicenseKey();\n }\n };\n LicenseManager.extractExpiry = function (license) {\n var restrictionHashed = license.substring(license.lastIndexOf('_') + 1, license.length);\n return new Date(parseInt(LicenseManager_1.decode(restrictionHashed), 10));\n };\n LicenseManager.extractLicenseComponents = function (licenseKey) {\n // when users copy the license key from a PDF extra zero width characters are sometimes copied too\n // carriage returns and line feeds are problematic too\n // all of which causes license key validation to fail - strip these out\n var cleanedLicenseKey = licenseKey.replace(/[\\u200B-\\u200D\\uFEFF]/g, '');\n cleanedLicenseKey = cleanedLicenseKey.replace(/\\r?\\n|\\r/g, '');\n var hashStart = cleanedLicenseKey.length - 32;\n var md5 = cleanedLicenseKey.substring(hashStart);\n var license = cleanedLicenseKey.substring(0, hashStart);\n var _a = __read(LicenseManager_1.extractBracketedInformation(cleanedLicenseKey), 2), version = _a[0], isTrial = _a[1];\n return { md5: md5, license: license, version: version, isTrial: isTrial };\n };\n LicenseManager.prototype.getLicenseDetails = function (licenseKey) {\n var _a = LicenseManager_1.extractLicenseComponents(licenseKey), md5 = _a.md5, license = _a.license, version = _a.version, isTrial = _a.isTrial;\n var valid = (md5 === this.md5.md5(license));\n var expiry = null;\n if (valid) {\n expiry = LicenseManager_1.extractExpiry(license);\n valid = !isNaN(expiry.getTime());\n }\n return {\n licenseKey: licenseKey,\n valid: valid,\n expiry: valid ? LicenseManager_1.formatDate(expiry) : null,\n version: version ? version : 'legacy',\n isTrial: isTrial\n };\n };\n LicenseManager.prototype.isDisplayWatermark = function () {\n return !_.missingOrEmpty(this.watermarkMessage);\n };\n LicenseManager.prototype.getWatermarkMessage = function () {\n return this.watermarkMessage || '';\n };\n LicenseManager.formatDate = function (date) {\n var monthNames = [\n 'January', 'February', 'March',\n 'April', 'May', 'June', 'July',\n 'August', 'September', 'October',\n 'November', 'December'\n ];\n var day = date.getDate();\n var monthIndex = date.getMonth();\n var year = date.getFullYear();\n return day + ' ' + monthNames[monthIndex] + ' ' + year;\n };\n LicenseManager.getGridReleaseDate = function () {\n return new Date(parseInt(LicenseManager_1.decode(LicenseManager_1.RELEASE_INFORMATION), 10));\n };\n LicenseManager.decode = function (input) {\n var keystr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n var t = '';\n var n, r, i;\n var s, o, u, a;\n var f = 0;\n var e = input.replace(/[^A-Za-z0-9+/=]/g, '');\n while (f < e.length) {\n s = keystr.indexOf(e.charAt(f++));\n o = keystr.indexOf(e.charAt(f++));\n u = keystr.indexOf(e.charAt(f++));\n a = keystr.indexOf(e.charAt(f++));\n n = s << 2 | o >> 4;\n r = (o & 15) << 4 | u >> 2;\n i = (u & 3) << 6 | a;\n t = t + String.fromCharCode(n);\n if (u != 64) {\n t = t + String.fromCharCode(r);\n }\n if (a != 64) {\n t = t + String.fromCharCode(i);\n }\n }\n t = LicenseManager_1.utf8_decode(t);\n return t;\n };\n LicenseManager.utf8_decode = function (input) {\n input = input.replace(/rn/g, 'n');\n var t = '';\n for (var n = 0; n < input.length; n++) {\n var r = input.charCodeAt(n);\n if (r < 128) {\n t += String.fromCharCode(r);\n }\n else if (r > 127 && r < 2048) {\n t += String.fromCharCode(r >> 6 | 192);\n t += String.fromCharCode(r & 63 | 128);\n }\n else {\n t += String.fromCharCode(r >> 12 | 224);\n t += String.fromCharCode(r >> 6 & 63 | 128);\n t += String.fromCharCode(r & 63 | 128);\n }\n }\n return t;\n };\n LicenseManager.setLicenseKey = function (licenseKey) {\n LicenseManager_1.licenseKey = licenseKey;\n };\n LicenseManager.extractBracketedInformation = function (licenseKey) {\n var matches = licenseKey.split('[')\n .filter(function (v) {\n return v.indexOf(']') > -1;\n })\n .map(function (value) {\n return value.split(']')[0];\n });\n if (!matches || matches.length === 0) {\n return [null, null];\n }\n var isTrial = matches.filter(function (match) { return match === 'TRIAL'; }).length === 1;\n var version = matches.filter(function (match) { return match.indexOf(\"v\") === 0; }).map(function (match) { return match.replace(/^v/, \"\"); })[0];\n return [version, isTrial];\n };\n LicenseManager.prototype.validateLicenseKeyForVersion = function (version, isTrial, license) {\n if (version !== '2') {\n return;\n }\n if (isTrial) {\n this.validateForTrial(license);\n }\n else {\n this.validateLegacyKey(license);\n }\n };\n LicenseManager.prototype.validateLegacyKey = function (license) {\n var gridReleaseDate = LicenseManager_1.getGridReleaseDate();\n var expiry = LicenseManager_1.extractExpiry(license);\n var valid = false;\n var current = false;\n if (!isNaN(expiry.getTime())) {\n valid = true;\n current = (gridReleaseDate < expiry);\n }\n if (!valid) {\n this.outputInvalidLicenseKey();\n }\n else if (!current) {\n var formattedExpiryDate = LicenseManager_1.formatDate(expiry);\n var formattedReleaseDate = LicenseManager_1.formatDate(gridReleaseDate);\n this.outputIncompatibleVersion(formattedExpiryDate, formattedReleaseDate);\n }\n };\n LicenseManager.prototype.validateForTrial = function (license) {\n var expiry = LicenseManager_1.extractExpiry(license);\n var now = new Date();\n var valid = false;\n var current = false;\n if (!isNaN(expiry.getTime())) {\n valid = true;\n current = (expiry > now);\n }\n if (!valid) {\n this.outputInvalidLicenseKey();\n }\n else if (!current) {\n var formattedExpiryDate = LicenseManager_1.formatDate(expiry);\n this.outputExpiredTrialKey(formattedExpiryDate);\n }\n };\n LicenseManager.prototype.outputInvalidLicenseKey = function () {\n console.error('*****************************************************************************************************************');\n console.error('***************************************** AG Grid Enterprise License ********************************************');\n console.error('********************************************* Invalid License ***************************************************');\n console.error('* Your license for AG Grid Enterprise is not valid - please contact info@ag-grid.com to obtain a valid license. *');\n console.error('*****************************************************************************************************************');\n console.error('*****************************************************************************************************************');\n this.watermarkMessage = \"Invalid License\";\n };\n LicenseManager.prototype.outputExpiredTrialKey = function (formattedExpiryDate) {\n console.error('****************************************************************************************************************');\n console.error('***************************************** AG Grid Enterprise License *******************************************');\n console.error('***************************************** Trial Period Expired. *******************************************');\n console.error(\"* Your license for AG Grid Enterprise expired on \" + formattedExpiryDate + \". *\");\n console.error('* Please email info@ag-grid.com to purchase a license. *');\n console.error('****************************************************************************************************************');\n console.error('****************************************************************************************************************');\n this.watermarkMessage = \"Trial Period Expired\";\n };\n LicenseManager.prototype.outputMissingLicenseKey = function () {\n console.error('****************************************************************************************************************');\n console.error('***************************************** AG Grid Enterprise License *******************************************');\n console.error('****************************************** License Key Not Found ***********************************************');\n console.error('* All AG Grid Enterprise features are unlocked. *');\n console.error('* This is an evaluation only version, it is not licensed for development projects intended for production. *');\n console.error('* If you want to hide the watermark, please email info@ag-grid.com for a trial license. *');\n console.error('****************************************************************************************************************');\n console.error('****************************************************************************************************************');\n this.watermarkMessage = \"For Trial Use Only\";\n };\n LicenseManager.prototype.outputIncompatibleVersion = function (formattedExpiryDate, formattedReleaseDate) {\n console.error('****************************************************************************************************************************');\n console.error('****************************************************************************************************************************');\n console.error('* AG Grid Enterprise License *');\n console.error('* License not compatible with installed version of AG Grid Enterprise. *');\n console.error('* *');\n console.error(\"* Your AG Grid License entitles you to all versions of AG Grid that we release within the time covered by your license *\");\n console.error(\"* - typically we provide one year licenses which entitles you to all releases / updates of AG Grid within that year. *\");\n console.error(\"* Your license has an end (expiry) date which stops the license key working with versions of AG Grid released after the *\");\n console.error(\"* license end date. The license key that you have expires on \" + formattedExpiryDate + \", however the version of AG Grid you *\");\n console.error(\"* are trying to use was released on \" + formattedReleaseDate + \". *\");\n console.error('* *');\n console.error('* Please contact info@ag-grid.com to renew your subscription to new versions and get a new license key to work with this *');\n console.error('* version of AG Grid. *');\n console.error('****************************************************************************************************************************');\n console.error('****************************************************************************************************************************');\n this.watermarkMessage = \"License Expired\";\n };\n var LicenseManager_1;\n LicenseManager.RELEASE_INFORMATION = 'MTY0Njk4MzkwMjkyOA==';\n __decorate([\n Autowired('md5')\n ], LicenseManager.prototype, \"md5\", void 0);\n __decorate([\n PreConstruct\n ], LicenseManager.prototype, \"validateLicense\", null);\n LicenseManager = LicenseManager_1 = __decorate([\n Bean('licenseManager')\n ], LicenseManager);\n return LicenseManager;\n}(BeanStub));\nexport { LicenseManager };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Bean, BeanStub, PostConstruct } from \"@ag-grid-community/core\";\nvar MD5 = /** @class */ (function (_super) {\n __extends(MD5, _super);\n function MD5() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.ieCompatibility = false;\n return _this;\n }\n MD5.prototype.init = function () {\n this.ieCompatibility = (this.md5('hello') != '5d41402abc4b2a76b9719d911017c592');\n };\n MD5.prototype.md5cycle = function (x, k) {\n var a = x[0], b = x[1], c = x[2], d = x[3];\n a = this.ff(a, b, c, d, k[0], 7, -680876936);\n d = this.ff(d, a, b, c, k[1], 12, -389564586);\n c = this.ff(c, d, a, b, k[2], 17, 606105819);\n b = this.ff(b, c, d, a, k[3], 22, -1044525330);\n a = this.ff(a, b, c, d, k[4], 7, -176418897);\n d = this.ff(d, a, b, c, k[5], 12, 1200080426);\n c = this.ff(c, d, a, b, k[6], 17, -1473231341);\n b = this.ff(b, c, d, a, k[7], 22, -45705983);\n a = this.ff(a, b, c, d, k[8], 7, 1770035416);\n d = this.ff(d, a, b, c, k[9], 12, -1958414417);\n c = this.ff(c, d, a, b, k[10], 17, -42063);\n b = this.ff(b, c, d, a, k[11], 22, -1990404162);\n a = this.ff(a, b, c, d, k[12], 7, 1804603682);\n d = this.ff(d, a, b, c, k[13], 12, -40341101);\n c = this.ff(c, d, a, b, k[14], 17, -1502002290);\n b = this.ff(b, c, d, a, k[15], 22, 1236535329);\n a = this.gg(a, b, c, d, k[1], 5, -165796510);\n d = this.gg(d, a, b, c, k[6], 9, -1069501632);\n c = this.gg(c, d, a, b, k[11], 14, 643717713);\n b = this.gg(b, c, d, a, k[0], 20, -373897302);\n a = this.gg(a, b, c, d, k[5], 5, -701558691);\n d = this.gg(d, a, b, c, k[10], 9, 38016083);\n c = this.gg(c, d, a, b, k[15], 14, -660478335);\n b = this.gg(b, c, d, a, k[4], 20, -405537848);\n a = this.gg(a, b, c, d, k[9], 5, 568446438);\n d = this.gg(d, a, b, c, k[14], 9, -1019803690);\n c = this.gg(c, d, a, b, k[3], 14, -187363961);\n b = this.gg(b, c, d, a, k[8], 20, 1163531501);\n a = this.gg(a, b, c, d, k[13], 5, -1444681467);\n d = this.gg(d, a, b, c, k[2], 9, -51403784);\n c = this.gg(c, d, a, b, k[7], 14, 1735328473);\n b = this.gg(b, c, d, a, k[12], 20, -1926607734);\n a = this.hh(a, b, c, d, k[5], 4, -378558);\n d = this.hh(d, a, b, c, k[8], 11, -2022574463);\n c = this.hh(c, d, a, b, k[11], 16, 1839030562);\n b = this.hh(b, c, d, a, k[14], 23, -35309556);\n a = this.hh(a, b, c, d, k[1], 4, -1530992060);\n d = this.hh(d, a, b, c, k[4], 11, 1272893353);\n c = this.hh(c, d, a, b, k[7], 16, -155497632);\n b = this.hh(b, c, d, a, k[10], 23, -1094730640);\n a = this.hh(a, b, c, d, k[13], 4, 681279174);\n d = this.hh(d, a, b, c, k[0], 11, -358537222);\n c = this.hh(c, d, a, b, k[3], 16, -722521979);\n b = this.hh(b, c, d, a, k[6], 23, 76029189);\n a = this.hh(a, b, c, d, k[9], 4, -640364487);\n d = this.hh(d, a, b, c, k[12], 11, -421815835);\n c = this.hh(c, d, a, b, k[15], 16, 530742520);\n b = this.hh(b, c, d, a, k[2], 23, -995338651);\n a = this.ii(a, b, c, d, k[0], 6, -198630844);\n d = this.ii(d, a, b, c, k[7], 10, 1126891415);\n c = this.ii(c, d, a, b, k[14], 15, -1416354905);\n b = this.ii(b, c, d, a, k[5], 21, -57434055);\n a = this.ii(a, b, c, d, k[12], 6, 1700485571);\n d = this.ii(d, a, b, c, k[3], 10, -1894986606);\n c = this.ii(c, d, a, b, k[10], 15, -1051523);\n b = this.ii(b, c, d, a, k[1], 21, -2054922799);\n a = this.ii(a, b, c, d, k[8], 6, 1873313359);\n d = this.ii(d, a, b, c, k[15], 10, -30611744);\n c = this.ii(c, d, a, b, k[6], 15, -1560198380);\n b = this.ii(b, c, d, a, k[13], 21, 1309151649);\n a = this.ii(a, b, c, d, k[4], 6, -145523070);\n d = this.ii(d, a, b, c, k[11], 10, -1120210379);\n c = this.ii(c, d, a, b, k[2], 15, 718787259);\n b = this.ii(b, c, d, a, k[9], 21, -343485551);\n x[0] = this.add32(a, x[0]);\n x[1] = this.add32(b, x[1]);\n x[2] = this.add32(c, x[2]);\n x[3] = this.add32(d, x[3]);\n };\n MD5.prototype.cmn = function (q, a, b, x, s, t) {\n a = this.add32(this.add32(a, q), this.add32(x, t));\n return this.add32((a << s) | (a >>> (32 - s)), b);\n };\n MD5.prototype.ff = function (a, b, c, d, x, s, t) {\n return this.cmn((b & c) | ((~b) & d), a, b, x, s, t);\n };\n MD5.prototype.gg = function (a, b, c, d, x, s, t) {\n return this.cmn((b & d) | (c & (~d)), a, b, x, s, t);\n };\n MD5.prototype.hh = function (a, b, c, d, x, s, t) {\n return this.cmn(b ^ c ^ d, a, b, x, s, t);\n };\n MD5.prototype.ii = function (a, b, c, d, x, s, t) {\n return this.cmn(c ^ (b | (~d)), a, b, x, s, t);\n };\n MD5.prototype.md51 = function (s) {\n var n = s.length;\n var state = [1732584193, -271733879, -1732584194, 271733878];\n var i;\n for (i = 64; i <= s.length; i += 64) {\n this.md5cycle(state, this.md5blk(s.substring(i - 64, i)));\n }\n s = s.substring(i - 64);\n var tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n for (i = 0; i < s.length; i++) {\n tail[i >> 2] |= s.charCodeAt(i) << ((i % 4) << 3);\n }\n tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n if (i > 55) {\n this.md5cycle(state, tail);\n for (i = 0; i < 16; i++) {\n tail[i] = 0;\n }\n }\n tail[14] = n * 8;\n this.md5cycle(state, tail);\n return state;\n };\n /* there needs to be support for Unicode here, * unless we pretend that we can redefine the MD-5\n * algorithm for multi-byte characters (perhaps by adding every four 16-bit characters and\n * shortening the sum to 32 bits). Otherwise I suthis.ggest performing MD-5 as if every character\n * was two bytes--e.g., 0040 0025 = @%--but then how will an ordinary MD-5 sum be matched?\n * There is no way to standardize text to something like UTF-8 before transformation; speed cost is\n * utterly prohibitive. The JavaScript standard itself needs to look at this: it should start\n * providing access to strings as preformed UTF-8 8-bit unsigned value arrays.\n */\n MD5.prototype.md5blk = function (s) {\n var md5blks = [];\n /* Andy King said do it this way. */\n for (var i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = s.charCodeAt(i)\n + (s.charCodeAt(i + 1) << 8)\n + (s.charCodeAt(i + 2) << 16)\n + (s.charCodeAt(i + 3) << 24);\n }\n return md5blks;\n };\n MD5.prototype.rhex = function (n) {\n var hex_chr = '0123456789abcdef'.split('');\n var s = '', j = 0;\n for (; j < 4; j++) {\n s += hex_chr[(n >> (j * 8 + 4)) & 0x0F]\n + hex_chr[(n >> (j * 8)) & 0x0F];\n }\n return s;\n };\n MD5.prototype.hex = function (x) {\n for (var i = 0; i < x.length; i++) {\n x[i] = this.rhex(x[i]);\n }\n return x.join('');\n };\n MD5.prototype.md5 = function (s) {\n return this.hex(this.md51(s));\n };\n MD5.prototype.add32 = function (a, b) {\n return this.ieCompatibility ? this.add32Compat(a, b) : this.add32Std(a, b);\n };\n /* this function is much faster, so if possible we use it. Some IEs are the only ones I know of that\n need the idiotic second function, generated by an if clause. */\n MD5.prototype.add32Std = function (a, b) {\n return (a + b) & 0xFFFFFFFF;\n };\n MD5.prototype.add32Compat = function (x, y) {\n var lsw = (x & 0xFFFF) + (y & 0xFFFF), msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return (msw << 16) | (lsw & 0xFFFF);\n };\n __decorate([\n PostConstruct\n ], MD5.prototype, \"init\", null);\n MD5 = __decorate([\n Bean('md5')\n ], MD5);\n return MD5;\n}(BeanStub));\nexport { MD5 };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Component, PostConstruct, RefSelector } from '@ag-grid-community/core';\nvar WatermarkComp = /** @class */ (function (_super) {\n __extends(WatermarkComp, _super);\n function WatermarkComp() {\n return _super.call(this, \"
    \\n
    \\n
    \") || this;\n }\n WatermarkComp.prototype.postConstruct = function () {\n var _this = this;\n var show = this.shouldDisplayWatermark();\n this.addOrRemoveCssClass('ag-hidden', !show);\n if (show) {\n this.eLicenseTextRef.innerText = this.licenseManager.getWatermarkMessage();\n window.setTimeout(function () { return _this.addCssClass('ag-opacity-zero'); }, 0);\n window.setTimeout(function () { return _this.addCssClass('ag-hidden'); }, 5000);\n }\n };\n WatermarkComp.prototype.shouldDisplayWatermark = function () {\n var eDocument = this.gridOptionsWrapper.getDocument();\n var win = (eDocument.defaultView || window);\n var loc = win.location;\n var _a = loc.hostname, hostname = _a === void 0 ? '' : _a, pathname = loc.pathname;\n var isDisplayWatermark = this.licenseManager.isDisplayWatermark();\n var isWhiteListURL = hostname.match('^(?:127\\.0\\.0\\.1|localhost|(?:\\w+\\.)?ag-grid\\.com)$') != null;\n var isForceWatermark = pathname ? pathname.indexOf('forceWatermark') !== -1 : false;\n return isForceWatermark || (isDisplayWatermark && !isWhiteListURL);\n };\n __decorate([\n Autowired('licenseManager')\n ], WatermarkComp.prototype, \"licenseManager\", void 0);\n __decorate([\n RefSelector('eLicenseTextRef')\n ], WatermarkComp.prototype, \"eLicenseTextRef\", void 0);\n __decorate([\n PostConstruct\n ], WatermarkComp.prototype, \"postConstruct\", null);\n return WatermarkComp;\n}(Component));\nexport { WatermarkComp };\n","import { ModuleNames } from \"@ag-grid-community/core\";\nimport { LicenseManager } from \"./licenseManager\";\nimport { MD5 } from \"./license/md5\";\nimport { WatermarkComp } from \"./license/watermark\";\nexport { LicenseManager } from \"./licenseManager\";\nexport { MD5 } from \"./license/md5\";\nexport { WatermarkComp } from \"./license/watermark\";\nexport var EnterpriseCoreModule = {\n moduleName: ModuleNames.EnterpriseCoreModule,\n beans: [LicenseManager, MD5],\n agStackComponents: [\n { componentName: 'AgWatermark', componentClass: WatermarkComp }\n ]\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nimport { _, Autowired, Bean, BeanStub, ChangedPath, Constants, Events, PostConstruct, Optional, } from \"@ag-grid-community/core\";\nvar ClipboardService = /** @class */ (function (_super) {\n __extends(ClipboardService, _super);\n function ClipboardService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.navigatorApiFailed = false;\n return _this;\n }\n ClipboardService.prototype.init = function () {\n var _this = this;\n this.logger = this.loggerFactory.create('ClipboardService');\n if (this.rowModel.getType() === Constants.ROW_MODEL_TYPE_CLIENT_SIDE) {\n this.clientSideRowModel = this.rowModel;\n }\n this.ctrlsService.whenReady(function (p) {\n _this.gridCtrl = p.gridCtrl;\n });\n };\n ClipboardService.prototype.pasteFromClipboard = function () {\n var _this = this;\n this.logger.log('pasteFromClipboard');\n // Method 1 - native clipboard API, available in modern chrome browsers\n var allowNavigator = !this.gridOptionsWrapper.isSuppressClipboardApi();\n // Some browsers (Firefox) do not allow Web Applications to read from\n // the clipboard so verify if not only the ClipboardAPI is available,\n // but also if the `readText` method is public.\n if (allowNavigator && !this.navigatorApiFailed && navigator.clipboard && navigator.clipboard.readText) {\n navigator.clipboard.readText()\n .then(this.processClipboardData.bind(this))\n .catch(function (e) {\n _.doOnce(function () {\n console.warn(e);\n console.warn('AG Grid: Unable to use the Clipboard API (navigator.clipboard.readText()). ' +\n 'The reason why it could not be used has been logged in the previous line. ' +\n 'For this reason the grid has defaulted to using a workaround which doesn\\'t perform as well. ' +\n 'Either fix why Clipboard API is blocked, OR stop this message from appearing by setting grid ' +\n 'property suppressClipboardApi=true (which will default the grid to using the workaround rather than the API');\n }, 'clipboardApiError');\n _this.navigatorApiFailed = true;\n _this.pasteFromClipboardLegacy();\n });\n }\n else {\n this.pasteFromClipboardLegacy();\n }\n };\n ClipboardService.prototype.pasteFromClipboardLegacy = function () {\n var _this = this;\n // Method 2 - if modern API fails, the old school hack\n this.executeOnTempElement(function (textArea) { return textArea.focus({ preventScroll: true }); }, function (element) {\n var data = element.value;\n _this.processClipboardData(data);\n });\n };\n ClipboardService.prototype.processClipboardData = function (data) {\n var _this = this;\n if (data == null) {\n return;\n }\n var parsedData = _.stringToArray(data, this.gridOptionsWrapper.getClipboardDelimiter());\n var userFunc = this.gridOptionsWrapper.getProcessDataFromClipboardFunc();\n if (userFunc) {\n parsedData = userFunc({ data: parsedData });\n }\n if (parsedData == null) {\n return;\n }\n if (this.gridOptionsWrapper.isSuppressLastEmptyLineOnPaste()) {\n this.removeLastLineIfBlank(parsedData);\n }\n var pasteOperation = function (cellsToFlash, updatedRowNodes, focusedCell, changedPath) {\n var rangeActive = _this.rangeService && _this.rangeService.isMoreThanOneCell();\n var pasteIntoRange = rangeActive && !_this.hasOnlyOneValueToPaste(parsedData);\n if (pasteIntoRange) {\n _this.pasteIntoActiveRange(parsedData, cellsToFlash, updatedRowNodes, changedPath);\n }\n else {\n _this.pasteStartingFromFocusedCell(parsedData, cellsToFlash, updatedRowNodes, focusedCell, changedPath);\n }\n };\n this.doPasteOperation(pasteOperation);\n };\n // common code to paste operations, e.g. paste to cell, paste to range, and copy range down\n ClipboardService.prototype.doPasteOperation = function (pasteOperationFunc) {\n var api = this.gridOptionsWrapper.getApi();\n var columnApi = this.gridOptionsWrapper.getColumnApi();\n var source = 'clipboard';\n this.eventService.dispatchEvent({\n type: Events.EVENT_PASTE_START,\n api: api,\n columnApi: columnApi,\n source: source\n });\n var changedPath;\n if (this.clientSideRowModel) {\n var onlyChangedColumns = this.gridOptionsWrapper.isAggregateOnlyChangedColumns();\n changedPath = new ChangedPath(onlyChangedColumns, this.clientSideRowModel.getRootNode());\n }\n var cellsToFlash = {};\n var updatedRowNodes = [];\n var focusedCell = this.focusService.getFocusedCell();\n pasteOperationFunc(cellsToFlash, updatedRowNodes, focusedCell, changedPath);\n if (changedPath) {\n this.clientSideRowModel.doAggregate(changedPath);\n }\n this.rowRenderer.refreshCells();\n this.dispatchFlashCells(cellsToFlash);\n this.fireRowChanged(updatedRowNodes);\n // if using the clipboard hack with a temp element, then the focus has been lost,\n // so need to put it back. otherwise paste operation loosed focus on cell and keyboard\n // navigation stops.\n if (focusedCell) {\n this.focusService.setFocusedCell(focusedCell.rowIndex, focusedCell.column, focusedCell.rowPinned, true);\n }\n this.eventService.dispatchEvent({\n type: Events.EVENT_PASTE_END,\n api: api,\n columnApi: columnApi,\n source: source\n });\n };\n ClipboardService.prototype.pasteIntoActiveRange = function (clipboardData, cellsToFlash, updatedRowNodes, changedPath) {\n var _this = this;\n // true if clipboard data can be evenly pasted into range, otherwise false\n var abortRepeatingPasteIntoRows = this.getRangeSize() % clipboardData.length != 0;\n var indexOffset = 0;\n var dataRowIndex = 0;\n var rowCallback = function (currentRow, rowNode, columns, index) {\n var atEndOfClipboardData = index - indexOffset >= clipboardData.length;\n if (atEndOfClipboardData) {\n if (abortRepeatingPasteIntoRows) {\n return;\n }\n // increment offset and reset data index to repeat paste of data\n indexOffset += dataRowIndex;\n dataRowIndex = 0;\n }\n var currentRowData = clipboardData[index - indexOffset];\n // otherwise we are not the first row, so copy\n updatedRowNodes.push(rowNode);\n var processCellFromClipboardFunc = _this.gridOptionsWrapper.getProcessCellFromClipboardFunc();\n columns.forEach(function (column, idx) {\n if (!column.isCellEditable(rowNode) || column.isSuppressPaste(rowNode)) {\n return;\n }\n // repeat data for columns we don't have data for - happens when to range is bigger than copied data range\n if (idx >= currentRowData.length) {\n idx = idx % currentRowData.length;\n }\n var newValue = _this.processCell(rowNode, column, currentRowData[idx], Constants.EXPORT_TYPE_DRAG_COPY, processCellFromClipboardFunc);\n rowNode.setDataValue(column, newValue, Constants.SOURCE_PASTE);\n if (changedPath) {\n changedPath.addParentNode(rowNode.parent, [column]);\n }\n var cellId = _this.cellPositionUtils.createIdFromValues(currentRow.rowIndex, column, currentRow.rowPinned);\n cellsToFlash[cellId] = true;\n });\n dataRowIndex++;\n };\n this.iterateActiveRanges(false, rowCallback);\n };\n ClipboardService.prototype.pasteStartingFromFocusedCell = function (parsedData, cellsToFlash, updatedRowNodes, focusedCell, changedPath) {\n if (!focusedCell) {\n return;\n }\n var currentRow = { rowIndex: focusedCell.rowIndex, rowPinned: focusedCell.rowPinned };\n var columnsToPasteInto = this.columnModel.getDisplayedColumnsStartingAt(focusedCell.column);\n if (this.isPasteSingleValueIntoRange(parsedData)) {\n this.pasteSingleValueIntoRange(parsedData, updatedRowNodes, cellsToFlash, changedPath);\n }\n else {\n this.pasteMultipleValues(parsedData, currentRow, updatedRowNodes, columnsToPasteInto, cellsToFlash, Constants.EXPORT_TYPE_CLIPBOARD, changedPath);\n }\n };\n // if range is active, and only one cell, then we paste this cell into all cells in the active range.\n ClipboardService.prototype.isPasteSingleValueIntoRange = function (parsedData) {\n return this.hasOnlyOneValueToPaste(parsedData)\n && this.rangeService != null\n && !this.rangeService.isEmpty();\n };\n ClipboardService.prototype.pasteSingleValueIntoRange = function (parsedData, updatedRowNodes, cellsToFlash, changedPath) {\n var _this = this;\n var value = parsedData[0][0];\n var rowCallback = function (currentRow, rowNode, columns) {\n updatedRowNodes.push(rowNode);\n columns.forEach(function (column) {\n return _this.updateCellValue(rowNode, column, value, cellsToFlash, Constants.EXPORT_TYPE_CLIPBOARD, changedPath);\n });\n };\n this.iterateActiveRanges(false, rowCallback);\n };\n ClipboardService.prototype.hasOnlyOneValueToPaste = function (parsedData) {\n return parsedData.length === 1 && parsedData[0].length === 1;\n };\n ClipboardService.prototype.copyRangeDown = function () {\n var _this = this;\n if (!this.rangeService || this.rangeService.isEmpty()) {\n return;\n }\n var firstRowValues = [];\n var pasteOperation = function (cellsToFlash, updatedRowNodes, focusedCell, changedPath) {\n var processCellForClipboardFunc = _this.gridOptionsWrapper.getProcessCellForClipboardFunc();\n var processCellFromClipboardFunc = _this.gridOptionsWrapper.getProcessCellFromClipboardFunc();\n var rowCallback = function (currentRow, rowNode, columns) {\n // take reference of first row, this is the one we will be using to copy from\n if (!firstRowValues.length) {\n // two reasons for looping through columns\n columns.forEach(function (column) {\n // get the initial values to copy down\n var value = _this.processCell(rowNode, column, _this.valueService.getValue(column, rowNode), Constants.EXPORT_TYPE_DRAG_COPY, processCellForClipboardFunc);\n firstRowValues.push(value);\n });\n }\n else {\n // otherwise we are not the first row, so copy\n updatedRowNodes.push(rowNode);\n columns.forEach(function (column, index) {\n if (!column.isCellEditable(rowNode) || column.isSuppressPaste(rowNode)) {\n return;\n }\n var firstRowValue = _this.processCell(rowNode, column, firstRowValues[index], Constants.EXPORT_TYPE_DRAG_COPY, processCellFromClipboardFunc);\n rowNode.setDataValue(column, firstRowValue, Constants.SOURCE_PASTE);\n if (changedPath) {\n changedPath.addParentNode(rowNode.parent, [column]);\n }\n var cellId = _this.cellPositionUtils.createIdFromValues(currentRow.rowIndex, column, currentRow.rowPinned);\n cellsToFlash[cellId] = true;\n });\n }\n };\n _this.iterateActiveRanges(true, rowCallback);\n };\n this.doPasteOperation(pasteOperation);\n };\n ClipboardService.prototype.removeLastLineIfBlank = function (parsedData) {\n // remove last row if empty, excel puts empty last row in\n var lastLine = _.last(parsedData);\n var lastLineIsBlank = lastLine && lastLine.length === 1 && lastLine[0] === '';\n if (lastLineIsBlank) {\n _.removeFromArray(parsedData, lastLine);\n }\n };\n ClipboardService.prototype.fireRowChanged = function (rowNodes) {\n var _this = this;\n if (!this.gridOptionsWrapper.isFullRowEdit()) {\n return;\n }\n rowNodes.forEach(function (rowNode) {\n var event = {\n type: Events.EVENT_ROW_VALUE_CHANGED,\n node: rowNode,\n data: rowNode.data,\n rowIndex: rowNode.rowIndex,\n rowPinned: rowNode.rowPinned,\n context: _this.gridOptionsWrapper.getContext(),\n api: _this.gridOptionsWrapper.getApi(),\n columnApi: _this.gridOptionsWrapper.getColumnApi()\n };\n _this.eventService.dispatchEvent(event);\n });\n };\n ClipboardService.prototype.pasteMultipleValues = function (clipboardGridData, currentRow, updatedRowNodes, columnsToPasteInto, cellsToFlash, type, changedPath) {\n var _this = this;\n var rowPointer = currentRow;\n // if doing CSRM and NOT tree data, then it means groups are aggregates, which are read only,\n // so we should skip them when doing paste operations.\n var skipGroupRows = this.clientSideRowModel != null && !this.gridOptionsWrapper.isTreeData();\n var getNextGoodRowNode = function () {\n while (true) {\n if (!rowPointer) {\n return null;\n }\n var res = _this.rowPositionUtils.getRowNode(rowPointer);\n // move to next row down for next set of values\n rowPointer = _this.cellNavigationService.getRowBelow({ rowPinned: rowPointer.rowPinned, rowIndex: rowPointer.rowIndex });\n // if no more rows, return null\n if (res == null) {\n return null;\n }\n // skip details rows and footer rows, never paste into them as they don't hold data\n var skipRow = res.detail || res.footer || (skipGroupRows && res.group);\n // skipping row means we go into the next iteration of the while loop\n if (!skipRow) {\n return res;\n }\n }\n };\n clipboardGridData.forEach(function (clipboardRowData) {\n var rowNode = getNextGoodRowNode();\n // if we have come to end of rows in grid, then skip\n if (!rowNode) {\n return;\n }\n clipboardRowData.forEach(function (value, index) {\n return _this.updateCellValue(rowNode, columnsToPasteInto[index], value, cellsToFlash, type, changedPath);\n });\n updatedRowNodes.push(rowNode);\n });\n };\n ClipboardService.prototype.updateCellValue = function (rowNode, column, value, cellsToFlash, type, changedPath) {\n if (!rowNode ||\n !column ||\n !column.isCellEditable(rowNode) ||\n column.isSuppressPaste(rowNode)) {\n return;\n }\n var processedValue = this.processCell(rowNode, column, value, type, this.gridOptionsWrapper.getProcessCellFromClipboardFunc());\n rowNode.setDataValue(column, processedValue, Constants.SOURCE_PASTE);\n var cellId = this.cellPositionUtils.createIdFromValues(rowNode.rowIndex, column, rowNode.rowPinned);\n cellsToFlash[cellId] = true;\n if (changedPath) {\n changedPath.addParentNode(rowNode.parent, [column]);\n }\n };\n ClipboardService.prototype.copyToClipboard = function (params) {\n if (params === void 0) { params = {}; }\n var includeHeaders = params.includeHeaders, includeGroupHeaders = params.includeGroupHeaders;\n this.logger.log(\"copyToClipboard: includeHeaders = \" + includeHeaders);\n // don't override 'includeHeaders' if it has been explicitly set to 'false'\n if (includeHeaders == null) {\n includeHeaders = this.gridOptionsWrapper.isCopyHeadersToClipboard();\n }\n if (includeGroupHeaders == null) {\n includeGroupHeaders = this.gridOptionsWrapper.isCopyGroupHeadersToClipboard();\n }\n var copyParams = { includeHeaders: includeHeaders, includeGroupHeaders: includeGroupHeaders };\n var selectedRowsToCopy = !this.selectionService.isEmpty()\n && !this.gridOptionsWrapper.isSuppressCopyRowsToClipboard();\n // default is copy range if exists, otherwise rows\n if (this.rangeService && this.rangeService.isMoreThanOneCell()) {\n this.copySelectedRangeToClipboard(copyParams);\n }\n else if (selectedRowsToCopy) {\n // otherwise copy selected rows if they exist\n this.copySelectedRowsToClipboard(copyParams);\n }\n else if (this.focusService.isAnyCellFocused()) {\n // if there is a focused cell, copy this\n this.copyFocusedCellToClipboard(copyParams);\n }\n else {\n // lastly if no focused cell, try range again. this can happen\n // if use has cellSelection turned off (so no focused cell)\n // but has a cell clicked, so there exists a cell range\n // of exactly one cell (hence the first 'if' above didn't\n // get executed).\n this.copySelectedRangeToClipboard(copyParams);\n }\n };\n ClipboardService.prototype.iterateActiveRanges = function (onlyFirst, rowCallback, columnCallback) {\n var _this = this;\n if (!this.rangeService || this.rangeService.isEmpty()) {\n return;\n }\n var cellRanges = this.rangeService.getCellRanges();\n if (onlyFirst) {\n this.iterateActiveRange(cellRanges[0], rowCallback, columnCallback, true);\n }\n else {\n cellRanges.forEach(function (range, idx) { return _this.iterateActiveRange(range, rowCallback, columnCallback, idx === cellRanges.length - 1); });\n }\n };\n ClipboardService.prototype.iterateActiveRange = function (range, rowCallback, columnCallback, isLastRange) {\n if (!this.rangeService) {\n return;\n }\n var currentRow = this.rangeService.getRangeStartRow(range);\n var lastRow = this.rangeService.getRangeEndRow(range);\n if (columnCallback && range.columns) {\n columnCallback(range.columns);\n }\n var rangeIndex = 0;\n var isLastRow = false;\n // the currentRow could be missing if the user sets the active range manually, and sets a range\n // that is outside of the grid (eg. sets range rows 0 to 100, but grid has only 20 rows).\n while (!isLastRow && currentRow != null) {\n var rowNode = this.rowPositionUtils.getRowNode(currentRow);\n isLastRow = this.rowPositionUtils.sameRow(currentRow, lastRow);\n rowCallback(currentRow, rowNode, range.columns, rangeIndex++, isLastRow && isLastRange);\n currentRow = this.cellNavigationService.getRowBelow(currentRow);\n }\n };\n ClipboardService.prototype.copySelectedRangeToClipboard = function (params) {\n if (params === void 0) { params = {}; }\n if (!this.rangeService || this.rangeService.isEmpty()) {\n return;\n }\n var allRangesMerge = this.rangeService.areAllRangesAbleToMerge();\n var _a = allRangesMerge ? this.buildDataFromMergedRanges(params) : this.buildDataFromRanges(params), data = _a.data, cellsToFlash = _a.cellsToFlash;\n this.copyDataToClipboard(data);\n this.dispatchFlashCells(cellsToFlash);\n };\n ClipboardService.prototype.buildDataFromMergedRanges = function (params) {\n var _this = this;\n var columnsSet = new Set();\n var ranges = this.rangeService.getCellRanges();\n var allRowPositions = [];\n var allCellsToFlash = {};\n ranges.forEach(function (range) {\n range.columns.forEach(function (col) { return columnsSet.add(col); });\n var _a = _this.getRangeRowPositionsAndCellsToFlash(range), rowPositions = _a.rowPositions, cellsToFlash = _a.cellsToFlash;\n allRowPositions.push.apply(allRowPositions, __spread(rowPositions));\n Object.assign(allCellsToFlash, cellsToFlash);\n });\n var allColumns = this.columnModel.getAllDisplayedColumns();\n var exportedColumns = Array.from(columnsSet);\n exportedColumns.sort(function (a, b) {\n var posA = allColumns.indexOf(a);\n var posB = allColumns.indexOf(b);\n return posA - posB;\n });\n var data = this.buildExportParams({\n columns: exportedColumns,\n rowPositions: allRowPositions,\n includeHeaders: params.includeHeaders,\n includeGroupHeaders: params.includeGroupHeaders,\n });\n return { data: data, cellsToFlash: allCellsToFlash };\n };\n ClipboardService.prototype.buildDataFromRanges = function (params) {\n var _this = this;\n var ranges = this.rangeService.getCellRanges();\n var data = [];\n var allCellsToFlash = {};\n ranges.forEach(function (range) {\n var _a = _this.getRangeRowPositionsAndCellsToFlash(range), rowPositions = _a.rowPositions, cellsToFlash = _a.cellsToFlash;\n Object.assign(allCellsToFlash, cellsToFlash);\n data.push(_this.buildExportParams({\n columns: range.columns,\n rowPositions: rowPositions,\n includeHeaders: params.includeHeaders,\n includeGroupHeaders: params.includeGroupHeaders,\n }));\n });\n return { data: data.join('\\n'), cellsToFlash: allCellsToFlash };\n };\n ClipboardService.prototype.getRangeRowPositionsAndCellsToFlash = function (range) {\n var _this = this;\n var rowPositions = [];\n var cellsToFlash = {};\n var startRow = this.rangeService.getRangeStartRow(range);\n var lastRow = this.rangeService.getRangeEndRow(range);\n var node = startRow;\n while (node) {\n rowPositions.push(node);\n range.columns.forEach(function (column) {\n var cellId = _this.cellPositionUtils.createIdFromValues(node.rowIndex, column, node.rowPinned);\n cellsToFlash[cellId] = true;\n });\n if (this.rowPositionUtils.sameRow(node, lastRow)) {\n break;\n }\n node = this.cellNavigationService.getRowBelow(node);\n }\n return { rowPositions: rowPositions, cellsToFlash: cellsToFlash };\n };\n ClipboardService.prototype.copyFocusedCellToClipboard = function (params) {\n var _a;\n if (params === void 0) { params = {}; }\n var focusedCell = this.focusService.getFocusedCell();\n if (focusedCell == null) {\n return;\n }\n var cellId = this.cellPositionUtils.createId(focusedCell);\n var currentRow = { rowPinned: focusedCell.rowPinned, rowIndex: focusedCell.rowIndex };\n var column = focusedCell.column;\n var data = this.buildExportParams({\n columns: [column],\n rowPositions: [currentRow],\n includeHeaders: params.includeHeaders,\n includeGroupHeaders: params.includeGroupHeaders\n });\n this.copyDataToClipboard(data);\n this.dispatchFlashCells((_a = {}, _a[cellId] = true, _a));\n };\n ClipboardService.prototype.copySelectedRowsToClipboard = function (params) {\n if (params === void 0) { params = {}; }\n var columnKeys = params.columnKeys, includeHeaders = params.includeHeaders, includeGroupHeaders = params.includeGroupHeaders;\n var data = this.buildExportParams({\n columns: columnKeys,\n includeHeaders: includeHeaders,\n includeGroupHeaders: includeGroupHeaders\n });\n this.copyDataToClipboard(data);\n };\n ClipboardService.prototype.buildExportParams = function (params) {\n var columns = params.columns, rowPositions = params.rowPositions, _a = params.includeHeaders, includeHeaders = _a === void 0 ? false : _a, _b = params.includeGroupHeaders, includeGroupHeaders = _b === void 0 ? false : _b;\n var exportParams = {\n columnKeys: columns,\n rowNodes: rowPositions,\n skipColumnHeaders: !includeHeaders,\n skipColumnGroupHeaders: !includeGroupHeaders,\n suppressQuotes: true,\n columnSeparator: this.gridOptionsWrapper.getClipboardDelimiter(),\n onlySelected: !rowPositions,\n processCellCallback: this.gridOptionsWrapper.getProcessCellForClipboardFunc(),\n processRowGroupCallback: function (params) { return params.node.key; },\n processHeaderCallback: this.gridOptionsWrapper.getProcessHeaderForClipboardFunc(),\n processGroupHeaderCallback: this.gridOptionsWrapper.getProcessGroupHeaderForClipboardFunc()\n };\n return this.csvCreator.getDataAsCsv(exportParams);\n };\n ClipboardService.prototype.dispatchFlashCells = function (cellsToFlash) {\n var _this = this;\n window.setTimeout(function () {\n var event = {\n type: Events.EVENT_FLASH_CELLS,\n cells: cellsToFlash,\n api: _this.gridApi,\n columnApi: _this.columnApi\n };\n _this.eventService.dispatchEvent(event);\n }, 0);\n };\n ClipboardService.prototype.processCell = function (rowNode, column, value, type, func) {\n if (func) {\n var params = {\n column: column,\n node: rowNode,\n value: value,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext(),\n type: type,\n };\n return func(params);\n }\n return value;\n };\n ClipboardService.prototype.copyDataToClipboard = function (data) {\n var _this = this;\n var userProvidedFunc = this.gridOptionsWrapper.getSendToClipboardFunc();\n // method 1 - user provided func\n if (userProvidedFunc) {\n userProvidedFunc({ data: data });\n return;\n }\n // method 2 - native clipboard API, available in modern chrome browsers\n var allowNavigator = !this.gridOptionsWrapper.isSuppressClipboardApi();\n if (allowNavigator && navigator.clipboard) {\n navigator.clipboard.writeText(data).catch(function (e) {\n _.doOnce(function () {\n console.warn(e);\n console.warn('AG Grid: Unable to use the Clipboard API (navigator.clipboard.writeText()). ' +\n 'The reason why it could not be used has been logged in the previous line. ' +\n 'For this reason the grid has defaulted to using a workaround which doesn\\'t perform as well. ' +\n 'Either fix why Clipboard API is blocked, OR stop this message from appearing by setting grid ' +\n 'property suppressClipboardApi=true (which will default the grid to using the workaround rather than the API.');\n }, 'clipboardApiError');\n _this.copyDataToClipboardLegacy(data);\n });\n return;\n }\n this.copyDataToClipboardLegacy(data);\n };\n ClipboardService.prototype.copyDataToClipboardLegacy = function (data) {\n var _this = this;\n // method 3 - if all else fails, the old school hack\n this.executeOnTempElement(function (element) {\n var eDocument = _this.gridOptionsWrapper.getDocument();\n var focusedElementBefore = eDocument.activeElement;\n element.value = data || ' '; // has to be non-empty value or execCommand will not do anything\n element.select();\n element.focus({ preventScroll: true });\n var result = eDocument.execCommand('copy');\n if (!result) {\n console.warn('AG Grid: Browser did not allow document.execCommand(\\'copy\\'). Ensure ' +\n 'api.copySelectedRowsToClipboard() is invoked via a user event, i.e. button click, otherwise ' +\n 'the browser will prevent it for security reasons.');\n }\n if (focusedElementBefore != null && focusedElementBefore.focus != null) {\n focusedElementBefore.focus({ preventScroll: true });\n }\n });\n };\n ClipboardService.prototype.executeOnTempElement = function (callbackNow, callbackAfter) {\n var eDoc = this.gridOptionsWrapper.getDocument();\n var eTempInput = eDoc.createElement('textarea');\n eTempInput.style.width = '1px';\n eTempInput.style.height = '1px';\n // removing items from the DOM causes the document element to scroll to the\n // position where the element was positioned. Here we set scrollTop / scrollLeft\n // to prevent the document element from scrolling when we remove it from the DOM.\n eTempInput.style.top = eDoc.documentElement.scrollTop + 'px';\n eTempInput.style.left = eDoc.documentElement.scrollLeft + 'px';\n eTempInput.style.position = 'absolute';\n eTempInput.style.opacity = '0';\n var guiRoot = this.gridCtrl.getGui();\n guiRoot.appendChild(eTempInput);\n try {\n callbackNow(eTempInput);\n }\n catch (err) {\n console.warn('AG Grid: Browser does not support document.execCommand(\\'copy\\') for clipboard operations');\n }\n //It needs 100 otherwise OS X seemed to not always be able to paste... Go figure...\n if (callbackAfter) {\n window.setTimeout(function () {\n callbackAfter(eTempInput);\n guiRoot.removeChild(eTempInput);\n }, 100);\n }\n else {\n guiRoot.removeChild(eTempInput);\n }\n };\n ClipboardService.prototype.getRangeSize = function () {\n var ranges = this.rangeService.getCellRanges();\n var startRangeIndex = 0;\n var endRangeIndex = 0;\n if (ranges.length > 0) {\n startRangeIndex = this.rangeService.getRangeStartRow(ranges[0]).rowIndex;\n endRangeIndex = this.rangeService.getRangeEndRow(ranges[0]).rowIndex;\n }\n return startRangeIndex - endRangeIndex + 1;\n };\n __decorate([\n Autowired('csvCreator')\n ], ClipboardService.prototype, \"csvCreator\", void 0);\n __decorate([\n Autowired('loggerFactory')\n ], ClipboardService.prototype, \"loggerFactory\", void 0);\n __decorate([\n Autowired('selectionService')\n ], ClipboardService.prototype, \"selectionService\", void 0);\n __decorate([\n Optional('rangeService')\n ], ClipboardService.prototype, \"rangeService\", void 0);\n __decorate([\n Autowired('rowModel')\n ], ClipboardService.prototype, \"rowModel\", void 0);\n __decorate([\n Autowired('ctrlsService')\n ], ClipboardService.prototype, \"ctrlsService\", void 0);\n __decorate([\n Autowired('valueService')\n ], ClipboardService.prototype, \"valueService\", void 0);\n __decorate([\n Autowired('focusService')\n ], ClipboardService.prototype, \"focusService\", void 0);\n __decorate([\n Autowired('rowRenderer')\n ], ClipboardService.prototype, \"rowRenderer\", void 0);\n __decorate([\n Autowired('columnModel')\n ], ClipboardService.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('cellNavigationService')\n ], ClipboardService.prototype, \"cellNavigationService\", void 0);\n __decorate([\n Autowired('columnApi')\n ], ClipboardService.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], ClipboardService.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('cellPositionUtils')\n ], ClipboardService.prototype, \"cellPositionUtils\", void 0);\n __decorate([\n Autowired('rowPositionUtils')\n ], ClipboardService.prototype, \"rowPositionUtils\", void 0);\n __decorate([\n PostConstruct\n ], ClipboardService.prototype, \"init\", null);\n ClipboardService = __decorate([\n Bean('clipboardService')\n ], ClipboardService);\n return ClipboardService;\n}(BeanStub));\nexport { ClipboardService };\n","import { ModuleNames } from \"@ag-grid-community/core\";\nimport { EnterpriseCoreModule } from \"@ag-grid-enterprise/core\";\nimport { CsvExportModule } from \"@ag-grid-community/csv-export\";\nimport { ClipboardService } from \"./clipboard/clipboardService\";\nexport var ClipboardModule = {\n moduleName: ModuleNames.ClipboardModule,\n beans: [ClipboardService],\n dependantModules: [\n EnterpriseCoreModule,\n CsvExportModule\n ]\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { _, Autowired, Events, RefSelector, KeyCode, PostConstruct, Component } from \"@ag-grid-community/core\";\nexport var ExpandState;\n(function (ExpandState) {\n ExpandState[ExpandState[\"EXPANDED\"] = 0] = \"EXPANDED\";\n ExpandState[ExpandState[\"COLLAPSED\"] = 1] = \"COLLAPSED\";\n ExpandState[ExpandState[\"INDETERMINATE\"] = 2] = \"INDETERMINATE\";\n})(ExpandState || (ExpandState = {}));\nvar PrimaryColsHeaderPanel = /** @class */ (function (_super) {\n __extends(PrimaryColsHeaderPanel, _super);\n function PrimaryColsHeaderPanel() {\n return _super.call(this, PrimaryColsHeaderPanel.TEMPLATE) || this;\n }\n PrimaryColsHeaderPanel.prototype.postConstruct = function () {\n var _this = this;\n this.createExpandIcons();\n this.addManagedListener(this.eExpand, 'click', this.onExpandClicked.bind(this));\n this.addManagedListener(this.eExpand, 'keydown', function (e) {\n if (e.key === KeyCode.SPACE) {\n _this.onExpandClicked();\n }\n });\n this.addManagedListener(this.eSelect.getInputElement(), 'click', this.onSelectClicked.bind(this));\n this.eFilterTextField.onValueChange(function () { return _this.onFilterTextChanged(); });\n this.addManagedListener(this.eFilterTextField.getInputElement(), 'keypress', this.onMiniFilterKeyPress.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.showOrHideOptions.bind(this));\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n this.eSelect.setInputAriaLabel(translate('ariaColumnSelectAll', 'Toggle Select All Columns'));\n this.eFilterTextField.setInputAriaLabel(translate('ariaFilterColumnsInput', 'Filter Columns Input'));\n };\n PrimaryColsHeaderPanel.prototype.init = function (params) {\n this.params = params;\n if (this.columnModel.isReady()) {\n this.showOrHideOptions();\n }\n };\n PrimaryColsHeaderPanel.prototype.createExpandIcons = function () {\n this.eExpand.appendChild((this.eExpandChecked = _.createIconNoSpan('columnSelectOpen', this.gridOptionsWrapper)));\n this.eExpand.appendChild((this.eExpandUnchecked = _.createIconNoSpan('columnSelectClosed', this.gridOptionsWrapper)));\n this.eExpand.appendChild((this.eExpandIndeterminate = _.createIconNoSpan('columnSelectIndeterminate', this.gridOptionsWrapper)));\n this.setExpandState(ExpandState.EXPANDED);\n };\n // we only show expand / collapse if we are showing columns\n PrimaryColsHeaderPanel.prototype.showOrHideOptions = function () {\n var showFilter = !this.params.suppressColumnFilter;\n var showSelect = !this.params.suppressColumnSelectAll;\n var showExpand = !this.params.suppressColumnExpandAll;\n var groupsPresent = this.columnModel.isPrimaryColumnGroupsPresent();\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n this.eFilterTextField.setInputPlaceholder(translate('searchOoo', 'Search...'));\n _.setDisplayed(this.eFilterTextField.getGui(), showFilter);\n _.setDisplayed(this.eSelect.getGui(), showSelect);\n _.setDisplayed(this.eExpand, showExpand && groupsPresent);\n };\n PrimaryColsHeaderPanel.prototype.onFilterTextChanged = function () {\n var _this = this;\n if (!this.onFilterTextChangedDebounced) {\n this.onFilterTextChangedDebounced = _.debounce(function () {\n var filterText = _this.eFilterTextField.getValue();\n _this.dispatchEvent({ type: \"filterChanged\", filterText: filterText });\n }, PrimaryColsHeaderPanel.DEBOUNCE_DELAY);\n }\n this.onFilterTextChangedDebounced();\n };\n PrimaryColsHeaderPanel.prototype.onMiniFilterKeyPress = function (e) {\n var _this = this;\n if (e.key === KeyCode.ENTER) {\n // we need to add a delay that corresponds to the filter text debounce delay to ensure\n // the text filtering has happened, otherwise all columns will be deselected\n setTimeout(function () { return _this.onSelectClicked(); }, PrimaryColsHeaderPanel.DEBOUNCE_DELAY);\n }\n };\n PrimaryColsHeaderPanel.prototype.onSelectClicked = function () {\n this.dispatchEvent({ type: this.selectState ? 'unselectAll' : 'selectAll' });\n };\n PrimaryColsHeaderPanel.prototype.onExpandClicked = function () {\n this.dispatchEvent({ type: this.expandState === ExpandState.EXPANDED ? 'collapseAll' : 'expandAll' });\n };\n PrimaryColsHeaderPanel.prototype.setExpandState = function (state) {\n this.expandState = state;\n _.setDisplayed(this.eExpandChecked, this.expandState === ExpandState.EXPANDED);\n _.setDisplayed(this.eExpandUnchecked, this.expandState === ExpandState.COLLAPSED);\n _.setDisplayed(this.eExpandIndeterminate, this.expandState === ExpandState.INDETERMINATE);\n };\n PrimaryColsHeaderPanel.prototype.setSelectionState = function (state) {\n this.selectState = state;\n this.eSelect.setValue(this.selectState);\n };\n PrimaryColsHeaderPanel.DEBOUNCE_DELAY = 300;\n PrimaryColsHeaderPanel.TEMPLATE = \"
    \\n
    \\n \\n \\n
    \";\n __decorate([\n Autowired('columnModel')\n ], PrimaryColsHeaderPanel.prototype, \"columnModel\", void 0);\n __decorate([\n RefSelector('eExpand')\n ], PrimaryColsHeaderPanel.prototype, \"eExpand\", void 0);\n __decorate([\n RefSelector('eSelect')\n ], PrimaryColsHeaderPanel.prototype, \"eSelect\", void 0);\n __decorate([\n RefSelector('eFilterTextField')\n ], PrimaryColsHeaderPanel.prototype, \"eFilterTextField\", void 0);\n __decorate([\n PostConstruct\n ], PrimaryColsHeaderPanel.prototype, \"postConstruct\", null);\n return PrimaryColsHeaderPanel;\n}(Component));\nexport { PrimaryColsHeaderPanel };\n","import { EventService } from \"@ag-grid-community/core\";\nvar ColumnModelItem = /** @class */ (function () {\n function ColumnModelItem(displayName, columnOrGroup, dept, group, expanded) {\n if (group === void 0) { group = false; }\n this.eventService = new EventService();\n this.displayName = displayName;\n this.dept = dept;\n this.group = group;\n if (group) {\n this.columnGroup = columnOrGroup;\n this.expanded = expanded;\n this.children = [];\n }\n else {\n this.column = columnOrGroup;\n }\n }\n ColumnModelItem.prototype.isGroup = function () { return this.group; };\n ColumnModelItem.prototype.getDisplayName = function () { return this.displayName; };\n ColumnModelItem.prototype.getColumnGroup = function () { return this.columnGroup; };\n ColumnModelItem.prototype.getColumn = function () { return this.column; };\n ColumnModelItem.prototype.getDept = function () { return this.dept; };\n ColumnModelItem.prototype.isExpanded = function () { return !!this.expanded; };\n ColumnModelItem.prototype.getChildren = function () { return this.children; };\n ColumnModelItem.prototype.isPassesFilter = function () { return this.passesFilter; };\n ColumnModelItem.prototype.setExpanded = function (expanded) {\n if (expanded === this.expanded) {\n return;\n }\n this.expanded = expanded;\n this.eventService.dispatchEvent({ type: ColumnModelItem.EVENT_EXPANDED_CHANGED });\n };\n ColumnModelItem.prototype.setPassesFilter = function (passesFilter) {\n this.passesFilter = passesFilter;\n };\n ColumnModelItem.prototype.addEventListener = function (eventType, listener) {\n this.eventService.addEventListener(eventType, listener);\n };\n ColumnModelItem.prototype.removeEventListener = function (eventType, listener) {\n this.eventService.removeEventListener(eventType, listener);\n };\n ColumnModelItem.EVENT_EXPANDED_CHANGED = 'expandedChanged';\n return ColumnModelItem;\n}());\nexport { ColumnModelItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nimport { AgMenuItemComponent, AgMenuList, Autowired, Column, Component, PostConstruct, ProvidedColumnGroup, _ } from \"@ag-grid-community/core\";\nvar ToolPanelContextMenu = /** @class */ (function (_super) {\n __extends(ToolPanelContextMenu, _super);\n function ToolPanelContextMenu(column, mouseEvent, parentEl) {\n var _this = _super.call(this, /* html */ \"
    \") || this;\n _this.column = column;\n _this.mouseEvent = mouseEvent;\n _this.parentEl = parentEl;\n _this.displayName = null;\n return _this;\n }\n ToolPanelContextMenu.prototype.postConstruct = function () {\n this.initializeProperties(this.column);\n this.buildMenuItemMap();\n if (this.column instanceof Column) {\n this.displayName = this.columnModel.getDisplayNameForColumn(this.column, 'columnToolPanel');\n }\n else {\n this.displayName = this.columnModel.getDisplayNameForProvidedColumnGroup(null, this.column, 'columnToolPanel');\n }\n if (this.isActive()) {\n this.mouseEvent.preventDefault();\n this.displayContextMenu();\n }\n };\n ToolPanelContextMenu.prototype.initializeProperties = function (column) {\n if (column instanceof ProvidedColumnGroup) {\n this.columns = column.getLeafColumns();\n }\n else {\n this.columns = [column];\n }\n this.allowGrouping = this.columns.some(function (col) { return col.isPrimary() && col.isAllowRowGroup(); });\n this.allowValues = this.columns.some(function (col) { return col.isPrimary() && col.isAllowValue(); });\n this.allowPivoting = this.columnModel.isPivotMode() && this.columns.some(function (col) { return col.isPrimary() && col.isAllowPivot(); });\n };\n ToolPanelContextMenu.prototype.buildMenuItemMap = function () {\n var _this = this;\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n this.menuItemMap = new Map();\n this.menuItemMap.set('rowGroup', {\n allowedFunction: function (col) { return col.isPrimary() && col.isAllowRowGroup(); },\n activeFunction: function (col) { return col.isRowGroupActive(); },\n activateLabel: function () { return localeTextFunc('groupBy', 'Group by') + \" \" + _this.displayName; },\n deactivateLabel: function () { return localeTextFunc('ungroupBy', 'Un-Group by') + \" \" + _this.displayName; },\n activateFunction: function () {\n var groupedColumns = _this.columnModel.getRowGroupColumns();\n _this.columnModel.setRowGroupColumns(_this.addColumnsToList(groupedColumns), \"toolPanelUi\");\n },\n deActivateFunction: function () {\n var groupedColumns = _this.columnModel.getRowGroupColumns();\n _this.columnModel.setRowGroupColumns(_this.removeColumnsFromList(groupedColumns), \"toolPanelUi\");\n },\n addIcon: 'menuAddRowGroup',\n removeIcon: 'menuRemoveRowGroup'\n });\n this.menuItemMap.set('value', {\n allowedFunction: function (col) { return col.isPrimary() && col.isAllowValue(); },\n activeFunction: function (col) { return col.isValueActive(); },\n activateLabel: function () { return localeTextFunc('addToValues', \"Add \" + _this.displayName + \" to values\", [_this.displayName]); },\n deactivateLabel: function () { return localeTextFunc('removeFromValues', \"Remove \" + _this.displayName + \" from values\", [_this.displayName]); },\n activateFunction: function () {\n var valueColumns = _this.columnModel.getValueColumns();\n _this.columnModel.setValueColumns(_this.addColumnsToList(valueColumns), \"toolPanelUi\");\n },\n deActivateFunction: function () {\n var valueColumns = _this.columnModel.getValueColumns();\n _this.columnModel.setValueColumns(_this.removeColumnsFromList(valueColumns), \"toolPanelUi\");\n },\n addIcon: 'valuePanel',\n removeIcon: 'valuePanel'\n });\n this.menuItemMap.set('pivot', {\n allowedFunction: function (col) { return _this.columnModel.isPivotMode() && col.isPrimary() && col.isAllowPivot(); },\n activeFunction: function (col) { return col.isPivotActive(); },\n activateLabel: function () { return localeTextFunc('addToLabels', \"Add \" + _this.displayName + \" to labels\", [_this.displayName]); },\n deactivateLabel: function () { return localeTextFunc('removeFromLabels', \"Remove \" + _this.displayName + \" from labels\", [_this.displayName]); },\n activateFunction: function () {\n var pivotColumns = _this.columnModel.getPivotColumns();\n _this.columnModel.setPivotColumns(_this.addColumnsToList(pivotColumns), \"toolPanelUi\");\n },\n deActivateFunction: function () {\n var pivotColumns = _this.columnModel.getPivotColumns();\n _this.columnModel.setPivotColumns(_this.removeColumnsFromList(pivotColumns), \"toolPanelUi\");\n },\n addIcon: 'pivotPanel',\n removeIcon: 'pivotPanel'\n });\n };\n ToolPanelContextMenu.prototype.addColumnsToList = function (columnList) {\n return __spread(columnList).concat(this.columns.filter(function (col) { return columnList.indexOf(col) === -1; }));\n };\n ToolPanelContextMenu.prototype.removeColumnsFromList = function (columnList) {\n var _this = this;\n return columnList.filter(function (col) { return _this.columns.indexOf(col) === -1; });\n };\n ToolPanelContextMenu.prototype.displayContextMenu = function () {\n var _this = this;\n var eGui = this.getGui();\n var menuList = this.createBean(new AgMenuList());\n var menuItemsMapped = this.getMappedMenuItems();\n var hideFunc = function () { };\n eGui.appendChild(menuList.getGui());\n menuList.addMenuItems(menuItemsMapped);\n menuList.addManagedListener(menuList, AgMenuItemComponent.EVENT_MENU_ITEM_SELECTED, function () {\n _this.parentEl.focus();\n hideFunc();\n });\n var addPopupRes = this.popupService.addPopup({\n modal: true,\n eChild: eGui,\n closeOnEsc: true,\n afterGuiAttached: function () { return _this.focusService.focusInto(menuList.getGui()); },\n ariaLabel: 'Foo',\n closedCallback: function (e) {\n if (e instanceof KeyboardEvent) {\n _this.parentEl.focus();\n }\n _this.destroyBean(menuList);\n }\n });\n if (addPopupRes) {\n hideFunc = addPopupRes.hideFunc;\n }\n this.popupService.positionPopupUnderMouseEvent({\n type: 'columnContextMenu',\n mouseEvent: this.mouseEvent,\n ePopup: eGui\n });\n };\n ToolPanelContextMenu.prototype.isActive = function () {\n return this.allowGrouping || this.allowValues || this.allowPivoting;\n };\n ToolPanelContextMenu.prototype.getMappedMenuItems = function () {\n var e_1, _a;\n var ret = [];\n var _loop_1 = function (val) {\n var isInactive = this_1.columns.some(function (col) { return val.allowedFunction(col) && !val.activeFunction(col); });\n var isActive = this_1.columns.some(function (col) { return val.allowedFunction(col) && val.activeFunction(col); });\n if (isInactive) {\n ret.push({\n name: val.activateLabel(this_1.displayName),\n icon: _.createIconNoSpan(val.addIcon, this_1.gridOptionsWrapper, null),\n action: function () { return val.activateFunction(); }\n });\n }\n if (isActive) {\n ret.push({\n name: val.deactivateLabel(this_1.displayName),\n icon: _.createIconNoSpan(val.removeIcon, this_1.gridOptionsWrapper, null),\n action: function () { return val.deActivateFunction(); }\n });\n }\n };\n var this_1 = this;\n try {\n for (var _b = __values(this.menuItemMap.values()), _c = _b.next(); !_c.done; _c = _b.next()) {\n var val = _c.value;\n _loop_1(val);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return ret;\n };\n __decorate([\n Autowired('columnModel')\n ], ToolPanelContextMenu.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('popupService')\n ], ToolPanelContextMenu.prototype, \"popupService\", void 0);\n __decorate([\n Autowired('focusService')\n ], ToolPanelContextMenu.prototype, \"focusService\", void 0);\n __decorate([\n PostConstruct\n ], ToolPanelContextMenu.prototype, \"postConstruct\", null);\n return ToolPanelContextMenu;\n}(Component));\nexport { ToolPanelContextMenu };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { _, AgCheckbox, Autowired, Column, Component, CssClassApplier, DragSourceType, Events, KeyCode, PostConstruct, RefSelector, TouchListener } from \"@ag-grid-community/core\";\nimport { ColumnModelItem } from \"./columnModelItem\";\nimport { ToolPanelContextMenu } from \"./toolPanelContextMenu\";\nvar ToolPanelColumnGroupComp = /** @class */ (function (_super) {\n __extends(ToolPanelColumnGroupComp, _super);\n function ToolPanelColumnGroupComp(modelItem, allowDragging, eventType, focusWrapper) {\n var _this = _super.call(this) || this;\n _this.modelItem = modelItem;\n _this.allowDragging = allowDragging;\n _this.eventType = eventType;\n _this.focusWrapper = focusWrapper;\n _this.processingColumnStateChange = false;\n _this.modelItem = modelItem;\n _this.columnGroup = modelItem.getColumnGroup();\n _this.columnDept = modelItem.getDept();\n _this.allowDragging = allowDragging;\n return _this;\n }\n ToolPanelColumnGroupComp.prototype.init = function () {\n var _this = this;\n this.setTemplate(ToolPanelColumnGroupComp.TEMPLATE);\n this.eDragHandle = _.createIconNoSpan('columnDrag', this.gridOptionsWrapper);\n this.eDragHandle.classList.add('ag-drag-handle', 'ag-column-select-column-group-drag-handle');\n var checkboxGui = this.cbSelect.getGui();\n var checkboxInput = this.cbSelect.getInputElement();\n checkboxGui.insertAdjacentElement('afterend', this.eDragHandle);\n checkboxInput.setAttribute('tabindex', '-1');\n this.displayName = this.columnModel.getDisplayNameForProvidedColumnGroup(null, this.columnGroup, this.eventType);\n if (_.missing(this.displayName)) {\n this.displayName = '>>';\n }\n this.eLabel.innerHTML = this.displayName ? this.displayName : '';\n this.setupExpandContract();\n this.addCssClass('ag-column-select-indent-' + this.columnDept);\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, this.onColumnStateChanged.bind(this));\n this.addManagedListener(this.eLabel, 'click', this.onLabelClicked.bind(this));\n this.addManagedListener(this.cbSelect, AgCheckbox.EVENT_CHANGED, this.onCheckboxChanged.bind(this));\n this.addManagedListener(this.modelItem, ColumnModelItem.EVENT_EXPANDED_CHANGED, this.onExpandChanged.bind(this));\n this.addManagedListener(this.focusWrapper, 'keydown', this.handleKeyDown.bind(this));\n this.addManagedListener(this.focusWrapper, 'contextmenu', this.onContextMenu.bind(this));\n this.setOpenClosedIcons();\n this.setupDragging();\n this.onColumnStateChanged();\n this.addVisibilityListenersToAllChildren();\n this.refreshAriaExpanded();\n this.refreshAriaLabel();\n this.setupTooltip();\n var classes = CssClassApplier.getToolPanelClassesFromColDef(this.columnGroup.getColGroupDef(), this.gridOptionsWrapper, null, this.columnGroup);\n classes.forEach(function (c) { return _this.addOrRemoveCssClass(c, true); });\n };\n ToolPanelColumnGroupComp.prototype.getColumns = function () {\n return this.columnGroup.getLeafColumns();\n };\n ToolPanelColumnGroupComp.prototype.setupTooltip = function () {\n var _this = this;\n var colGroupDef = this.columnGroup.getColGroupDef();\n if (!colGroupDef) {\n return;\n }\n var refresh = function () {\n var newTooltipText = colGroupDef.headerTooltip;\n _this.setTooltip(newTooltipText);\n };\n refresh();\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, refresh);\n };\n ToolPanelColumnGroupComp.prototype.getTooltipParams = function () {\n var res = _super.prototype.getTooltipParams.call(this);\n res.location = 'columnToolPanelColumnGroup';\n return res;\n };\n ToolPanelColumnGroupComp.prototype.handleKeyDown = function (e) {\n switch (e.key) {\n case KeyCode.LEFT:\n e.preventDefault();\n this.modelItem.setExpanded(false);\n break;\n case KeyCode.RIGHT:\n e.preventDefault();\n this.modelItem.setExpanded(true);\n break;\n case KeyCode.SPACE:\n e.preventDefault();\n if (this.isSelectable()) {\n this.onSelectAllChanged(!this.isSelected());\n }\n break;\n }\n };\n ToolPanelColumnGroupComp.prototype.onContextMenu = function (e) {\n var _this = this;\n var _a = this, columnGroup = _a.columnGroup, gridOptionsWrapper = _a.gridOptionsWrapper;\n if (gridOptionsWrapper.isFunctionsReadOnly()) {\n return;\n }\n var contextMenu = this.createBean(new ToolPanelContextMenu(columnGroup, e, this.focusWrapper));\n this.addDestroyFunc(function () {\n if (contextMenu.isAlive()) {\n _this.destroyBean(contextMenu);\n }\n });\n };\n ToolPanelColumnGroupComp.prototype.addVisibilityListenersToAllChildren = function () {\n var _this = this;\n this.columnGroup.getLeafColumns().forEach(function (column) {\n _this.addManagedListener(column, Column.EVENT_VISIBLE_CHANGED, _this.onColumnStateChanged.bind(_this));\n _this.addManagedListener(column, Column.EVENT_VALUE_CHANGED, _this.onColumnStateChanged.bind(_this));\n _this.addManagedListener(column, Column.EVENT_PIVOT_CHANGED, _this.onColumnStateChanged.bind(_this));\n _this.addManagedListener(column, Column.EVENT_ROW_GROUP_CHANGED, _this.onColumnStateChanged.bind(_this));\n });\n };\n ToolPanelColumnGroupComp.prototype.setupDragging = function () {\n var _this = this;\n if (!this.allowDragging) {\n _.setDisplayed(this.eDragHandle, false);\n return;\n }\n var dragSource = {\n type: DragSourceType.ToolPanel,\n eElement: this.eDragHandle,\n dragItemName: this.displayName,\n getDragItem: function () { return _this.createDragItem(); },\n onDragStarted: function () {\n var event = {\n type: Events.EVENT_COLUMN_PANEL_ITEM_DRAG_START,\n column: _this.columnGroup\n };\n _this.eventService.dispatchEvent(event);\n },\n onDragStopped: function () {\n var event = {\n type: Events.EVENT_COLUMN_PANEL_ITEM_DRAG_END\n };\n _this.eventService.dispatchEvent(event);\n }\n };\n this.dragAndDropService.addDragSource(dragSource, true);\n this.addDestroyFunc(function () { return _this.dragAndDropService.removeDragSource(dragSource); });\n };\n ToolPanelColumnGroupComp.prototype.createDragItem = function () {\n var visibleState = {};\n this.columnGroup.getLeafColumns().forEach(function (col) {\n visibleState[col.getId()] = col.isVisible();\n });\n return {\n columns: this.columnGroup.getLeafColumns(),\n visibleState: visibleState\n };\n };\n ToolPanelColumnGroupComp.prototype.setupExpandContract = function () {\n this.eGroupClosedIcon.appendChild(_.createIcon('columnSelectClosed', this.gridOptionsWrapper, null));\n this.eGroupOpenedIcon.appendChild(_.createIcon('columnSelectOpen', this.gridOptionsWrapper, null));\n this.addManagedListener(this.eGroupClosedIcon, 'click', this.onExpandOrContractClicked.bind(this));\n this.addManagedListener(this.eGroupOpenedIcon, 'click', this.onExpandOrContractClicked.bind(this));\n var touchListener = new TouchListener(this.eColumnGroupIcons, true);\n this.addManagedListener(touchListener, TouchListener.EVENT_TAP, this.onExpandOrContractClicked.bind(this));\n this.addDestroyFunc(touchListener.destroy.bind(touchListener));\n };\n ToolPanelColumnGroupComp.prototype.onLabelClicked = function () {\n var nextState = !this.cbSelect.getValue();\n this.onChangeCommon(nextState);\n };\n ToolPanelColumnGroupComp.prototype.onCheckboxChanged = function (event) {\n this.onChangeCommon(event.selected);\n };\n ToolPanelColumnGroupComp.prototype.getVisibleLeafColumns = function () {\n var childColumns = [];\n var extractCols = function (children) {\n children.forEach(function (child) {\n if (!child.isPassesFilter()) {\n return;\n }\n if (child.isGroup()) {\n extractCols(child.getChildren());\n }\n else {\n childColumns.push(child.getColumn());\n }\n });\n };\n extractCols(this.modelItem.getChildren());\n return childColumns;\n };\n ToolPanelColumnGroupComp.prototype.onChangeCommon = function (nextState) {\n this.refreshAriaLabel();\n if (this.processingColumnStateChange) {\n return;\n }\n this.modelItemUtils.selectAllChildren(this.modelItem.getChildren(), nextState, this.eventType);\n };\n ToolPanelColumnGroupComp.prototype.refreshAriaLabel = function () {\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var columnLabel = translate('ariaColumnGroup', 'Column Group');\n var state = this.cbSelect.getValue() ? translate('ariaVisible', 'visible') : translate('ariaHidden', 'hidden');\n var visibilityLabel = translate('ariaToggleVisibility', 'Press SPACE to toggle visibility');\n _.setAriaLabel(this.focusWrapper, this.displayName + \" \" + columnLabel);\n this.cbSelect.setInputAriaLabel(visibilityLabel + \" (\" + state + \")\");\n _.setAriaDescribedBy(this.focusWrapper, this.cbSelect.getInputElement().id);\n };\n ToolPanelColumnGroupComp.prototype.onColumnStateChanged = function () {\n var selectedValue = this.workOutSelectedValue();\n var readOnlyValue = this.workOutReadOnlyValue();\n this.processingColumnStateChange = true;\n this.cbSelect.setValue(selectedValue);\n this.cbSelect.setReadOnly(readOnlyValue);\n this.addOrRemoveCssClass('ag-column-select-column-group-readonly', readOnlyValue);\n this.processingColumnStateChange = false;\n };\n ToolPanelColumnGroupComp.prototype.workOutSelectedValue = function () {\n var _this = this;\n var pivotMode = this.columnModel.isPivotMode();\n var visibleLeafColumns = this.getVisibleLeafColumns();\n var checkedCount = 0;\n var uncheckedCount = 0;\n visibleLeafColumns.forEach(function (column) {\n if (!pivotMode && column.getColDef().lockVisible) {\n return;\n }\n if (_this.isColumnChecked(column, pivotMode)) {\n checkedCount++;\n }\n else {\n uncheckedCount++;\n }\n });\n if (checkedCount > 0 && uncheckedCount > 0) {\n return undefined;\n }\n return checkedCount > 0;\n };\n ToolPanelColumnGroupComp.prototype.workOutReadOnlyValue = function () {\n var pivotMode = this.columnModel.isPivotMode();\n var colsThatCanAction = 0;\n this.columnGroup.getLeafColumns().forEach(function (col) {\n if (pivotMode) {\n if (col.isAnyFunctionAllowed()) {\n colsThatCanAction++;\n }\n }\n else {\n if (!col.getColDef().lockVisible) {\n colsThatCanAction++;\n }\n }\n });\n return colsThatCanAction === 0;\n };\n ToolPanelColumnGroupComp.prototype.isColumnChecked = function (column, pivotMode) {\n if (pivotMode) {\n var pivoted = column.isPivotActive();\n var grouped = column.isRowGroupActive();\n var aggregated = column.isValueActive();\n return pivoted || grouped || aggregated;\n }\n return column.isVisible();\n };\n ToolPanelColumnGroupComp.prototype.onExpandOrContractClicked = function () {\n var oldState = this.modelItem.isExpanded();\n this.modelItem.setExpanded(!oldState);\n };\n ToolPanelColumnGroupComp.prototype.onExpandChanged = function () {\n this.setOpenClosedIcons();\n this.refreshAriaExpanded();\n };\n ToolPanelColumnGroupComp.prototype.setOpenClosedIcons = function () {\n var folderOpen = this.modelItem.isExpanded();\n _.setDisplayed(this.eGroupClosedIcon, !folderOpen);\n _.setDisplayed(this.eGroupOpenedIcon, folderOpen);\n };\n ToolPanelColumnGroupComp.prototype.refreshAriaExpanded = function () {\n _.setAriaExpanded(this.focusWrapper, this.modelItem.isExpanded());\n };\n ToolPanelColumnGroupComp.prototype.getDisplayName = function () {\n return this.displayName;\n };\n ToolPanelColumnGroupComp.prototype.onSelectAllChanged = function (value) {\n var cbValue = this.cbSelect.getValue();\n var readOnly = this.cbSelect.isReadOnly();\n if (!readOnly && ((value && !cbValue) || (!value && cbValue))) {\n this.cbSelect.toggle();\n }\n };\n ToolPanelColumnGroupComp.prototype.isSelected = function () {\n return this.cbSelect.getValue();\n };\n ToolPanelColumnGroupComp.prototype.isSelectable = function () {\n return !this.cbSelect.isReadOnly();\n };\n ToolPanelColumnGroupComp.prototype.setSelected = function (selected) {\n this.cbSelect.setValue(selected, true);\n };\n ToolPanelColumnGroupComp.TEMPLATE = \"
    \\n \\n \\n \\n \\n \\n \\n
    \";\n __decorate([\n Autowired('columnModel')\n ], ToolPanelColumnGroupComp.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('dragAndDropService')\n ], ToolPanelColumnGroupComp.prototype, \"dragAndDropService\", void 0);\n __decorate([\n Autowired('modelItemUtils')\n ], ToolPanelColumnGroupComp.prototype, \"modelItemUtils\", void 0);\n __decorate([\n RefSelector('cbSelect')\n ], ToolPanelColumnGroupComp.prototype, \"cbSelect\", void 0);\n __decorate([\n RefSelector('eLabel')\n ], ToolPanelColumnGroupComp.prototype, \"eLabel\", void 0);\n __decorate([\n RefSelector('eGroupOpenedIcon')\n ], ToolPanelColumnGroupComp.prototype, \"eGroupOpenedIcon\", void 0);\n __decorate([\n RefSelector('eGroupClosedIcon')\n ], ToolPanelColumnGroupComp.prototype, \"eGroupClosedIcon\", void 0);\n __decorate([\n RefSelector('eColumnGroupIcons')\n ], ToolPanelColumnGroupComp.prototype, \"eColumnGroupIcons\", void 0);\n __decorate([\n PostConstruct\n ], ToolPanelColumnGroupComp.prototype, \"init\", null);\n return ToolPanelColumnGroupComp;\n}(Component));\nexport { ToolPanelColumnGroupComp };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { AutoScrollService, Autowired, BeanStub, DragAndDropService, DragSourceType, Events, ProvidedColumnGroup, PostConstruct, _ } from \"@ag-grid-community/core\";\nimport { ToolPanelColumnGroupComp } from \"./toolPanelColumnGroupComp\";\nvar PRIMARY_COLS_LIST_ITEM_HOVERED = 'ag-list-item-hovered';\nvar PrimaryColsListPanelItemDragFeature = /** @class */ (function (_super) {\n __extends(PrimaryColsListPanelItemDragFeature, _super);\n function PrimaryColsListPanelItemDragFeature(comp, virtualList) {\n var _this = _super.call(this) || this;\n _this.comp = comp;\n _this.virtualList = virtualList;\n _this.currentDragColumn = null;\n _this.lastHoveredColumnItem = null;\n return _this;\n }\n PrimaryColsListPanelItemDragFeature.prototype.postConstruct = function () {\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PANEL_ITEM_DRAG_START, this.columnPanelItemDragStart.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PANEL_ITEM_DRAG_END, this.columnPanelItemDragEnd.bind(this));\n this.createDropTarget();\n this.createAutoScrollService();\n };\n PrimaryColsListPanelItemDragFeature.prototype.columnPanelItemDragStart = function (_a) {\n var column = _a.column;\n this.currentDragColumn = column;\n var currentColumns = this.getCurrentColumns();\n var hasNotMovable = currentColumns.find(function (col) {\n var colDef = col.getColDef();\n return !!colDef.suppressMovable || !!colDef.lockPosition;\n });\n if (hasNotMovable) {\n this.moveBlocked = true;\n }\n };\n PrimaryColsListPanelItemDragFeature.prototype.columnPanelItemDragEnd = function () {\n var _this = this;\n window.setTimeout(function () {\n _this.currentDragColumn = null;\n _this.moveBlocked = false;\n }, 10);\n };\n PrimaryColsListPanelItemDragFeature.prototype.createDropTarget = function () {\n var _this = this;\n var dropTarget = {\n isInterestedIn: function (type) { return type === DragSourceType.ToolPanel; },\n getIconName: function () { return DragAndDropService[_this.moveBlocked ? 'ICON_NOT_ALLOWED' : 'ICON_MOVE']; },\n getContainer: function () { return _this.comp.getGui(); },\n onDragging: function (e) { return _this.onDragging(e); },\n onDragStop: function () { return _this.onDragStop(); },\n onDragLeave: function () { return _this.onDragLeave(); }\n };\n this.dragAndDropService.addDropTarget(dropTarget);\n };\n PrimaryColsListPanelItemDragFeature.prototype.createAutoScrollService = function () {\n var virtualListGui = this.virtualList.getGui();\n this.autoScrollService = new AutoScrollService({\n scrollContainer: virtualListGui,\n scrollAxis: 'y',\n getVerticalPosition: function () { return virtualListGui.scrollTop; },\n setVerticalPosition: function (position) { return virtualListGui.scrollTop = position; }\n });\n };\n PrimaryColsListPanelItemDragFeature.prototype.onDragging = function (e) {\n if (!this.currentDragColumn || this.moveBlocked) {\n return;\n }\n var hoveredColumnItem = this.getDragColumnItem(e);\n var comp = this.virtualList.getComponentAt(hoveredColumnItem.rowIndex);\n if (!comp) {\n return;\n }\n var el = comp.getGui().parentElement;\n if (this.lastHoveredColumnItem &&\n this.lastHoveredColumnItem.rowIndex === hoveredColumnItem.rowIndex &&\n this.lastHoveredColumnItem.position === hoveredColumnItem.position) {\n return;\n }\n this.autoScrollService.check(e.event);\n this.clearHoveredItems();\n this.lastHoveredColumnItem = hoveredColumnItem;\n _.radioCssClass(el, \"\" + PRIMARY_COLS_LIST_ITEM_HOVERED);\n _.radioCssClass(el, \"ag-item-highlight-\" + hoveredColumnItem.position);\n };\n PrimaryColsListPanelItemDragFeature.prototype.getDragColumnItem = function (e) {\n var virtualListGui = this.virtualList.getGui();\n var paddingTop = parseFloat(window.getComputedStyle(virtualListGui).paddingTop);\n var rowHeight = this.virtualList.getRowHeight();\n var scrollTop = this.virtualList.getScrollTop();\n var rowIndex = Math.max(0, (e.y - paddingTop + scrollTop) / rowHeight);\n var maxLen = this.comp.getDisplayedColsList().length - 1;\n var normalizedRowIndex = Math.min(maxLen, rowIndex) | 0;\n return {\n rowIndex: normalizedRowIndex,\n position: (Math.round(rowIndex) > rowIndex || rowIndex > maxLen) ? 'bottom' : 'top',\n component: this.virtualList.getComponentAt(normalizedRowIndex)\n };\n };\n PrimaryColsListPanelItemDragFeature.prototype.onDragStop = function () {\n if (this.moveBlocked) {\n return;\n }\n var targetIndex = this.getTargetIndex();\n var columnsToMove = this.getCurrentColumns();\n if (targetIndex != null) {\n this.columnModel.moveColumns(columnsToMove, targetIndex);\n }\n this.clearHoveredItems();\n this.autoScrollService.ensureCleared();\n };\n PrimaryColsListPanelItemDragFeature.prototype.getMoveDiff = function (end) {\n var allColumns = this.columnModel.getAllGridColumns();\n var currentColumns = this.getCurrentColumns();\n var currentColumn = currentColumns[0];\n var span = currentColumns.length;\n var currentIndex = allColumns.indexOf(currentColumn);\n if (currentIndex < end) {\n return span;\n }\n return 0;\n };\n PrimaryColsListPanelItemDragFeature.prototype.getCurrentColumns = function () {\n if (this.currentDragColumn instanceof ProvidedColumnGroup) {\n return this.currentDragColumn.getLeafColumns();\n }\n return [this.currentDragColumn];\n };\n PrimaryColsListPanelItemDragFeature.prototype.getTargetIndex = function () {\n if (!this.lastHoveredColumnItem) {\n return null;\n }\n var columnItemComponent = this.lastHoveredColumnItem.component;\n var isBefore = this.lastHoveredColumnItem.position === 'top';\n var targetColumn;\n if (columnItemComponent instanceof ToolPanelColumnGroupComp) {\n var columns = columnItemComponent.getColumns();\n targetColumn = columns[0];\n isBefore = true;\n }\n else {\n targetColumn = columnItemComponent.getColumn();\n }\n var targetColumnIndex = this.columnModel.getAllGridColumns().indexOf(targetColumn);\n var adjustedTarget = isBefore ? targetColumnIndex : targetColumnIndex + 1;\n var diff = this.getMoveDiff(adjustedTarget);\n return adjustedTarget - diff;\n };\n PrimaryColsListPanelItemDragFeature.prototype.onDragLeave = function () {\n this.clearHoveredItems();\n this.autoScrollService.ensureCleared();\n };\n PrimaryColsListPanelItemDragFeature.prototype.clearHoveredItems = function () {\n var virtualListGui = this.virtualList.getGui();\n virtualListGui.querySelectorAll(\".\" + PRIMARY_COLS_LIST_ITEM_HOVERED).forEach(function (el) {\n [\n PRIMARY_COLS_LIST_ITEM_HOVERED,\n 'ag-item-highlight-top',\n 'ag-item-highlight-bottom'\n ].forEach(function (cls) {\n el.classList.remove(cls);\n });\n });\n this.lastHoveredColumnItem = null;\n };\n __decorate([\n Autowired('columnModel')\n ], PrimaryColsListPanelItemDragFeature.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('dragAndDropService')\n ], PrimaryColsListPanelItemDragFeature.prototype, \"dragAndDropService\", void 0);\n __decorate([\n PostConstruct\n ], PrimaryColsListPanelItemDragFeature.prototype, \"postConstruct\", null);\n return PrimaryColsListPanelItemDragFeature;\n}(BeanStub));\nexport { PrimaryColsListPanelItemDragFeature };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { _, AgCheckbox, Autowired, Column, Component, CssClassApplier, DragSourceType, Events, KeyCode, PostConstruct, RefSelector } from \"@ag-grid-community/core\";\nimport { ToolPanelContextMenu } from \"./toolPanelContextMenu\";\nvar ToolPanelColumnComp = /** @class */ (function (_super) {\n __extends(ToolPanelColumnComp, _super);\n function ToolPanelColumnComp(column, columnDept, allowDragging, groupsExist, focusWrapper) {\n var _this = _super.call(this) || this;\n _this.column = column;\n _this.columnDept = columnDept;\n _this.allowDragging = allowDragging;\n _this.groupsExist = groupsExist;\n _this.focusWrapper = focusWrapper;\n _this.processingColumnStateChange = false;\n return _this;\n }\n ToolPanelColumnComp.prototype.init = function () {\n var _this = this;\n this.setTemplate(ToolPanelColumnComp.TEMPLATE);\n this.eDragHandle = _.createIconNoSpan('columnDrag', this.gridOptionsWrapper);\n this.eDragHandle.classList.add('ag-drag-handle', 'ag-column-select-column-drag-handle');\n var checkboxGui = this.cbSelect.getGui();\n var checkboxInput = this.cbSelect.getInputElement();\n checkboxGui.insertAdjacentElement('afterend', this.eDragHandle);\n checkboxInput.setAttribute('tabindex', '-1');\n this.displayName = this.columnModel.getDisplayNameForColumn(this.column, 'columnToolPanel');\n var displayNameSanitised = _.escapeString(this.displayName);\n this.eLabel.innerHTML = displayNameSanitised;\n // if grouping, we add an extra level of indent, to cater for expand/contract icons we need to indent for\n var indent = this.columnDept;\n if (this.groupsExist) {\n this.addCssClass('ag-column-select-add-group-indent');\n }\n this.addCssClass(\"ag-column-select-indent-\" + indent);\n this.setupDragging();\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, this.onColumnStateChanged.bind(this));\n this.addManagedListener(this.column, Column.EVENT_VALUE_CHANGED, this.onColumnStateChanged.bind(this));\n this.addManagedListener(this.column, Column.EVENT_PIVOT_CHANGED, this.onColumnStateChanged.bind(this));\n this.addManagedListener(this.column, Column.EVENT_ROW_GROUP_CHANGED, this.onColumnStateChanged.bind(this));\n this.addManagedListener(this.column, Column.EVENT_VISIBLE_CHANGED, this.onColumnStateChanged.bind(this));\n this.addManagedListener(this.focusWrapper, 'keydown', this.handleKeyDown.bind(this));\n this.addManagedListener(this.focusWrapper, 'contextmenu', this.onContextMenu.bind(this));\n this.addManagedListener(this.gridOptionsWrapper, 'functionsReadOnly', this.onColumnStateChanged.bind(this));\n this.addManagedListener(this.cbSelect, AgCheckbox.EVENT_CHANGED, this.onCheckboxChanged.bind(this));\n this.addManagedListener(this.eLabel, 'click', this.onLabelClicked.bind(this));\n this.onColumnStateChanged();\n this.refreshAriaLabel();\n this.setupTooltip();\n var classes = CssClassApplier.getToolPanelClassesFromColDef(this.column.getColDef(), this.gridOptionsWrapper, this.column, null);\n classes.forEach(function (c) { return _this.addOrRemoveCssClass(c, true); });\n };\n ToolPanelColumnComp.prototype.getColumn = function () {\n return this.column;\n };\n ToolPanelColumnComp.prototype.setupTooltip = function () {\n var _this = this;\n var refresh = function () {\n var newTooltipText = _this.column.getColDef().headerTooltip;\n _this.setTooltip(newTooltipText);\n };\n refresh();\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, refresh);\n };\n ToolPanelColumnComp.prototype.getTooltipParams = function () {\n var res = _super.prototype.getTooltipParams.call(this);\n res.location = 'columnToolPanelColumn';\n res.colDef = this.column.getColDef();\n return res;\n };\n ToolPanelColumnComp.prototype.onContextMenu = function (e) {\n var _this = this;\n var _a = this, column = _a.column, gridOptionsWrapper = _a.gridOptionsWrapper;\n if (gridOptionsWrapper.isFunctionsReadOnly()) {\n return;\n }\n var contextMenu = this.createBean(new ToolPanelContextMenu(column, e, this.focusWrapper));\n this.addDestroyFunc(function () {\n if (contextMenu.isAlive()) {\n _this.destroyBean(contextMenu);\n }\n });\n };\n ToolPanelColumnComp.prototype.handleKeyDown = function (e) {\n if (e.key === KeyCode.SPACE) {\n e.preventDefault();\n if (this.isSelectable()) {\n this.onSelectAllChanged(!this.isSelected());\n }\n }\n };\n ToolPanelColumnComp.prototype.onLabelClicked = function () {\n if (this.gridOptionsWrapper.isFunctionsReadOnly()) {\n return;\n }\n var nextState = !this.cbSelect.getValue();\n this.onChangeCommon(nextState);\n };\n ToolPanelColumnComp.prototype.onCheckboxChanged = function (event) {\n this.onChangeCommon(event.selected);\n };\n ToolPanelColumnComp.prototype.onChangeCommon = function (nextState) {\n // ignore lock visible columns\n if (this.cbSelect.isReadOnly()) {\n return;\n }\n this.refreshAriaLabel();\n // only want to action if the user clicked the checkbox, not if we are setting the checkbox because\n // of a change in the model\n if (this.processingColumnStateChange) {\n return;\n }\n this.modelItemUtils.setColumn(this.column, nextState, 'toolPanelUi');\n };\n ToolPanelColumnComp.prototype.refreshAriaLabel = function () {\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var columnLabel = translate('ariaColumn', 'Column');\n var state = this.cbSelect.getValue() ? translate('ariaVisible', 'visible') : translate('ariaHidden', 'hidden');\n var visibilityLabel = translate('ariaToggleVisibility', 'Press SPACE to toggle visibility');\n _.setAriaLabel(this.focusWrapper, this.displayName + \" \" + columnLabel);\n this.cbSelect.setInputAriaLabel(visibilityLabel + \" (\" + state + \")\");\n _.setAriaDescribedBy(this.focusWrapper, this.cbSelect.getInputElement().id);\n };\n ToolPanelColumnComp.prototype.setupDragging = function () {\n var _this = this;\n if (!this.allowDragging) {\n _.setDisplayed(this.eDragHandle, false);\n return;\n }\n var dragSource = {\n type: DragSourceType.ToolPanel,\n eElement: this.eDragHandle,\n dragItemName: this.displayName,\n getDragItem: function () { return _this.createDragItem(); },\n onDragStarted: function () {\n var event = {\n type: Events.EVENT_COLUMN_PANEL_ITEM_DRAG_START,\n column: _this.column\n };\n _this.eventService.dispatchEvent(event);\n },\n onDragStopped: function () {\n var event = {\n type: Events.EVENT_COLUMN_PANEL_ITEM_DRAG_END\n };\n _this.eventService.dispatchEvent(event);\n }\n };\n this.dragAndDropService.addDragSource(dragSource, true);\n this.addDestroyFunc(function () { return _this.dragAndDropService.removeDragSource(dragSource); });\n };\n ToolPanelColumnComp.prototype.createDragItem = function () {\n var visibleState = {};\n visibleState[this.column.getId()] = this.column.isVisible();\n return {\n columns: [this.column],\n visibleState: visibleState\n };\n };\n ToolPanelColumnComp.prototype.onColumnStateChanged = function () {\n this.processingColumnStateChange = true;\n var isPivotMode = this.columnModel.isPivotMode();\n if (isPivotMode) {\n // if reducing, checkbox means column is one of pivot, value or group\n var anyFunctionActive = this.column.isAnyFunctionActive();\n this.cbSelect.setValue(anyFunctionActive);\n }\n else {\n // if not reducing, the checkbox tells us if column is visible or not\n this.cbSelect.setValue(this.column.isVisible());\n }\n var canBeToggled = true;\n var canBeDragged = true;\n if (isPivotMode) {\n // when in pivot mode, the item should be read only if:\n // a) gui is not allowed make any changes\n var functionsReadOnly = this.gridOptionsWrapper.isFunctionsReadOnly();\n // b) column is not allow any functions on it\n var noFunctionsAllowed = !this.column.isAnyFunctionAllowed();\n canBeToggled = !functionsReadOnly && !noFunctionsAllowed;\n canBeDragged = canBeToggled;\n }\n else {\n var _a = this.column.getColDef(), enableRowGroup = _a.enableRowGroup, enableValue = _a.enableValue, lockPosition = _a.lockPosition, suppressMovable = _a.suppressMovable, lockVisible = _a.lockVisible;\n var forceDraggable = !!enableRowGroup || !!enableValue;\n var disableDraggable = !!lockPosition || !!suppressMovable;\n canBeToggled = !lockVisible;\n canBeDragged = forceDraggable || !disableDraggable;\n }\n this.cbSelect.setReadOnly(!canBeToggled);\n this.eDragHandle.classList.toggle('ag-column-select-column-readonly', !canBeDragged);\n this.addOrRemoveCssClass('ag-column-select-column-readonly', !canBeDragged && !canBeToggled);\n var checkboxPassive = isPivotMode && this.gridOptionsWrapper.isFunctionsPassive();\n this.cbSelect.setPassive(checkboxPassive);\n this.processingColumnStateChange = false;\n };\n ToolPanelColumnComp.prototype.getDisplayName = function () {\n return this.displayName;\n };\n ToolPanelColumnComp.prototype.onSelectAllChanged = function (value) {\n if (value !== this.cbSelect.getValue()) {\n if (!this.cbSelect.isReadOnly()) {\n this.cbSelect.toggle();\n }\n }\n };\n ToolPanelColumnComp.prototype.isSelected = function () {\n return this.cbSelect.getValue();\n };\n ToolPanelColumnComp.prototype.isSelectable = function () {\n return !this.cbSelect.isReadOnly();\n };\n ToolPanelColumnComp.prototype.isExpandable = function () {\n return false;\n };\n ToolPanelColumnComp.prototype.setExpanded = function (value) {\n console.warn('AG Grid: can not expand a column item that does not represent a column group header');\n };\n ToolPanelColumnComp.TEMPLATE = \"
    \\n \\n \\n
    \";\n __decorate([\n Autowired('columnModel')\n ], ToolPanelColumnComp.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('dragAndDropService')\n ], ToolPanelColumnComp.prototype, \"dragAndDropService\", void 0);\n __decorate([\n Autowired('modelItemUtils')\n ], ToolPanelColumnComp.prototype, \"modelItemUtils\", void 0);\n __decorate([\n RefSelector('eLabel')\n ], ToolPanelColumnComp.prototype, \"eLabel\", void 0);\n __decorate([\n RefSelector('cbSelect')\n ], ToolPanelColumnComp.prototype, \"cbSelect\", void 0);\n __decorate([\n PostConstruct\n ], ToolPanelColumnComp.prototype, \"init\", null);\n return ToolPanelColumnComp;\n}(Component));\nexport { ToolPanelColumnComp };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { _, Autowired, Component, Events, ProvidedColumnGroup, VirtualList, PreDestroy } from \"@ag-grid-community/core\";\nimport { PrimaryColsListPanelItemDragFeature } from './primaryColsListPanelItemDragFeature';\nimport { ToolPanelColumnGroupComp } from \"./toolPanelColumnGroupComp\";\nimport { ToolPanelColumnComp } from \"./toolPanelColumnComp\";\nimport { ExpandState } from \"./primaryColsHeaderPanel\";\nimport { ColumnModelItem } from \"./columnModelItem\";\nvar UIColumnModel = /** @class */ (function () {\n function UIColumnModel(items) {\n this.items = items;\n }\n UIColumnModel.prototype.getRowCount = function () {\n return this.items.length;\n };\n UIColumnModel.prototype.getRow = function (index) {\n return this.items[index];\n };\n return UIColumnModel;\n}());\nvar PRIMARY_COLS_LIST_PANEL_CLASS = 'ag-column-select-list';\nvar PrimaryColsListPanel = /** @class */ (function (_super) {\n __extends(PrimaryColsListPanel, _super);\n function PrimaryColsListPanel() {\n var _this = _super.call(this, PrimaryColsListPanel.TEMPLATE) || this;\n _this.destroyColumnItemFuncs = [];\n return _this;\n }\n PrimaryColsListPanel.prototype.destroyColumnTree = function () {\n this.allColsTree = [];\n this.destroyColumnItemFuncs.forEach(function (f) { return f(); });\n this.destroyColumnItemFuncs = [];\n };\n PrimaryColsListPanel.prototype.init = function (params, allowDragging, eventType) {\n var _this = this;\n this.params = params;\n this.allowDragging = allowDragging;\n this.eventType = eventType;\n if (!this.params.suppressSyncLayoutWithGrid) {\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_MOVED, this.onColumnsChanged.bind(this));\n }\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.onColumnsChanged.bind(this));\n var eventsImpactingCheckedState = [\n Events.EVENT_COLUMN_PIVOT_CHANGED,\n Events.EVENT_COLUMN_PIVOT_MODE_CHANGED,\n Events.EVENT_COLUMN_ROW_GROUP_CHANGED,\n Events.EVENT_COLUMN_VALUE_CHANGED,\n Events.EVENT_COLUMN_VISIBLE,\n Events.EVENT_NEW_COLUMNS_LOADED\n ];\n eventsImpactingCheckedState.forEach(function (event) {\n // update header select all checkbox with current selection state\n _this.addManagedListener(_this.eventService, event, _this.fireSelectionChangedEvent.bind(_this));\n });\n this.expandGroupsByDefault = !this.params.contractColumnSelection;\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var columnListName = translate('ariaColumnList', 'Column List');\n this.virtualList = this.createManagedBean(new VirtualList('column-select', 'tree', columnListName));\n this.appendChild(this.virtualList.getGui());\n this.virtualList.setComponentCreator(function (item, listItemElement) {\n _.setAriaLevel(listItemElement, (item.getDept() + 1));\n return _this.createComponentFromItem(item, listItemElement);\n });\n if (this.columnModel.isReady()) {\n this.onColumnsChanged();\n }\n if (!params.suppressColumnMove && !this.gridOptionsWrapper.isSuppressMovableColumns()) {\n this.createManagedBean(new PrimaryColsListPanelItemDragFeature(this, this.virtualList));\n }\n };\n PrimaryColsListPanel.prototype.createComponentFromItem = function (item, listItemElement) {\n if (item.isGroup()) {\n var renderedGroup = new ToolPanelColumnGroupComp(item, this.allowDragging, this.eventType, listItemElement);\n this.getContext().createBean(renderedGroup);\n return renderedGroup;\n }\n var columnComp = new ToolPanelColumnComp(item.getColumn(), item.getDept(), this.allowDragging, this.groupsExist, listItemElement);\n this.getContext().createBean(columnComp);\n return columnComp;\n };\n PrimaryColsListPanel.prototype.onColumnsChanged = function () {\n var expandedStates = this.getExpandedStates();\n var pivotModeActive = this.columnModel.isPivotMode();\n var shouldSyncColumnLayoutWithGrid = !this.params.suppressSyncLayoutWithGrid && !pivotModeActive;\n if (shouldSyncColumnLayoutWithGrid) {\n this.buildTreeFromWhatGridIsDisplaying();\n }\n else {\n this.buildTreeFromProvidedColumnDefs();\n }\n this.setExpandedStates(expandedStates);\n this.markFilteredColumns();\n this.flattenAndFilterModel();\n };\n PrimaryColsListPanel.prototype.getDisplayedColsList = function () {\n return this.displayedColsList;\n };\n PrimaryColsListPanel.prototype.getExpandedStates = function () {\n if (!this.allColsTree) {\n return {};\n }\n var res = {};\n this.forEachItem(function (item) {\n if (!item.isGroup()) {\n return;\n }\n var colGroup = item.getColumnGroup();\n if (colGroup) { // group should always exist, this is defensive\n res[colGroup.getId()] = item.isExpanded();\n }\n });\n return res;\n };\n PrimaryColsListPanel.prototype.setExpandedStates = function (states) {\n if (!this.allColsTree) {\n return;\n }\n this.forEachItem(function (item) {\n if (!item.isGroup()) {\n return;\n }\n var colGroup = item.getColumnGroup();\n if (colGroup) { // group should always exist, this is defensive\n var expanded = states[colGroup.getId()];\n var groupExistedLastTime = expanded != null;\n if (groupExistedLastTime) {\n item.setExpanded(expanded);\n }\n }\n });\n };\n PrimaryColsListPanel.prototype.buildTreeFromWhatGridIsDisplaying = function () {\n this.colDefService.syncLayoutWithGrid(this.setColumnLayout.bind(this));\n };\n PrimaryColsListPanel.prototype.setColumnLayout = function (colDefs) {\n var columnTree = this.colDefService.createColumnTree(colDefs);\n this.buildListModel(columnTree);\n // using col defs to check if groups exist as it could be a custom layout\n this.groupsExist = colDefs.some(function (colDef) {\n return colDef && typeof colDef.children !== 'undefined';\n });\n this.markFilteredColumns();\n this.flattenAndFilterModel();\n };\n PrimaryColsListPanel.prototype.buildTreeFromProvidedColumnDefs = function () {\n // add column / group comps to tool panel\n this.buildListModel(this.columnModel.getPrimaryColumnTree());\n this.groupsExist = this.columnModel.isPrimaryColumnGroupsPresent();\n };\n PrimaryColsListPanel.prototype.buildListModel = function (columnTree) {\n var _this = this;\n var columnExpandedListener = this.onColumnExpanded.bind(this);\n var addListeners = function (item) {\n item.addEventListener(ColumnModelItem.EVENT_EXPANDED_CHANGED, columnExpandedListener);\n var removeFunc = item.removeEventListener.bind(item, ColumnModelItem.EVENT_EXPANDED_CHANGED, columnExpandedListener);\n _this.destroyColumnItemFuncs.push(removeFunc);\n };\n var recursivelyBuild = function (tree, dept, parentList) {\n tree.forEach(function (child) {\n if (child instanceof ProvidedColumnGroup) {\n createGroupItem(child, dept, parentList);\n }\n else {\n createColumnItem(child, dept, parentList);\n }\n });\n };\n var createGroupItem = function (columnGroup, dept, parentList) {\n var columnGroupDef = columnGroup.getColGroupDef();\n var skipThisGroup = columnGroupDef && columnGroupDef.suppressColumnsToolPanel;\n if (skipThisGroup) {\n return;\n }\n if (columnGroup.isPadding()) {\n recursivelyBuild(columnGroup.getChildren(), dept, parentList);\n return;\n }\n var displayName = _this.columnModel.getDisplayNameForProvidedColumnGroup(null, columnGroup, _this.eventType);\n var item = new ColumnModelItem(displayName, columnGroup, dept, true, _this.expandGroupsByDefault);\n parentList.push(item);\n addListeners(item);\n recursivelyBuild(columnGroup.getChildren(), dept + 1, item.getChildren());\n };\n var createColumnItem = function (column, dept, parentList) {\n var skipThisColumn = column.getColDef() && column.getColDef().suppressColumnsToolPanel;\n if (skipThisColumn) {\n return;\n }\n var displayName = _this.columnModel.getDisplayNameForColumn(column, 'columnToolPanel');\n parentList.push(new ColumnModelItem(displayName, column, dept));\n };\n this.destroyColumnTree();\n recursivelyBuild(columnTree, 0, this.allColsTree);\n };\n PrimaryColsListPanel.prototype.onColumnExpanded = function () {\n this.flattenAndFilterModel();\n };\n PrimaryColsListPanel.prototype.flattenAndFilterModel = function () {\n var _this = this;\n this.displayedColsList = [];\n var recursiveFunc = function (item) {\n if (!item.isPassesFilter()) {\n return;\n }\n _this.displayedColsList.push(item);\n if (item.isGroup() && item.isExpanded()) {\n item.getChildren().forEach(recursiveFunc);\n }\n };\n this.allColsTree.forEach(recursiveFunc);\n this.virtualList.setModel(new UIColumnModel(this.displayedColsList));\n var focusedRow = this.virtualList.getLastFocusedRow();\n this.virtualList.refresh();\n if (focusedRow != null) {\n this.focusRowIfAlive(focusedRow);\n }\n this.notifyListeners();\n };\n PrimaryColsListPanel.prototype.focusRowIfAlive = function (rowIndex) {\n var _this = this;\n window.setTimeout(function () {\n if (_this.isAlive()) {\n _this.virtualList.focusRow(rowIndex);\n }\n }, 0);\n };\n PrimaryColsListPanel.prototype.forEachItem = function (callback) {\n var recursiveFunc = function (items) {\n items.forEach(function (item) {\n callback(item);\n if (item.isGroup()) {\n recursiveFunc(item.getChildren());\n }\n });\n };\n recursiveFunc(this.allColsTree);\n };\n PrimaryColsListPanel.prototype.doSetExpandedAll = function (value) {\n this.forEachItem(function (item) {\n if (item.isGroup()) {\n item.setExpanded(value);\n }\n });\n };\n PrimaryColsListPanel.prototype.setGroupsExpanded = function (expand, groupIds) {\n if (!groupIds) {\n this.doSetExpandedAll(expand);\n return;\n }\n var expandedGroupIds = [];\n this.forEachItem(function (item) {\n if (!item.isGroup()) {\n return;\n }\n var groupId = item.getColumnGroup().getId();\n if (groupIds.indexOf(groupId) >= 0) {\n item.setExpanded(expand);\n expandedGroupIds.push(groupId);\n }\n });\n var unrecognisedGroupIds = groupIds.filter(function (groupId) { return !_.includes(expandedGroupIds, groupId); });\n if (unrecognisedGroupIds.length > 0) {\n console.warn('AG Grid: unable to find group(s) for supplied groupIds:', unrecognisedGroupIds);\n }\n };\n PrimaryColsListPanel.prototype.getExpandState = function () {\n var expandedCount = 0;\n var notExpandedCount = 0;\n this.forEachItem(function (item) {\n if (!item.isGroup()) {\n return;\n }\n if (item.isExpanded()) {\n expandedCount++;\n }\n else {\n notExpandedCount++;\n }\n });\n if (expandedCount > 0 && notExpandedCount > 0) {\n return ExpandState.INDETERMINATE;\n }\n if (notExpandedCount > 0) {\n return ExpandState.COLLAPSED;\n }\n return ExpandState.EXPANDED;\n };\n PrimaryColsListPanel.prototype.doSetSelectedAll = function (selectAllChecked) {\n this.modelItemUtils.selectAllChildren(this.allColsTree, selectAllChecked, this.eventType);\n };\n PrimaryColsListPanel.prototype.getSelectionState = function () {\n var checkedCount = 0;\n var uncheckedCount = 0;\n var pivotMode = this.columnModel.isPivotMode();\n this.forEachItem(function (item) {\n if (item.isGroup()) {\n return;\n }\n if (!item.isPassesFilter()) {\n return;\n }\n var column = item.getColumn();\n var colDef = column.getColDef();\n var checked;\n if (pivotMode) {\n var noPivotModeOptionsAllowed = !column.isAllowPivot() && !column.isAllowRowGroup() && !column.isAllowValue();\n if (noPivotModeOptionsAllowed) {\n return;\n }\n checked = column.isValueActive() || column.isPivotActive() || column.isRowGroupActive();\n }\n else {\n if (colDef.lockVisible) {\n return;\n }\n checked = column.isVisible();\n }\n checked ? checkedCount++ : uncheckedCount++;\n });\n if (checkedCount > 0 && uncheckedCount > 0) {\n return undefined;\n }\n return !(checkedCount === 0 || uncheckedCount > 0);\n };\n PrimaryColsListPanel.prototype.setFilterText = function (filterText) {\n this.filterText = _.exists(filterText) ? filterText.toLowerCase() : null;\n this.markFilteredColumns();\n this.flattenAndFilterModel();\n };\n PrimaryColsListPanel.prototype.markFilteredColumns = function () {\n var _this = this;\n var passesFilter = function (item) {\n if (!_.exists(_this.filterText)) {\n return true;\n }\n var displayName = item.getDisplayName();\n return displayName == null || displayName.toLowerCase().indexOf(_this.filterText) !== -1;\n };\n var recursivelyCheckFilter = function (item, parentPasses) {\n var atLeastOneChildPassed = false;\n if (item.isGroup()) {\n var groupPasses_1 = passesFilter(item);\n item.getChildren().forEach(function (child) {\n var childPasses = recursivelyCheckFilter(child, groupPasses_1 || parentPasses);\n if (childPasses) {\n atLeastOneChildPassed = childPasses;\n }\n });\n }\n var filterPasses = (parentPasses || atLeastOneChildPassed) ? true : passesFilter(item);\n item.setPassesFilter(filterPasses);\n return filterPasses;\n };\n this.allColsTree.forEach(function (item) { return recursivelyCheckFilter(item, false); });\n };\n PrimaryColsListPanel.prototype.notifyListeners = function () {\n this.fireGroupExpandedEvent();\n this.fireSelectionChangedEvent();\n };\n PrimaryColsListPanel.prototype.fireGroupExpandedEvent = function () {\n var expandState = this.getExpandState();\n this.dispatchEvent({ type: 'groupExpanded', state: expandState });\n };\n PrimaryColsListPanel.prototype.fireSelectionChangedEvent = function () {\n var selectionState = this.getSelectionState();\n this.dispatchEvent({ type: 'selectionChanged', state: selectionState });\n };\n PrimaryColsListPanel.TEMPLATE = \"
    \";\n __decorate([\n Autowired('columnModel')\n ], PrimaryColsListPanel.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('toolPanelColDefService')\n ], PrimaryColsListPanel.prototype, \"colDefService\", void 0);\n __decorate([\n Autowired('modelItemUtils')\n ], PrimaryColsListPanel.prototype, \"modelItemUtils\", void 0);\n __decorate([\n PreDestroy\n ], PrimaryColsListPanel.prototype, \"destroyColumnTree\", null);\n return PrimaryColsListPanel;\n}(Component));\nexport { PrimaryColsListPanel };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { AgCheckbox, Autowired, Component, Events, PreConstruct, RefSelector } from \"@ag-grid-community/core\";\nvar PivotModePanel = /** @class */ (function (_super) {\n __extends(PivotModePanel, _super);\n function PivotModePanel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PivotModePanel.prototype.createTemplate = function () {\n return /* html */ \"
    \\n \\n
    \";\n };\n PivotModePanel.prototype.init = function () {\n this.setTemplate(this.createTemplate());\n this.cbPivotMode.setValue(this.columnModel.isPivotMode());\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n this.cbPivotMode.setLabel(localeTextFunc('pivotMode', 'Pivot Mode'));\n this.addManagedListener(this.cbPivotMode, AgCheckbox.EVENT_CHANGED, this.onBtPivotMode.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.onPivotModeChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, this.onPivotModeChanged.bind(this));\n };\n PivotModePanel.prototype.onBtPivotMode = function () {\n var newValue = !!this.cbPivotMode.getValue();\n if (newValue !== this.columnModel.isPivotMode()) {\n this.columnModel.setPivotMode(newValue, \"toolPanelUi\");\n var api = this.gridOptionsWrapper.getApi();\n if (api) {\n api.refreshHeader();\n }\n }\n };\n PivotModePanel.prototype.onPivotModeChanged = function () {\n var pivotModeActive = this.columnModel.isPivotMode();\n this.cbPivotMode.setValue(pivotModeActive);\n };\n __decorate([\n Autowired('columnModel')\n ], PivotModePanel.prototype, \"columnModel\", void 0);\n __decorate([\n RefSelector('cbPivotMode')\n ], PivotModePanel.prototype, \"cbPivotMode\", void 0);\n __decorate([\n PreConstruct\n ], PivotModePanel.prototype, \"init\", null);\n return PivotModePanel;\n}(Component));\nexport { PivotModePanel };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Bean, BeanStub, Autowired, _ } from \"@ag-grid-community/core\";\nvar AggregationStage = /** @class */ (function (_super) {\n __extends(AggregationStage, _super);\n function AggregationStage() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // it's possible to recompute the aggregate without doing the other parts\n // + gridApi.recomputeAggregates()\n AggregationStage.prototype.execute = function (params) {\n // if changed path is active, it means we came from a) change detection or b) transaction update.\n // for both of these, if no value columns are present, it means there is nothing to aggregate now\n // and there is no cleanup to be done (as value columns don't change between transactions or change\n // detections). if no value columns and no changed path, means we have to go through all nodes in\n // case we need to clean up agg data from before.\n var noValueColumns = _.missingOrEmpty(this.columnModel.getValueColumns());\n var noUserAgg = !this.gridOptionsWrapper.getGroupRowAggNodesFunc();\n var changedPathActive = params.changedPath && params.changedPath.isActive();\n if (noValueColumns && noUserAgg && changedPathActive) {\n return;\n }\n var aggDetails = this.createAggDetails(params);\n this.recursivelyCreateAggData(aggDetails);\n };\n AggregationStage.prototype.createAggDetails = function (params) {\n var pivotActive = this.columnModel.isPivotActive();\n var measureColumns = this.columnModel.getValueColumns();\n var pivotColumns = pivotActive ? this.columnModel.getPivotColumns() : [];\n var aggDetails = {\n changedPath: params.changedPath,\n valueColumns: measureColumns,\n pivotColumns: pivotColumns\n };\n return aggDetails;\n };\n AggregationStage.prototype.recursivelyCreateAggData = function (aggDetails) {\n var _this = this;\n // update prop, in case changed since last time\n this.filteredOnly = !this.gridOptionsWrapper.isSuppressAggFilteredOnly();\n var callback = function (rowNode) {\n var hasNoChildren = !rowNode.hasChildren();\n if (hasNoChildren) {\n // this check is needed for TreeData, in case the node is no longer a child,\n // but it was a child previously.\n if (rowNode.aggData) {\n rowNode.setAggData(null);\n }\n // never agg data for leaf nodes\n return;\n }\n //Optionally prevent the aggregation at the root Node\n //https://ag-grid.atlassian.net/browse/AG-388\n var isRootNode = rowNode.level === -1;\n if (isRootNode) {\n var notPivoting = !_this.columnModel.isPivotMode();\n var suppressAggAtRootLevel = _this.gridOptionsWrapper.isSuppressAggAtRootLevel();\n if (suppressAggAtRootLevel && notPivoting) {\n return;\n }\n }\n _this.aggregateRowNode(rowNode, aggDetails);\n };\n aggDetails.changedPath.forEachChangedNodeDepthFirst(callback, true);\n };\n AggregationStage.prototype.aggregateRowNode = function (rowNode, aggDetails) {\n var measureColumnsMissing = aggDetails.valueColumns.length === 0;\n var pivotColumnsMissing = aggDetails.pivotColumns.length === 0;\n var userFunc = this.gridOptionsWrapper.getGroupRowAggNodesFunc();\n var aggResult;\n if (userFunc) {\n aggResult = userFunc(rowNode.childrenAfterFilter);\n }\n else if (measureColumnsMissing) {\n aggResult = null;\n }\n else if (pivotColumnsMissing) {\n aggResult = this.aggregateRowNodeUsingValuesOnly(rowNode, aggDetails);\n }\n else {\n aggResult = this.aggregateRowNodeUsingValuesAndPivot(rowNode);\n }\n rowNode.setAggData(aggResult);\n // if we are grouping, then it's possible there is a sibling footer\n // to the group, so update the data here also if there is one\n if (rowNode.sibling) {\n rowNode.sibling.setAggData(aggResult);\n }\n };\n AggregationStage.prototype.aggregateRowNodeUsingValuesAndPivot = function (rowNode) {\n var _this = this;\n var result = {};\n var pivotColumnDefs = this.pivotStage.getPivotColumnDefs();\n // Step 1: process value columns\n pivotColumnDefs\n .filter(function (v) { return !_.exists(v.pivotTotalColumnIds); }) // only process pivot value columns\n .forEach(function (valueColDef) {\n var keys = valueColDef.pivotKeys || [];\n var values;\n var valueColumn = valueColDef.pivotValueColumn;\n var colId = valueColDef.colId;\n if (rowNode.leafGroup) {\n // lowest level group, get the values from the mapped set\n values = _this.getValuesFromMappedSet(rowNode.childrenMapped, keys, valueColumn);\n }\n else {\n // value columns and pivot columns, non-leaf group\n values = _this.getValuesPivotNonLeaf(rowNode, colId);\n }\n result[colId] = _this.aggregateValues(values, valueColumn.getAggFunc(), valueColumn, rowNode);\n });\n // Step 2: process total columns\n pivotColumnDefs\n .filter(function (v) { return _.exists(v.pivotTotalColumnIds); }) // only process pivot total columns\n .forEach(function (totalColDef) {\n var aggResults = [];\n var pivotValueColumn = totalColDef.pivotValueColumn, pivotTotalColumnIds = totalColDef.pivotTotalColumnIds, colId = totalColDef.colId;\n //retrieve results for colIds associated with this pivot total column\n if (!pivotTotalColumnIds || !pivotTotalColumnIds.length) {\n return;\n }\n pivotTotalColumnIds.forEach(function (currentColId) {\n aggResults.push(result[currentColId]);\n });\n result[colId] = _this.aggregateValues(aggResults, pivotValueColumn.getAggFunc(), pivotValueColumn, rowNode);\n });\n return result;\n };\n AggregationStage.prototype.aggregateRowNodeUsingValuesOnly = function (rowNode, aggDetails) {\n var _this = this;\n var result = {};\n var changedValueColumns = aggDetails.changedPath.isActive() ?\n aggDetails.changedPath.getValueColumnsForNode(rowNode, aggDetails.valueColumns)\n : aggDetails.valueColumns;\n var notChangedValueColumns = aggDetails.changedPath.isActive() ?\n aggDetails.changedPath.getNotValueColumnsForNode(rowNode, aggDetails.valueColumns)\n : null;\n var values2d = this.getValuesNormal(rowNode, changedValueColumns);\n var oldValues = rowNode.aggData;\n changedValueColumns.forEach(function (valueColumn, index) {\n result[valueColumn.getId()] = _this.aggregateValues(values2d[index], valueColumn.getAggFunc(), valueColumn, rowNode);\n });\n if (notChangedValueColumns && oldValues) {\n notChangedValueColumns.forEach(function (valueColumn) {\n result[valueColumn.getId()] = oldValues[valueColumn.getId()];\n });\n }\n return result;\n };\n AggregationStage.prototype.getValuesPivotNonLeaf = function (rowNode, colId) {\n var values = [];\n rowNode.childrenAfterFilter.forEach(function (node) {\n var value = node.aggData[colId];\n values.push(value);\n });\n return values;\n };\n AggregationStage.prototype.getValuesFromMappedSet = function (mappedSet, keys, valueColumn) {\n var _this = this;\n var mapPointer = mappedSet;\n keys.forEach(function (key) { return (mapPointer = mapPointer ? mapPointer[key] : null); });\n if (!mapPointer) {\n return [];\n }\n var values = [];\n mapPointer.forEach(function (rowNode) {\n var value = _this.valueService.getValue(valueColumn, rowNode);\n values.push(value);\n });\n return values;\n };\n AggregationStage.prototype.getValuesNormal = function (rowNode, valueColumns) {\n // create 2d array, of all values for all valueColumns\n var values = [];\n valueColumns.forEach(function () { return values.push([]); });\n var valueColumnCount = valueColumns.length;\n var nodeList = this.filteredOnly ? rowNode.childrenAfterFilter : rowNode.childrenAfterGroup;\n var rowCount = nodeList.length;\n for (var i = 0; i < rowCount; i++) {\n var childNode = nodeList[i];\n for (var j = 0; j < valueColumnCount; j++) {\n var valueColumn = valueColumns[j];\n // if the row is a group, then it will only have an agg result value,\n // which means valueGetter is never used.\n var value = this.valueService.getValue(valueColumn, childNode);\n values[j].push(value);\n }\n }\n return values;\n };\n AggregationStage.prototype.aggregateValues = function (values, aggFuncOrString, column, rowNode) {\n var aggFunc = typeof aggFuncOrString === 'string' ?\n this.aggFuncService.getAggFunc(aggFuncOrString) :\n aggFuncOrString;\n if (typeof aggFunc !== 'function') {\n console.error(\"AG Grid: unrecognised aggregation function \" + aggFuncOrString);\n return null;\n }\n var deprecationWarning = function () {\n _.doOnce(function () {\n console.warn('AG Grid: since v24.0, custom aggregation functions take a params object. Please alter your aggregation function to use params.values');\n }, 'aggregationStage.aggregateValues Deprecation');\n };\n var aggFuncAny = aggFunc;\n var params = {\n values: values,\n column: column,\n colDef: column ? column.getColDef() : undefined,\n rowNode: rowNode,\n data: rowNode ? rowNode.data : undefined,\n api: this.gridApi,\n columnApi: this.columnApi,\n context: this.gridOptionsWrapper.getContext(),\n // the three things below are for logging warning messages in case anyone is treating\n // the params object as an array. in previous grid versions, we didn't pass params object,\n // but passed values array instead.\n forEach: function (callback, thisArg) {\n deprecationWarning();\n return values.forEach(callback, thisArg);\n },\n get length() {\n deprecationWarning();\n return values.length;\n },\n set length(val) {\n deprecationWarning();\n values.length = val;\n }\n }; // the \"as any\" is needed to allow the deprecation warning messages\n return aggFuncAny(params);\n };\n __decorate([\n Autowired('columnModel')\n ], AggregationStage.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('valueService')\n ], AggregationStage.prototype, \"valueService\", void 0);\n __decorate([\n Autowired('pivotStage')\n ], AggregationStage.prototype, \"pivotStage\", void 0);\n __decorate([\n Autowired('aggFuncService')\n ], AggregationStage.prototype, \"aggFuncService\", void 0);\n __decorate([\n Autowired('gridApi')\n ], AggregationStage.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('columnApi')\n ], AggregationStage.prototype, \"columnApi\", void 0);\n AggregationStage = __decorate([\n Bean('aggregationStage')\n ], AggregationStage);\n return AggregationStage;\n}(BeanStub));\nexport { AggregationStage };\n","var BatchRemover = /** @class */ (function () {\n function BatchRemover() {\n this.allSets = {};\n this.allParents = [];\n }\n BatchRemover.prototype.removeFromChildrenAfterGroup = function (parent, child) {\n var set = this.getSet(parent);\n set.removeFromChildrenAfterGroup[child.id] = true;\n };\n BatchRemover.prototype.removeFromAllLeafChildren = function (parent, child) {\n var set = this.getSet(parent);\n set.removeFromAllLeafChildren[child.id] = true;\n };\n BatchRemover.prototype.getSet = function (parent) {\n if (!this.allSets[parent.id]) {\n this.allSets[parent.id] = {\n removeFromAllLeafChildren: {},\n removeFromChildrenAfterGroup: {}\n };\n this.allParents.push(parent);\n }\n return this.allSets[parent.id];\n };\n BatchRemover.prototype.getAllParents = function () {\n return this.allParents;\n };\n BatchRemover.prototype.flush = function () {\n var _this = this;\n this.allParents.forEach(function (parent) {\n var nodeDetails = _this.allSets[parent.id];\n parent.childrenAfterGroup = parent.childrenAfterGroup.filter(function (child) { return !nodeDetails.removeFromChildrenAfterGroup[child.id]; });\n parent.allLeafChildren = parent.allLeafChildren.filter(function (child) { return !nodeDetails.removeFromAllLeafChildren[child.id]; });\n parent.updateHasChildren();\n if (parent.sibling) {\n parent.sibling.childrenAfterGroup = parent.childrenAfterGroup;\n parent.sibling.allLeafChildren = parent.allLeafChildren;\n }\n });\n this.allSets = {};\n this.allParents.length = 0;\n };\n return BatchRemover;\n}());\nexport { BatchRemover };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { _, Autowired, Bean, BeanStub, NumberSequence, PostConstruct, RowNode } from \"@ag-grid-community/core\";\nimport { BatchRemover } from \"./batchRemover\";\nvar GroupStage = /** @class */ (function (_super) {\n __extends(GroupStage, _super);\n function GroupStage() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // we use a sequence variable so that each time we do a grouping, we don't\n // reuse the ids - otherwise the rowRenderer will confuse rowNodes between redraws\n // when it tries to animate between rows.\n _this.groupIdSequence = new NumberSequence();\n return _this;\n }\n GroupStage.prototype.postConstruct = function () {\n this.usingTreeData = this.gridOptionsWrapper.isTreeData();\n if (this.usingTreeData) {\n this.getDataPath = this.gridOptionsWrapper.getDataPathFunc();\n }\n };\n GroupStage.prototype.execute = function (params) {\n var details = this.createGroupingDetails(params);\n if (details.transactions) {\n this.handleTransaction(details);\n }\n else {\n var afterColsChanged = params.afterColumnsChanged === true;\n this.shotgunResetEverything(details, afterColsChanged);\n }\n this.sortGroupsWithComparator(details.rootNode);\n this.selectableService.updateSelectableAfterGrouping(details.rootNode);\n };\n GroupStage.prototype.createGroupingDetails = function (params) {\n var rowNode = params.rowNode, changedPath = params.changedPath, rowNodeTransactions = params.rowNodeTransactions, rowNodeOrder = params.rowNodeOrder;\n var groupedCols = this.usingTreeData ? null : this.columnModel.getRowGroupColumns();\n var details = {\n // someone complained that the parent attribute was causing some change detection\n // to break is some angular add-on - which i never used. taking the parent out breaks\n // a cyclic dependency, hence this flag got introduced.\n includeParents: !this.gridOptionsWrapper.isSuppressParentsInRowNodes(),\n expandByDefault: this.gridOptionsWrapper.getGroupDefaultExpanded(),\n groupedCols: groupedCols,\n rootNode: rowNode,\n pivotMode: this.columnModel.isPivotMode(),\n groupedColCount: this.usingTreeData || !groupedCols ? 0 : groupedCols.length,\n rowNodeOrder: rowNodeOrder,\n transactions: rowNodeTransactions,\n // if no transaction, then it's shotgun, changed path would be 'not active' at this point anyway\n changedPath: changedPath\n };\n return details;\n };\n GroupStage.prototype.handleTransaction = function (details) {\n var _this = this;\n details.transactions.forEach(function (tran) {\n // we don't allow batch remover for tree data as tree data uses Filler Nodes,\n // and creating/deleting filler nodes needs to be done alongside the node deleting\n // and moving. if we want to Batch Remover working with tree data then would need\n // to consider how Filler Nodes would be impacted (it's possible that it can be easily\n // modified to work, however for now I don't have the brain energy to work it all out).\n var batchRemover = !_this.usingTreeData ? new BatchRemover() : undefined;\n // the order here of [add, remove, update] needs to be the same as in ClientSideNodeManager,\n // as the order is important when a record with the same id is added and removed in the same\n // transaction.\n if (_.existsAndNotEmpty(tran.remove)) {\n _this.removeNodes(tran.remove, details, batchRemover);\n }\n if (_.existsAndNotEmpty(tran.update)) {\n _this.moveNodesInWrongPath(tran.update, details, batchRemover);\n }\n if (_.existsAndNotEmpty(tran.add)) {\n _this.insertNodes(tran.add, details, false);\n }\n // must flush here, and not allow another transaction to be applied,\n // as each transaction must finish leaving the data in a consistent state.\n if (batchRemover) {\n var parentsWithChildrenRemoved = batchRemover.getAllParents().slice();\n batchRemover.flush();\n _this.removeEmptyGroups(parentsWithChildrenRemoved, details);\n }\n });\n if (details.rowNodeOrder) {\n this.sortChildren(details);\n }\n };\n // this is used when doing delta updates, eg Redux, keeps nodes in right order\n GroupStage.prototype.sortChildren = function (details) {\n details.changedPath.forEachChangedNodeDepthFirst(function (rowNode) {\n _.sortRowNodesByOrder(rowNode.childrenAfterGroup, details.rowNodeOrder);\n });\n };\n GroupStage.prototype.sortGroupsWithComparator = function (rootNode) {\n // we don't do group sorting for tree data\n if (this.usingTreeData) {\n return;\n }\n var comparator = this.gridOptionsWrapper.getDefaultGroupOrderComparator();\n if (_.exists(comparator)) {\n recursiveSort(rootNode);\n }\n function recursiveSort(rowNode) {\n var doSort = _.exists(rowNode.childrenAfterGroup) &&\n // we only want to sort groups, so we do not sort leafs (a leaf group has leafs as children)\n !rowNode.leafGroup;\n if (doSort) {\n rowNode.childrenAfterGroup.sort(comparator);\n rowNode.childrenAfterGroup.forEach(function (childNode) { return recursiveSort(childNode); });\n }\n }\n };\n GroupStage.prototype.getExistingPathForNode = function (node, details) {\n var res = [];\n // when doing tree data, the node is part of the path,\n // but when doing grid grouping, the node is not part of the path so we start with the parent.\n var pointer = this.usingTreeData ? node : node.parent;\n while (pointer && pointer !== details.rootNode) {\n res.push({\n key: pointer.key,\n rowGroupColumn: pointer.rowGroupColumn,\n field: pointer.field\n });\n pointer = pointer.parent;\n }\n res.reverse();\n return res;\n };\n GroupStage.prototype.moveNodesInWrongPath = function (childNodes, details, batchRemover) {\n var _this = this;\n childNodes.forEach(function (childNode) {\n // we add node, even if parent has not changed, as the data could have\n // changed, hence aggregations will be wrong\n if (details.changedPath.isActive()) {\n details.changedPath.addParentNode(childNode.parent);\n }\n var infoToKeyMapper = function (item) { return item.key; };\n var oldPath = _this.getExistingPathForNode(childNode, details).map(infoToKeyMapper);\n var newPath = _this.getGroupInfo(childNode, details).map(infoToKeyMapper);\n var nodeInCorrectPath = _.areEqual(oldPath, newPath);\n if (!nodeInCorrectPath) {\n _this.moveNode(childNode, details, batchRemover);\n }\n });\n };\n GroupStage.prototype.moveNode = function (childNode, details, batchRemover) {\n this.removeNodesInStages([childNode], details, batchRemover);\n this.insertOneNode(childNode, details, true);\n // hack - if we didn't do this, then renaming a tree item (ie changing rowNode.key) wouldn't get\n // refreshed into the gui.\n // this is needed to kick off the event that rowComp listens to for refresh. this in turn\n // then will get each cell in the row to refresh - which is what we need as we don't know which\n // columns will be displaying the rowNode.key info.\n childNode.setData(childNode.data);\n // we add both old and new parents to changed path, as both will need to be refreshed.\n // we already added the old parent (in calling method), so just add the new parent here\n if (details.changedPath.isActive()) {\n var newParent = childNode.parent;\n details.changedPath.addParentNode(newParent);\n }\n };\n GroupStage.prototype.removeNodes = function (leafRowNodes, details, batchRemover) {\n this.removeNodesInStages(leafRowNodes, details, batchRemover);\n if (details.changedPath.isActive()) {\n leafRowNodes.forEach(function (rowNode) { return details.changedPath.addParentNode(rowNode.parent); });\n }\n };\n GroupStage.prototype.removeNodesInStages = function (leafRowNodes, details, batchRemover) {\n this.removeNodesFromParents(leafRowNodes, details, batchRemover);\n if (this.usingTreeData) {\n this.postRemoveCreateFillerNodes(leafRowNodes, details);\n // When not TreeData, then removeEmptyGroups is called just before the BatchRemover is flushed.\n // However for TreeData, there is no BatchRemover, so we have to call removeEmptyGroups here.\n var nodeParents = leafRowNodes.map(function (n) { return n.parent; });\n this.removeEmptyGroups(nodeParents, details);\n }\n };\n GroupStage.prototype.forEachParentGroup = function (details, group, callback) {\n var pointer = group;\n while (pointer && pointer !== details.rootNode) {\n callback(pointer);\n pointer = pointer.parent;\n }\n };\n GroupStage.prototype.removeNodesFromParents = function (nodesToRemove, details, provided) {\n var _this = this;\n // this method can be called with BatchRemover as optional. if it is missed, we created a local version\n // and flush it at the end. if one is provided, we add to the provided one and it gets flushed elsewhere.\n var batchRemoverIsLocal = provided == null;\n var batchRemoverToUse = provided ? provided : new BatchRemover();\n nodesToRemove.forEach(function (nodeToRemove) {\n _this.removeFromParent(nodeToRemove, batchRemoverToUse);\n // remove from allLeafChildren. we clear down all parents EXCEPT the Root Node, as\n // the ClientSideNodeManager is responsible for the Root Node.\n _this.forEachParentGroup(details, nodeToRemove.parent, function (parentNode) {\n batchRemoverToUse.removeFromAllLeafChildren(parentNode, nodeToRemove);\n });\n });\n if (batchRemoverIsLocal) {\n batchRemoverToUse.flush();\n }\n };\n GroupStage.prototype.postRemoveCreateFillerNodes = function (nodesToRemove, details) {\n var _this = this;\n nodesToRemove.forEach(function (nodeToRemove) {\n // if not group, and children are present, need to move children to a group.\n // otherwise if no children, we can just remove without replacing.\n var replaceWithGroup = nodeToRemove.hasChildren();\n if (replaceWithGroup) {\n var oldPath = _this.getExistingPathForNode(nodeToRemove, details);\n // because we just removed the userGroup, this will always return new support group\n var newGroupNode_1 = _this.findParentForNode(nodeToRemove, oldPath, details);\n // these properties are the ones that will be incorrect in the newly created group,\n // so copy them from the old childNode\n newGroupNode_1.expanded = nodeToRemove.expanded;\n newGroupNode_1.allLeafChildren = nodeToRemove.allLeafChildren;\n newGroupNode_1.childrenAfterGroup = nodeToRemove.childrenAfterGroup;\n newGroupNode_1.childrenMapped = nodeToRemove.childrenMapped;\n newGroupNode_1.updateHasChildren();\n newGroupNode_1.childrenAfterGroup.forEach(function (rowNode) { return rowNode.parent = newGroupNode_1; });\n }\n });\n };\n GroupStage.prototype.removeEmptyGroups = function (possibleEmptyGroups, details) {\n var _this = this;\n // we do this multiple times, as when we remove groups, that means the parent of just removed\n // group can then be empty. to get around this, if we remove, then we check everything again for\n // newly emptied groups. the max number of times this will execute is the depth of the group tree.\n var checkAgain = true;\n var groupShouldBeRemoved = function (rowNode) {\n // because of the while loop below, it's possible we already moved the node,\n // so double check before trying to remove again.\n var mapKey = _this.getChildrenMappedKey(rowNode.key, rowNode.rowGroupColumn);\n var parentRowNode = rowNode.parent;\n var groupAlreadyRemoved = (parentRowNode && parentRowNode.childrenMapped) ?\n !parentRowNode.childrenMapped[mapKey] : true;\n if (groupAlreadyRemoved) {\n // if not linked, then group was already removed\n return false;\n }\n // if still not removed, then we remove if this group is empty\n return !!rowNode.isEmptyRowGroupNode();\n };\n var _loop_1 = function () {\n checkAgain = false;\n var batchRemover = new BatchRemover();\n possibleEmptyGroups.forEach(function (possibleEmptyGroup) {\n // remove empty groups\n _this.forEachParentGroup(details, possibleEmptyGroup, function (rowNode) {\n if (groupShouldBeRemoved(rowNode)) {\n checkAgain = true;\n _this.removeFromParent(rowNode, batchRemover);\n // we remove selection on filler nodes here, as the selection would not be removed\n // from the RowNodeManager, as filler nodes don't exist on the RowNodeManager\n rowNode.setSelected(false);\n }\n });\n });\n batchRemover.flush();\n };\n while (checkAgain) {\n _loop_1();\n }\n };\n // removes the node from the parent by:\n // a) removing from childrenAfterGroup (using batchRemover if present, otherwise immediately)\n // b) removing from childrenMapped (immediately)\n // c) setRowTop(null) - as the rowRenderer uses this to know the RowNode is no longer needed\n // d) setRowIndex(null) - as the rowNode will no longer be displayed.\n GroupStage.prototype.removeFromParent = function (child, batchRemover) {\n if (child.parent) {\n if (batchRemover) {\n batchRemover.removeFromChildrenAfterGroup(child.parent, child);\n }\n else {\n _.removeFromArray(child.parent.childrenAfterGroup, child);\n child.parent.updateHasChildren();\n }\n }\n var mapKey = this.getChildrenMappedKey(child.key, child.rowGroupColumn);\n if (child.parent && child.parent.childrenMapped) {\n child.parent.childrenMapped[mapKey] = undefined;\n }\n // this is important for transition, see rowComp removeFirstPassFuncs. when doing animation and\n // remove, if rowTop is still present, the rowComp thinks it's just moved position.\n child.setRowTop(null);\n child.setRowIndex(null);\n };\n GroupStage.prototype.addToParent = function (child, parent) {\n var mapKey = this.getChildrenMappedKey(child.key, child.rowGroupColumn);\n if (parent) {\n var children = parent.childrenMapped != null;\n if (children) {\n parent.childrenMapped[mapKey] = child;\n }\n parent.childrenAfterGroup.push(child);\n parent.updateHasChildren();\n }\n };\n GroupStage.prototype.areGroupColsEqual = function (d1, d2) {\n if (d1 == null || d2 == null || d1.pivotMode !== d2.pivotMode) {\n return false;\n }\n return _.areEqual(d1.groupedCols, d2.groupedCols);\n };\n GroupStage.prototype.checkAllGroupDataAfterColsChanged = function (details) {\n var _this = this;\n var recurse = function (rowNodes) {\n if (!rowNodes) {\n return;\n }\n rowNodes.forEach(function (rowNode) {\n var isLeafNode = !_this.usingTreeData && !rowNode.group;\n if (isLeafNode) {\n return;\n }\n var groupInfo = {\n field: rowNode.field,\n key: rowNode.key,\n rowGroupColumn: rowNode.rowGroupColumn\n };\n _this.setGroupData(rowNode, groupInfo);\n recurse(rowNode.childrenAfterGroup);\n });\n };\n recurse(details.rootNode.childrenAfterGroup);\n };\n GroupStage.prototype.shotgunResetEverything = function (details, afterColumnsChanged) {\n if (this.noChangeInGroupingColumns(details, afterColumnsChanged)) {\n return;\n }\n // groups are about to get disposed, so need to deselect any that are selected\n this.selectionService.removeGroupsFromSelection();\n var rootNode = details.rootNode, groupedCols = details.groupedCols;\n // because we are not creating the root node each time, we have the logic\n // here to change leafGroup once.\n // we set .leafGroup to false for tree data, as .leafGroup is only used when pivoting, and pivoting\n // isn't allowed with treeData, so the grid never actually use .leafGroup when doing treeData.\n rootNode.leafGroup = this.usingTreeData ? false : groupedCols.length === 0;\n // we are doing everything from scratch, so reset childrenAfterGroup and childrenMapped from the rootNode\n rootNode.childrenAfterGroup = [];\n rootNode.childrenMapped = {};\n rootNode.updateHasChildren();\n var sibling = rootNode.sibling;\n if (sibling) {\n sibling.childrenAfterGroup = rootNode.childrenAfterGroup;\n sibling.childrenMapped = rootNode.childrenMapped;\n }\n this.insertNodes(rootNode.allLeafChildren, details, false);\n };\n GroupStage.prototype.noChangeInGroupingColumns = function (details, afterColumnsChanged) {\n var noFurtherProcessingNeeded = false;\n var groupDisplayColumns = this.columnModel.getGroupDisplayColumns();\n var newGroupDisplayColIds = groupDisplayColumns ?\n groupDisplayColumns.map(function (c) { return c.getId(); }).join('-') : '';\n if (afterColumnsChanged) {\n // we only need to redo grouping if doing normal grouping (ie not tree data)\n // and the group cols have changed.\n noFurtherProcessingNeeded = this.usingTreeData || this.areGroupColsEqual(details, this.oldGroupingDetails);\n // if the group display cols have changed, then we need to update rowNode.groupData\n // (regardless of tree data or row grouping)\n if (this.oldGroupDisplayColIds !== newGroupDisplayColIds) {\n this.checkAllGroupDataAfterColsChanged(details);\n }\n }\n this.oldGroupingDetails = details;\n this.oldGroupDisplayColIds = newGroupDisplayColIds;\n return noFurtherProcessingNeeded;\n };\n GroupStage.prototype.insertNodes = function (newRowNodes, details, isMove) {\n var _this = this;\n newRowNodes.forEach(function (rowNode) {\n _this.insertOneNode(rowNode, details, isMove);\n if (details.changedPath.isActive()) {\n details.changedPath.addParentNode(rowNode.parent);\n }\n });\n };\n GroupStage.prototype.insertOneNode = function (childNode, details, isMove) {\n var path = this.getGroupInfo(childNode, details);\n var parentGroup = this.findParentForNode(childNode, path, details);\n if (!parentGroup.group) {\n console.warn(\"AG Grid: duplicate group keys for row data, keys should be unique\", [parentGroup.data, childNode.data]);\n }\n if (this.usingTreeData) {\n this.swapGroupWithUserNode(parentGroup, childNode, isMove);\n }\n else {\n childNode.parent = parentGroup;\n childNode.level = path.length;\n parentGroup.childrenAfterGroup.push(childNode);\n parentGroup.updateHasChildren();\n }\n };\n GroupStage.prototype.findParentForNode = function (childNode, path, details) {\n var _this = this;\n var nextNode = details.rootNode;\n path.forEach(function (groupInfo, level) {\n nextNode = _this.getOrCreateNextNode(nextNode, groupInfo, level, details);\n // node gets added to all group nodes.\n // note: we do not add to rootNode here, as the rootNode is the master list of rowNodes\n nextNode.allLeafChildren.push(childNode);\n });\n return nextNode;\n };\n GroupStage.prototype.swapGroupWithUserNode = function (fillerGroup, userGroup, isMove) {\n userGroup.parent = fillerGroup.parent;\n userGroup.key = fillerGroup.key;\n userGroup.field = fillerGroup.field;\n userGroup.groupData = fillerGroup.groupData;\n userGroup.level = fillerGroup.level;\n // AG-3441 - preserve the existing expanded status of the node if we're moving it, so that\n // you can drag a sub tree from one parent to another without changing its expansion\n if (!isMove) {\n userGroup.expanded = fillerGroup.expanded;\n }\n // we set .leafGroup to false for tree data, as .leafGroup is only used when pivoting, and pivoting\n // isn't allowed with treeData, so the grid never actually use .leafGroup when doing treeData.\n userGroup.leafGroup = fillerGroup.leafGroup;\n // always null for userGroups, as row grouping is not allowed when doing tree data\n userGroup.rowGroupIndex = fillerGroup.rowGroupIndex;\n userGroup.allLeafChildren = fillerGroup.allLeafChildren;\n userGroup.childrenAfterGroup = fillerGroup.childrenAfterGroup;\n userGroup.childrenMapped = fillerGroup.childrenMapped;\n userGroup.updateHasChildren();\n this.removeFromParent(fillerGroup);\n userGroup.childrenAfterGroup.forEach(function (rowNode) { return rowNode.parent = userGroup; });\n this.addToParent(userGroup, fillerGroup.parent);\n };\n GroupStage.prototype.getOrCreateNextNode = function (parentGroup, groupInfo, level, details) {\n var key = this.getChildrenMappedKey(groupInfo.key, groupInfo.rowGroupColumn);\n var nextNode = parentGroup.childrenMapped ? parentGroup.childrenMapped[key] : undefined;\n if (!nextNode) {\n nextNode = this.createGroup(groupInfo, parentGroup, level, details);\n // attach the new group to the parent\n this.addToParent(nextNode, parentGroup);\n }\n return nextNode;\n };\n GroupStage.prototype.createGroup = function (groupInfo, parent, level, details) {\n var groupNode = new RowNode(this.beans);\n groupNode.group = true;\n groupNode.field = groupInfo.field;\n groupNode.rowGroupColumn = groupInfo.rowGroupColumn;\n this.setGroupData(groupNode, groupInfo);\n // we put 'row-group-' before the group id, so it doesn't clash with standard row id's. we also use 't-' and 'b-'\n // for top pinned and bottom pinned rows.\n groupNode.id = RowNode.ID_PREFIX_ROW_GROUP + this.groupIdSequence.next();\n groupNode.key = groupInfo.key;\n groupNode.level = level;\n groupNode.leafGroup = this.usingTreeData ? false : level === (details.groupedColCount - 1);\n groupNode.allLeafChildren = [];\n // why is this done here? we are not updating the children count as we go,\n // i suspect this is updated in the filter stage\n groupNode.setAllChildrenCount(0);\n groupNode.rowGroupIndex = this.usingTreeData ? null : level;\n groupNode.childrenAfterGroup = [];\n groupNode.childrenMapped = {};\n groupNode.updateHasChildren();\n groupNode.parent = details.includeParents ? parent : null;\n this.setExpandedInitialValue(details, groupNode);\n return groupNode;\n };\n GroupStage.prototype.setGroupData = function (groupNode, groupInfo) {\n var _this = this;\n groupNode.groupData = {};\n var groupDisplayCols = this.columnModel.getGroupDisplayColumns();\n groupDisplayCols.forEach(function (col) {\n // newGroup.rowGroupColumn=null when working off GroupInfo, and we always display the group in the group column\n // if rowGroupColumn is present, then it's grid row grouping and we only include if configuration says so\n var displayGroupForCol = _this.usingTreeData || (groupNode.rowGroupColumn ? col.isRowGroupDisplayed(groupNode.rowGroupColumn.getId()) : false);\n if (displayGroupForCol) {\n groupNode.groupData[col.getColId()] = groupInfo.key;\n }\n });\n };\n GroupStage.prototype.getChildrenMappedKey = function (key, rowGroupColumn) {\n if (rowGroupColumn) {\n // grouping by columns\n return rowGroupColumn.getId() + '-' + key;\n }\n // tree data - we don't have rowGroupColumns\n return key;\n };\n GroupStage.prototype.setExpandedInitialValue = function (details, groupNode) {\n // if pivoting the leaf group is never expanded as we do not show leaf rows\n if (details.pivotMode && groupNode.leafGroup) {\n groupNode.expanded = false;\n return;\n }\n // use callback if exists\n var userCallback = this.gridOptionsWrapper.getIsGroupOpenByDefaultFunc();\n if (userCallback) {\n var params = {\n rowNode: groupNode,\n field: groupNode.field,\n key: groupNode.key,\n level: groupNode.level,\n rowGroupColumn: groupNode.rowGroupColumn\n };\n groupNode.expanded = userCallback(params) == true;\n return;\n }\n // use expandByDefault if exists\n var expandByDefault = details.expandByDefault;\n if (details.expandByDefault === -1) {\n groupNode.expanded = true;\n return;\n }\n // otherwise\n groupNode.expanded = groupNode.level < expandByDefault;\n };\n GroupStage.prototype.getGroupInfo = function (rowNode, details) {\n if (this.usingTreeData) {\n return this.getGroupInfoFromCallback(rowNode);\n }\n return this.getGroupInfoFromGroupColumns(rowNode, details);\n };\n GroupStage.prototype.getGroupInfoFromCallback = function (rowNode) {\n var keys = this.getDataPath ? this.getDataPath(rowNode.data) : null;\n if (keys === null || keys === undefined || keys.length === 0) {\n _.doOnce(function () { return console.warn(\"AG Grid: getDataPath() should not return an empty path for data\", rowNode.data); }, 'groupStage.getGroupInfoFromCallback');\n }\n var groupInfoMapper = function (key) { return ({ key: key, field: null, rowGroupColumn: null }); };\n return keys ? keys.map(groupInfoMapper) : [];\n };\n GroupStage.prototype.getGroupInfoFromGroupColumns = function (rowNode, details) {\n var _this = this;\n var res = [];\n details.groupedCols.forEach(function (groupCol) {\n var key = _this.valueService.getKeyForNode(groupCol, rowNode);\n var keyExists = key !== null && key !== undefined;\n // unbalanced tree and pivot mode don't work together - not because of the grid, it doesn't make\n // mathematical sense as you are building up a cube. so if pivot mode, we put in a blank key where missing.\n // this keeps the tree balanced and hence can be represented as a group.\n if (details.pivotMode && !keyExists) {\n key = ' ';\n keyExists = true;\n }\n if (keyExists) {\n var item = {\n key: key,\n field: groupCol.getColDef().field,\n rowGroupColumn: groupCol\n };\n res.push(item);\n }\n });\n return res;\n };\n __decorate([\n Autowired('columnModel')\n ], GroupStage.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('selectableService')\n ], GroupStage.prototype, \"selectableService\", void 0);\n __decorate([\n Autowired('valueService')\n ], GroupStage.prototype, \"valueService\", void 0);\n __decorate([\n Autowired('beans')\n ], GroupStage.prototype, \"beans\", void 0);\n __decorate([\n Autowired('selectionService')\n ], GroupStage.prototype, \"selectionService\", void 0);\n __decorate([\n PostConstruct\n ], GroupStage.prototype, \"postConstruct\", null);\n GroupStage = __decorate([\n Bean('groupStage')\n ], GroupStage);\n return GroupStage;\n}(BeanStub));\nexport { GroupStage };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nimport { Autowired, Bean, BeanStub, NumberSequence, _ } from \"@ag-grid-community/core\";\nvar PivotColDefService = /** @class */ (function (_super) {\n __extends(PivotColDefService, _super);\n function PivotColDefService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PivotColDefService_1 = PivotColDefService;\n PivotColDefService.prototype.createPivotColumnDefs = function (uniqueValues) {\n // this is passed to the columnModel, to configure the columns and groups we show\n var pivotColumnGroupDefs = [];\n // this is used by the aggregation stage, to do the aggregation based on the pivot columns\n var pivotColumnDefs = [];\n var pivotColumns = this.columnModel.getPivotColumns();\n var valueColumns = this.columnModel.getValueColumns();\n var levelsDeep = pivotColumns.length;\n var columnIdSequence = new NumberSequence();\n this.recursivelyAddGroup(pivotColumnGroupDefs, pivotColumnDefs, 1, uniqueValues, [], columnIdSequence, levelsDeep, pivotColumns);\n // additional columns that contain the aggregated total for each value column per row\n this.addRowGroupTotals(pivotColumnGroupDefs, pivotColumnDefs, valueColumns, columnIdSequence);\n // additional group columns that contain child totals for each collapsed child column / group\n this.addExpandablePivotGroups(pivotColumnGroupDefs, pivotColumnDefs, columnIdSequence);\n // additional group columns that contain an aggregated total across all child columns\n this.addPivotTotalsToGroups(pivotColumnGroupDefs, pivotColumnDefs, columnIdSequence);\n // we clone, so the colDefs in pivotColumnsGroupDefs and pivotColumnDefs are not shared. this is so that\n // any changes the user makes (via processSecondaryColumnDefinitions) don't impact the internal aggregations,\n // as these use the col defs also\n var pivotColumnDefsClone = pivotColumnDefs.map(function (colDef) { return _.cloneObject(colDef); });\n return {\n pivotColumnGroupDefs: pivotColumnGroupDefs,\n pivotColumnDefs: pivotColumnDefsClone\n };\n };\n // parentChildren - the list of colDefs we are adding to\n // @index - how far the column is from the top (also same as pivotKeys.length)\n // @uniqueValues - the values for which we should create a col for\n // @pivotKeys - the keys for the pivot, eg if pivoting on {Language,Country} then could be {English,Ireland}\n PivotColDefService.prototype.recursivelyAddGroup = function (parentChildren, pivotColumnDefs, index, uniqueValues, pivotKeys, columnIdSequence, levelsDeep, primaryPivotColumns) {\n var _this = this;\n _.iterateObject(uniqueValues, function (key, value) {\n var newPivotKeys = __spread(pivotKeys, [key]);\n var createGroup = index !== levelsDeep;\n if (createGroup) {\n var groupDef = {\n children: [],\n headerName: key,\n pivotKeys: newPivotKeys,\n columnGroupShow: 'open',\n groupId: 'pivot' + columnIdSequence.next()\n };\n parentChildren.push(groupDef);\n _this.recursivelyAddGroup(groupDef.children, pivotColumnDefs, index + 1, value, newPivotKeys, columnIdSequence, levelsDeep, primaryPivotColumns);\n }\n else {\n var measureColumns = _this.columnModel.getValueColumns();\n var valueGroup_1 = {\n children: [],\n headerName: key,\n pivotKeys: newPivotKeys,\n columnGroupShow: 'open',\n groupId: 'pivot' + columnIdSequence.next()\n };\n // if no value columns selected, then we insert one blank column, so the user at least sees columns\n // rendered. otherwise the grid would render with no columns (just empty groups) which would give the\n // impression that the grid is broken\n if (measureColumns.length === 0) {\n // this is the blank column, for when no value columns enabled.\n var colDef = _this.createColDef(null, '-', newPivotKeys, columnIdSequence);\n valueGroup_1.children.push(colDef);\n pivotColumnDefs.push(colDef);\n }\n else {\n measureColumns.forEach(function (measureColumn) {\n var columnName = _this.columnModel.getDisplayNameForColumn(measureColumn, 'header');\n var colDef = _this.createColDef(measureColumn, columnName, newPivotKeys, columnIdSequence);\n colDef.columnGroupShow = 'open';\n valueGroup_1.children.push(colDef);\n pivotColumnDefs.push(colDef);\n });\n }\n parentChildren.push(valueGroup_1);\n }\n });\n // sort by either user provided comparator, or our own one\n var primaryPivotColumnDefs = primaryPivotColumns[index - 1].getColDef();\n var userComparator = primaryPivotColumnDefs.pivotComparator;\n var comparator = this.headerNameComparator.bind(this, userComparator);\n parentChildren.sort(comparator);\n };\n PivotColDefService.prototype.addExpandablePivotGroups = function (pivotColumnGroupDefs, pivotColumnDefs, columnIdSequence) {\n var _this = this;\n if (this.gridOptionsWrapper.isSuppressExpandablePivotGroups() ||\n this.gridOptionsWrapper.getPivotColumnGroupTotals()) {\n return;\n }\n var recursivelyAddSubTotals = function (groupDef, currentPivotColumnDefs, currentColumnIdSequence, acc) {\n var group = groupDef;\n if (group.children) {\n var childAcc_1 = new Map();\n group.children.forEach(function (grp) {\n recursivelyAddSubTotals(grp, currentPivotColumnDefs, currentColumnIdSequence, childAcc_1);\n });\n var firstGroup_1 = !group.children.some(function (child) { return child.children; });\n _this.columnModel.getValueColumns().forEach(function (valueColumn) {\n var columnName = _this.columnModel.getDisplayNameForColumn(valueColumn, 'header');\n var totalColDef = _this.createColDef(valueColumn, columnName, groupDef.pivotKeys, currentColumnIdSequence);\n totalColDef.pivotTotalColumnIds = childAcc_1.get(valueColumn.getColId());\n totalColDef.columnGroupShow = 'closed';\n totalColDef.aggFunc = valueColumn.getAggFunc();\n if (!firstGroup_1) {\n // add total colDef to group and pivot colDefs array\n var children = groupDef.children;\n children.push(totalColDef);\n currentPivotColumnDefs.push(totalColDef);\n }\n });\n _this.merge(acc, childAcc_1);\n }\n else {\n var def = groupDef;\n // check that value column exists, i.e. aggFunc is supplied\n if (!def.pivotValueColumn) {\n return;\n }\n var pivotValueColId = def.pivotValueColumn.getColId();\n var arr = acc.has(pivotValueColId) ? acc.get(pivotValueColId) : [];\n arr.push(def.colId);\n acc.set(pivotValueColId, arr);\n }\n };\n pivotColumnGroupDefs.forEach(function (groupDef) {\n recursivelyAddSubTotals(groupDef, pivotColumnDefs, columnIdSequence, new Map());\n });\n };\n PivotColDefService.prototype.addPivotTotalsToGroups = function (pivotColumnGroupDefs, pivotColumnDefs, columnIdSequence) {\n var _this = this;\n if (!this.gridOptionsWrapper.getPivotColumnGroupTotals()) {\n return;\n }\n var insertAfter = this.gridOptionsWrapper.getPivotColumnGroupTotals() === 'after';\n var valueCols = this.columnModel.getValueColumns();\n var aggFuncs = valueCols.map(function (valueCol) { return valueCol.getAggFunc(); });\n // don't add pivot totals if there is less than 1 aggFunc or they are not all the same\n if (!aggFuncs || aggFuncs.length < 1 || !this.sameAggFuncs(aggFuncs)) {\n // console.warn('AG Grid: aborting adding pivot total columns - value columns require same aggFunc');\n return;\n }\n // arbitrarily select a value column to use as a template for pivot columns\n var valueColumn = valueCols[0];\n pivotColumnGroupDefs.forEach(function (groupDef) {\n _this.recursivelyAddPivotTotal(groupDef, pivotColumnDefs, columnIdSequence, valueColumn, insertAfter);\n });\n };\n PivotColDefService.prototype.recursivelyAddPivotTotal = function (groupDef, pivotColumnDefs, columnIdSequence, valueColumn, insertAfter) {\n var _this = this;\n var group = groupDef;\n if (!group.children) {\n var def = groupDef;\n return def.colId ? [def.colId] : null;\n }\n var colIds = [];\n // need to recurse children first to obtain colIds used in the aggregation stage\n group.children\n .forEach(function (grp) {\n var childColIds = _this.recursivelyAddPivotTotal(grp, pivotColumnDefs, columnIdSequence, valueColumn, insertAfter);\n if (childColIds) {\n colIds = colIds.concat(childColIds);\n }\n });\n // only add total colDef if there is more than 1 child node\n if (group.children.length > 1) {\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var headerName = localeTextFunc('pivotColumnGroupTotals', 'Total');\n //create total colDef using an arbitrary value column as a template\n var totalColDef = this.createColDef(valueColumn, headerName, groupDef.pivotKeys, columnIdSequence);\n totalColDef.pivotTotalColumnIds = colIds;\n totalColDef.aggFunc = valueColumn.getAggFunc();\n // add total colDef to group and pivot colDefs array\n var children = groupDef.children;\n insertAfter ? children.push(totalColDef) : children.unshift(totalColDef);\n pivotColumnDefs.push(totalColDef);\n }\n return colIds;\n };\n PivotColDefService.prototype.addRowGroupTotals = function (pivotColumnGroupDefs, pivotColumnDefs, valueColumns, columnIdSequence) {\n var _this = this;\n if (!this.gridOptionsWrapper.getPivotRowTotals()) {\n return;\n }\n var insertAfter = this.gridOptionsWrapper.getPivotRowTotals() === 'after';\n // order of row group totals depends on position\n var valueCols = insertAfter ? valueColumns.slice() : valueColumns.slice().reverse();\n var _loop_1 = function (i) {\n var valueCol = valueCols[i];\n var colIds = [];\n pivotColumnGroupDefs.forEach(function (groupDef) {\n colIds = colIds.concat(_this.extractColIdsForValueColumn(groupDef, valueCol));\n });\n this_1.createRowGroupTotal(pivotColumnGroupDefs, pivotColumnDefs, [], columnIdSequence, valueCol, colIds, insertAfter);\n };\n var this_1 = this;\n for (var i = 0; i < valueCols.length; i++) {\n _loop_1(i);\n }\n };\n PivotColDefService.prototype.extractColIdsForValueColumn = function (groupDef, valueColumn) {\n var _this = this;\n var group = groupDef;\n if (!group.children) {\n var colDef = group;\n return colDef.pivotValueColumn === valueColumn && colDef.colId ? [colDef.colId] : [];\n }\n var colIds = [];\n group.children\n .forEach(function (grp) {\n _this.extractColIdsForValueColumn(grp, valueColumn);\n var childColIds = _this.extractColIdsForValueColumn(grp, valueColumn);\n colIds = colIds.concat(childColIds);\n });\n return colIds;\n };\n PivotColDefService.prototype.createRowGroupTotal = function (parentChildren, pivotColumnDefs, pivotKeys, columnIdSequence, valueColumn, colIds, insertAfter) {\n var newPivotKeys = pivotKeys.slice(0);\n var measureColumns = this.columnModel.getValueColumns();\n var valueGroup = {\n children: [],\n pivotKeys: newPivotKeys,\n groupId: PivotColDefService_1.PIVOT_ROW_TOTAL_PREFIX + columnIdSequence.next(),\n };\n if (measureColumns.length === 0) {\n var colDef = this.createColDef(null, '-', newPivotKeys, columnIdSequence);\n valueGroup.children.push(colDef);\n pivotColumnDefs.push(colDef);\n }\n else {\n var columnName = this.columnModel.getDisplayNameForColumn(valueColumn, 'header');\n var colDef = this.createColDef(valueColumn, columnName, newPivotKeys, columnIdSequence);\n colDef.pivotTotalColumnIds = colIds;\n valueGroup.children.push(colDef);\n pivotColumnDefs.push(colDef);\n }\n insertAfter ? parentChildren.push(valueGroup) : parentChildren.unshift(valueGroup);\n };\n PivotColDefService.prototype.createColDef = function (valueColumn, headerName, pivotKeys, columnIdSequence) {\n var colDef = {};\n if (valueColumn) {\n var colDefToCopy = valueColumn.getColDef();\n Object.assign(colDef, colDefToCopy);\n // even if original column was hidden, we always show the pivot value column, otherwise it would be\n // very confusing for people thinking the pivot is broken\n colDef.hide = false;\n }\n colDef.headerName = headerName;\n colDef.colId = 'pivot_' + columnIdSequence.next();\n // pivot columns repeat over field, so it makes sense to use the unique id instead. For example if you want to\n // assign values to pinned bottom rows using setPinnedBottomRowData the value service will use this colId.\n colDef.field = colDef.colId;\n colDef.pivotKeys = pivotKeys;\n colDef.pivotValueColumn = valueColumn;\n colDef.filter = false;\n return colDef;\n };\n PivotColDefService.prototype.sameAggFuncs = function (aggFuncs) {\n if (aggFuncs.length == 1) {\n return true;\n }\n //check if all aggFunc's match\n for (var i = 1; i < aggFuncs.length; i++) {\n if (aggFuncs[i] !== aggFuncs[0]) {\n return false;\n }\n }\n return true;\n };\n PivotColDefService.prototype.headerNameComparator = function (userComparator, a, b) {\n if (userComparator) {\n return userComparator(a.headerName, b.headerName);\n }\n else {\n if (a.headerName && !b.headerName) {\n return 1;\n }\n else if (!a.headerName && b.headerName) {\n return -1;\n }\n // slightly naff here - just to satify typescript\n // really should be &&, but if so ts complains\n // the above if/else checks would deal with either being falsy, so at this stage if either are falsy, both are\n // ..still naff though\n if (!a.headerName || !b.headerName) {\n return 0;\n }\n if (a.headerName < b.headerName) {\n return -1;\n }\n if (a.headerName > b.headerName) {\n return 1;\n }\n return 0;\n }\n };\n PivotColDefService.prototype.merge = function (m1, m2) {\n m2.forEach(function (value, key, map) {\n var existingList = m1.has(key) ? m1.get(key) : [];\n var updatedList = __spread(existingList, value);\n m1.set(key, updatedList);\n });\n };\n var PivotColDefService_1;\n PivotColDefService.PIVOT_ROW_TOTAL_PREFIX = 'PivotRowTotal_';\n __decorate([\n Autowired('columnModel')\n ], PivotColDefService.prototype, \"columnModel\", void 0);\n PivotColDefService = PivotColDefService_1 = __decorate([\n Bean('pivotColDefService')\n ], PivotColDefService);\n return PivotColDefService;\n}(BeanStub));\nexport { PivotColDefService };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Bean, BeanStub, _ } from \"@ag-grid-community/core\";\nvar PivotStage = /** @class */ (function (_super) {\n __extends(PivotStage, _super);\n function PivotStage() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.uniqueValues = {};\n return _this;\n }\n PivotStage.prototype.execute = function (params) {\n var rootNode = params.rowNode;\n var changedPath = params.changedPath;\n if (this.columnModel.isPivotActive()) {\n this.executePivotOn(rootNode, changedPath);\n }\n else {\n this.executePivotOff(changedPath);\n }\n };\n PivotStage.prototype.executePivotOff = function (changedPath) {\n this.aggregationColumnsHashLastTime = null;\n this.uniqueValues = {};\n if (this.columnModel.isSecondaryColumnsPresent()) {\n this.columnModel.setSecondaryColumns(null, \"rowModelUpdated\");\n if (changedPath) {\n changedPath.setInactive();\n }\n }\n };\n PivotStage.prototype.executePivotOn = function (rootNode, changedPath) {\n var uniqueValues = this.bucketUpRowNodes(rootNode);\n var uniqueValuesChanged = this.setUniqueValues(uniqueValues);\n var aggregationColumns = this.columnModel.getValueColumns();\n var aggregationColumnsHash = aggregationColumns.map(function (column) { return column.getId() + \"-\" + column.getColDef().headerName; }).join('#');\n var aggregationFuncsHash = aggregationColumns.map(function (column) { return column.getAggFunc().toString(); }).join('#');\n var aggregationColumnsChanged = this.aggregationColumnsHashLastTime !== aggregationColumnsHash;\n var aggregationFuncsChanged = this.aggregationFuncsHashLastTime !== aggregationFuncsHash;\n this.aggregationColumnsHashLastTime = aggregationColumnsHash;\n this.aggregationFuncsHashLastTime = aggregationFuncsHash;\n if (uniqueValuesChanged || aggregationColumnsChanged || aggregationFuncsChanged) {\n var _a = this.pivotColDefService.createPivotColumnDefs(this.uniqueValues), pivotColumnGroupDefs = _a.pivotColumnGroupDefs, pivotColumnDefs = _a.pivotColumnDefs;\n this.pivotColumnDefs = pivotColumnDefs;\n this.columnModel.setSecondaryColumns(pivotColumnGroupDefs, \"rowModelUpdated\");\n // because the secondary columns have changed, then the aggregation needs to visit the whole\n // tree again, so we make the changedPath not active, to force aggregation to visit all paths.\n if (changedPath) {\n changedPath.setInactive();\n }\n }\n };\n PivotStage.prototype.setUniqueValues = function (newValues) {\n var json1 = JSON.stringify(newValues);\n var json2 = JSON.stringify(this.uniqueValues);\n var uniqueValuesChanged = json1 !== json2;\n // we only continue the below if the unique values are different, as otherwise\n // the result will be the same as the last time we did it\n if (uniqueValuesChanged) {\n this.uniqueValues = newValues;\n return true;\n }\n else {\n return false;\n }\n };\n // returns true if values were different\n PivotStage.prototype.bucketUpRowNodes = function (rootNode) {\n var _this = this;\n // accessed from inside inner function\n var uniqueValues = {};\n // finds all leaf groups and calls mapRowNode with it\n var recursivelySearchForLeafNodes = function (rowNode) {\n if (rowNode.leafGroup) {\n _this.bucketRowNode(rowNode, uniqueValues);\n }\n else {\n rowNode.childrenAfterFilter.forEach(function (child) {\n recursivelySearchForLeafNodes(child);\n });\n }\n };\n recursivelySearchForLeafNodes(rootNode);\n return uniqueValues;\n };\n PivotStage.prototype.bucketRowNode = function (rowNode, uniqueValues) {\n var pivotColumns = this.columnModel.getPivotColumns();\n if (pivotColumns.length === 0) {\n rowNode.childrenMapped = null;\n }\n else {\n rowNode.childrenMapped = this.bucketChildren(rowNode.childrenAfterFilter, pivotColumns, 0, uniqueValues);\n }\n if (rowNode.sibling) {\n rowNode.sibling.childrenMapped = rowNode.childrenMapped;\n }\n };\n PivotStage.prototype.bucketChildren = function (children, pivotColumns, pivotIndex, uniqueValues) {\n var _this = this;\n var mappedChildren = {};\n var pivotColumn = pivotColumns[pivotIndex];\n // map the children out based on the pivot column\n children.forEach(function (child) {\n var key = _this.valueService.getKeyForNode(pivotColumn, child);\n if (_.missing(key)) {\n key = '';\n }\n if (!uniqueValues[key]) {\n uniqueValues[key] = {};\n }\n if (!mappedChildren[key]) {\n mappedChildren[key] = [];\n }\n mappedChildren[key].push(child);\n });\n // if it's the last pivot column, return as is, otherwise go one level further in the map\n if (pivotIndex === pivotColumns.length - 1) {\n return mappedChildren;\n }\n else {\n var result_1 = {};\n _.iterateObject(mappedChildren, function (key, value) {\n result_1[key] = _this.bucketChildren(value, pivotColumns, pivotIndex + 1, uniqueValues[key]);\n });\n return result_1;\n }\n };\n PivotStage.prototype.getPivotColumnDefs = function () {\n return this.pivotColumnDefs;\n };\n __decorate([\n Autowired('valueService')\n ], PivotStage.prototype, \"valueService\", void 0);\n __decorate([\n Autowired('columnModel')\n ], PivotStage.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('pivotColDefService')\n ], PivotStage.prototype, \"pivotColDefService\", void 0);\n PivotStage = __decorate([\n Bean('pivotStage')\n ], PivotStage);\n return PivotStage;\n}(BeanStub));\nexport { PivotStage };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Bean, BeanStub, PostConstruct, _ } from '@ag-grid-community/core';\n// @ts-ignore\nvar AGBigInt = typeof BigInt === 'undefined' ? null : BigInt;\nvar AggFuncService = /** @class */ (function (_super) {\n __extends(AggFuncService, _super);\n function AggFuncService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.aggFuncsMap = {};\n _this.initialised = false;\n return _this;\n }\n AggFuncService_1 = AggFuncService;\n AggFuncService.prototype.init = function () {\n if (this.initialised) {\n return;\n }\n this.initialiseWithDefaultAggregations();\n this.addAggFuncs(this.gridOptionsWrapper.getAggFuncs());\n };\n AggFuncService.prototype.initialiseWithDefaultAggregations = function () {\n this.aggFuncsMap[AggFuncService_1.AGG_SUM] = aggSum;\n this.aggFuncsMap[AggFuncService_1.AGG_FIRST] = aggFirst;\n this.aggFuncsMap[AggFuncService_1.AGG_LAST] = aggLast;\n this.aggFuncsMap[AggFuncService_1.AGG_MIN] = aggMin;\n this.aggFuncsMap[AggFuncService_1.AGG_MAX] = aggMax;\n this.aggFuncsMap[AggFuncService_1.AGG_COUNT] = aggCount;\n this.aggFuncsMap[AggFuncService_1.AGG_AVG] = aggAvg;\n this.initialised = true;\n };\n AggFuncService.prototype.getDefaultAggFunc = function (column) {\n var allKeys = this.getFuncNames(column);\n // use 'sum' if it's a) allowed for the column and b) still registered\n // (ie not removed by user)\n var sumInKeysList = _.includes(allKeys, AggFuncService_1.AGG_SUM);\n var sumInFuncs = _.exists(this.aggFuncsMap[AggFuncService_1.AGG_SUM]);\n if (sumInKeysList && sumInFuncs) {\n return AggFuncService_1.AGG_SUM;\n }\n return _.existsAndNotEmpty(allKeys) ? allKeys[0] : null;\n };\n AggFuncService.prototype.addAggFuncs = function (aggFuncs) {\n _.iterateObject(aggFuncs, this.addAggFunc.bind(this));\n };\n AggFuncService.prototype.addAggFunc = function (key, aggFunc) {\n this.init();\n this.aggFuncsMap[key] = aggFunc;\n };\n AggFuncService.prototype.getAggFunc = function (name) {\n this.init();\n return this.aggFuncsMap[name];\n };\n AggFuncService.prototype.getFuncNames = function (column) {\n var userAllowedFuncs = column.getColDef().allowedAggFuncs;\n return userAllowedFuncs == null ? Object.keys(this.aggFuncsMap).sort() : userAllowedFuncs;\n };\n AggFuncService.prototype.clear = function () {\n this.aggFuncsMap = {};\n };\n var AggFuncService_1;\n AggFuncService.AGG_SUM = 'sum';\n AggFuncService.AGG_FIRST = 'first';\n AggFuncService.AGG_LAST = 'last';\n AggFuncService.AGG_MIN = 'min';\n AggFuncService.AGG_MAX = 'max';\n AggFuncService.AGG_COUNT = 'count';\n AggFuncService.AGG_AVG = 'avg';\n __decorate([\n PostConstruct\n ], AggFuncService.prototype, \"init\", null);\n AggFuncService = AggFuncService_1 = __decorate([\n Bean('aggFuncService')\n ], AggFuncService);\n return AggFuncService;\n}(BeanStub));\nexport { AggFuncService };\nfunction aggSum(params) {\n var values = params.values;\n var result = null; // the logic ensures that we never combine bigint arithmetic with numbers, but TS is hard to please\n // for optimum performance, we use a for loop here rather than calling any helper methods or using functional code\n for (var i = 0; i < values.length; i++) {\n var value = values[i];\n if (typeof value === 'number') {\n if (result === null) {\n result = value;\n }\n else {\n if (AGBigInt) {\n result += typeof result === 'number' ? value : AGBigInt(value);\n }\n else {\n result += value;\n }\n }\n }\n else if (typeof value === 'bigint') {\n if (result === null) {\n result = value;\n }\n else {\n result = (typeof result === 'bigint' ? result : AGBigInt(result)) + value;\n }\n }\n }\n return result;\n}\nfunction aggFirst(params) {\n return params.values.length > 0 ? params.values[0] : null;\n}\nfunction aggLast(params) {\n return params.values.length > 0 ? _.last(params.values) : null;\n}\nfunction aggMin(params) {\n var values = params.values;\n var result = null;\n // for optimum performance, we use a for loop here rather than calling any helper methods or using functional code\n for (var i = 0; i < values.length; i++) {\n var value = values[i];\n if ((typeof value === 'number' || typeof value === 'bigint') && (result === null || result > value)) {\n result = value;\n }\n }\n return result;\n}\nfunction aggMax(params) {\n var values = params.values;\n var result = null;\n // for optimum performance, we use a for loop here rather than calling any helper methods or using functional code\n for (var i = 0; i < values.length; i++) {\n var value = values[i];\n if ((typeof value === 'number' || typeof value === 'bigint') && (result === null || result < value)) {\n result = value;\n }\n }\n return result;\n}\nfunction aggCount(params) {\n var values = params.values;\n var result = 0;\n // for optimum performance, we use a for loop here rather than calling any helper methods or using functional code\n for (var i = 0; i < values.length; i++) {\n var value = values[i];\n // check if the value is from a group, in which case use the group's count\n result += value != null && typeof value.value === 'number' ? value.value : 1;\n }\n return {\n value: result,\n toString: function () {\n return this.value.toString();\n },\n // used for sorting\n toNumber: function () {\n return this.value;\n }\n };\n}\n// the average function is tricky as the multiple levels require weighted averages\n// for the non-leaf node aggregations.\nfunction aggAvg(params) {\n var values = params.values;\n var sum = 0; // the logic ensures that we never combine bigint arithmetic with numbers, but TS is hard to please\n var count = 0;\n // for optimum performance, we use a for loop here rather than calling any helper methods or using functional code\n for (var i = 0; i < values.length; i++) {\n var currentValue = values[i];\n var valueToAdd = null;\n if (typeof currentValue === 'number' || typeof currentValue === 'bigint') {\n valueToAdd = currentValue;\n count++;\n }\n else if (currentValue != null && (typeof currentValue.value === 'number' || typeof currentValue.value === 'bigint') && typeof currentValue.count === 'number') {\n // we are aggregating groups, so we take the aggregated values to calculated a weighted average\n if (AGBigInt) {\n valueToAdd = currentValue.value * (typeof currentValue.value === 'number' ? currentValue.count : AGBigInt(currentValue.count));\n }\n else {\n valueToAdd = currentValue.value * currentValue.count;\n }\n count += currentValue.count;\n }\n if (typeof valueToAdd === 'number') {\n if (AGBigInt) {\n sum += typeof sum === 'number' ? valueToAdd : AGBigInt(valueToAdd);\n }\n else {\n sum += valueToAdd;\n }\n }\n else if (typeof valueToAdd === 'bigint') {\n sum = (typeof sum === 'bigint' ? sum : AGBigInt(sum)) + valueToAdd;\n }\n }\n var value = null;\n // avoid divide by zero error\n if (count > 0) {\n if (AGBigInt) {\n value = sum / (typeof sum === 'number' ? count : AGBigInt(count));\n }\n else {\n value = sum / count;\n }\n }\n // the result will be an object. when this cell is rendered, only the avg is shown.\n // however when this cell is part of another aggregation, the count is also needed\n // to create a weighted average for the next level.\n return {\n count: count,\n value: value,\n // the grid by default uses toString to render values for an object, so this\n // is a trick to get the default cellRenderer to display the avg value\n toString: function () {\n return typeof this.value === 'number' || typeof this.value === 'bigint' ? this.value.toString() : '';\n },\n // used for sorting\n toNumber: function () {\n return this.value;\n }\n };\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { DragSourceType, Component, Autowired, Events, TouchListener, DragAndDropService, PostConstruct, RefSelector, Optional, VirtualList, KeyCode, _, } from \"@ag-grid-community/core\";\nvar DropZoneColumnComp = /** @class */ (function (_super) {\n __extends(DropZoneColumnComp, _super);\n function DropZoneColumnComp(column, dragSourceDropTarget, ghost, valueColumn, horizontal) {\n var _this = _super.call(this) || this;\n _this.column = column;\n _this.dragSourceDropTarget = dragSourceDropTarget;\n _this.ghost = ghost;\n _this.valueColumn = valueColumn;\n _this.horizontal = horizontal;\n _this.popupShowing = false;\n return _this;\n }\n DropZoneColumnComp.prototype.init = function () {\n this.setTemplate(DropZoneColumnComp.TEMPLATE);\n var eGui = this.getGui();\n var isFunctionsReadOnly = this.gridOptionsWrapper.isFunctionsReadOnly();\n this.addElementClasses(eGui);\n this.addElementClasses(this.eDragHandle, 'drag-handle');\n this.addElementClasses(this.eText, 'text');\n this.addElementClasses(this.eButton, 'button');\n this.eDragHandle.appendChild(_.createIconNoSpan('columnDrag', this.gridOptionsWrapper));\n this.eButton.appendChild(_.createIconNoSpan('cancel', this.gridOptionsWrapper));\n this.displayName = this.columnModel.getDisplayNameForColumn(this.column, 'columnDrop');\n this.setupComponents();\n if (!this.ghost && !isFunctionsReadOnly) {\n this.addDragSource();\n }\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var label = translate('ariaDropZoneColumnComponentDescription', 'Press DELETE to remove');\n var _a = this.getColumnAndAggFuncName(), name = _a.name, aggFuncName = _a.aggFuncName;\n var extraDescription = '';\n if (this.valueColumn && !isFunctionsReadOnly) {\n extraDescription = translate('ariaDropZoneColumnValueItemDescription', 'Press ENTER to change the aggregation type');\n }\n _.setAriaLabel(eGui, aggFuncName + \" \" + name + \" \" + label + \" \" + extraDescription);\n this.setupTooltip();\n };\n DropZoneColumnComp.prototype.setupTooltip = function () {\n var _this = this;\n var refresh = function () {\n var newTooltipText = _this.column.getColDef().headerTooltip;\n _this.setTooltip(newTooltipText);\n };\n refresh();\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, refresh);\n };\n DropZoneColumnComp.prototype.addDragSource = function () {\n var _this = this;\n var dragSource = {\n type: DragSourceType.ToolPanel,\n eElement: this.eDragHandle,\n defaultIconName: DragAndDropService.ICON_HIDE,\n getDragItem: function () { return _this.createDragItem(); },\n dragItemName: this.displayName,\n dragSourceDropTarget: this.dragSourceDropTarget\n };\n this.dragAndDropService.addDragSource(dragSource, true);\n this.addDestroyFunc(function () { return _this.dragAndDropService.removeDragSource(dragSource); });\n };\n DropZoneColumnComp.prototype.createDragItem = function () {\n var visibleState = {};\n visibleState[this.column.getId()] = this.column.isVisible();\n return {\n columns: [this.column],\n visibleState: visibleState\n };\n };\n DropZoneColumnComp.prototype.setupComponents = function () {\n this.setTextValue();\n this.setupRemove();\n if (this.ghost) {\n this.addCssClass('ag-column-drop-cell-ghost');\n }\n if (this.valueColumn && !this.gridOptionsWrapper.isFunctionsReadOnly()) {\n this.addGuiEventListener('click', this.onShowAggFuncSelection.bind(this));\n }\n };\n DropZoneColumnComp.prototype.setupRemove = function () {\n var _this = this;\n _.setDisplayed(this.eButton, !this.gridOptionsWrapper.isFunctionsReadOnly());\n var agEvent = { type: DropZoneColumnComp.EVENT_COLUMN_REMOVE };\n this.addGuiEventListener('keydown', function (e) {\n var isEnter = e.key === KeyCode.ENTER;\n var isDelete = e.key === KeyCode.DELETE;\n if (isDelete) {\n e.preventDefault();\n _this.dispatchEvent(agEvent);\n }\n if (isEnter && _this.valueColumn && !_this.gridOptionsWrapper.isFunctionsReadOnly()) {\n e.preventDefault();\n _this.onShowAggFuncSelection();\n }\n });\n this.addManagedListener(this.eButton, 'click', function (mouseEvent) {\n _this.dispatchEvent(agEvent);\n mouseEvent.stopPropagation();\n });\n var touchListener = new TouchListener(this.eButton);\n this.addManagedListener(touchListener, TouchListener.EVENT_TAP, function () {\n _this.dispatchEvent(agEvent);\n });\n this.addDestroyFunc(touchListener.destroy.bind(touchListener));\n };\n DropZoneColumnComp.prototype.getColumnAndAggFuncName = function () {\n var name = this.displayName;\n var aggFuncName = '';\n if (this.valueColumn) {\n var aggFunc = this.column.getAggFunc();\n // if aggFunc is a string, we can use it, but if it's a function, then we swap with 'func'\n var aggFuncString = typeof aggFunc === 'string' ? aggFunc : 'agg';\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n aggFuncName = localeTextFunc(aggFuncString, aggFuncString);\n }\n return { name: name, aggFuncName: aggFuncName };\n };\n DropZoneColumnComp.prototype.setTextValue = function () {\n var _a = this.getColumnAndAggFuncName(), name = _a.name, aggFuncName = _a.aggFuncName;\n var displayValue = this.valueColumn ? aggFuncName + \"(\" + name + \")\" : name;\n var displayValueSanitised = _.escapeString(displayValue);\n this.eText.innerHTML = displayValueSanitised;\n };\n DropZoneColumnComp.prototype.onShowAggFuncSelection = function () {\n var _this = this;\n if (this.popupShowing) {\n return;\n }\n this.popupShowing = true;\n var virtualList = new VirtualList('select-agg-func');\n var rows = this.aggFuncService.getFuncNames(this.column);\n var eGui = this.getGui();\n var virtualListGui = virtualList.getGui();\n virtualList.setModel({\n getRow: function (index) { return rows[index]; },\n getRowCount: function () { return rows.length; }\n });\n this.getContext().createBean(virtualList);\n var ePopup = _.loadTemplate(/* html*/ \"
    \");\n ePopup.style.top = '0px';\n ePopup.style.left = '0px';\n ePopup.appendChild(virtualListGui);\n // ePopup.style.height = this.gridOptionsWrapper.getAggFuncPopupHeight() + 'px';\n ePopup.style.width = eGui.clientWidth + \"px\";\n var popupHiddenFunc = function () {\n _this.destroyBean(virtualList);\n _this.popupShowing = false;\n eGui.focus();\n };\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var addPopupRes = this.popupService.addPopup({\n modal: true,\n eChild: ePopup,\n closeOnEsc: true,\n closedCallback: popupHiddenFunc,\n ariaLabel: translate('ariaLabelAggregationFunction', 'Aggregation Function')\n });\n if (addPopupRes) {\n virtualList.setComponentCreator(this.createAggSelect.bind(this, addPopupRes.hideFunc));\n }\n virtualList.addGuiEventListener('keydown', function (e) {\n if (e.key === KeyCode.ENTER || e.key === KeyCode.SPACE) {\n var row = virtualList.getLastFocusedRow();\n if (row == null) {\n return;\n }\n var comp = virtualList.getComponentAt(row);\n if (comp) {\n comp.selectItem();\n }\n }\n });\n this.popupService.positionPopupUnderComponent({\n type: 'aggFuncSelect',\n eventSource: eGui,\n ePopup: ePopup,\n keepWithinBounds: true,\n column: this.column\n });\n virtualList.refresh();\n var rowToFocus = rows.findIndex(function (r) { return r === _this.column.getAggFunc(); });\n if (rowToFocus === -1) {\n rowToFocus = 0;\n }\n virtualList.focusRow(rowToFocus);\n };\n DropZoneColumnComp.prototype.createAggSelect = function (hidePopup, value) {\n var _this = this;\n var itemSelected = function () {\n hidePopup();\n if (_this.gridOptionsWrapper.isFunctionsPassive()) {\n var event_1 = {\n type: Events.EVENT_COLUMN_AGG_FUNC_CHANGE_REQUEST,\n columns: [_this.column],\n aggFunc: value,\n api: _this.gridApi,\n columnApi: _this.columnApi\n };\n _this.eventService.dispatchEvent(event_1);\n }\n else {\n _this.columnModel.setColumnAggFunc(_this.column, value, \"toolPanelDragAndDrop\");\n }\n };\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var aggFuncString = value.toString();\n var aggFuncStringTranslated = localeTextFunc(aggFuncString, aggFuncString);\n var comp = new AggItemComp(itemSelected, aggFuncStringTranslated);\n return comp;\n };\n DropZoneColumnComp.prototype.addElementClasses = function (el, suffix) {\n suffix = suffix ? \"-\" + suffix : '';\n var direction = this.horizontal ? 'horizontal' : 'vertical';\n el.classList.add(\"ag-column-drop-cell\" + suffix, \"ag-column-drop-\" + direction + \"-cell\" + suffix);\n };\n DropZoneColumnComp.EVENT_COLUMN_REMOVE = 'columnRemove';\n DropZoneColumnComp.TEMPLATE = \"\\n \\n \\n \\n \";\n __decorate([\n Autowired('dragAndDropService')\n ], DropZoneColumnComp.prototype, \"dragAndDropService\", void 0);\n __decorate([\n Autowired('columnModel')\n ], DropZoneColumnComp.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('popupService')\n ], DropZoneColumnComp.prototype, \"popupService\", void 0);\n __decorate([\n Optional('aggFuncService')\n ], DropZoneColumnComp.prototype, \"aggFuncService\", void 0);\n __decorate([\n Autowired('columnApi')\n ], DropZoneColumnComp.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], DropZoneColumnComp.prototype, \"gridApi\", void 0);\n __decorate([\n RefSelector('eText')\n ], DropZoneColumnComp.prototype, \"eText\", void 0);\n __decorate([\n RefSelector('eDragHandle')\n ], DropZoneColumnComp.prototype, \"eDragHandle\", void 0);\n __decorate([\n RefSelector('eButton')\n ], DropZoneColumnComp.prototype, \"eButton\", void 0);\n __decorate([\n PostConstruct\n ], DropZoneColumnComp.prototype, \"init\", null);\n return DropZoneColumnComp;\n}(Component));\nexport { DropZoneColumnComp };\nvar AggItemComp = /** @class */ (function (_super) {\n __extends(AggItemComp, _super);\n function AggItemComp(itemSelected, value) {\n var _this = _super.call(this, /* html */ \"
    \") || this;\n _this.selectItem = itemSelected;\n _this.getGui().innerText = value;\n _this.addGuiEventListener('click', _this.selectItem);\n return _this;\n }\n return AggItemComp;\n}(Component));\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};\nimport { _ } from '@ag-grid-community/core';\nimport numberFormatsFactory from './numberFormats';\nimport fontsFactory from './fonts';\nimport fillsFactory from './fills';\nimport bordersFactory from './borders';\nimport cellStylesXfsFactory from './cellStyleXfs';\nimport cellXfsFactory from './cellXfs';\nimport cellStylesFactory from './cellStyles';\nimport { convertLegacyBorder, convertLegacyColor, convertLegacyPattern } from '../../../assets/excelLegacyConvert';\nimport { numberFormatMap } from '../../../assets/excelConstants';\nimport { getFontFamilyId } from '../../../assets/excelUtils';\nvar stylesMap;\nvar registeredNumberFmts;\nvar registeredFonts;\nvar registeredFills;\nvar registeredBorders;\nvar registeredCellStyleXfs;\nvar registeredCellXfs;\nvar registeredCellStyles;\nvar currentSheet;\nvar getStyleName = function (name, currentSheet) {\n if (name.indexOf('mixedStyle') !== -1 && currentSheet > 1) {\n name += \"_\" + currentSheet;\n }\n return name;\n};\nvar resetStylesheetValues = function () {\n stylesMap = { base: 0 };\n registeredNumberFmts = [];\n registeredFonts = [{ fontName: 'Calibri', colorTheme: '1', family: '2', scheme: 'minor' }];\n registeredFills = [{ patternType: 'none', }, { patternType: 'gray125' }];\n registeredBorders = [{ left: undefined, right: undefined, top: undefined, bottom: undefined, diagonal: undefined }];\n registeredCellStyleXfs = [{ borderId: 0, fillId: 0, fontId: 0, numFmtId: 0 }];\n registeredCellXfs = [{ borderId: 0, fillId: 0, fontId: 0, numFmtId: 0, xfId: 0 }];\n registeredCellStyles = [{ builtinId: 0, name: 'Normal', xfId: 0 }];\n};\nvar registerFill = function (fill) {\n var convertedPattern = convertLegacyPattern(fill.pattern);\n var convertedFillColor = convertLegacyColor(fill.color);\n var convertedPatternColor = convertLegacyColor(fill.patternColor);\n var pos = registeredFills.findIndex(function (currentFill) {\n var patternType = currentFill.patternType, fgRgb = currentFill.fgRgb, bgRgb = currentFill.bgRgb;\n if (patternType != convertedPattern ||\n fgRgb != convertedFillColor ||\n bgRgb != convertedPatternColor) {\n return false;\n }\n return true;\n });\n if (pos === -1) {\n pos = registeredFills.length;\n registeredFills.push({ patternType: convertedPattern, fgRgb: convertedFillColor, bgRgb: convertedPatternColor });\n }\n return pos;\n};\nvar registerNumberFmt = function (format) {\n format = _.utf8_encode(format);\n if (numberFormatMap[format]) {\n return numberFormatMap[format];\n }\n var pos = registeredNumberFmts.findIndex(function (currentFormat) { return currentFormat.formatCode === format; });\n if (pos === -1) {\n pos = registeredNumberFmts.length + 164;\n registeredNumberFmts.push({ formatCode: format, numFmtId: pos });\n }\n else {\n pos = registeredNumberFmts[pos].numFmtId;\n }\n return pos;\n};\nvar registerBorders = function (borders) {\n var borderBottom = borders.borderBottom, borderTop = borders.borderTop, borderLeft = borders.borderLeft, borderRight = borders.borderRight;\n var bottomStyle;\n var topStyle;\n var leftStyle;\n var rightStyle;\n var bottomColor;\n var topColor;\n var leftColor;\n var rightColor;\n if (borderLeft) {\n leftStyle = convertLegacyBorder(borderLeft.lineStyle, borderLeft.weight);\n leftColor = convertLegacyColor(borderLeft.color);\n }\n if (borderRight) {\n rightStyle = convertLegacyBorder(borderRight.lineStyle, borderRight.weight);\n rightColor = convertLegacyColor(borderRight.color);\n }\n if (borderBottom) {\n bottomStyle = convertLegacyBorder(borderBottom.lineStyle, borderBottom.weight);\n bottomColor = convertLegacyColor(borderBottom.color);\n }\n if (borderTop) {\n topStyle = convertLegacyBorder(borderTop.lineStyle, borderTop.weight);\n topColor = convertLegacyColor(borderTop.color);\n }\n var pos = registeredBorders.findIndex(function (currentBorder) {\n var left = currentBorder.left, right = currentBorder.right, top = currentBorder.top, bottom = currentBorder.bottom;\n if (!left && (leftStyle || leftColor)) {\n return false;\n }\n if (!right && (rightStyle || rightColor)) {\n return false;\n }\n if (!top && (topStyle || topColor)) {\n return false;\n }\n if (!bottom && (bottomStyle || bottomColor)) {\n return false;\n }\n var _a = left || {}, clS = _a.style, clC = _a.color;\n var _b = right || {}, crS = _b.style, crC = _b.color;\n var _c = top || {}, ctS = _c.style, ctC = _c.color;\n var _d = bottom || {}, cbS = _d.style, cbC = _d.color;\n if (clS != leftStyle || clC != leftColor) {\n return false;\n }\n if (crS != rightStyle || crC != rightColor) {\n return false;\n }\n if (ctS != topStyle || ctC != topColor) {\n return false;\n }\n if (cbS != bottomStyle || cbC != bottomColor) {\n return false;\n }\n return true;\n });\n if (pos === -1) {\n pos = registeredBorders.length;\n registeredBorders.push({\n left: {\n style: leftStyle, color: leftColor\n },\n right: {\n style: rightStyle, color: rightColor\n },\n top: {\n style: topStyle, color: topColor\n },\n bottom: {\n style: bottomStyle, color: bottomColor\n },\n diagonal: {\n style: undefined,\n color: undefined\n }\n });\n }\n return pos;\n};\nvar registerFont = function (font) {\n var _a = font.fontName, name = _a === void 0 ? 'Calibri' : _a, color = font.color, size = font.size, bold = font.bold, italic = font.italic, outline = font.outline, shadow = font.shadow, strikeThrough = font.strikeThrough, underline = font.underline, family = font.family, verticalAlign = font.verticalAlign;\n var utf8Name = name ? _.utf8_encode(name) : name;\n var convertedColor = convertLegacyColor(color);\n var familyId = getFontFamilyId(family);\n var convertedUnderline = underline ? underline.toLocaleLowerCase() : undefined;\n var convertedVerticalAlign = verticalAlign ? verticalAlign.toLocaleLowerCase() : undefined;\n var pos = registeredFonts.findIndex(function (currentFont) {\n if (currentFont.fontName != utf8Name ||\n currentFont.color != convertedColor ||\n currentFont.size != size ||\n currentFont.bold != bold ||\n currentFont.italic != italic ||\n currentFont.outline != outline ||\n currentFont.shadow != shadow ||\n currentFont.strikeThrough != strikeThrough ||\n currentFont.underline != convertedUnderline ||\n currentFont.verticalAlign != convertedVerticalAlign ||\n // @ts-ignore\n currentFont.family != familyId) {\n return false;\n }\n return true;\n });\n if (pos === -1) {\n pos = registeredFonts.length;\n registeredFonts.push({\n fontName: utf8Name,\n color: convertedColor,\n size: size,\n bold: bold,\n italic: italic,\n outline: outline,\n shadow: shadow,\n strikeThrough: strikeThrough,\n underline: convertedUnderline,\n verticalAlign: convertedVerticalAlign,\n family: familyId != null ? familyId.toString() : undefined\n });\n }\n return pos;\n};\nvar registerStyle = function (config) {\n var alignment = config.alignment, borders = config.borders, font = config.font, interior = config.interior, numberFormat = config.numberFormat, protection = config.protection;\n var id = config.id;\n var currentFill = 0;\n var currentBorder = 0;\n var currentFont = 0;\n var currentNumberFmt = 0;\n if (!id) {\n return;\n }\n id = getStyleName(id, currentSheet);\n if (stylesMap[id] != undefined) {\n return;\n }\n if (interior) {\n currentFill = registerFill(interior);\n }\n if (borders) {\n currentBorder = registerBorders(borders);\n }\n if (font) {\n currentFont = registerFont(font);\n }\n if (numberFormat) {\n currentNumberFmt = registerNumberFmt(numberFormat.format);\n }\n stylesMap[id] = registeredCellXfs.length;\n registeredCellXfs.push({\n alignment: alignment,\n borderId: currentBorder || 0,\n fillId: currentFill || 0,\n fontId: currentFont || 0,\n numFmtId: currentNumberFmt || 0,\n protection: protection,\n xfId: 0\n });\n};\nvar stylesheetFactory = {\n getTemplate: function (defaultFontSize) {\n var numberFormats = numberFormatsFactory.getTemplate(registeredNumberFmts);\n var fonts = fontsFactory.getTemplate(registeredFonts.map(function (font) { return (__assign(__assign({}, font), { size: font.size != null ? font.size : defaultFontSize })); }));\n var fills = fillsFactory.getTemplate(registeredFills);\n var borders = bordersFactory.getTemplate(registeredBorders);\n var cellStylesXfs = cellStylesXfsFactory.getTemplate(registeredCellStyleXfs);\n var cellXfs = cellXfsFactory.getTemplate(registeredCellXfs);\n var cellStyles = cellStylesFactory.getTemplate(registeredCellStyles);\n resetStylesheetValues();\n return {\n name: 'styleSheet',\n properties: {\n rawMap: {\n 'mc:Ignorable': 'x14ac x16r2 xr',\n 'xmlns': 'http://schemas.openxmlformats.org/spreadsheetml/2006/main',\n 'xmlns:mc': 'http://schemas.openxmlformats.org/markup-compatibility/2006',\n 'xmlns:x14ac': 'http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac',\n 'xmlns:x16r2': 'http://schemas.microsoft.com/office/spreadsheetml/2015/02/main',\n 'xmlns:xr': 'http://schemas.microsoft.com/office/spreadsheetml/2014/revision'\n }\n },\n children: [\n numberFormats,\n fonts,\n fills,\n borders,\n cellStylesXfs,\n cellXfs,\n cellStyles,\n {\n name: 'tableStyles',\n properties: {\n rawMap: {\n count: 0,\n defaultPivotStyle: 'PivotStyleLight16',\n defaultTableStyle: 'TableStyleMedium2'\n }\n }\n }\n ]\n };\n }\n};\nexport var getStyleId = function (name, currentSheet) {\n return stylesMap[getStyleName(name, currentSheet)] || 0;\n};\nexport var registerStyles = function (styles, _currentSheet) {\n currentSheet = _currentSheet;\n if (currentSheet === 1) {\n resetStylesheetValues();\n }\n styles.forEach(registerStyle);\n};\nexport default stylesheetFactory;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Component, DragSourceType, Events, HorizontalDirection, KeyCode, ManagedFocusFeature, PositionableFeature, VerticalDirection, _ } from \"@ag-grid-community/core\";\nimport { DropZoneColumnComp } from \"./dropZoneColumnComp\";\nvar BaseDropZonePanel = /** @class */ (function (_super) {\n __extends(BaseDropZonePanel, _super);\n function BaseDropZonePanel(horizontal, valueColumn) {\n var _this = _super.call(this, /* html */ \"
    \") || this;\n _this.horizontal = horizontal;\n _this.valueColumn = valueColumn;\n _this.state = BaseDropZonePanel.STATE_NOT_DRAGGING;\n _this.guiDestroyFunctions = [];\n _this.childColumnComponents = [];\n _this.resizeEnabled = false;\n _this.addElementClasses(_this.getGui());\n _this.eColumnDropList = document.createElement('div');\n _this.addElementClasses(_this.eColumnDropList, 'list');\n _.setAriaRole(_this.eColumnDropList, 'listbox');\n return _this;\n }\n BaseDropZonePanel.prototype.isHorizontal = function () {\n return this.horizontal;\n };\n BaseDropZonePanel.prototype.toggleResizable = function (resizable) {\n this.positionableFeature.setResizable(resizable ? { bottom: true } : false);\n this.resizeEnabled = resizable;\n };\n BaseDropZonePanel.prototype.setBeans = function (beans) {\n this.beans = beans;\n };\n BaseDropZonePanel.prototype.destroy = function () {\n this.destroyGui();\n _super.prototype.destroy.call(this);\n };\n BaseDropZonePanel.prototype.destroyGui = function () {\n this.guiDestroyFunctions.forEach(function (func) { return func(); });\n this.guiDestroyFunctions.length = 0;\n this.childColumnComponents.length = 0;\n _.clearElement(this.getGui());\n _.clearElement(this.eColumnDropList);\n };\n BaseDropZonePanel.prototype.init = function (params) {\n this.params = params;\n this.createManagedBean(new ManagedFocusFeature(this.getFocusableElement(), {\n handleKeyDown: this.handleKeyDown.bind(this)\n }));\n this.addManagedListener(this.beans.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.refreshGui.bind(this));\n this.addManagedListener(this.beans.gridOptionsWrapper, 'functionsReadOnly', this.refreshGui.bind(this));\n this.setupDropTarget();\n this.positionableFeature = new PositionableFeature(this.getGui(), { minHeight: 100 });\n this.createManagedBean(this.positionableFeature);\n // we don't know if this bean will be initialised before columnModel.\n // if columnModel first, then below will work\n // if columnModel second, then below will put blank in, and then above event gets first when columnModel is set up\n this.refreshGui();\n _.setAriaLabel(this.eColumnDropList, this.getAriaLabel());\n };\n BaseDropZonePanel.prototype.handleKeyDown = function (e) {\n var isVertical = !this.horizontal;\n var isNext = e.key === KeyCode.DOWN;\n var isPrevious = e.key === KeyCode.UP;\n if (!isVertical) {\n var isRtl = this.gridOptionsWrapper.isEnableRtl();\n isNext = (!isRtl && e.key === KeyCode.RIGHT) || (isRtl && e.key === KeyCode.LEFT);\n isPrevious = (!isRtl && e.key === KeyCode.LEFT) || (isRtl && e.key === KeyCode.RIGHT);\n }\n if (!isNext && !isPrevious) {\n return;\n }\n var el = this.focusService.findNextFocusableElement(this.getFocusableElement(), false, isPrevious);\n if (el) {\n e.preventDefault();\n el.focus();\n }\n };\n BaseDropZonePanel.prototype.addElementClasses = function (el, suffix) {\n suffix = suffix ? \"-\" + suffix : '';\n var direction = this.horizontal ? 'horizontal' : 'vertical';\n el.classList.add(\"ag-column-drop\" + suffix, \"ag-column-drop-\" + direction + suffix);\n };\n BaseDropZonePanel.prototype.setupDropTarget = function () {\n this.dropTarget = {\n getContainer: this.getGui.bind(this),\n getIconName: this.getIconName.bind(this),\n onDragging: this.onDragging.bind(this),\n onDragEnter: this.onDragEnter.bind(this),\n onDragLeave: this.onDragLeave.bind(this),\n onDragStop: this.onDragStop.bind(this),\n isInterestedIn: this.isInterestedIn.bind(this)\n };\n this.beans.dragAndDropService.addDropTarget(this.dropTarget);\n };\n BaseDropZonePanel.prototype.isInterestedIn = function (type) {\n // not interested in row drags\n return type === DragSourceType.HeaderCell || type === DragSourceType.ToolPanel;\n };\n BaseDropZonePanel.prototype.checkInsertIndex = function (draggingEvent) {\n var newIndex = this.horizontal ? this.getNewHorizontalInsertIndex(draggingEvent) : this.getNewVerticalInsertIndex(draggingEvent);\n // <0 happens when drag is no a direction we are interested in, eg drag is up/down but in horizontal panel\n if (newIndex < 0) {\n return false;\n }\n var changed = newIndex !== this.insertIndex;\n if (changed) {\n this.insertIndex = newIndex;\n }\n return changed;\n };\n BaseDropZonePanel.prototype.getNewHorizontalInsertIndex = function (draggingEvent) {\n if (_.missing(draggingEvent.hDirection)) {\n return -1;\n }\n var newIndex = 0;\n var mouseEvent = draggingEvent.event;\n var enableRtl = this.beans.gridOptionsWrapper.isEnableRtl();\n var goingLeft = draggingEvent.hDirection === HorizontalDirection.Left;\n var mouseX = mouseEvent.clientX;\n this.childColumnComponents.forEach(function (childColumn) {\n var rect = childColumn.getGui().getBoundingClientRect();\n var rectX = goingLeft ? rect.right : rect.left;\n var horizontalFit = enableRtl ? mouseX <= rectX : mouseX >= rectX;\n if (horizontalFit) {\n newIndex++;\n }\n });\n return newIndex;\n };\n BaseDropZonePanel.prototype.getNewVerticalInsertIndex = function (draggingEvent) {\n if (_.missing(draggingEvent.vDirection)) {\n return -1;\n }\n var newIndex = 0;\n var mouseEvent = draggingEvent.event;\n this.childColumnComponents.forEach(function (childColumn) {\n var rect = childColumn.getGui().getBoundingClientRect();\n var verticalFit = mouseEvent.clientY >= (draggingEvent.vDirection === VerticalDirection.Down ? rect.top : rect.bottom);\n if (verticalFit) {\n newIndex++;\n }\n });\n return newIndex;\n };\n BaseDropZonePanel.prototype.checkDragStartedBySelf = function (draggingEvent) {\n if (this.state !== BaseDropZonePanel.STATE_NOT_DRAGGING) {\n return;\n }\n this.state = BaseDropZonePanel.STATE_REARRANGE_COLUMNS;\n this.potentialDndColumns = draggingEvent.dragSource.getDragItem().columns || [];\n this.refreshGui();\n this.checkInsertIndex(draggingEvent);\n this.refreshGui();\n };\n BaseDropZonePanel.prototype.onDragging = function (draggingEvent) {\n this.checkDragStartedBySelf(draggingEvent);\n if (this.checkInsertIndex(draggingEvent)) {\n this.refreshGui();\n }\n };\n BaseDropZonePanel.prototype.onDragEnter = function (draggingEvent) {\n // this will contain all columns that are potential drops\n var dragColumns = draggingEvent.dragSource.getDragItem().columns || [];\n this.state = BaseDropZonePanel.STATE_NEW_COLUMNS_IN;\n // take out columns that are not droppable\n var goodDragColumns = dragColumns.filter(this.isColumnDroppable.bind(this));\n if (goodDragColumns.length > 0) {\n this.potentialDndColumns = goodDragColumns;\n this.checkInsertIndex(draggingEvent);\n this.refreshGui();\n }\n };\n BaseDropZonePanel.prototype.isPotentialDndColumns = function () {\n return _.existsAndNotEmpty(this.potentialDndColumns);\n };\n BaseDropZonePanel.prototype.onDragLeave = function (draggingEvent) {\n // if the dragging started from us, we remove the group, however if it started\n // some place else, then we don't, as it was only 'asking'\n if (this.state === BaseDropZonePanel.STATE_REARRANGE_COLUMNS) {\n var columns = draggingEvent.dragSource.getDragItem().columns || [];\n this.removeColumns(columns);\n }\n if (this.isPotentialDndColumns()) {\n this.potentialDndColumns = [];\n this.refreshGui();\n }\n this.state = BaseDropZonePanel.STATE_NOT_DRAGGING;\n };\n BaseDropZonePanel.prototype.onDragStop = function () {\n if (this.isPotentialDndColumns()) {\n var success = false;\n if (this.state === BaseDropZonePanel.STATE_NEW_COLUMNS_IN) {\n this.addColumns(this.potentialDndColumns);\n success = true;\n }\n else {\n success = this.rearrangeColumns(this.potentialDndColumns);\n }\n this.potentialDndColumns = [];\n // If the function is passive, then we don't refresh, as we assume the client application\n // is going to call setRowGroups / setPivots / setValues at a later point which will then\n // cause a refresh. This gives a nice GUI where the ghost stays until the app has caught\n // up with the changes. However, if there was no change in the order, then we do need to\n // refresh to reset the columns\n if (!this.beans.gridOptionsWrapper.isFunctionsPassive() || !success) {\n this.refreshGui();\n }\n }\n this.state = BaseDropZonePanel.STATE_NOT_DRAGGING;\n };\n BaseDropZonePanel.prototype.removeColumns = function (columnsToRemove) {\n var newColumnList = this.getExistingColumns().filter(function (col) { return !_.includes(columnsToRemove, col); });\n this.updateColumns(newColumnList);\n };\n BaseDropZonePanel.prototype.addColumns = function (columnsToAdd) {\n if (!columnsToAdd) {\n return;\n }\n var newColumnList = this.getExistingColumns().slice();\n var colsToAddNoDuplicates = columnsToAdd.filter(function (col) { return newColumnList.indexOf(col) < 0; });\n _.insertArrayIntoArray(newColumnList, colsToAddNoDuplicates, this.insertIndex);\n this.updateColumns(newColumnList);\n };\n BaseDropZonePanel.prototype.rearrangeColumns = function (columnsToAdd) {\n var newColumnList = this.getNonGhostColumns().slice();\n _.insertArrayIntoArray(newColumnList, columnsToAdd, this.insertIndex);\n if (_.areEqual(newColumnList, this.getExistingColumns())) {\n return false;\n }\n this.updateColumns(newColumnList);\n return true;\n };\n BaseDropZonePanel.prototype.refreshGui = function () {\n // we reset the scroll position after the refresh.\n // if we don't do this, then the list will always scroll to the top\n // each time we refresh it. this is because part of the refresh empties\n // out the list which sets scroll to zero. so the user could be just\n // reordering the list - we want to prevent the resetting of the scroll.\n // this is relevant for vertical display only (as horizontal has no scroll)\n var scrollTop = this.eColumnDropList.scrollTop;\n var resizeEnabled = this.resizeEnabled;\n var focusedIndex = this.getFocusedItem();\n var alternateElement = this.focusService.findNextFocusableElement();\n if (!alternateElement) {\n alternateElement = this.focusService.findNextFocusableElement(undefined, false, true);\n }\n this.toggleResizable(false);\n this.destroyGui();\n this.addIconAndTitleToGui();\n this.addEmptyMessageToGui();\n this.addColumnsToGui();\n if (!this.isHorizontal()) {\n this.eColumnDropList.scrollTop = scrollTop;\n }\n if (resizeEnabled) {\n this.toggleResizable(resizeEnabled);\n }\n this.restoreFocus(focusedIndex, alternateElement);\n };\n BaseDropZonePanel.prototype.getFocusedItem = function () {\n var eGui = this.getGui();\n var activeElement = this.gridOptionsWrapper.getDocument().activeElement;\n if (!eGui.contains(activeElement)) {\n return -1;\n }\n var items = Array.from(eGui.querySelectorAll('.ag-column-drop-cell'));\n return items.indexOf(activeElement);\n };\n BaseDropZonePanel.prototype.restoreFocus = function (index, alternateElement) {\n var eGui = this.getGui();\n var items = Array.from(eGui.querySelectorAll('.ag-column-drop-cell'));\n if (index === -1) {\n return;\n }\n if (items.length === 0) {\n alternateElement.focus();\n }\n var indexToFocus = Math.min(items.length - 1, index);\n var el = items[indexToFocus];\n if (el) {\n el.focus();\n }\n };\n BaseDropZonePanel.prototype.getNonGhostColumns = function () {\n var _this = this;\n var existingColumns = this.getExistingColumns();\n if (this.isPotentialDndColumns()) {\n return existingColumns.filter(function (column) { return !_.includes(_this.potentialDndColumns, column); });\n }\n return existingColumns;\n };\n BaseDropZonePanel.prototype.addColumnsToGui = function () {\n var _this = this;\n var nonGhostColumns = this.getNonGhostColumns();\n var addingGhosts = this.isPotentialDndColumns();\n var itemsToAddToGui = [];\n nonGhostColumns.forEach(function (column, index) {\n if (addingGhosts && index >= _this.insertIndex) {\n return;\n }\n var columnComponent = _this.createColumnComponent(column, false);\n itemsToAddToGui.push(columnComponent);\n });\n if (this.isPotentialDndColumns()) {\n this.potentialDndColumns.forEach(function (column) {\n var columnComponent = _this.createColumnComponent(column, true);\n itemsToAddToGui.push(columnComponent);\n });\n nonGhostColumns.forEach(function (column, index) {\n if (index < _this.insertIndex) {\n return;\n }\n var columnComponent = _this.createColumnComponent(column, false);\n itemsToAddToGui.push(columnComponent);\n });\n }\n this.appendChild(this.eColumnDropList);\n itemsToAddToGui.forEach(function (columnComponent, index) {\n if (index > 0) {\n _this.addArrow(_this.eColumnDropList);\n }\n _this.eColumnDropList.appendChild(columnComponent.getGui());\n });\n this.addAriaLabelsToComponents();\n };\n BaseDropZonePanel.prototype.addAriaLabelsToComponents = function () {\n var _this = this;\n this.childColumnComponents.forEach(function (comp, idx) {\n var eGui = comp.getGui();\n _.setAriaPosInSet(eGui, idx + 1);\n _.setAriaSetSize(eGui, _this.childColumnComponents.length);\n });\n };\n BaseDropZonePanel.prototype.createColumnComponent = function (column, ghost) {\n var _this = this;\n var columnComponent = new DropZoneColumnComp(column, this.dropTarget, ghost, this.valueColumn, this.horizontal);\n columnComponent.addEventListener(DropZoneColumnComp.EVENT_COLUMN_REMOVE, this.removeColumns.bind(this, [column]));\n this.beans.context.createBean(columnComponent);\n this.guiDestroyFunctions.push(function () { return _this.destroyBean(columnComponent); });\n if (!ghost) {\n this.childColumnComponents.push(columnComponent);\n }\n return columnComponent;\n };\n BaseDropZonePanel.prototype.addIconAndTitleToGui = function () {\n var eGroupIcon = this.params.icon;\n var eTitleBar = document.createElement('div');\n eTitleBar.setAttribute('aria-hidden', 'true');\n this.addElementClasses(eTitleBar, 'title-bar');\n this.addElementClasses(eGroupIcon, 'icon');\n this.addOrRemoveCssClass('ag-column-drop-empty', this.isExistingColumnsEmpty());\n eTitleBar.appendChild(eGroupIcon);\n if (!this.horizontal) {\n var eTitle = document.createElement('span');\n this.addElementClasses(eTitle, 'title');\n eTitle.innerHTML = this.params.title;\n eTitleBar.appendChild(eTitle);\n }\n this.appendChild(eTitleBar);\n };\n BaseDropZonePanel.prototype.isExistingColumnsEmpty = function () {\n return this.getExistingColumns().length === 0;\n };\n BaseDropZonePanel.prototype.addEmptyMessageToGui = function () {\n if (!this.isExistingColumnsEmpty() || this.isPotentialDndColumns()) {\n return;\n }\n var eMessage = document.createElement('span');\n eMessage.innerHTML = this.params.emptyMessage;\n this.addElementClasses(eMessage, 'empty-message');\n this.eColumnDropList.appendChild(eMessage);\n };\n BaseDropZonePanel.prototype.addArrow = function (eParent) {\n // only add the arrows if the layout is horizontal\n if (this.horizontal) {\n // for RTL it's a left arrow, otherwise it's a right arrow\n var enableRtl = this.beans.gridOptionsWrapper.isEnableRtl();\n var icon = _.createIconNoSpan(enableRtl ? 'smallLeft' : 'smallRight', this.beans.gridOptionsWrapper);\n this.addElementClasses(icon, 'cell-separator');\n eParent.appendChild(icon);\n }\n };\n BaseDropZonePanel.STATE_NOT_DRAGGING = 'notDragging';\n BaseDropZonePanel.STATE_NEW_COLUMNS_IN = 'newColumnsIn';\n BaseDropZonePanel.STATE_REARRANGE_COLUMNS = 'rearrangeColumns';\n __decorate([\n Autowired('focusService')\n ], BaseDropZonePanel.prototype, \"focusService\", void 0);\n return BaseDropZonePanel;\n}(Component));\nexport { BaseDropZonePanel };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { _, Autowired, DragAndDropService, Events, PostConstruct } from \"@ag-grid-community/core\";\nimport { BaseDropZonePanel } from \"./baseDropZonePanel\";\nvar RowGroupDropZonePanel = /** @class */ (function (_super) {\n __extends(RowGroupDropZonePanel, _super);\n function RowGroupDropZonePanel(horizontal) {\n return _super.call(this, horizontal, false) || this;\n }\n RowGroupDropZonePanel.prototype.passBeansUp = function () {\n _super.prototype.setBeans.call(this, {\n gridOptionsWrapper: this.gridOptionsWrapper,\n eventService: this.eventService,\n context: this.getContext(),\n loggerFactory: this.loggerFactory,\n dragAndDropService: this.dragAndDropService\n });\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var emptyMessage = localeTextFunc('rowGroupColumnsEmptyMessage', 'Drag here to set row groups');\n var title = localeTextFunc('groups', 'Row Groups');\n _super.prototype.init.call(this, {\n dragAndDropIcon: DragAndDropService.ICON_GROUP,\n icon: _.createIconNoSpan('rowGroupPanel', this.gridOptionsWrapper, null),\n emptyMessage: emptyMessage,\n title: title\n });\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.refreshGui.bind(this));\n };\n RowGroupDropZonePanel.prototype.getAriaLabel = function () {\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var label = translate('ariaRowGroupDropZonePanelLabel', 'Row Groups');\n return label;\n };\n RowGroupDropZonePanel.prototype.getTooltipParams = function () {\n var res = _super.prototype.getTooltipParams.call(this);\n res.location = 'rowGroupColumnsList';\n return res;\n };\n RowGroupDropZonePanel.prototype.isColumnDroppable = function (column) {\n // we never allow grouping of secondary columns\n if (this.gridOptionsWrapper.isFunctionsReadOnly() || !column.isPrimary()) {\n return false;\n }\n return column.isAllowRowGroup() && !column.isRowGroupActive();\n };\n RowGroupDropZonePanel.prototype.updateColumns = function (columns) {\n if (this.gridOptionsWrapper.isFunctionsPassive()) {\n var event_1 = {\n type: Events.EVENT_COLUMN_ROW_GROUP_CHANGE_REQUEST,\n columns: columns,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event_1);\n }\n else {\n this.columnModel.setRowGroupColumns(columns, \"toolPanelUi\");\n }\n };\n RowGroupDropZonePanel.prototype.getIconName = function () {\n return this.isPotentialDndColumns() ? DragAndDropService.ICON_GROUP : DragAndDropService.ICON_NOT_ALLOWED;\n };\n RowGroupDropZonePanel.prototype.getExistingColumns = function () {\n return this.columnModel.getRowGroupColumns();\n };\n __decorate([\n Autowired('columnModel')\n ], RowGroupDropZonePanel.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('loggerFactory')\n ], RowGroupDropZonePanel.prototype, \"loggerFactory\", void 0);\n __decorate([\n Autowired('dragAndDropService')\n ], RowGroupDropZonePanel.prototype, \"dragAndDropService\", void 0);\n __decorate([\n Autowired('columnApi')\n ], RowGroupDropZonePanel.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], RowGroupDropZonePanel.prototype, \"gridApi\", void 0);\n __decorate([\n PostConstruct\n ], RowGroupDropZonePanel.prototype, \"passBeansUp\", null);\n return RowGroupDropZonePanel;\n}(BaseDropZonePanel));\nexport { RowGroupDropZonePanel };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { _, Autowired, DragAndDropService, Events, PostConstruct } from \"@ag-grid-community/core\";\nimport { BaseDropZonePanel } from \"./baseDropZonePanel\";\nvar PivotDropZonePanel = /** @class */ (function (_super) {\n __extends(PivotDropZonePanel, _super);\n function PivotDropZonePanel(horizontal) {\n return _super.call(this, horizontal, false) || this;\n }\n PivotDropZonePanel.prototype.passBeansUp = function () {\n _super.prototype.setBeans.call(this, {\n gridOptionsWrapper: this.gridOptionsWrapper,\n eventService: this.eventService,\n context: this.getContext(),\n loggerFactory: this.loggerFactory,\n dragAndDropService: this.dragAndDropService\n });\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var emptyMessage = localeTextFunc('pivotColumnsEmptyMessage', 'Drag here to set column labels');\n var title = localeTextFunc('pivots', 'Column Labels');\n _super.prototype.init.call(this, {\n dragAndDropIcon: DragAndDropService.ICON_GROUP,\n icon: _.createIconNoSpan('pivotPanel', this.gridOptionsWrapper, null),\n emptyMessage: emptyMessage,\n title: title\n });\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.refresh.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_CHANGED, this.refresh.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, this.checkVisibility.bind(this));\n this.refresh();\n };\n PivotDropZonePanel.prototype.getAriaLabel = function () {\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var label = translate('pivotDropZonePanelLabel', 'Column Labels');\n return label;\n };\n PivotDropZonePanel.prototype.getTooltipParams = function () {\n var res = _super.prototype.getTooltipParams.call(this);\n res.location = 'pivotColumnsList';\n return res;\n };\n PivotDropZonePanel.prototype.refresh = function () {\n this.checkVisibility();\n this.refreshGui();\n };\n PivotDropZonePanel.prototype.checkVisibility = function () {\n var pivotMode = this.columnModel.isPivotMode();\n if (this.isHorizontal()) {\n // what we do for horizontal (ie the pivot panel at the top) depends\n // on the user property as well as pivotMode.\n switch (this.gridOptionsWrapper.getPivotPanelShow()) {\n case 'always':\n this.setDisplayed(pivotMode);\n break;\n case 'onlyWhenPivoting':\n var pivotActive = this.columnModel.isPivotActive();\n this.setDisplayed(pivotMode && pivotActive);\n break;\n default:\n // never show it\n this.setDisplayed(false);\n break;\n }\n }\n else {\n // in toolPanel, the pivot panel is always shown when pivot mode is on\n this.setDisplayed(pivotMode);\n }\n };\n PivotDropZonePanel.prototype.isColumnDroppable = function (column) {\n // we never allow grouping of secondary columns\n if (this.gridOptionsWrapper.isFunctionsReadOnly() || !column.isPrimary()) {\n return false;\n }\n return column.isAllowPivot() && !column.isPivotActive();\n };\n PivotDropZonePanel.prototype.updateColumns = function (columns) {\n if (this.gridOptionsWrapper.isFunctionsPassive()) {\n var event_1 = {\n type: Events.EVENT_COLUMN_PIVOT_CHANGE_REQUEST,\n columns: columns,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event_1);\n }\n else {\n this.columnModel.setPivotColumns(columns, \"toolPanelUi\");\n }\n };\n PivotDropZonePanel.prototype.getIconName = function () {\n return this.isPotentialDndColumns() ? DragAndDropService.ICON_PIVOT : DragAndDropService.ICON_NOT_ALLOWED;\n };\n PivotDropZonePanel.prototype.getExistingColumns = function () {\n return this.columnModel.getPivotColumns();\n };\n __decorate([\n Autowired('columnModel')\n ], PivotDropZonePanel.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('loggerFactory')\n ], PivotDropZonePanel.prototype, \"loggerFactory\", void 0);\n __decorate([\n Autowired('dragAndDropService')\n ], PivotDropZonePanel.prototype, \"dragAndDropService\", void 0);\n __decorate([\n Autowired('columnApi')\n ], PivotDropZonePanel.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], PivotDropZonePanel.prototype, \"gridApi\", void 0);\n __decorate([\n PostConstruct\n ], PivotDropZonePanel.prototype, \"passBeansUp\", null);\n return PivotDropZonePanel;\n}(BaseDropZonePanel));\nexport { PivotDropZonePanel };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Component, Constants, Events, PostConstruct, _ } from \"@ag-grid-community/core\";\nimport { RowGroupDropZonePanel } from \"./rowGroupDropZonePanel\";\nimport { PivotDropZonePanel } from \"./pivotDropZonePanel\";\nvar GridHeaderDropZones = /** @class */ (function (_super) {\n __extends(GridHeaderDropZones, _super);\n function GridHeaderDropZones() {\n return _super.call(this) || this;\n }\n GridHeaderDropZones.prototype.postConstruct = function () {\n this.setGui(this.createNorthPanel());\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.onRowGroupChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.onRowGroupChanged.bind(this));\n this.onRowGroupChanged();\n };\n GridHeaderDropZones.prototype.createNorthPanel = function () {\n var topPanelGui = document.createElement('div');\n var dropPanelVisibleListener = this.onDropPanelVisible.bind(this);\n topPanelGui.classList.add('ag-column-drop-wrapper');\n _.setAriaRole(topPanelGui, 'presentation');\n this.rowGroupComp = new RowGroupDropZonePanel(true);\n this.createManagedBean(this.rowGroupComp);\n this.pivotComp = new PivotDropZonePanel(true);\n this.createManagedBean(this.pivotComp);\n topPanelGui.appendChild(this.rowGroupComp.getGui());\n topPanelGui.appendChild(this.pivotComp.getGui());\n this.addManagedListener(this.rowGroupComp, Component.EVENT_DISPLAYED_CHANGED, dropPanelVisibleListener);\n this.addManagedListener(this.pivotComp, Component.EVENT_DISPLAYED_CHANGED, dropPanelVisibleListener);\n this.onDropPanelVisible();\n return topPanelGui;\n };\n GridHeaderDropZones.prototype.onDropPanelVisible = function () {\n var bothDisplayed = this.rowGroupComp.isDisplayed() && this.pivotComp.isDisplayed();\n this.rowGroupComp.addOrRemoveCssClass('ag-column-drop-horizontal-half-width', bothDisplayed);\n this.pivotComp.addOrRemoveCssClass('ag-column-drop-horizontal-half-width', bothDisplayed);\n };\n GridHeaderDropZones.prototype.onRowGroupChanged = function () {\n if (!this.rowGroupComp) {\n return;\n }\n var rowGroupPanelShow = this.gridOptionsWrapper.getRowGroupPanelShow();\n if (rowGroupPanelShow === Constants.ALWAYS) {\n this.rowGroupComp.setDisplayed(true);\n }\n else if (rowGroupPanelShow === Constants.ONLY_WHEN_GROUPING) {\n var grouping = !this.columnModel.isRowGroupEmpty();\n this.rowGroupComp.setDisplayed(grouping);\n }\n else {\n this.rowGroupComp.setDisplayed(false);\n }\n };\n __decorate([\n Autowired('columnModel')\n ], GridHeaderDropZones.prototype, \"columnModel\", void 0);\n __decorate([\n PostConstruct\n ], GridHeaderDropZones.prototype, \"postConstruct\", null);\n return GridHeaderDropZones;\n}(Component));\nexport { GridHeaderDropZones };\n","import { ModuleNames } from \"@ag-grid-community/core\";\nimport { EnterpriseCoreModule } from \"@ag-grid-enterprise/core\";\nimport { AggregationStage } from \"./rowGrouping/aggregationStage\";\nimport { GroupStage } from \"./rowGrouping/groupStage\";\nimport { PivotColDefService } from \"./rowGrouping/pivotColDefService\";\nimport { PivotStage } from \"./rowGrouping/pivotStage\";\nimport { AggFuncService } from \"./rowGrouping/aggFuncService\";\nimport { GridHeaderDropZones } from \"./rowGrouping/columnDropZones/gridHeaderDropZones\";\nexport var RowGroupingModule = {\n moduleName: ModuleNames.RowGroupingModule,\n beans: [AggregationStage, GroupStage, PivotColDefService, PivotStage, AggFuncService],\n agStackComponents: [\n { componentName: 'AgGridHeaderDropZones', componentClass: GridHeaderDropZones }\n ],\n dependantModules: [\n EnterpriseCoreModule\n ]\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { _, Autowired, DragAndDropService, Events, PostConstruct } from \"@ag-grid-community/core\";\nimport { BaseDropZonePanel } from \"./baseDropZonePanel\";\nvar ValuesDropZonePanel = /** @class */ (function (_super) {\n __extends(ValuesDropZonePanel, _super);\n function ValuesDropZonePanel(horizontal) {\n return _super.call(this, horizontal, true) || this;\n }\n ValuesDropZonePanel.prototype.passBeansUp = function () {\n _super.prototype.setBeans.call(this, {\n gridOptionsWrapper: this.gridOptionsWrapper,\n eventService: this.eventService,\n context: this.getContext(),\n loggerFactory: this.loggerFactory,\n dragAndDropService: this.dragAndDropService\n });\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var emptyMessage = localeTextFunc('valueColumnsEmptyMessage', 'Drag here to aggregate');\n var title = localeTextFunc('values', 'Values');\n _super.prototype.init.call(this, {\n dragAndDropIcon: DragAndDropService.ICON_AGGREGATE,\n icon: _.createIconNoSpan('valuePanel', this.gridOptionsWrapper, null),\n emptyMessage: emptyMessage,\n title: title\n });\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VALUE_CHANGED, this.refreshGui.bind(this));\n };\n ValuesDropZonePanel.prototype.getAriaLabel = function () {\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var label = translate('ariaPivotDropZonePanelLabel', 'Values');\n return label;\n };\n ValuesDropZonePanel.prototype.getTooltipParams = function () {\n var res = _super.prototype.getTooltipParams.call(this);\n res.location = 'valueColumnsList';\n return res;\n };\n ValuesDropZonePanel.prototype.getIconName = function () {\n return this.isPotentialDndColumns() ? DragAndDropService.ICON_AGGREGATE : DragAndDropService.ICON_NOT_ALLOWED;\n };\n ValuesDropZonePanel.prototype.isColumnDroppable = function (column) {\n // we never allow grouping of secondary columns\n if (this.gridOptionsWrapper.isFunctionsReadOnly() || !column.isPrimary()) {\n return false;\n }\n return column.isAllowValue() && !column.isValueActive();\n };\n ValuesDropZonePanel.prototype.updateColumns = function (columns) {\n if (this.gridOptionsWrapper.isFunctionsPassive()) {\n var event_1 = {\n type: Events.EVENT_COLUMN_VALUE_CHANGE_REQUEST,\n columns: columns,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event_1);\n }\n else {\n this.columnModel.setValueColumns(columns, \"toolPanelUi\");\n }\n };\n ValuesDropZonePanel.prototype.getExistingColumns = function () {\n return this.columnModel.getValueColumns();\n };\n __decorate([\n Autowired('columnModel')\n ], ValuesDropZonePanel.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('loggerFactory')\n ], ValuesDropZonePanel.prototype, \"loggerFactory\", void 0);\n __decorate([\n Autowired('dragAndDropService')\n ], ValuesDropZonePanel.prototype, \"dragAndDropService\", void 0);\n __decorate([\n Autowired('columnApi')\n ], ValuesDropZonePanel.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], ValuesDropZonePanel.prototype, \"gridApi\", void 0);\n __decorate([\n PostConstruct\n ], ValuesDropZonePanel.prototype, \"passBeansUp\", null);\n return ValuesDropZonePanel;\n}(BaseDropZonePanel));\nexport { ValuesDropZonePanel };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { RefSelector, TabGuardComp, PositionableFeature, PostConstruct } from \"@ag-grid-community/core\";\nvar PrimaryColsPanel = /** @class */ (function (_super) {\n __extends(PrimaryColsPanel, _super);\n function PrimaryColsPanel() {\n return _super.call(this, PrimaryColsPanel.TEMPLATE) || this;\n }\n PrimaryColsPanel.prototype.postConstruct = function () {\n this.initialiseTabGuard({});\n };\n // we allow dragging in the toolPanel, but not when this component appears in the column menu\n PrimaryColsPanel.prototype.init = function (allowDragging, params, eventType) {\n this.allowDragging = allowDragging;\n this.params = params;\n this.eventType = eventType;\n this.primaryColsHeaderPanel.init(this.params);\n var hideFilter = this.params.suppressColumnFilter;\n var hideSelect = this.params.suppressColumnSelectAll;\n var hideExpand = this.params.suppressColumnExpandAll;\n if (hideExpand && hideFilter && hideSelect) {\n this.primaryColsHeaderPanel.setDisplayed(false);\n }\n this.addManagedListener(this.primaryColsListPanel, 'groupExpanded', this.onGroupExpanded.bind(this));\n this.addManagedListener(this.primaryColsListPanel, 'selectionChanged', this.onSelectionChange.bind(this));\n this.primaryColsListPanel.init(this.params, this.allowDragging, this.eventType);\n this.addManagedListener(this.primaryColsHeaderPanel, 'expandAll', this.onExpandAll.bind(this));\n this.addManagedListener(this.primaryColsHeaderPanel, 'collapseAll', this.onCollapseAll.bind(this));\n this.addManagedListener(this.primaryColsHeaderPanel, 'selectAll', this.onSelectAll.bind(this));\n this.addManagedListener(this.primaryColsHeaderPanel, 'unselectAll', this.onUnselectAll.bind(this));\n this.addManagedListener(this.primaryColsHeaderPanel, 'filterChanged', this.onFilterChanged.bind(this));\n this.positionableFeature = new PositionableFeature(this.getGui(), { minHeight: 100 });\n this.createManagedBean(this.positionableFeature);\n };\n PrimaryColsPanel.prototype.toggleResizable = function (resizable) {\n this.positionableFeature.setResizable(resizable ? { bottom: true } : false);\n };\n PrimaryColsPanel.prototype.onExpandAll = function () {\n this.primaryColsListPanel.doSetExpandedAll(true);\n };\n PrimaryColsPanel.prototype.onCollapseAll = function () {\n this.primaryColsListPanel.doSetExpandedAll(false);\n };\n PrimaryColsPanel.prototype.expandGroups = function (groupIds) {\n this.primaryColsListPanel.setGroupsExpanded(true, groupIds);\n };\n PrimaryColsPanel.prototype.collapseGroups = function (groupIds) {\n this.primaryColsListPanel.setGroupsExpanded(false, groupIds);\n };\n PrimaryColsPanel.prototype.setColumnLayout = function (colDefs) {\n this.primaryColsListPanel.setColumnLayout(colDefs);\n };\n PrimaryColsPanel.prototype.onFilterChanged = function (event) {\n this.primaryColsListPanel.setFilterText(event.filterText);\n };\n PrimaryColsPanel.prototype.syncLayoutWithGrid = function () {\n this.primaryColsListPanel.onColumnsChanged();\n };\n PrimaryColsPanel.prototype.onSelectAll = function () {\n this.primaryColsListPanel.doSetSelectedAll(true);\n };\n PrimaryColsPanel.prototype.onUnselectAll = function () {\n this.primaryColsListPanel.doSetSelectedAll(false);\n };\n PrimaryColsPanel.prototype.onGroupExpanded = function (event) {\n this.primaryColsHeaderPanel.setExpandState(event.state);\n };\n PrimaryColsPanel.prototype.onSelectionChange = function (event) {\n this.primaryColsHeaderPanel.setSelectionState(event.state);\n };\n PrimaryColsPanel.TEMPLATE = \"
    \\n \\n \\n
    \";\n __decorate([\n RefSelector('primaryColsHeaderPanel')\n ], PrimaryColsPanel.prototype, \"primaryColsHeaderPanel\", void 0);\n __decorate([\n RefSelector('primaryColsListPanel')\n ], PrimaryColsPanel.prototype, \"primaryColsListPanel\", void 0);\n __decorate([\n PostConstruct\n ], PrimaryColsPanel.prototype, \"postConstruct\", null);\n return PrimaryColsPanel;\n}(TabGuardComp));\nexport { PrimaryColsPanel };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { _, Autowired, Component, Events, ModuleNames, ModuleRegistry } from \"@ag-grid-community/core\";\nimport { PivotModePanel } from \"./pivotModePanel\";\nimport { PivotDropZonePanel, RowGroupDropZonePanel, ValuesDropZonePanel } from \"@ag-grid-enterprise/row-grouping\";\nimport { PrimaryColsPanel } from \"./primaryColsPanel\";\nvar ColumnToolPanel = /** @class */ (function (_super) {\n __extends(ColumnToolPanel, _super);\n function ColumnToolPanel() {\n var _this = _super.call(this, ColumnToolPanel.TEMPLATE) || this;\n _this.initialised = false;\n _this.childDestroyFuncs = [];\n return _this;\n }\n // lazy initialise the panel\n ColumnToolPanel.prototype.setVisible = function (visible) {\n _super.prototype.setDisplayed.call(this, visible);\n if (visible && !this.initialised) {\n this.init(this.params);\n }\n };\n ColumnToolPanel.prototype.init = function (params) {\n var _this = this;\n var defaultParams = {\n suppressColumnMove: false,\n suppressColumnSelectAll: false,\n suppressColumnFilter: false,\n suppressColumnExpandAll: false,\n contractColumnSelection: false,\n suppressPivotMode: false,\n suppressRowGroups: false,\n suppressValues: false,\n suppressPivots: false,\n suppressSyncLayoutWithGrid: false,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n _.mergeDeep(defaultParams, params);\n this.params = defaultParams;\n if (this.isRowGroupingModuleLoaded() && !this.params.suppressPivotMode) {\n this.pivotModePanel = this.createBean(new PivotModePanel()); // DO NOT CHANGE TO createManagedBean\n this.childDestroyFuncs.push(function () { return _this.destroyBean(_this.pivotModePanel); });\n this.appendChild(this.pivotModePanel);\n }\n this.primaryColsPanel = this.createBean(new PrimaryColsPanel()); // DO NOT CHANGE TO createManagedBean\n this.childDestroyFuncs.push(function () { return _this.destroyBean(_this.primaryColsPanel); });\n this.primaryColsPanel.init(true, this.params, \"toolPanelUi\");\n this.primaryColsPanel.addCssClass('ag-column-panel-column-select');\n this.appendChild(this.primaryColsPanel);\n if (this.isRowGroupingModuleLoaded()) {\n if (!this.params.suppressRowGroups) {\n this.rowGroupDropZonePanel = this.createBean(new RowGroupDropZonePanel(false)); // DO NOT CHANGE TO createManagedBean\n this.childDestroyFuncs.push(function () { return _this.destroyBean(_this.rowGroupDropZonePanel); });\n this.appendChild(this.rowGroupDropZonePanel);\n }\n if (!this.params.suppressValues) {\n this.valuesDropZonePanel = this.createBean(new ValuesDropZonePanel(false)); // DO NOT CHANGE TO createManagedBean\n this.childDestroyFuncs.push(function () { return _this.destroyBean(_this.valuesDropZonePanel); });\n this.appendChild(this.valuesDropZonePanel);\n }\n if (!this.params.suppressPivots) {\n this.pivotDropZonePanel = this.createBean(new PivotDropZonePanel(false)); // DO NOT CHANGE TO createManagedBean\n this.childDestroyFuncs.push(function () { return _this.destroyBean(_this.pivotDropZonePanel); });\n this.appendChild(this.pivotDropZonePanel);\n }\n this.setLastVisible();\n var pivotModeListener_1 = this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, function () {\n _this.resetChildrenHeight();\n _this.setLastVisible();\n });\n this.childDestroyFuncs.push(function () { return pivotModeListener_1(); });\n }\n this.initialised = true;\n };\n ColumnToolPanel.prototype.setPivotModeSectionVisible = function (visible) {\n var _this = this;\n if (!this.isRowGroupingModuleLoaded()) {\n return;\n }\n if (this.pivotModePanel) {\n this.pivotModePanel.setDisplayed(visible);\n }\n else if (visible) {\n this.pivotModePanel = this.createBean(new PivotModePanel());\n // ensure pivot mode panel is positioned at the top of the columns tool panel\n this.getGui().insertBefore(this.pivotModePanel.getGui(), this.getGui().firstChild);\n this.childDestroyFuncs.push(function () { return _this.destroyBean(_this.pivotModePanel); });\n }\n this.setLastVisible();\n };\n ColumnToolPanel.prototype.setRowGroupsSectionVisible = function (visible) {\n if (!this.isRowGroupingModuleLoaded()) {\n return;\n }\n if (this.rowGroupDropZonePanel) {\n this.rowGroupDropZonePanel.setDisplayed(visible);\n }\n else if (visible) {\n this.rowGroupDropZonePanel = this.createManagedBean(new RowGroupDropZonePanel(false));\n this.appendChild(this.rowGroupDropZonePanel);\n }\n this.setLastVisible();\n };\n ColumnToolPanel.prototype.setValuesSectionVisible = function (visible) {\n if (!this.isRowGroupingModuleLoaded()) {\n return;\n }\n if (this.valuesDropZonePanel) {\n this.valuesDropZonePanel.setDisplayed(visible);\n }\n else if (visible) {\n this.valuesDropZonePanel = this.createManagedBean(new ValuesDropZonePanel(false));\n this.appendChild(this.valuesDropZonePanel);\n }\n this.setLastVisible();\n };\n ColumnToolPanel.prototype.setPivotSectionVisible = function (visible) {\n if (!this.isRowGroupingModuleLoaded()) {\n return;\n }\n if (this.pivotDropZonePanel) {\n this.pivotDropZonePanel.setDisplayed(visible);\n }\n else if (visible) {\n this.pivotDropZonePanel = this.createManagedBean(new PivotDropZonePanel(false));\n this.appendChild(this.pivotDropZonePanel);\n this.pivotDropZonePanel.setDisplayed(visible);\n }\n this.setLastVisible();\n };\n ColumnToolPanel.prototype.setResizers = function () {\n [\n this.primaryColsPanel,\n this.rowGroupDropZonePanel,\n this.valuesDropZonePanel,\n this.pivotDropZonePanel\n ].forEach(function (panel) {\n if (!panel) {\n return;\n }\n var eGui = panel.getGui();\n panel.toggleResizable(!eGui.classList.contains('ag-last-column-drop') && !eGui.classList.contains('ag-hidden'));\n });\n };\n ColumnToolPanel.prototype.setLastVisible = function () {\n var eGui = this.getGui();\n var columnDrops = Array.prototype.slice.call(eGui.querySelectorAll('.ag-column-drop'));\n columnDrops.forEach(function (columnDrop) { return columnDrop.classList.remove('ag-last-column-drop'); });\n var columnDropEls = eGui.querySelectorAll('.ag-column-drop:not(.ag-hidden)');\n var lastVisible = _.last(columnDropEls);\n if (lastVisible) {\n lastVisible.classList.add('ag-last-column-drop');\n }\n this.setResizers();\n };\n ColumnToolPanel.prototype.resetChildrenHeight = function () {\n var eGui = this.getGui();\n var children = eGui.children;\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n child.style.removeProperty('height');\n child.style.removeProperty('flex');\n }\n };\n ColumnToolPanel.prototype.isRowGroupingModuleLoaded = function () {\n return ModuleRegistry.assertRegistered(ModuleNames.RowGroupingModule, 'Row Grouping');\n };\n ColumnToolPanel.prototype.expandColumnGroups = function (groupIds) {\n this.primaryColsPanel.expandGroups(groupIds);\n };\n ColumnToolPanel.prototype.collapseColumnGroups = function (groupIds) {\n this.primaryColsPanel.collapseGroups(groupIds);\n };\n ColumnToolPanel.prototype.setColumnLayout = function (colDefs) {\n this.primaryColsPanel.setColumnLayout(colDefs);\n };\n ColumnToolPanel.prototype.syncLayoutWithGrid = function () {\n this.primaryColsPanel.syncLayoutWithGrid();\n };\n ColumnToolPanel.prototype.destroyChildren = function () {\n this.childDestroyFuncs.forEach(function (func) { return func(); });\n this.childDestroyFuncs.length = 0;\n _.clearElement(this.getGui());\n };\n ColumnToolPanel.prototype.refresh = function () {\n this.destroyChildren();\n this.init(this.params);\n };\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so this must be public.\n ColumnToolPanel.prototype.destroy = function () {\n this.destroyChildren();\n _super.prototype.destroy.call(this);\n };\n ColumnToolPanel.TEMPLATE = \"
    \";\n __decorate([\n Autowired(\"gridApi\")\n ], ColumnToolPanel.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired(\"columnApi\")\n ], ColumnToolPanel.prototype, \"columnApi\", void 0);\n return ColumnToolPanel;\n}(Component));\nexport { ColumnToolPanel };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Component, PostConstruct } from \"@ag-grid-community/core\";\nvar HorizontalResizeComp = /** @class */ (function (_super) {\n __extends(HorizontalResizeComp, _super);\n function HorizontalResizeComp() {\n var _this = _super.call(this, /* html */ \"
    \") || this;\n _this.minWidth = 100;\n _this.maxWidth = null;\n return _this;\n }\n HorizontalResizeComp.prototype.setElementToResize = function (elementToResize) {\n this.elementToResize = elementToResize;\n };\n HorizontalResizeComp.prototype.postConstruct = function () {\n var finishedWithResizeFunc = this.horizontalResizeService.addResizeBar({\n eResizeBar: this.getGui(),\n dragStartPixels: 1,\n onResizeStart: this.onResizeStart.bind(this),\n onResizing: this.onResizing.bind(this),\n onResizeEnd: this.onResizing.bind(this)\n });\n this.addDestroyFunc(finishedWithResizeFunc);\n this.setInverted(this.gridOptionsWrapper.isEnableRtl());\n };\n HorizontalResizeComp.prototype.onResizeStart = function () {\n this.startingWidth = this.elementToResize.offsetWidth;\n };\n HorizontalResizeComp.prototype.onResizing = function (delta) {\n var direction = this.inverted ? -1 : 1;\n var newWidth = Math.max(this.minWidth, Math.floor(this.startingWidth - (delta * direction)));\n if (this.maxWidth != null) {\n newWidth = Math.min(this.maxWidth, newWidth);\n }\n this.elementToResize.style.width = newWidth + \"px\";\n };\n HorizontalResizeComp.prototype.setInverted = function (inverted) {\n this.inverted = inverted;\n };\n HorizontalResizeComp.prototype.setMaxWidth = function (value) {\n this.maxWidth = value;\n };\n HorizontalResizeComp.prototype.setMinWidth = function (value) {\n if (value != null) {\n this.minWidth = value;\n }\n else {\n this.minWidth = 100;\n }\n };\n __decorate([\n Autowired('horizontalResizeService')\n ], HorizontalResizeComp.prototype, \"horizontalResizeService\", void 0);\n __decorate([\n PostConstruct\n ], HorizontalResizeComp.prototype, \"postConstruct\", null);\n return HorizontalResizeComp;\n}(Component));\nexport { HorizontalResizeComp };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, PostConstruct, RefSelector, _, } from \"@ag-grid-community/core\";\nvar SideBarButtonComp = /** @class */ (function (_super) {\n __extends(SideBarButtonComp, _super);\n function SideBarButtonComp(toolPanelDef) {\n var _this = _super.call(this) || this;\n _this.toolPanelDef = toolPanelDef;\n return _this;\n }\n SideBarButtonComp.prototype.getToolPanelId = function () {\n return this.toolPanelDef.id;\n };\n SideBarButtonComp.prototype.postConstruct = function () {\n var template = this.createTemplate();\n this.setTemplate(template);\n this.eIconWrapper.insertAdjacentElement('afterbegin', _.createIconNoSpan(this.toolPanelDef.iconKey, this.gridOptionsWrapper));\n this.addManagedListener(this.eToggleButton, 'click', this.onButtonPressed.bind(this));\n };\n SideBarButtonComp.prototype.createTemplate = function () {\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var def = this.toolPanelDef;\n var label = translate(def.labelKey, def.labelDefault);\n var res = /* html */ \"
    \\n \\n
    \";\n return res;\n };\n SideBarButtonComp.prototype.onButtonPressed = function () {\n this.dispatchEvent({ type: SideBarButtonComp.EVENT_TOGGLE_BUTTON_CLICKED });\n };\n SideBarButtonComp.prototype.setSelected = function (selected) {\n this.addOrRemoveCssClass('ag-selected', selected);\n };\n SideBarButtonComp.EVENT_TOGGLE_BUTTON_CLICKED = 'toggleButtonClicked';\n __decorate([\n RefSelector('eToggleButton')\n ], SideBarButtonComp.prototype, \"eToggleButton\", void 0);\n __decorate([\n RefSelector('eIconWrapper')\n ], SideBarButtonComp.prototype, \"eIconWrapper\", void 0);\n __decorate([\n PostConstruct\n ], SideBarButtonComp.prototype, \"postConstruct\", null);\n return SideBarButtonComp;\n}(Component));\nexport { SideBarButtonComp };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Component, PostConstruct, PreDestroy, _, KeyCode } from \"@ag-grid-community/core\";\nimport { SideBarButtonComp } from \"./sideBarButtonComp\";\nvar SideBarButtonsComp = /** @class */ (function (_super) {\n __extends(SideBarButtonsComp, _super);\n function SideBarButtonsComp() {\n var _this = _super.call(this, SideBarButtonsComp.TEMPLATE) || this;\n _this.buttonComps = [];\n return _this;\n }\n SideBarButtonsComp.prototype.postConstruct = function () {\n this.addManagedListener(this.getFocusableElement(), 'keydown', this.handleKeyDown.bind(this));\n };\n SideBarButtonsComp.prototype.handleKeyDown = function (e) {\n if (e.key !== KeyCode.TAB || !e.shiftKey) {\n return;\n }\n var lastColumn = _.last(this.columnModel.getAllDisplayedColumns());\n if (this.focusService.focusGridView(lastColumn, true)) {\n e.preventDefault();\n }\n };\n SideBarButtonsComp.prototype.setToolPanelDefs = function (toolPanelDefs) {\n toolPanelDefs.forEach(this.addButtonComp.bind(this));\n };\n SideBarButtonsComp.prototype.setActiveButton = function (id) {\n this.buttonComps.forEach(function (comp) {\n comp.setSelected(id === comp.getToolPanelId());\n });\n };\n SideBarButtonsComp.prototype.addButtonComp = function (def) {\n var _this = this;\n var buttonComp = this.createBean(new SideBarButtonComp(def));\n this.buttonComps.push(buttonComp);\n this.appendChild(buttonComp);\n buttonComp.addEventListener(SideBarButtonComp.EVENT_TOGGLE_BUTTON_CLICKED, function () {\n _this.dispatchEvent({\n type: SideBarButtonsComp.EVENT_SIDE_BAR_BUTTON_CLICKED,\n toolPanelId: def.id\n });\n });\n };\n SideBarButtonsComp.prototype.clearButtons = function () {\n this.buttonComps = this.destroyBeans(this.buttonComps);\n _.clearElement(this.getGui());\n };\n SideBarButtonsComp.EVENT_SIDE_BAR_BUTTON_CLICKED = 'sideBarButtonClicked';\n SideBarButtonsComp.TEMPLATE = \"
    \";\n __decorate([\n Autowired('focusService')\n ], SideBarButtonsComp.prototype, \"focusService\", void 0);\n __decorate([\n Autowired('columnModel')\n ], SideBarButtonsComp.prototype, \"columnModel\", void 0);\n __decorate([\n PostConstruct\n ], SideBarButtonsComp.prototype, \"postConstruct\", null);\n __decorate([\n PreDestroy\n ], SideBarButtonsComp.prototype, \"clearButtons\", null);\n return SideBarButtonsComp;\n}(Component));\nexport { SideBarButtonsComp };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Component, PostConstruct } from \"@ag-grid-community/core\";\nimport { HorizontalResizeComp } from \"./horizontalResizeComp\";\nvar ToolPanelWrapper = /** @class */ (function (_super) {\n __extends(ToolPanelWrapper, _super);\n function ToolPanelWrapper() {\n return _super.call(this, ToolPanelWrapper.TEMPLATE) || this;\n }\n ToolPanelWrapper.prototype.setupResize = function () {\n var eGui = this.getGui();\n var resizeBar = this.resizeBar = new HorizontalResizeComp();\n this.getContext().createBean(resizeBar);\n resizeBar.setElementToResize(eGui);\n this.appendChild(resizeBar);\n };\n ToolPanelWrapper.prototype.getToolPanelId = function () {\n return this.toolPanelId;\n };\n ToolPanelWrapper.prototype.setToolPanelDef = function (toolPanelDef) {\n var id = toolPanelDef.id, minWidth = toolPanelDef.minWidth, maxWidth = toolPanelDef.maxWidth, width = toolPanelDef.width;\n this.toolPanelId = id;\n this.width = width;\n var params = {\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi()\n };\n var compDetails = this.userComponentFactory.getToolPanelCompDetails(toolPanelDef, params);\n var componentPromise = compDetails.newAgStackInstance();\n if (componentPromise == null) {\n console.warn(\"AG Grid: error processing tool panel component \" + id + \". You need to specify either 'toolPanel' or 'toolPanelFramework'\");\n return;\n }\n componentPromise.then(this.setToolPanelComponent.bind(this));\n if (minWidth != null) {\n this.resizeBar.setMinWidth(minWidth);\n }\n if (maxWidth != null) {\n this.resizeBar.setMaxWidth(maxWidth);\n }\n };\n ToolPanelWrapper.prototype.setToolPanelComponent = function (compInstance) {\n var _this = this;\n this.toolPanelCompInstance = compInstance;\n this.appendChild(compInstance.getGui());\n this.addDestroyFunc(function () {\n _this.destroyBean(compInstance);\n });\n if (this.width) {\n this.getGui().style.width = this.width + \"px\";\n }\n };\n ToolPanelWrapper.prototype.getToolPanelInstance = function () {\n return this.toolPanelCompInstance;\n };\n ToolPanelWrapper.prototype.setResizerSizerSide = function (side) {\n var isRtl = this.gridOptionsWrapper.isEnableRtl();\n var isLeft = side === 'left';\n var inverted = isRtl ? isLeft : !isLeft;\n this.resizeBar.setInverted(inverted);\n };\n ToolPanelWrapper.prototype.refresh = function () {\n this.toolPanelCompInstance.refresh();\n };\n ToolPanelWrapper.TEMPLATE = \"
    \";\n __decorate([\n Autowired(\"userComponentFactory\")\n ], ToolPanelWrapper.prototype, \"userComponentFactory\", void 0);\n __decorate([\n PostConstruct\n ], ToolPanelWrapper.prototype, \"setupResize\", null);\n return ToolPanelWrapper;\n}(Component));\nexport { ToolPanelWrapper };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { _, Component, Events, ModuleNames, ModuleRegistry, PostConstruct, RefSelector, Autowired, ManagedFocusFeature, KeyCode } from \"@ag-grid-community/core\";\nimport { SideBarButtonsComp } from \"./sideBarButtonsComp\";\nimport { ToolPanelWrapper } from \"./toolPanelWrapper\";\nvar SideBarComp = /** @class */ (function (_super) {\n __extends(SideBarComp, _super);\n function SideBarComp() {\n var _this = _super.call(this, SideBarComp.TEMPLATE) || this;\n _this.toolPanelWrappers = [];\n return _this;\n }\n SideBarComp.prototype.postConstruct = function () {\n var _this = this;\n this.sideBarButtonsComp.addEventListener(SideBarButtonsComp.EVENT_SIDE_BAR_BUTTON_CLICKED, this.onToolPanelButtonClicked.bind(this));\n this.setSideBarDef();\n this.gridOptionsWrapper.addEventListener('sideBar', function () {\n _this.clearDownUi();\n _this.setSideBarDef();\n });\n this.gridApi.registerSideBarComp(this);\n this.createManagedBean(new ManagedFocusFeature(this.getFocusableElement(), {\n onTabKeyDown: this.onTabKeyDown.bind(this),\n handleKeyDown: this.handleKeyDown.bind(this)\n }));\n };\n SideBarComp.prototype.onTabKeyDown = function (e) {\n if (e.defaultPrevented) {\n return;\n }\n var _a = this, focusService = _a.focusService, sideBarButtonsComp = _a.sideBarButtonsComp;\n var eGui = this.getGui();\n var sideBarGui = sideBarButtonsComp.getGui();\n var eDocument = this.gridOptionsWrapper.getDocument();\n var activeElement = eDocument.activeElement;\n var openPanel = eGui.querySelector('.ag-tool-panel-wrapper:not(.ag-hidden)');\n if (!openPanel) {\n return;\n }\n if (sideBarGui.contains(activeElement)) {\n if (focusService.focusInto(openPanel, e.shiftKey)) {\n e.preventDefault();\n }\n }\n else {\n if (!focusService.isFocusUnderManagedComponent(openPanel) && e.shiftKey) {\n var firstFocusableEl = focusService.findFocusableElements(openPanel)[0];\n var eDocument_1 = this.gridOptionsWrapper.getDocument();\n if (eDocument_1.activeElement === firstFocusableEl) {\n var selectedButton = sideBarGui.querySelector('.ag-selected button');\n if (selectedButton) {\n e.preventDefault();\n selectedButton.focus();\n }\n }\n }\n }\n };\n SideBarComp.prototype.handleKeyDown = function (e) {\n var eDocument = this.gridOptionsWrapper.getDocument();\n if (!this.sideBarButtonsComp.getGui().contains(eDocument.activeElement)) {\n return;\n }\n var sideBarGui = this.sideBarButtonsComp.getGui();\n var buttons = Array.prototype.slice.call(sideBarGui.querySelectorAll('.ag-side-button'));\n var currentButton = eDocument.activeElement;\n var currentPos = buttons.findIndex(function (button) { return button.contains(currentButton); });\n var nextPos = null;\n switch (e.key) {\n case KeyCode.LEFT:\n case KeyCode.UP:\n nextPos = Math.max(0, currentPos - 1);\n break;\n case KeyCode.RIGHT:\n case KeyCode.DOWN:\n nextPos = Math.min(currentPos + 1, buttons.length - 1);\n break;\n }\n if (nextPos === null) {\n return;\n }\n var innerButton = buttons[nextPos].querySelector('button');\n if (innerButton) {\n innerButton.focus();\n e.preventDefault();\n }\n };\n SideBarComp.prototype.onToolPanelButtonClicked = function (event) {\n var id = event.toolPanelId;\n var openedItem = this.openedItem();\n // if item was already open, we close it\n if (openedItem === id) {\n this.openToolPanel(undefined); // passing undefined closes\n }\n else {\n this.openToolPanel(id);\n }\n };\n SideBarComp.prototype.clearDownUi = function () {\n this.sideBarButtonsComp.clearButtons();\n this.destroyToolPanelWrappers();\n };\n SideBarComp.prototype.setSideBarDef = function () {\n // initially hide side bar\n this.setDisplayed(false);\n var sideBar = this.gridOptionsWrapper.getSideBar();\n var sideBarExists = !!sideBar && !!sideBar.toolPanels;\n if (!sideBarExists) {\n return;\n }\n var shouldDisplaySideBar = sideBarExists && !sideBar.hiddenByDefault;\n this.setDisplayed(shouldDisplaySideBar);\n var toolPanelDefs = sideBar.toolPanels;\n this.sideBarButtonsComp.setToolPanelDefs(toolPanelDefs);\n this.setupToolPanels(toolPanelDefs);\n this.setSideBarPosition(sideBar.position);\n if (!sideBar.hiddenByDefault) {\n this.openToolPanel(sideBar.defaultToolPanel);\n }\n };\n SideBarComp.prototype.setSideBarPosition = function (position) {\n if (!position) {\n position = 'right';\n }\n var isLeft = position === 'left';\n var resizerSide = isLeft ? 'right' : 'left';\n this.addOrRemoveCssClass('ag-side-bar-left', isLeft);\n this.addOrRemoveCssClass('ag-side-bar-right', !isLeft);\n this.toolPanelWrappers.forEach(function (wrapper) {\n wrapper.setResizerSizerSide(resizerSide);\n });\n return this;\n };\n SideBarComp.prototype.setupToolPanels = function (defs) {\n var _this = this;\n defs.forEach(function (def) {\n if (def.id == null) {\n console.warn(\"AG Grid: please review all your toolPanel components, it seems like at least one of them doesn't have an id\");\n return;\n }\n // helpers, in case user doesn't have the right module loaded\n if (def.toolPanel === 'agColumnsToolPanel') {\n var moduleMissing = !ModuleRegistry.assertRegistered(ModuleNames.ColumnToolPanelModule, 'Column Tool Panel');\n if (moduleMissing) {\n return;\n }\n }\n if (def.toolPanel === 'agFiltersToolPanel') {\n var moduleMissing = !ModuleRegistry.assertRegistered(ModuleNames.FiltersToolPanelModule, 'Filters Tool Panel');\n if (moduleMissing) {\n return;\n }\n }\n var wrapper = new ToolPanelWrapper();\n _this.getContext().createBean(wrapper);\n wrapper.setToolPanelDef(def);\n wrapper.setDisplayed(false);\n _this.getGui().appendChild(wrapper.getGui());\n _this.toolPanelWrappers.push(wrapper);\n });\n };\n SideBarComp.prototype.refresh = function () {\n this.toolPanelWrappers.forEach(function (wrapper) { return wrapper.refresh(); });\n };\n SideBarComp.prototype.openToolPanel = function (key) {\n var currentlyOpenedKey = this.openedItem();\n if (currentlyOpenedKey === key) {\n return;\n }\n this.toolPanelWrappers.forEach(function (wrapper) {\n var show = key === wrapper.getToolPanelId();\n wrapper.setDisplayed(show);\n });\n var newlyOpenedKey = this.openedItem();\n var openToolPanelChanged = currentlyOpenedKey !== newlyOpenedKey;\n if (openToolPanelChanged) {\n this.sideBarButtonsComp.setActiveButton(key);\n this.raiseToolPanelVisibleEvent(key);\n }\n };\n SideBarComp.prototype.getToolPanelInstance = function (key) {\n var toolPanelWrapper = this.toolPanelWrappers.filter(function (toolPanel) { return toolPanel.getToolPanelId() === key; })[0];\n if (!toolPanelWrapper) {\n console.warn(\"AG Grid: unable to lookup Tool Panel as invalid key supplied: \" + key);\n return;\n }\n return toolPanelWrapper.getToolPanelInstance();\n };\n SideBarComp.prototype.raiseToolPanelVisibleEvent = function (key) {\n var event = {\n type: Events.EVENT_TOOL_PANEL_VISIBLE_CHANGED,\n source: key,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi()\n };\n this.eventService.dispatchEvent(event);\n };\n SideBarComp.prototype.close = function () {\n this.openToolPanel(undefined);\n };\n SideBarComp.prototype.isToolPanelShowing = function () {\n return !!this.openedItem();\n };\n SideBarComp.prototype.openedItem = function () {\n var activeToolPanel = null;\n this.toolPanelWrappers.forEach(function (wrapper) {\n if (wrapper.isDisplayed()) {\n activeToolPanel = wrapper.getToolPanelId();\n }\n });\n return activeToolPanel;\n };\n SideBarComp.prototype.destroyToolPanelWrappers = function () {\n var _this = this;\n this.toolPanelWrappers.forEach(function (wrapper) {\n _.removeFromParent(wrapper.getGui());\n _this.destroyBean(wrapper);\n });\n this.toolPanelWrappers.length = 0;\n };\n SideBarComp.prototype.destroy = function () {\n this.destroyToolPanelWrappers();\n _super.prototype.destroy.call(this);\n };\n SideBarComp.TEMPLATE = \"
    \\n \\n
    \";\n __decorate([\n Autowired('gridApi')\n ], SideBarComp.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('focusService')\n ], SideBarComp.prototype, \"focusService\", void 0);\n __decorate([\n RefSelector('sideBarButtons')\n ], SideBarComp.prototype, \"sideBarButtonsComp\", void 0);\n __decorate([\n PostConstruct\n ], SideBarComp.prototype, \"postConstruct\", null);\n return SideBarComp;\n}(Component));\nexport { SideBarComp };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { _, Autowired, Bean, BeanStub, ProvidedColumnGroup } from \"@ag-grid-community/core\";\nvar ToolPanelColDefService = /** @class */ (function (_super) {\n __extends(ToolPanelColDefService, _super);\n function ToolPanelColDefService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.isColGroupDef = function (colDef) { return colDef && typeof colDef.children !== 'undefined'; };\n _this.getId = function (colDef) {\n return _this.isColGroupDef(colDef) ? colDef.groupId : colDef.colId;\n };\n return _this;\n }\n ToolPanelColDefService.prototype.createColumnTree = function (colDefs) {\n var _this = this;\n var invalidColIds = [];\n var createDummyColGroup = function (abstractColDef, depth) {\n if (_this.isColGroupDef(abstractColDef)) {\n // creating 'dummy' group which is not associated with grid column group\n var groupDef = abstractColDef;\n var groupId = (typeof groupDef.groupId !== 'undefined') ? groupDef.groupId : groupDef.headerName;\n var group = new ProvidedColumnGroup(groupDef, groupId, false, depth);\n var children_1 = [];\n groupDef.children.forEach(function (def) {\n var child = createDummyColGroup(def, depth + 1);\n // check column exists in case invalid colDef is supplied for primary column\n if (child) {\n children_1.push(child);\n }\n });\n group.setChildren(children_1);\n return group;\n }\n else {\n var colDef = abstractColDef;\n var key = colDef.colId ? colDef.colId : colDef.field;\n var column = _this.columnModel.getPrimaryColumn(key);\n if (!column) {\n invalidColIds.push(colDef);\n }\n return column;\n }\n };\n var mappedResults = [];\n colDefs.forEach(function (colDef) {\n var result = createDummyColGroup(colDef, 0);\n if (result) {\n // only return correctly mapped colDef results\n mappedResults.push(result);\n }\n });\n if (invalidColIds.length > 0) {\n console.warn('AG Grid: unable to find grid columns for the supplied colDef(s):', invalidColIds);\n }\n return mappedResults;\n };\n ToolPanelColDefService.prototype.syncLayoutWithGrid = function (syncLayoutCallback) {\n // extract ordered list of leaf path trees (column group hierarchy for each individual leaf column)\n var leafPathTrees = this.getLeafPathTrees();\n // merge leaf path tree taking split column groups into account\n var mergedColumnTrees = this.mergeLeafPathTrees(leafPathTrees);\n // sync layout with merged column trees\n syncLayoutCallback(mergedColumnTrees);\n };\n ToolPanelColDefService.prototype.getLeafPathTrees = function () {\n // leaf tree paths are obtained by walking up the tree starting at a column until we reach the top level group.\n var getLeafPathTree = function (node, childDef) {\n var leafPathTree;\n // build up tree in reverse order\n if (node instanceof ProvidedColumnGroup) {\n if (node.isPadding()) {\n // skip over padding groups\n leafPathTree = childDef;\n }\n else {\n var groupDef = Object.assign({}, node.getColGroupDef());\n // ensure group contains groupId\n groupDef.groupId = node.getGroupId();\n groupDef.children = [childDef];\n leafPathTree = groupDef;\n }\n }\n else {\n var colDef = Object.assign({}, node.getColDef());\n // ensure col contains colId\n colDef.colId = node.getColId();\n leafPathTree = colDef;\n }\n // walk tree\n var parent = node.getOriginalParent();\n if (parent) {\n // keep walking up the tree until we reach the root\n return getLeafPathTree(parent, leafPathTree);\n }\n else {\n // we have reached the root - exit with resulting leaf path tree\n return leafPathTree;\n }\n };\n // obtain a sorted list of all grid columns\n var allGridColumns = this.columnModel.getAllGridColumns();\n // only primary columns and non row group columns should appear in the tool panel\n var allPrimaryGridColumns = allGridColumns.filter(function (column) {\n var colDef = column.getColDef();\n return column.isPrimary() && !colDef.showRowGroup;\n });\n // construct a leaf path tree for each column\n return allPrimaryGridColumns.map(function (col) { return getLeafPathTree(col, col.getColDef()); });\n };\n ToolPanelColDefService.prototype.mergeLeafPathTrees = function (leafPathTrees) {\n var _this = this;\n var getLeafPathString = function (leafPath) {\n var group = leafPath;\n return group.children ? group.groupId + getLeafPathString(group.children[0]) : '';\n };\n var matchingRootGroupIds = function (pathA, pathB) {\n var bothPathsAreGroups = _this.isColGroupDef(pathA) && _this.isColGroupDef(pathB);\n return bothPathsAreGroups && _this.getId(pathA) === _this.getId(pathB);\n };\n var mergeTrees = function (treeA, treeB) {\n if (!_this.isColGroupDef(treeB)) {\n return treeA;\n }\n var mergeResult = treeA;\n var groupToMerge = treeB;\n if (groupToMerge.children && groupToMerge.groupId) {\n var added = _this.addChildrenToGroup(mergeResult, groupToMerge.groupId, groupToMerge.children[0]);\n if (added) {\n return mergeResult;\n }\n }\n groupToMerge.children.forEach(function (child) { return mergeTrees(mergeResult, child); });\n return mergeResult;\n };\n // we can't just merge the leaf path trees as groups can be split apart - instead only merge if leaf\n // path groups with the same root group id are contiguous.\n var mergeColDefs = [];\n for (var i = 1; i <= leafPathTrees.length; i++) {\n var first = leafPathTrees[i - 1];\n var second = leafPathTrees[i];\n if (matchingRootGroupIds(first, second)) {\n leafPathTrees[i] = mergeTrees(first, second);\n }\n else {\n mergeColDefs.push(first);\n }\n }\n return mergeColDefs;\n };\n ToolPanelColDefService.prototype.addChildrenToGroup = function (tree, groupId, colDef) {\n var _this = this;\n var subGroupIsSplit = function (currentSubGroup, currentSubGroupToAdd) {\n var existingChildIds = currentSubGroup.children.map(_this.getId);\n var childGroupAlreadyExists = _.includes(existingChildIds, _this.getId(currentSubGroupToAdd));\n var lastChild = _.last(currentSubGroup.children);\n var lastChildIsDifferent = lastChild && _this.getId(lastChild) !== _this.getId(currentSubGroupToAdd);\n return childGroupAlreadyExists && lastChildIsDifferent;\n };\n if (!this.isColGroupDef(tree)) {\n return true;\n }\n var currentGroup = tree;\n var groupToAdd = colDef;\n if (subGroupIsSplit(currentGroup, groupToAdd)) {\n currentGroup.children.push(groupToAdd);\n return true;\n }\n if (currentGroup.groupId === groupId) {\n // add children that don't already exist to group\n var existingChildIds = currentGroup.children.map(this.getId);\n var colDefAlreadyPresent = _.includes(existingChildIds, this.getId(groupToAdd));\n if (!colDefAlreadyPresent) {\n currentGroup.children.push(groupToAdd);\n return true;\n }\n }\n // recurse until correct group is found to add children\n currentGroup.children.forEach(function (subGroup) { return _this.addChildrenToGroup(subGroup, groupId, colDef); });\n return false;\n };\n __decorate([\n Autowired('columnModel')\n ], ToolPanelColDefService.prototype, \"columnModel\", void 0);\n ToolPanelColDefService = __decorate([\n Bean('toolPanelColDefService')\n ], ToolPanelColDefService);\n return ToolPanelColDefService;\n}(BeanStub));\nexport { ToolPanelColDefService };\n","import { ModuleNames } from \"@ag-grid-community/core\";\nimport { EnterpriseCoreModule } from \"@ag-grid-enterprise/core\";\nimport { HorizontalResizeComp } from \"./sideBar/horizontalResizeComp\";\nimport { SideBarComp } from \"./sideBar/sideBarComp\";\nimport { SideBarButtonsComp } from \"./sideBar/sideBarButtonsComp\";\nimport { ToolPanelColDefService } from \"./sideBar/common/toolPanelColDefService\";\nexport var SideBarModule = {\n moduleName: ModuleNames.SideBarModule,\n beans: [ToolPanelColDefService],\n agStackComponents: [\n { componentName: 'AgHorizontalResize', componentClass: HorizontalResizeComp },\n { componentName: 'AgSideBar', componentClass: SideBarComp },\n { componentName: 'AgSideBarButtons', componentClass: SideBarButtonsComp },\n ],\n dependantModules: [\n EnterpriseCoreModule\n ]\n};\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Events, Bean, Autowired, _ } from \"@ag-grid-community/core\";\nvar ModelItemUtils = /** @class */ (function () {\n function ModelItemUtils() {\n }\n ModelItemUtils.prototype.selectAllChildren = function (colTree, selectAllChecked, eventType) {\n var cols = this.extractAllLeafColumns(colTree);\n this.setAllColumns(cols, selectAllChecked, eventType);\n };\n ModelItemUtils.prototype.setColumn = function (col, selectAllChecked, eventType) {\n this.setAllColumns([col], selectAllChecked, eventType);\n };\n ModelItemUtils.prototype.setAllColumns = function (cols, selectAllChecked, eventType) {\n if (this.columnModel.isPivotMode()) {\n this.setAllPivot(cols, selectAllChecked, eventType);\n }\n else {\n this.setAllVisible(cols, selectAllChecked, eventType);\n }\n };\n ModelItemUtils.prototype.extractAllLeafColumns = function (allItems) {\n var res = [];\n var recursiveFunc = function (items) {\n items.forEach(function (item) {\n if (!item.isPassesFilter()) {\n return;\n }\n if (item.isGroup()) {\n recursiveFunc(item.getChildren());\n }\n else {\n res.push(item.getColumn());\n }\n });\n };\n recursiveFunc(allItems);\n return res;\n };\n ModelItemUtils.prototype.setAllVisible = function (columns, visible, eventType) {\n var colStateItems = [];\n columns.forEach(function (col) {\n if (col.getColDef().lockVisible) {\n return;\n }\n if (col.isVisible() != visible) {\n colStateItems.push({\n colId: col.getId(),\n hide: !visible\n });\n }\n });\n if (colStateItems.length > 0) {\n this.columnModel.applyColumnState({ state: colStateItems }, eventType);\n }\n };\n ModelItemUtils.prototype.setAllPivot = function (columns, value, eventType) {\n if (this.gridOptionsWrapper.isFunctionsPassive()) {\n this.setAllPivotPassive(columns, value);\n }\n else {\n this.setAllPivotActive(columns, value, eventType);\n }\n };\n ModelItemUtils.prototype.setAllPivotPassive = function (columns, value) {\n var copyOfPivotColumns = this.columnModel.getPivotColumns().slice();\n var copyOfValueColumns = this.columnModel.getValueColumns().slice();\n var copyOfRowGroupColumns = this.columnModel.getRowGroupColumns().slice();\n var pivotChanged = false;\n var valueChanged = false;\n var rowGroupChanged = false;\n var turnOnAction = function (col) {\n // don't change any column that's already got a function active\n if (col.isAnyFunctionActive()) {\n return;\n }\n if (col.isAllowValue()) {\n copyOfValueColumns.push(col);\n valueChanged = true;\n }\n else if (col.isAllowRowGroup()) {\n copyOfRowGroupColumns.push(col);\n pivotChanged = true;\n }\n else if (col.isAllowPivot()) {\n copyOfPivotColumns.push(col);\n rowGroupChanged = true;\n }\n };\n var turnOffAction = function (col) {\n if (!col.isAnyFunctionActive()) {\n return;\n }\n if (copyOfPivotColumns.indexOf(col) >= 0) {\n _.removeFromArray(copyOfPivotColumns, col);\n pivotChanged = true;\n }\n if (copyOfValueColumns.indexOf(col) >= 0) {\n _.removeFromArray(copyOfValueColumns, col);\n valueChanged = true;\n }\n if (copyOfRowGroupColumns.indexOf(col) >= 0) {\n _.removeFromArray(copyOfRowGroupColumns, col);\n rowGroupChanged = true;\n }\n };\n var action = value ? turnOnAction : turnOffAction;\n columns.forEach(action);\n if (pivotChanged) {\n var event_1 = {\n type: Events.EVENT_COLUMN_PIVOT_CHANGE_REQUEST,\n columns: copyOfPivotColumns,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event_1);\n }\n if (rowGroupChanged) {\n var event_2 = {\n type: Events.EVENT_COLUMN_ROW_GROUP_CHANGE_REQUEST,\n columns: copyOfRowGroupColumns,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event_2);\n }\n if (valueChanged) {\n var event_3 = {\n type: Events.EVENT_COLUMN_VALUE_CHANGE_REQUEST,\n columns: copyOfRowGroupColumns,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(event_3);\n }\n };\n ModelItemUtils.prototype.setAllPivotActive = function (columns, value, eventType) {\n var _this = this;\n var colStateItems = [];\n var turnOnAction = function (col) {\n // don't change any column that's already got a function active\n if (col.isAnyFunctionActive()) {\n return;\n }\n if (col.isAllowValue()) {\n var aggFunc = typeof col.getAggFunc() === 'string'\n ? col.getAggFunc()\n : _this.aggFuncService.getDefaultAggFunc(col);\n colStateItems.push({\n colId: col.getId(),\n aggFunc: aggFunc\n });\n }\n else if (col.isAllowRowGroup()) {\n colStateItems.push({\n colId: col.getId(),\n rowGroup: true\n });\n }\n else if (col.isAllowPivot()) {\n colStateItems.push({\n colId: col.getId(),\n pivot: true\n });\n }\n };\n var turnOffAction = function (col) {\n var isActive = col.isPivotActive() || col.isRowGroupActive() || col.isValueActive();\n if (isActive) {\n colStateItems.push({\n colId: col.getId(),\n pivot: false,\n rowGroup: false,\n aggFunc: null\n });\n }\n };\n var action = value ? turnOnAction : turnOffAction;\n columns.forEach(action);\n if (colStateItems.length > 0) {\n this.columnModel.applyColumnState({ state: colStateItems }, eventType);\n }\n };\n __decorate([\n Autowired('aggFuncService')\n ], ModelItemUtils.prototype, \"aggFuncService\", void 0);\n __decorate([\n Autowired('columnModel')\n ], ModelItemUtils.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], ModelItemUtils.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('columnApi')\n ], ModelItemUtils.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], ModelItemUtils.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('eventService')\n ], ModelItemUtils.prototype, \"eventService\", void 0);\n ModelItemUtils = __decorate([\n Bean('modelItemUtils')\n ], ModelItemUtils);\n return ModelItemUtils;\n}());\nexport { ModelItemUtils };\n","import { ModuleNames } from \"@ag-grid-community/core\";\nimport { EnterpriseCoreModule } from \"@ag-grid-enterprise/core\";\nimport { PrimaryColsHeaderPanel } from \"./columnToolPanel/primaryColsHeaderPanel\";\nimport { PrimaryColsListPanel } from \"./columnToolPanel/primaryColsListPanel\";\nimport { ColumnToolPanel } from \"./columnToolPanel/columnToolPanel\";\nimport { PrimaryColsPanel } from \"./columnToolPanel/primaryColsPanel\";\nimport { RowGroupingModule } from \"@ag-grid-enterprise/row-grouping\";\nimport { SideBarModule } from \"@ag-grid-enterprise/side-bar\";\nimport { ModelItemUtils } from \"./columnToolPanel/modelItemUtils\";\nexport var ColumnsToolPanelModule = {\n moduleName: ModuleNames.ColumnToolPanelModule,\n beans: [ModelItemUtils],\n agStackComponents: [\n { componentName: 'AgPrimaryColsHeader', componentClass: PrimaryColsHeaderPanel },\n { componentName: 'AgPrimaryColsList', componentClass: PrimaryColsListPanel },\n { componentName: 'AgPrimaryCols', componentClass: PrimaryColsPanel }\n ],\n userComponents: [\n { componentName: 'agColumnsToolPanel', componentClass: ColumnToolPanel },\n ],\n dependantModules: [\n EnterpriseCoreModule,\n RowGroupingModule,\n SideBarModule\n ]\n};\n","var workbook = {\n getTemplate: function () {\n return {\n name: \"Workbook\",\n properties: {\n prefixedAttributes: [{\n prefix: \"xmlns:\",\n map: {\n o: \"urn:schemas-microsoft-com:office:office\",\n x: \"urn:schemas-microsoft-com:office:excel\",\n ss: \"urn:schemas-microsoft-com:office:spreadsheet\",\n html: \"http://www.w3.org/TR/REC-html40\"\n },\n }],\n rawMap: {\n xmlns: \"urn:schemas-microsoft-com:office:spreadsheet\"\n }\n }\n };\n }\n};\nexport default workbook;\n","var excelWorkbook = {\n getTemplate: function () {\n return {\n name: \"ExcelWorkbook\",\n properties: {\n rawMap: {\n xmlns: \"urn:schemas-microsoft-com:office:excel\"\n }\n },\n children: [{\n name: \"WindowHeight\",\n textNode: \"8130\"\n }, {\n name: \"WindowWidth\",\n textNode: \"15135\"\n }, {\n name: \"WindowHeight\",\n textNode: \"8130\"\n }, {\n name: \"WindowTopX\",\n textNode: \"120\"\n }, {\n name: \"WindowTopY\",\n textNode: \"45\"\n }, {\n name: \"ProtectStructure\",\n textNode: \"False\"\n }, {\n name: \"ProtectWindow\",\n textNode: \"False\"\n }]\n };\n }\n};\nexport default excelWorkbook;\n","var column = {\n getTemplate: function (c) {\n var width = c.width;\n return {\n name: \"Column\",\n properties: {\n prefixedAttributes: [{\n prefix: \"ss:\",\n map: {\n Width: width\n }\n }]\n }\n };\n }\n};\nexport default column;\n","var cell = {\n getTemplate: function (c) {\n var mergeAcross = c.mergeAcross, styleId = c.styleId, data = c.data;\n var properties = {};\n if (mergeAcross) {\n properties.MergeAcross = mergeAcross;\n }\n if (styleId) {\n properties.StyleID = styleId;\n }\n return {\n name: \"Cell\",\n properties: {\n prefixedAttributes: [{\n prefix: \"ss:\",\n map: properties\n }]\n },\n children: [{\n name: \"Data\",\n properties: {\n prefixedAttributes: [{\n prefix: \"ss:\",\n map: {\n Type: data.type\n }\n }]\n },\n textNode: data.value\n }]\n };\n }\n};\nexport default cell;\n","import cell from './cell';\nvar row = {\n getTemplate: function (r) {\n var cells = r.cells;\n return {\n name: \"Row\",\n children: cells.map(function (it) { return cell.getTemplate(it); })\n };\n }\n};\nexport default row;\n","import column from './column';\nimport row from './row';\nvar worksheet = {\n getTemplate: function (ws) {\n var table = ws.table, name = ws.name;\n var columns = table.columns, rows = table.rows;\n var c = columns.map(function (it) { return column.getTemplate(it); });\n var r = rows.map(function (it) { return row.getTemplate(it); });\n return {\n name: \"Worksheet\",\n children: [{\n name: \"Table\",\n children: c.concat(r)\n }],\n properties: {\n prefixedAttributes: [{\n prefix: \"ss:\",\n map: {\n Name: name\n }\n }]\n }\n };\n }\n};\nexport default worksheet;\n","var documentProperties = {\n getTemplate: function () {\n return {\n name: \"DocumentProperties\",\n properties: {\n rawMap: {\n xmlns: \"urn:schemas-microsoft-com:office:office\"\n }\n },\n children: [{\n name: \"Version\",\n textNode: \"12.00\"\n }]\n };\n }\n};\nexport default documentProperties;\n","var alignment = {\n getTemplate: function (styleProperties) {\n var _a = styleProperties.alignment, vertical = _a.vertical, horizontal = _a.horizontal, indent = _a.indent, readingOrder = _a.readingOrder, rotate = _a.rotate, shrinkToFit = _a.shrinkToFit, verticalText = _a.verticalText, wrapText = _a.wrapText;\n return {\n name: 'Alignment',\n properties: {\n prefixedAttributes: [{\n prefix: \"ss:\",\n map: {\n Vertical: vertical,\n Horizontal: horizontal,\n Indent: indent,\n ReadingOrder: readingOrder,\n Rotate: rotate,\n ShrinkToFit: shrinkToFit,\n VerticalText: verticalText,\n WrapText: wrapText\n }\n }]\n }\n };\n }\n};\nexport default alignment;\n","var borders = {\n getTemplate: function (styleProperties) {\n var _a = styleProperties.borders, borderBottom = _a.borderBottom, borderLeft = _a.borderLeft, borderRight = _a.borderRight, borderTop = _a.borderTop;\n return {\n name: 'Borders',\n children: [borderBottom, borderLeft, borderRight, borderTop].map(function (it, index) {\n var current = index == 0 ? \"Bottom\" : index == 1 ? \"Left\" : index == 2 ? \"Right\" : \"Top\";\n return {\n name: 'Border',\n properties: {\n prefixedAttributes: [{\n prefix: 'ss:',\n map: {\n Position: current,\n LineStyle: it.lineStyle,\n Weight: it.weight,\n Color: it.color\n }\n }]\n }\n };\n })\n };\n }\n};\nexport default borders;\n","var font = {\n getTemplate: function (styleProperties) {\n var _a = styleProperties.font, bold = _a.bold, fontName = _a.fontName, italic = _a.italic, color = _a.color, outline = _a.outline, shadow = _a.shadow, size = _a.size, strikeThrough = _a.strikeThrough, underline = _a.underline, verticalAlign = _a.verticalAlign, charSet = _a.charSet, family = _a.family;\n return {\n name: \"Font\",\n properties: {\n prefixedAttributes: [{\n prefix: \"ss:\",\n map: {\n Bold: bold,\n FontName: fontName,\n Italic: italic,\n Color: color,\n Outline: outline,\n Shadow: shadow,\n Size: size,\n StrikeThrough: strikeThrough,\n Underline: underline,\n VerticalAlign: verticalAlign\n }\n }, {\n prefix: \"x:\",\n map: {\n CharSet: charSet,\n Family: family\n }\n }]\n }\n };\n }\n};\nexport default font;\n","var interior = {\n getTemplate: function (styleProperties) {\n var _a = styleProperties.interior, color = _a.color, pattern = _a.pattern, patternColor = _a.patternColor;\n return {\n name: \"Interior\",\n properties: {\n prefixedAttributes: [{\n prefix: \"ss:\",\n map: {\n Color: color,\n Pattern: pattern,\n PatternColor: patternColor\n }\n }]\n }\n };\n }\n};\nexport default interior;\n","var protection = {\n getTemplate: function (styleProperties) {\n return {\n name: \"Protection\",\n properties: {\n prefixedAttributes: [{\n prefix: \"ss:\",\n map: {\n Protected: styleProperties.protection.protected,\n HideFormula: styleProperties.protection.hideFormula\n }\n }]\n }\n };\n }\n};\nexport default protection;\n","var numberFormat = {\n getTemplate: function (styleProperties) {\n var format = styleProperties.numberFormat.format;\n return {\n name: \"NumberFormat\",\n properties: {\n prefixedAttributes: [{\n prefix: \"ss:\",\n map: {\n Format: format\n }\n }]\n }\n };\n }\n};\nexport default numberFormat;\n","var style = {\n getTemplate: function (styleProperties) {\n var id = styleProperties.id, name = styleProperties.name;\n return {\n name: 'Style',\n properties: {\n prefixedAttributes: [{\n prefix: \"ss:\",\n map: {\n ID: id,\n Name: name ? name : id\n }\n }]\n }\n };\n }\n};\nexport default style;\n","import { ExcelFactoryMode, _ } from '@ag-grid-community/core';\nimport workbook from './files/xml/workbook';\nimport excelWorkbook from './files/xml/excelWorkbook';\nimport worksheet from './files/xml/worksheet';\nimport documentProperties from './files/xml/documentProperties';\nimport alignment from './files/xml/styles/alignment';\nimport borders from './files/xml/styles/borders';\nimport font from './files/xml/styles/font';\nimport interior from './files/xml/styles/interior';\nimport protection from './files/xml/styles/protection';\nimport numberFormat from './files/xml/styles/numberFormat';\nimport style from './files/xml/styles/style';\nimport { XmlFactory } from \"@ag-grid-community/csv-export\";\n/**\n * See https://msdn.microsoft.com/en-us/library/aa140066(v=office.10).aspx\n */\nvar ExcelXmlFactory = /** @class */ (function () {\n function ExcelXmlFactory() {\n }\n ExcelXmlFactory.createExcel = function (styles, currentWorksheet) {\n var header = this.excelXmlHeader();\n var docProps = documentProperties.getTemplate();\n var eWorkbook = excelWorkbook.getTemplate();\n var wb = this.workbook(docProps, eWorkbook, styles, currentWorksheet);\n return \"\" + header + XmlFactory.createXml(wb, function (boolean) { return boolean ? '1' : '0'; });\n };\n ExcelXmlFactory.workbook = function (docProperties, eWorkbook, styles, currentWorksheet) {\n var children = [\n docProperties,\n eWorkbook,\n this.stylesXmlElement(styles)\n ].concat(worksheet.getTemplate(currentWorksheet));\n return Object.assign({}, workbook.getTemplate(), { children: children });\n };\n ExcelXmlFactory.excelXmlHeader = function () {\n return \"\\n \\n \";\n };\n ExcelXmlFactory.stylesXmlElement = function (styles) {\n var _this = this;\n return {\n name: 'Styles',\n children: styles ? styles.map(function (it) { return _this.styleXmlElement(it); }) : []\n };\n };\n ExcelXmlFactory.styleXmlElement = function (styleProperties) {\n var children = _.compose(this.addProperty('alignment', styleProperties), this.addProperty('borders', styleProperties), this.addProperty('font', styleProperties), this.addProperty('interior', styleProperties), this.addProperty('protection', styleProperties), this.addProperty('numberFormat', styleProperties))([]);\n return Object.assign({}, style.getTemplate(styleProperties), { children: children });\n };\n ExcelXmlFactory.addProperty = function (property, styleProperties) {\n return function (children) {\n if (!styleProperties[property]) {\n return children;\n }\n var options = {\n alignment: alignment,\n borders: borders,\n font: font,\n interior: interior,\n numberFormat: numberFormat,\n protection: protection\n };\n return children.concat(options[property].getTemplate(styleProperties));\n };\n };\n ExcelXmlFactory.factoryMode = ExcelFactoryMode.SINGLE_SHEET;\n return ExcelXmlFactory;\n}());\nexport { ExcelXmlFactory };\n","export var INCH_TO_EMU = 9525;\nexport var numberFormatMap = {\n '0': 1,\n '0.00': 2,\n '#,##0': 3,\n '#,##0.00': 4,\n '0%': 9,\n '0.00%': 10,\n '0.00E+00': 11,\n '# ?/?': 12,\n '# ??/??': 13,\n 'mm-dd-yy': 14,\n 'd-mmm-yy': 15,\n 'd-mmm': 16,\n 'mmm-yy': 17,\n 'h:mm AM/PM': 18,\n 'h:mm:ss AM/PM': 19,\n 'h:mm': 20,\n 'h:mm:ss': 21,\n 'm/d/yy h:mm': 22,\n '#,##0 ;(#,##0)': 37,\n '#,##0 ;[Red](#,##0)': 38,\n '#,##0.00;(#,##0.00)': 39,\n '#,##0.00;[Red](#,##0.00)': 40,\n 'mm:ss': 45,\n '[h]:mm:ss': 46,\n 'mmss.0': 47,\n '##0.0E+0': 48,\n '@': 49\n};\n","import { XmlFactory } from \"@ag-grid-community/csv-export\";\nimport { INCH_TO_EMU } from \"./excelConstants\";\nexport var pixelsToPoint = function (pixels) {\n return Math.round(pixels * 72 / 96);\n};\nexport var pointsToPixel = function (points) {\n return Math.round(points * 96 / 72);\n};\nexport var pixelsToEMU = function (value) {\n return Math.ceil(value * INCH_TO_EMU);\n};\nexport var getFontFamilyId = function (name) {\n if (name === undefined) {\n return;\n }\n var families = ['Automatic', 'Roman', 'Swiss', 'Modern', 'Script', 'Decorative'];\n var pos = families.indexOf(name || 'Automatic');\n return Math.max(pos, 0);\n};\nexport var getHeightFromProperty = function (rowIndex, height) {\n if (!height) {\n return;\n }\n var finalHeight;\n if (typeof height === 'number') {\n finalHeight = height;\n }\n else {\n var heightFunc = height;\n finalHeight = heightFunc({ rowIndex: rowIndex });\n }\n return pixelsToPoint(finalHeight);\n};\nexport var setExcelImageTotalWidth = function (image, columnsToExport) {\n var _a = image.position, colSpan = _a.colSpan, column = _a.column;\n if (image.width) {\n if (colSpan) {\n var columnsInSpan = columnsToExport.slice(column - 1, column + colSpan - 1);\n var totalWidth = 0;\n for (var i = 0; i < columnsInSpan.length; i++) {\n var colWidth = columnsInSpan[i].getActualWidth();\n if (image.width < totalWidth + colWidth) {\n image.position.colSpan = i + 1;\n image.totalWidth = image.width;\n image.width = image.totalWidth - totalWidth;\n break;\n }\n totalWidth += colWidth;\n }\n }\n else {\n image.totalWidth = image.width;\n }\n }\n};\nexport var setExcelImageTotalHeight = function (image, rowHeight) {\n var _a = image.position, rowSpan = _a.rowSpan, row = _a.row;\n if (image.height) {\n if (rowSpan) {\n var totalHeight = 0;\n var counter = 0;\n for (var i = row; i < row + rowSpan; i++) {\n var nextRowHeight = pointsToPixel(getHeightFromProperty(i, rowHeight) || 20);\n if (image.height < totalHeight + nextRowHeight) {\n image.position.rowSpan = counter + 1;\n image.totalHeight = image.height;\n image.height = image.totalHeight - totalHeight;\n break;\n }\n totalHeight += nextRowHeight;\n counter++;\n }\n }\n else {\n image.totalHeight = image.height;\n }\n }\n};\nexport var createXmlPart = function (body) {\n var header = XmlFactory.createHeader({\n encoding: 'UTF-8',\n standalone: 'yes'\n });\n var xmlBody = XmlFactory.createXml(body);\n return \"\" + header + xmlBody;\n};\nexport var getExcelColumnName = function (colIdx) {\n var startCode = 65;\n var tableWidth = 26;\n var fromCharCode = String.fromCharCode;\n var pos = Math.floor(colIdx / tableWidth);\n var tableIdx = colIdx % tableWidth;\n if (!pos || colIdx === tableWidth) {\n return fromCharCode(startCode + colIdx - 1);\n }\n if (!tableIdx) {\n return getExcelColumnName(pos - 1) + 'Z';\n }\n if (pos < tableWidth) {\n return fromCharCode(startCode + pos - 1) + fromCharCode(startCode + tableIdx - 1);\n }\n return getExcelColumnName(pos) + fromCharCode(startCode + tableIdx - 1);\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __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};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nimport { Constants, _ } from \"@ag-grid-community/core\";\nimport { BaseGridSerializingSession, RowType } from \"@ag-grid-community/csv-export\";\nimport { getHeightFromProperty } from \"./assets/excelUtils\";\nvar BaseExcelSerializingSession = /** @class */ (function (_super) {\n __extends(BaseExcelSerializingSession, _super);\n function BaseExcelSerializingSession(config) {\n var _this = _super.call(this, config) || this;\n _this.mixedStyles = {};\n _this.mixedStyleCounter = 0;\n _this.rows = [];\n _this.config = Object.assign({}, config);\n _this.stylesByIds = {};\n _this.config.baseExcelStyles.forEach(function (style) {\n _this.stylesByIds[style.id] = style;\n });\n _this.excelStyles = __spread(_this.config.baseExcelStyles);\n return _this;\n }\n BaseExcelSerializingSession.prototype.addCustomContent = function (customContent) {\n var _this = this;\n customContent.forEach(function (row) {\n var rowLen = _this.rows.length + 1;\n _this.rows.push({\n height: getHeightFromProperty(rowLen, _this.config.rowHeight),\n cells: row.map(function (cell, idx) {\n var image = _this.addImage(rowLen, _this.columnsToExport[idx], cell.data.value);\n var ret = __assign({}, cell);\n if (image) {\n ret.data = {};\n if (image.value != null) {\n ret.data.value = image.value;\n }\n else {\n ret.data.type = 'e';\n ret.data.value = null;\n }\n }\n return ret;\n })\n });\n });\n };\n BaseExcelSerializingSession.prototype.onNewHeaderGroupingRow = function () {\n var _this = this;\n var currentCells = [];\n this.rows.push({\n cells: currentCells,\n height: getHeightFromProperty(this.rows.length + 1, this.config.headerRowHeight)\n });\n return {\n onColumn: function (header, index, span, collapsibleRanges) {\n var styleIds = _this.config.styleLinker(RowType.HEADER_GROUPING, 1, \"grouping-\" + header, undefined, undefined);\n currentCells.push(__assign(__assign({}, _this.createMergedCell(_this.getStyleId(styleIds), _this.getDataTypeForValue('string'), header, span)), { collapsibleRanges: collapsibleRanges }));\n }\n };\n };\n BaseExcelSerializingSession.prototype.onNewHeaderRow = function () {\n return this.onNewRow(this.onNewHeaderColumn, this.config.headerRowHeight);\n };\n BaseExcelSerializingSession.prototype.onNewBodyRow = function () {\n return this.onNewRow(this.onNewBodyColumn, this.config.rowHeight);\n };\n BaseExcelSerializingSession.prototype.prepare = function (columnsToExport) {\n var _this = this;\n _super.prototype.prepare.call(this, columnsToExport);\n this.columnsToExport = __spread(columnsToExport);\n this.cols = columnsToExport.map(function (col, i) { return _this.convertColumnToExcel(col, i); });\n };\n BaseExcelSerializingSession.prototype.parse = function () {\n // adding custom content might have made some rows wider than the grid, so add new columns\n var longestRow = this.rows.reduce(function (a, b) { return Math.max(a, b.cells.length); }, 0);\n while (this.cols.length < longestRow) {\n this.cols.push(this.convertColumnToExcel(null, this.cols.length + 1));\n }\n var data = {\n name: this.config.sheetName,\n table: {\n columns: this.cols,\n rows: this.rows\n }\n };\n return this.createExcel(data);\n };\n BaseExcelSerializingSession.prototype.isFormula = function (value) {\n if (value == null) {\n return false;\n }\n return this.config.autoConvertFormulas && value.toString().startsWith('=');\n };\n BaseExcelSerializingSession.prototype.getStyleById = function (styleId) {\n if (styleId == null) {\n return null;\n }\n return this.stylesByIds[styleId] || null;\n };\n BaseExcelSerializingSession.prototype.convertColumnToExcel = function (column, index) {\n var columnWidth = this.config.columnWidth;\n if (columnWidth) {\n if (typeof columnWidth === 'number') {\n return { width: columnWidth };\n }\n return { width: columnWidth({ column: column, index: index }) };\n }\n if (column) {\n var smallestUsefulWidth = 75;\n return { width: Math.max(column.getActualWidth(), smallestUsefulWidth) };\n }\n return {};\n };\n BaseExcelSerializingSession.prototype.onNewHeaderColumn = function (rowIndex, currentCells) {\n var _this = this;\n return function (column, index) {\n var nameForCol = _this.extractHeaderValue(column);\n var styleIds = _this.config.styleLinker(RowType.HEADER, rowIndex, nameForCol, column, undefined);\n currentCells.push(_this.createCell(_this.getStyleId(styleIds), _this.getDataTypeForValue('string'), nameForCol));\n };\n };\n BaseExcelSerializingSession.prototype.onNewRow = function (onNewColumnAccumulator, height) {\n var currentCells = [];\n this.rows.push({\n cells: currentCells,\n height: getHeightFromProperty(this.rows.length + 1, height)\n });\n return {\n onColumn: onNewColumnAccumulator.bind(this, this.rows.length, currentCells)()\n };\n };\n BaseExcelSerializingSession.prototype.onNewBodyColumn = function (rowIndex, currentCells) {\n var _this = this;\n var skipCols = 0;\n return function (column, index, node) {\n if (skipCols > 0) {\n skipCols -= 1;\n return;\n }\n var valueForCell = _this.extractRowCellValue(column, index, rowIndex, Constants.EXPORT_TYPE_EXCEL, node);\n var styleIds = _this.config.styleLinker(RowType.BODY, rowIndex, valueForCell, column, node);\n var excelStyleId = _this.getStyleId(styleIds);\n var colSpan = column.getColSpan(node);\n var addedImage = _this.addImage(rowIndex, column, valueForCell);\n if (addedImage) {\n currentCells.push(_this.createCell(excelStyleId, _this.getDataTypeForValue(addedImage.value), addedImage.value == null ? '' : addedImage.value));\n }\n else if (colSpan > 1) {\n skipCols = colSpan - 1;\n currentCells.push(_this.createMergedCell(excelStyleId, _this.getDataTypeForValue(valueForCell), valueForCell, colSpan - 1));\n }\n else {\n currentCells.push(_this.createCell(excelStyleId, _this.getDataTypeForValue(valueForCell), valueForCell));\n }\n };\n };\n BaseExcelSerializingSession.prototype.getStyleId = function (styleIds) {\n if (!styleIds || !styleIds.length) {\n return null;\n }\n if (styleIds.length === 1) {\n return styleIds[0];\n }\n var key = styleIds.join(\"-\");\n if (!this.mixedStyles[key]) {\n this.addNewMixedStyle(styleIds);\n }\n return this.mixedStyles[key].excelID;\n };\n BaseExcelSerializingSession.prototype.addNewMixedStyle = function (styleIds) {\n var _this = this;\n this.mixedStyleCounter += 1;\n var excelId = \"mixedStyle\" + this.mixedStyleCounter;\n var resultantStyle = {};\n styleIds.forEach(function (styleId) {\n _this.excelStyles.forEach(function (excelStyle) {\n if (excelStyle.id === styleId) {\n _.mergeDeep(resultantStyle, _.deepCloneObject(excelStyle));\n }\n });\n });\n resultantStyle.id = excelId;\n resultantStyle.name = excelId;\n var key = styleIds.join(\"-\");\n this.mixedStyles[key] = {\n excelID: excelId,\n key: key,\n result: resultantStyle\n };\n this.excelStyles.push(resultantStyle);\n this.stylesByIds[excelId] = resultantStyle;\n };\n return BaseExcelSerializingSession;\n}(BaseGridSerializingSession));\nexport { BaseExcelSerializingSession };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { _ } from '@ag-grid-community/core';\nimport { ExcelXmlFactory } from './excelXmlFactory';\nimport { BaseExcelSerializingSession } from './baseExcelSerializingSession';\nvar ExcelXmlSerializingSession = /** @class */ (function (_super) {\n __extends(ExcelXmlSerializingSession, _super);\n function ExcelXmlSerializingSession() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ExcelXmlSerializingSession.prototype.createExcel = function (data) {\n return ExcelXmlFactory.createExcel(this.excelStyles, data);\n };\n ExcelXmlSerializingSession.prototype.getDataTypeForValue = function (valueForCell) {\n return _.isNumeric(valueForCell) ? 'Number' : 'String';\n };\n ExcelXmlSerializingSession.prototype.getType = function (type, style, value) {\n if (this.isFormula(value)) {\n return 'Formula';\n }\n if (style && style.dataType) {\n switch (style.dataType.toLocaleLowerCase()) {\n case 'string':\n return 'Formula';\n case 'number':\n return 'Number';\n case 'datetime':\n return 'DateTime';\n case 'error':\n return 'Error';\n case 'boolean':\n return 'Boolean';\n default:\n console.warn(\"AG Grid: Unrecognized data type for excel export [\" + style.id + \".dataType=\" + style.dataType + \"]\");\n }\n }\n return type;\n };\n ExcelXmlSerializingSession.prototype.addImage = function () {\n return;\n };\n ExcelXmlSerializingSession.prototype.createCell = function (styleId, type, value) {\n var actualStyle = this.getStyleById(styleId);\n var typeTransformed = (this.getType(type, actualStyle, value) || type);\n return {\n styleId: !!actualStyle ? styleId : undefined,\n data: {\n type: typeTransformed,\n value: this.getValueTransformed(typeTransformed, value)\n }\n };\n };\n ExcelXmlSerializingSession.prototype.getValueTransformed = function (typeTransformed, value) {\n var _this = this;\n var wrapText = function (val) {\n if (_this.config.suppressTextAsCDATA) {\n return _.escapeString(val);\n }\n var cdataStart = '';\n var cdataEndRegex = new RegExp(cdataEnd, \"g\");\n return cdataStart\n // CDATA sections are closed by the character sequence ']]>' and there is no\n // way of escaping this, so if the text contains the offending sequence, emit\n // multiple CDATA sections and split the characters between them.\n + String(val).replace(cdataEndRegex, ']]' + cdataEnd + cdataStart + '>')\n + cdataEnd;\n };\n var convertBoolean = function (val) {\n if (!val || val === '0' || val === 'false') {\n return '0';\n }\n return '1';\n };\n switch (typeTransformed) {\n case 'String':\n return wrapText(value);\n case 'Number':\n return Number(value).valueOf() + '';\n case 'Boolean':\n return convertBoolean(value);\n default:\n return value;\n }\n };\n ExcelXmlSerializingSession.prototype.createMergedCell = function (styleId, type, value, numOfCells) {\n return {\n styleId: !!this.getStyleById(styleId) ? styleId : undefined,\n data: {\n type: type,\n value: value\n },\n mergeAcross: numOfCells\n };\n };\n return ExcelXmlSerializingSession;\n}(BaseExcelSerializingSession));\nexport { ExcelXmlSerializingSession };\n","var coreFactory = {\n getTemplate: function (author) {\n var dt = new Date();\n var jsonDate = dt.toJSON();\n return {\n name: 'cp:coreProperties',\n properties: {\n prefixedAttributes: [{\n prefix: \"xmlns:\",\n map: {\n cp: \"http://schemas.openxmlformats.org/package/2006/metadata/core-properties\",\n dc: 'http://purl.org/dc/elements/1.1/',\n dcterms: 'http://purl.org/dc/terms/',\n dcmitype: 'http://purl.org/dc/dcmitype/',\n xsi: 'http://www.w3.org/2001/XMLSchema-instance'\n }\n }]\n },\n children: [{\n name: 'dc:creator',\n textNode: author\n }, {\n name: 'dc:title',\n textNode: 'Workbook'\n }, {\n name: 'dcterms:created',\n properties: {\n rawMap: {\n 'xsi:type': 'dcterms:W3CDTF'\n }\n },\n textNode: jsonDate\n }, {\n name: 'dcterms:modified',\n properties: {\n rawMap: {\n 'xsi:type': 'dcterms:W3CDTF'\n }\n },\n textNode: jsonDate\n }]\n };\n }\n};\nexport default coreFactory;\n","var contentTypeFactory = {\n getTemplate: function (config) {\n var name = config.name, ContentType = config.ContentType, Extension = config.Extension, PartName = config.PartName;\n return {\n name: name,\n properties: {\n rawMap: {\n Extension: Extension,\n PartName: PartName,\n ContentType: ContentType\n }\n }\n };\n }\n};\nexport default contentTypeFactory;\n","var __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nimport { ExcelXlsxFactory } from '../../excelXlsxFactory';\nimport contentTypeFactory from './contentType';\nvar contentTypesFactory = {\n getTemplate: function (sheetLen) {\n var worksheets = new Array(sheetLen).fill(undefined).map(function (v, i) { return ({\n name: 'Override',\n ContentType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml',\n PartName: \"/xl/worksheets/sheet\" + (i + 1) + \".xml\"\n }); });\n var sheetsWithImages = ExcelXlsxFactory.worksheetImages.size;\n var imageTypesObject = {};\n ExcelXlsxFactory.workbookImageIds.forEach(function (v) {\n imageTypesObject[v.type] = true;\n });\n var imageDocs = new Array(sheetsWithImages).fill(undefined).map(function (v, i) { return ({\n name: 'Override',\n ContentType: 'application/vnd.openxmlformats-officedocument.drawing+xml',\n PartName: \"/xl/drawings/drawing\" + (i + 1) + \".xml\"\n }); });\n var imageTypes = Object.keys(imageTypesObject).map(function (ext) { return ({\n name: 'Default',\n ContentType: \"image/\" + ext,\n Extension: ext\n }); });\n var children = __spread(imageTypes, [\n {\n name: 'Default',\n Extension: 'rels',\n ContentType: 'application/vnd.openxmlformats-package.relationships+xml'\n }, {\n name: 'Default',\n ContentType: 'application/xml',\n Extension: 'xml'\n }, {\n name: 'Override',\n ContentType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml',\n PartName: \"/xl/workbook.xml\"\n }\n ], worksheets, [\n {\n name: 'Override',\n ContentType: 'application/vnd.openxmlformats-officedocument.theme+xml',\n PartName: '/xl/theme/theme1.xml'\n }, {\n name: 'Override',\n ContentType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml',\n PartName: '/xl/styles.xml'\n }, {\n name: 'Override',\n ContentType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml',\n PartName: '/xl/sharedStrings.xml'\n }\n ], imageDocs, [\n {\n name: 'Override',\n ContentType: 'application/vnd.openxmlformats-package.core-properties+xml',\n PartName: '/docProps/core.xml'\n }\n ]).map(function (contentType) { return contentTypeFactory.getTemplate(contentType); });\n return {\n name: \"Types\",\n properties: {\n rawMap: {\n xmlns: \"http://schemas.openxmlformats.org/package/2006/content-types\"\n }\n },\n children: children\n };\n }\n};\nexport default contentTypesFactory;\n","import { ExcelXlsxFactory } from '../../excelXlsxFactory';\nimport { pixelsToEMU } from '../../assets/excelUtils';\nvar getAnchor = function (name, imageAnchor) { return ({\n name: \"xdr:\" + name,\n children: [{\n name: 'xdr:col',\n textNode: (imageAnchor.col).toString()\n }, {\n name: 'xdr:colOff',\n textNode: imageAnchor.offsetX.toString()\n }, {\n name: 'xdr:row',\n textNode: imageAnchor.row.toString()\n }, {\n name: 'xdr:rowOff',\n textNode: imageAnchor.offsetY.toString()\n }]\n}); };\nvar getExt = function (image) {\n var children = [{\n name: 'a:ext',\n properties: {\n rawMap: {\n uri: '{FF2B5EF4-FFF2-40B4-BE49-F238E27FC236}'\n }\n },\n children: [{\n name: 'a16:creationId',\n properties: {\n rawMap: {\n 'id': '{822E6D20-D7BC-2841-A643-D49A6EF008A2}',\n 'xmlns:a16': 'http://schemas.microsoft.com/office/drawing/2014/main'\n }\n }\n }]\n }];\n var recolor = image.recolor && image.recolor.toLowerCase();\n switch (recolor) {\n case 'grayscale':\n case 'sepia':\n case 'washout':\n children.push({\n name: 'a:ext',\n properties: {\n rawMap: {\n uri: '{C183D7F6-B498-43B3-948B-1728B52AA6E4}'\n }\n },\n children: [{\n name: 'adec:decorative',\n properties: {\n rawMap: {\n 'val': '0',\n 'xmlns:adec': 'http://schemas.microsoft.com/office/drawing/2017/decorative'\n }\n }\n }]\n });\n }\n return {\n name: 'a:extLst',\n children: children\n };\n};\nvar getNvPicPr = function (image, index) { return ({\n name: 'xdr:nvPicPr',\n children: [{\n name: 'xdr:cNvPr',\n properties: {\n rawMap: {\n id: index,\n name: image.id,\n descr: image.altText != null ? image.altText : undefined\n }\n },\n children: [getExt(image)]\n }, {\n name: 'xdr:cNvPicPr',\n properties: {\n rawMap: {\n preferRelativeResize: '0'\n }\n },\n children: [{\n name: 'a:picLocks'\n }]\n }]\n}); };\nvar getColorDetails = function (color) {\n if (!color.saturation && !color.tint) {\n return;\n }\n var ret = [];\n if (color.saturation) {\n ret.push({\n name: 'a:satMod',\n properties: {\n rawMap: {\n val: color.saturation * 1000\n }\n }\n });\n }\n if (color.tint) {\n ret.push({\n name: 'a:tint',\n properties: {\n rawMap: {\n val: color.tint * 1000\n }\n }\n });\n }\n return ret;\n};\nvar getDuoTone = function (primaryColor, secondaryColor) {\n return ({\n name: 'a:duotone',\n children: [{\n name: 'a:prstClr',\n properties: {\n rawMap: {\n val: primaryColor.color\n }\n },\n children: getColorDetails(primaryColor)\n }, {\n name: 'a:srgbClr',\n properties: {\n rawMap: {\n val: secondaryColor.color\n }\n },\n children: getColorDetails(secondaryColor)\n }]\n });\n};\nvar getBlipFill = function (image, index) {\n var blipChildren;\n if (image.transparency) {\n var transparency = Math.min(Math.max(image.transparency, 0), 100);\n blipChildren = [{\n name: 'a:alphaModFix',\n properties: {\n rawMap: {\n amt: 100000 - Math.round(transparency * 1000),\n }\n }\n }];\n }\n if (image.recolor) {\n if (!blipChildren) {\n blipChildren = [];\n }\n switch (image.recolor.toLocaleLowerCase()) {\n case 'grayscale':\n blipChildren.push({ name: 'a:grayscl' });\n break;\n case 'sepia':\n blipChildren.push(getDuoTone({ color: 'black' }, { color: 'D9C3A5', tint: 50, saturation: 180 }));\n break;\n case 'washout':\n blipChildren.push({\n name: 'a:lum',\n properties: {\n rawMap: {\n bright: '70000',\n contrast: '-70000'\n }\n }\n });\n break;\n default:\n }\n }\n return ({\n name: 'xdr:blipFill',\n children: [{\n name: 'a:blip',\n properties: {\n rawMap: {\n 'cstate': 'print',\n 'r:embed': \"rId\" + index,\n 'xmlns:r': 'http://schemas.openxmlformats.org/officeDocument/2006/relationships'\n }\n },\n children: blipChildren\n }, {\n name: 'a:stretch',\n children: [{\n name: 'a:fillRect'\n }]\n }]\n });\n};\nvar getSpPr = function (image, imageBoxSize) {\n var xfrm = {\n name: 'a:xfrm',\n children: [{\n name: 'a:off',\n properties: {\n rawMap: {\n x: 0,\n y: 0\n }\n }\n }, {\n name: 'a:ext',\n properties: {\n rawMap: {\n cx: imageBoxSize.width,\n cy: imageBoxSize.height\n }\n }\n }]\n };\n if (image.rotation) {\n var rotation = image.rotation;\n xfrm.properties = {\n rawMap: {\n rot: Math.min(Math.max(rotation, 0), 360) * 60000\n }\n };\n }\n var prstGeom = {\n name: 'a:prstGeom',\n properties: {\n rawMap: {\n prst: 'rect'\n }\n },\n children: [{ name: 'a:avLst' }]\n };\n var ret = {\n name: 'xdr:spPr',\n children: [xfrm, prstGeom]\n };\n return ret;\n};\nvar getImageBoxSize = function (image) {\n image.fitCell = !!image.fitCell || (!image.width || !image.height);\n var _a = image.position, position = _a === void 0 ? {} : _a, fitCell = image.fitCell, _b = image.width, width = _b === void 0 ? 0 : _b, _c = image.height, height = _c === void 0 ? 0 : _c, totalHeight = image.totalHeight, totalWidth = image.totalWidth;\n var _d = position.offsetX, offsetX = _d === void 0 ? 0 : _d, _e = position.offsetY, offsetY = _e === void 0 ? 0 : _e, _f = position.row, row = _f === void 0 ? 1 : _f, _g = position.rowSpan, rowSpan = _g === void 0 ? 1 : _g, _h = position.column, column = _h === void 0 ? 1 : _h, _j = position.colSpan, colSpan = _j === void 0 ? 1 : _j;\n return {\n from: {\n row: row - 1,\n col: column - 1,\n offsetX: pixelsToEMU(offsetX),\n offsetY: pixelsToEMU(offsetY)\n },\n to: {\n row: (row - 1) + (fitCell ? 1 : rowSpan - 1),\n col: (column - 1) + (fitCell ? 1 : colSpan - 1),\n offsetX: pixelsToEMU(width + offsetX),\n offsetY: pixelsToEMU(height + offsetY)\n },\n height: pixelsToEMU(totalHeight || height),\n width: pixelsToEMU(totalWidth || width)\n };\n};\nvar getPicture = function (image, currentIndex, worksheetImageIndex, imageBoxSize) {\n return {\n name: 'xdr:pic',\n children: [\n getNvPicPr(image, currentIndex + 1),\n getBlipFill(image, worksheetImageIndex + 1),\n getSpPr(image, imageBoxSize)\n ]\n };\n};\nvar drawingFactory = {\n getTemplate: function (config) {\n var sheetIndex = config.sheetIndex;\n var sheetImages = ExcelXlsxFactory.worksheetImages.get(sheetIndex);\n var sheetImageIds = ExcelXlsxFactory.worksheetImageIds.get(sheetIndex);\n var children = sheetImages.map(function (image, idx) {\n var boxSize = getImageBoxSize(image);\n return ({\n name: 'xdr:twoCellAnchor',\n properties: {\n rawMap: {\n editAs: 'absolute'\n }\n },\n children: [\n getAnchor('from', boxSize.from),\n getAnchor('to', boxSize.to),\n getPicture(image, idx, sheetImageIds.get(image.id).index, boxSize),\n { name: 'xdr:clientData' }\n ]\n });\n });\n return {\n name: 'xdr:wsDr',\n properties: {\n rawMap: {\n 'xmlns:a': 'http://schemas.openxmlformats.org/drawingml/2006/main',\n 'xmlns:xdr': 'http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing'\n }\n },\n children: children\n };\n }\n};\nexport default drawingFactory;\n","var __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar getColorChildren = function (props) {\n var _a = __read(props, 4), type = _a[0], innerType = _a[1], val = _a[2], lastClr = _a[3];\n return {\n name: \"a:\" + type,\n children: [{\n name: \"a:\" + innerType,\n properties: {\n rawMap: {\n val: val,\n lastClr: lastClr\n }\n }\n }]\n };\n};\nvar colorScheme = {\n getTemplate: function () {\n return {\n name: \"a:clrScheme\",\n properties: {\n rawMap: {\n name: \"Office\"\n }\n },\n children: [\n getColorChildren(['dk1', 'sysClr', 'windowText', '000000']),\n getColorChildren(['lt1', 'sysClr', 'window', 'FFFFFF']),\n getColorChildren(['dk2', 'srgbClr', '44546A']),\n getColorChildren(['lt2', 'srgbClr', 'E7E6E6']),\n getColorChildren(['accent1', 'srgbClr', '4472C4']),\n getColorChildren(['accent2', 'srgbClr', 'ED7D31']),\n getColorChildren(['accent3', 'srgbClr', 'A5A5A5']),\n getColorChildren(['accent4', 'srgbClr', 'FFC000']),\n getColorChildren(['accent5', 'srgbClr', '5B9BD5']),\n getColorChildren(['accent6', 'srgbClr', '70AD47']),\n getColorChildren(['hlink', 'srgbClr', '0563C1']),\n getColorChildren(['folHlink', 'srgbClr', '954F72'])\n ]\n };\n }\n};\nexport default colorScheme;\n","var __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nimport { _ } from '@ag-grid-community/core';\nvar getFont = function (props) {\n var _a = __read(props, 4), type = _a[0], typeface = _a[1], script = _a[2], panose = _a[3];\n return {\n name: \"a:\" + type,\n properties: {\n rawMap: {\n script: script,\n typeface: typeface,\n panose: panose\n }\n }\n };\n};\nvar fontScheme = {\n getTemplate: function () {\n var utf8_encode = _.utf8_encode;\n return {\n name: \"a:fontScheme\",\n properties: {\n rawMap: {\n name: \"Office\"\n }\n },\n children: [{\n name: 'a:majorFont',\n children: [\n getFont(['latin', 'Calibri Light', undefined, '020F0302020204030204']),\n getFont(['ea', '']),\n getFont(['cs', '']),\n getFont(['font', utf8_encode('游ゴシック Light'), 'Jpan']),\n getFont(['font', utf8_encode('맑은 고딕'), 'Hang']),\n getFont(['font', utf8_encode('等线 Light'), 'Hans']),\n getFont(['font', utf8_encode('新細明體'), 'Hant']),\n getFont(['font', 'Times New Roman', 'Arab']),\n getFont(['font', 'Times New Roman', 'Hebr']),\n getFont(['font', 'Tahoma', 'Thai']),\n getFont(['font', 'Nyala', 'Ethi']),\n getFont(['font', 'Vrinda', 'Beng']),\n getFont(['font', 'Shruti', 'Gujr']),\n getFont(['font', 'MoolBoran', 'Khmr']),\n getFont(['font', 'Tunga', 'Knda']),\n getFont(['font', 'Raavi', 'Guru']),\n getFont(['font', 'Euphemia', 'Cans']),\n getFont(['font', 'Plantagenet Cherokee', 'Cher']),\n getFont(['font', 'Microsoft Yi Baiti', 'Yiii']),\n getFont(['font', 'Microsoft Himalaya', 'Tibt']),\n getFont(['font', 'MV Boli', 'Thaa']),\n getFont(['font', 'Mangal', 'Deva']),\n getFont(['font', 'Gautami', 'Telu']),\n getFont(['font', 'Latha', 'Taml']),\n getFont(['font', 'Estrangelo Edessa', 'Syrc']),\n getFont(['font', 'Kalinga', 'Orya']),\n getFont(['font', 'Kartika', 'Mlym']),\n getFont(['font', 'DokChampa', 'Laoo']),\n getFont(['font', 'Iskoola Pota', 'Sinh']),\n getFont(['font', 'Mongolian Baiti', 'Mong']),\n getFont(['font', 'Times New Roman', 'Viet']),\n getFont(['font', 'Microsoft Uighur', 'Uigh']),\n getFont(['font', 'Sylfaen', 'Geor']),\n getFont(['font', 'Arial', 'Armn']),\n getFont(['font', 'Leelawadee UI', 'Bugi']),\n getFont(['font', 'Microsoft JhengHei', 'Bopo']),\n getFont(['font', 'Javanese Text', 'Java']),\n getFont(['font', 'Segoe UI', 'Lisu']),\n getFont(['font', 'Myanmar Text', 'Mymr']),\n getFont(['font', 'Ebrima', 'Nkoo']),\n getFont(['font', 'Nirmala UI', 'Olck']),\n getFont(['font', 'Ebrima', 'Osma']),\n getFont(['font', 'Phagspa', 'Phag']),\n getFont(['font', 'Estrangelo Edessa', 'Syrn']),\n getFont(['font', 'Estrangelo Edessa', 'Syrj']),\n getFont(['font', 'Estrangelo Edessa', 'Syre']),\n getFont(['font', 'Nirmala UI', 'Sora']),\n getFont(['font', 'Microsoft Tai Le', 'Tale']),\n getFont(['font', 'Microsoft New Tai Lue', 'Talu']),\n getFont(['font', 'Ebrima', 'Tfng'])\n ]\n }, {\n name: 'a:minorFont',\n children: [\n getFont(['latin', 'Calibri', undefined, '020F0502020204030204']),\n getFont(['ea', '']),\n getFont(['cs', '']),\n getFont(['font', utf8_encode('游ゴシック'), 'Jpan']),\n getFont(['font', utf8_encode('맑은 고딕'), 'Hang']),\n getFont(['font', utf8_encode('等线'), 'Hans']),\n getFont(['font', utf8_encode('新細明體'), 'Hant']),\n getFont(['font', 'Arial', 'Arab']),\n getFont(['font', 'Arial', 'Hebr']),\n getFont(['font', 'Tahoma', 'Thai']),\n getFont(['font', 'Nyala', 'Ethi']),\n getFont(['font', 'Vrinda', 'Beng']),\n getFont(['font', 'Shruti', 'Gujr']),\n getFont(['font', 'DaunPenh', 'Khmr']),\n getFont(['font', 'Tunga', 'Knda']),\n getFont(['font', 'Raavi', 'Guru']),\n getFont(['font', 'Euphemia', 'Cans']),\n getFont(['font', 'Plantagenet Cherokee', 'Cher']),\n getFont(['font', 'Microsoft Yi Baiti', 'Yiii']),\n getFont(['font', 'Microsoft Himalaya', 'Tibt']),\n getFont(['font', 'MV Boli', 'Thaa']),\n getFont(['font', 'Mangal', 'Deva']),\n getFont(['font', 'Gautami', 'Telu']),\n getFont(['font', 'Latha', 'Taml']),\n getFont(['font', 'Estrangelo Edessa', 'Syrc']),\n getFont(['font', 'Kalinga', 'Orya']),\n getFont(['font', 'Kartika', 'Mlym']),\n getFont(['font', 'DokChampa', 'Laoo']),\n getFont(['font', 'Iskoola Pota', 'Sinh']),\n getFont(['font', 'Mongolian Baiti', 'Mong']),\n getFont(['font', 'Arial', 'Viet']),\n getFont(['font', 'Microsoft Uighur', 'Uigh']),\n getFont(['font', 'Sylfaen', 'Geor']),\n getFont(['font', 'Arial', 'Armn']),\n getFont(['font', 'Leelawadee UI', 'Bugi']),\n getFont(['font', 'Microsoft JhengHei', 'Bopo']),\n getFont(['font', 'Javanese Text', 'Java']),\n getFont(['font', 'Segoe UI', 'Lisu']),\n getFont(['font', 'Myanmar Text', 'Mymr']),\n getFont(['font', 'Ebrima', 'Nkoo']),\n getFont(['font', 'Nirmala UI', 'Olck']),\n getFont(['font', 'Ebrima', 'Osma']),\n getFont(['font', 'Phagspa', 'Phag']),\n getFont(['font', 'Estrangelo Edessa', 'Syrn']),\n getFont(['font', 'Estrangelo Edessa', 'Syrj']),\n getFont(['font', 'Estrangelo Edessa', 'Syre']),\n getFont(['font', 'Nirmala UI', 'Sora']),\n getFont(['font', 'Microsoft Tai Le', 'Tale']),\n getFont(['font', 'Microsoft New Tai Lue', 'Talu']),\n getFont(['font', 'Ebrima', 'Tfng'])\n ]\n }]\n };\n }\n};\nexport default fontScheme;\n","var __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar getPropertyVal = function (name, val, children) { return ({\n name: \"a:\" + name,\n properties: {\n rawMap: {\n val: val\n }\n },\n children: children\n}); };\nvar getGs = function (props) {\n var _a = __read(props, 6), pos = _a[0], schemeColor = _a[1], satMod = _a[2], lumMod = _a[3], tint = _a[4], shade = _a[5];\n var children = [];\n children.push(getPropertyVal('satMod', satMod));\n if (lumMod) {\n children.push(getPropertyVal('lumMod', lumMod));\n }\n if (tint) {\n children.push(getPropertyVal('tint', tint));\n }\n if (shade) {\n children.push(getPropertyVal('shade', shade));\n }\n return {\n name: 'a:gs',\n properties: {\n rawMap: {\n pos: pos\n }\n },\n children: [{\n name: 'a:schemeClr',\n properties: {\n rawMap: {\n val: schemeColor\n }\n },\n children: children\n }]\n };\n};\nvar getSolidFill = function (val, children) { return ({\n name: 'a:solidFill',\n children: [getPropertyVal('schemeClr', val, children)]\n}); };\nvar getGradFill = function (props) {\n var _a = __read(props, 5), rotWithShape = _a[0], gs1 = _a[1], gs2 = _a[2], gs3 = _a[3], lin = _a[4];\n var _b = __read(lin, 2), ang = _b[0], scaled = _b[1];\n return {\n name: 'a:gradFill',\n properties: {\n rawMap: {\n rotWithShape: rotWithShape\n }\n },\n children: [{\n name: 'a:gsLst',\n children: [\n getGs(gs1),\n getGs(gs2),\n getGs(gs3)\n ]\n }, {\n name: 'a:lin',\n properties: {\n rawMap: {\n ang: ang,\n scaled: scaled\n }\n }\n }]\n };\n};\nvar getLine = function (props) {\n var _a = __read(props, 4), w = _a[0], cap = _a[1], cmpd = _a[2], algn = _a[3];\n return {\n name: 'a:ln',\n properties: {\n rawMap: { w: w, cap: cap, cmpd: cmpd, algn: algn }\n },\n children: [\n getSolidFill('phClr'),\n getPropertyVal('prstDash', 'solid'),\n {\n name: 'a:miter',\n properties: {\n rawMap: {\n lim: '800000'\n }\n }\n }\n ]\n };\n};\nvar getEffectStyle = function (shadow) {\n var children = [];\n if (shadow) {\n var _a = __read(shadow, 5), blurRad = _a[0], dist = _a[1], dir = _a[2], algn = _a[3], rotWithShape = _a[4];\n children.push({\n name: 'a:outerShdw',\n properties: {\n rawMap: { blurRad: blurRad, dist: dist, dir: dir, algn: algn, rotWithShape: rotWithShape }\n },\n children: [\n getPropertyVal('srgbClr', '000000', [getPropertyVal('alpha', '63000')])\n ]\n });\n }\n return {\n name: 'a:effectStyle',\n children: [Object.assign({}, {\n name: 'a:effectLst'\n }, children.length ? { children: children } : {})]\n };\n};\nvar getFillStyleList = function () { return ({\n name: 'a:fillStyleLst',\n children: [\n getSolidFill('phClr'),\n getGradFill([\n '1',\n ['0', 'phClr', '105000', '110000', '67000'],\n ['50000', 'phClr', '103000', '105000', '73000'],\n ['100000', 'phClr', '109000', '105000', '81000'],\n ['5400000', '0']\n ]),\n getGradFill([\n '1',\n ['0', 'phClr', '103000', '102000', '94000'],\n ['50000', 'phClr', '110000', '100000', undefined, '100000'],\n ['100000', 'phClr', '120000', '99000', undefined, '78000'],\n ['5400000', '0']\n ])\n ]\n}); };\nvar getLineStyleList = function () { return ({\n name: 'a:lnStyleLst',\n children: [\n getLine(['6350', 'flat', 'sng', 'ctr']),\n getLine(['12700', 'flat', 'sng', 'ctr']),\n getLine(['19050', 'flat', 'sng', 'ctr'])\n ]\n}); };\nvar getEffectStyleList = function () { return ({\n name: 'a:effectStyleLst',\n children: [\n getEffectStyle(),\n getEffectStyle(),\n getEffectStyle(['57150', '19050', '5400000', 'ctr', '0'])\n ]\n}); };\nvar getBgFillStyleList = function () { return ({\n name: 'a:bgFillStyleLst',\n children: [\n getSolidFill('phClr'),\n getSolidFill('phClr', [\n getPropertyVal('tint', '95000'),\n getPropertyVal('satMod', '170000'),\n ]),\n getGradFill([\n '1',\n ['0', 'phClr', '150000', '102000', '93000', '98000'],\n ['50000', 'phClr', '130000', '103000', '98000', '90000'],\n ['100000', 'phClr', '120000', undefined, undefined, '63000'],\n ['5400000', '0']\n ])\n ]\n}); };\nvar formatScheme = {\n getTemplate: function () {\n return {\n name: \"a:fmtScheme\",\n properties: {\n rawMap: {\n name: \"Office\"\n }\n },\n children: [\n getFillStyleList(),\n getLineStyleList(),\n getEffectStyleList(),\n getBgFillStyleList()\n ]\n };\n }\n};\nexport default formatScheme;\n","import colorScheme from './colorScheme';\nimport fontScheme from './fontScheme';\nimport formatScheme from './formatScheme';\nvar themeElements = {\n getTemplate: function () {\n return {\n name: \"a:themeElements\",\n children: [\n colorScheme.getTemplate(),\n fontScheme.getTemplate(),\n formatScheme.getTemplate()\n ]\n };\n }\n};\nexport default themeElements;\n","import themeElements from './office/themeElements';\nvar officeTheme = {\n getTemplate: function () {\n return {\n name: \"a:theme\",\n properties: {\n prefixedAttributes: [{\n prefix: \"xmlns:\",\n map: {\n a: \"http://schemas.openxmlformats.org/drawingml/2006/main\"\n },\n }],\n rawMap: {\n name: \"Office Theme\"\n }\n },\n children: [\n themeElements.getTemplate(),\n {\n name: 'a:objectDefaults'\n },\n {\n name: 'a:extraClrSchemeLst'\n }\n ]\n };\n }\n};\nexport default officeTheme;\n","import { _ } from '@ag-grid-community/core';\nvar buildSharedString = function (strMap) {\n var ret = [];\n strMap.forEach(function (val, key) {\n var textNode = key.toString();\n var child = {\n name: 't',\n textNode: _.utf8_encode(_.escapeString(textNode))\n };\n // if we have leading or trailing spaces, instruct Excel not to trim them\n var preserveSpaces = textNode.trim().length !== textNode.length;\n if (preserveSpaces) {\n child.properties = {\n rawMap: {\n \"xml:space\": \"preserve\"\n }\n };\n }\n ret.push({\n name: 'si',\n children: [child]\n });\n });\n return ret;\n};\nvar sharedStrings = {\n getTemplate: function (strings) {\n return {\n name: \"sst\",\n properties: {\n rawMap: {\n xmlns: 'http://schemas.openxmlformats.org/spreadsheetml/2006/main',\n count: strings.size,\n uniqueCount: strings.size\n }\n },\n children: buildSharedString(strings)\n };\n }\n};\nexport default sharedStrings;\n","var numberFormatFactory = {\n getTemplate: function (numberFormat) {\n var formatCode = numberFormat.formatCode, numFmtId = numberFormat.numFmtId;\n return {\n name: \"numFmt\",\n properties: {\n rawMap: {\n formatCode: formatCode,\n numFmtId: numFmtId\n }\n }\n };\n }\n};\nexport default numberFormatFactory;\n","import numberFormatFactory from './numberFormat';\nvar numberFormatsFactory = {\n getTemplate: function (numberFormats) {\n return {\n name: \"numFmts\",\n properties: {\n rawMap: {\n count: numberFormats.length\n }\n },\n children: numberFormats.map(function (numberFormat) { return numberFormatFactory.getTemplate(numberFormat); })\n };\n }\n};\nexport default numberFormatsFactory;\n","var fontFactory = {\n getTemplate: function (font) {\n var size = font.size, colorTheme = font.colorTheme, _a = font.color, color = _a === void 0 ? 'FF000000' : _a, _b = font.fontName, fontName = _b === void 0 ? 'Calibri' : _b, family = font.family, scheme = font.scheme, italic = font.italic, bold = font.bold, strikeThrough = font.strikeThrough, outline = font.outline, shadow = font.shadow, underline = font.underline, verticalAlign = font.verticalAlign;\n var children = [\n { name: 'sz', properties: { rawMap: { val: size } } },\n { name: 'color', properties: { rawMap: { theme: colorTheme, rgb: color } } },\n { name: 'name', properties: { rawMap: { val: fontName } } }\n ];\n if (family) {\n children.push({ name: 'family', properties: { rawMap: { val: family } } });\n }\n if (scheme) {\n children.push({ name: 'scheme', properties: { rawMap: { val: scheme } } });\n }\n if (italic) {\n children.push({ name: 'i' });\n }\n if (bold) {\n children.push({ name: 'b' });\n }\n if (strikeThrough) {\n children.push({ name: 'strike' });\n }\n if (outline) {\n children.push({ name: 'outline' });\n }\n if (shadow) {\n children.push({ name: 'shadow' });\n }\n if (underline) {\n children.push({ name: 'u', properties: { rawMap: { val: underline } } });\n }\n if (verticalAlign) {\n children.push({ name: 'vertAlign', properties: { rawMap: { val: verticalAlign } } });\n }\n return { name: \"font\", children: children };\n }\n};\nexport default fontFactory;\n","import fontFactory from './font';\nvar fontsFactory = {\n getTemplate: function (fonts) {\n return {\n name: \"fonts\",\n properties: {\n rawMap: {\n count: fonts.length\n }\n },\n children: fonts.map(function (font) { return fontFactory.getTemplate(font); })\n };\n }\n};\nexport default fontsFactory;\n","var fillFactory = {\n getTemplate: function (fill) {\n var patternType = fill.patternType, fgTheme = fill.fgTheme, fgTint = fill.fgTint, fgRgb = fill.fgRgb, bgRgb = fill.bgRgb, bgIndexed = fill.bgIndexed;\n var pf = {\n name: 'patternFill',\n properties: {\n rawMap: {\n patternType: patternType\n }\n }\n };\n if (fgTheme || fgTint || fgRgb) {\n pf.children = [{\n name: 'fgColor',\n properties: {\n rawMap: {\n theme: fgTheme,\n tint: fgTint,\n rgb: fgRgb\n }\n }\n }];\n }\n if (bgIndexed || bgRgb) {\n if (!pf.children) {\n pf.children = [];\n }\n pf.children.push({\n name: 'bgColor',\n properties: {\n rawMap: {\n indexed: bgIndexed,\n rgb: bgRgb\n }\n }\n });\n }\n return {\n name: \"fill\",\n children: [pf]\n };\n }\n};\nexport default fillFactory;\n","import fillFactory from './fill';\nvar fillsFactory = {\n getTemplate: function (fills) {\n return {\n name: \"fills\",\n properties: {\n rawMap: {\n count: fills.length\n }\n },\n children: fills.map(function (fill) { return fillFactory.getTemplate(fill); })\n };\n }\n};\nexport default fillsFactory;\n","var getWeightName = function (value) {\n switch (value) {\n case 1: return 'thin';\n case 2: return 'medium';\n case 3: return 'thick';\n default: return 'hair';\n }\n};\nvar mappedBorderNames = {\n None: 'None',\n Dot: 'Dotted',\n Dash: 'Dashed',\n Double: 'Double',\n DashDot: 'DashDot',\n DashDotDot: 'DashDotDot',\n SlantDashDot: 'SlantDashDot'\n};\nvar mediumBorders = ['Dashed', 'DashDot', 'DashDotDot'];\nvar colorMap = {\n None: 'none',\n Solid: 'solid',\n Gray50: 'mediumGray',\n Gray75: 'darkGray',\n Gray25: 'lightGray',\n HorzStripe: 'darkHorizontal',\n VertStripe: 'darkVertical',\n ReverseDiagStripe: 'darkDown',\n DiagStripe: 'darkUp',\n DiagCross: 'darkGrid',\n ThickDiagCross: 'darkTrellis',\n ThinHorzStripe: 'lightHorizontal',\n ThinVertStripe: 'lightVertical',\n ThinReverseDiagStripe: 'lightDown',\n ThinDiagStripe: 'lightUp',\n ThinHorzCross: 'lightGrid',\n ThinDiagCross: 'lightTrellis',\n Gray125: 'gray125',\n Gray0625: 'gray0625'\n};\nvar horizontalAlignmentMap = {\n Automatic: 'general',\n Left: 'left',\n Center: 'center',\n Right: 'right',\n Fill: 'fill',\n Justify: 'justify',\n CenterAcrossSelection: 'centerContinuous',\n Distributed: 'distributed',\n JustifyDistributed: 'justify'\n};\nvar verticalAlignmentMap = {\n Automatic: undefined,\n Top: 'top',\n Bottom: 'bottom',\n Center: 'center',\n Justify: 'justify',\n Distributed: 'distributed',\n JustifyDistributed: 'justify'\n};\nexport var convertLegacyPattern = function (name) {\n if (!name) {\n return 'none';\n }\n return colorMap[name] || name;\n};\nexport var convertLegacyColor = function (color) {\n if (color == undefined) {\n return color;\n }\n if (color.charAt(0) === '#') {\n color = color.substr(1);\n }\n return color.length === 6 ? 'FF' + color : color;\n};\nexport var convertLegacyBorder = function (type, weight) {\n if (!type) {\n return 'thin';\n }\n // Legacy Types are: None, Continuous, Dash, Dot, DashDot, DashDotDot, SlantDashDot, and Double\n // Weight represents: 0—Hairline, 1—Thin , 2—Medium, 3—Thick\n // New types: none, thin, medium, dashed, dotted, thick, double, hair, mediumDashed, dashDot, mediumDashDot,\n // dashDotDot, mediumDashDotDot, slantDashDot\n var namedWeight = getWeightName(weight);\n var mappedName = mappedBorderNames[type];\n if (type === 'Continuous') {\n return namedWeight;\n }\n if (namedWeight === 'medium' && mediumBorders.indexOf(mappedName) !== -1) {\n return \"medium\" + mappedName;\n }\n return mappedName.charAt(0).toLowerCase() + mappedName.substr(1);\n};\nexport var convertLegacyHorizontalAlignment = function (alignment) {\n return horizontalAlignmentMap[alignment] || 'general';\n};\nexport var convertLegacyVerticalAlignment = function (alignment) {\n return verticalAlignmentMap[alignment] || undefined;\n};\n","import { convertLegacyColor } from '../../../assets/excelLegacyConvert';\nvar getBorderColor = function (color) {\n return {\n name: 'color',\n properties: {\n rawMap: {\n rgb: convertLegacyColor(color || '#000000')\n }\n }\n };\n};\nvar borderFactory = {\n getTemplate: function (border) {\n var left = border.left, right = border.right, top = border.top, bottom = border.bottom, diagonal = border.diagonal;\n var leftChildren = left ? [getBorderColor(left.color)] : undefined;\n var rightChildren = right ? [getBorderColor(right.color)] : undefined;\n var topChildren = top ? [getBorderColor(top.color)] : undefined;\n var bottomChildren = bottom ? [getBorderColor(bottom.color)] : undefined;\n var diagonalChildren = diagonal ? [getBorderColor(diagonal.color)] : undefined;\n return {\n name: 'border',\n children: [{\n name: 'left',\n properties: { rawMap: { style: left && left.style } },\n children: leftChildren\n }, {\n name: 'right',\n properties: { rawMap: { style: right && right.style } },\n children: rightChildren\n }, {\n name: 'top',\n properties: { rawMap: { style: top && top.style } },\n children: topChildren\n }, {\n name: 'bottom',\n properties: { rawMap: { style: bottom && bottom.style } },\n children: bottomChildren\n }, {\n name: 'diagonal',\n properties: { rawMap: { style: diagonal && diagonal.style } },\n children: diagonalChildren\n }]\n };\n }\n};\nexport default borderFactory;\n","import borderFactory from './border';\nvar bordersFactory = {\n getTemplate: function (borders) {\n return {\n name: \"borders\",\n properties: {\n rawMap: {\n count: borders.length\n }\n },\n children: borders.map(function (border) { return borderFactory.getTemplate(border); })\n };\n }\n};\nexport default bordersFactory;\n","import { convertLegacyHorizontalAlignment, convertLegacyVerticalAlignment } from '../../../assets/excelLegacyConvert';\nvar getReadingOrderId = function (readingOrder) {\n var order = ['Context', 'LeftToRight', 'RightToLeft'];\n var pos = order.indexOf(readingOrder);\n return Math.max(pos, 0);\n};\nvar alignmentFactory = {\n getTemplate: function (alignment) {\n var horizontal = alignment.horizontal, indent = alignment.indent, readingOrder = alignment.readingOrder, rotate = alignment.rotate, shrinkToFit = alignment.shrinkToFit, vertical = alignment.vertical, wrapText = alignment.wrapText;\n return {\n name: 'alignment',\n properties: {\n rawMap: {\n horizontal: horizontal && convertLegacyHorizontalAlignment(horizontal),\n indent: indent,\n readingOrder: readingOrder && getReadingOrderId(readingOrder),\n textRotation: rotate,\n shrinkToFit: shrinkToFit,\n vertical: vertical && convertLegacyVerticalAlignment(vertical),\n wrapText: wrapText\n }\n }\n };\n }\n};\nexport default alignmentFactory;\n","var protectionFactory = {\n getTemplate: function (protection) {\n var locked = protection.protected === false ? 0 : 1;\n var hidden = protection.hideFormula === true ? 1 : 0;\n return {\n name: 'protection',\n properties: {\n rawMap: {\n hidden: hidden,\n locked: locked\n }\n }\n };\n }\n};\nexport default protectionFactory;\n","import alignmentFactory from './alignment';\nimport protectionFactory from './protection';\nvar xfFactory = {\n getTemplate: function (xf) {\n var alignment = xf.alignment, borderId = xf.borderId, fillId = xf.fillId, fontId = xf.fontId, numFmtId = xf.numFmtId, protection = xf.protection, xfId = xf.xfId;\n var children = [];\n if (alignment) {\n children.push(alignmentFactory.getTemplate(alignment));\n }\n if (protection) {\n children.push(protectionFactory.getTemplate(protection));\n }\n return {\n name: \"xf\",\n properties: {\n rawMap: {\n applyAlignment: alignment ? 1 : undefined,\n applyProtection: protection ? 1 : undefined,\n applyBorder: borderId ? 1 : undefined,\n applyFill: fillId ? 1 : undefined,\n borderId: borderId,\n fillId: fillId,\n applyFont: fontId ? 1 : undefined,\n fontId: fontId,\n applyNumberFormat: numFmtId ? 1 : undefined,\n numFmtId: numFmtId,\n xfId: xfId\n }\n },\n children: children.length ? children : undefined\n };\n }\n};\nexport default xfFactory;\n","import xfFactory from './xf';\nvar cellStylesXfsFactory = {\n getTemplate: function (xfs) {\n return {\n name: \"cellStyleXfs\",\n properties: {\n rawMap: {\n count: xfs.length\n }\n },\n children: xfs.map(function (xf) { return xfFactory.getTemplate(xf); })\n };\n }\n};\nexport default cellStylesXfsFactory;\n","import xfFactory from './xf';\nvar cellXfsFactory = {\n getTemplate: function (xfs) {\n return {\n name: \"cellXfs\",\n properties: {\n rawMap: {\n count: xfs.length\n }\n },\n children: xfs.map(function (xf) { return xfFactory.getTemplate(xf); })\n };\n }\n};\nexport default cellXfsFactory;\n","var borderFactory = {\n getTemplate: function (cellStyle) {\n var builtinId = cellStyle.builtinId, name = cellStyle.name, xfId = cellStyle.xfId;\n return {\n name: \"cellStyle\",\n properties: {\n rawMap: {\n builtinId: builtinId,\n name: name,\n xfId: xfId\n }\n }\n };\n }\n};\nexport default borderFactory;\n","import cellStyleFactory from './cellStyle';\nvar cellStylesFactory = {\n getTemplate: function (cellStyles) {\n return {\n name: \"cellStyles\",\n properties: {\n rawMap: {\n count: cellStyles.length\n }\n },\n children: cellStyles.map(function (cellStyle) { return cellStyleFactory.getTemplate(cellStyle); })\n };\n }\n};\nexport default cellStylesFactory;\n","var sheetFactory = {\n getTemplate: function (name, idx) {\n var sheetId = (idx + 1).toString();\n return {\n name: \"sheet\",\n properties: {\n rawMap: {\n \"name\": name,\n \"sheetId\": sheetId,\n \"r:id\": \"rId\" + sheetId\n }\n }\n };\n }\n};\nexport default sheetFactory;\n","import sheetFactory from './sheet';\nvar sheetsFactory = {\n getTemplate: function (names) {\n return {\n name: \"sheets\",\n children: names.map(function (sheet, idx) { return sheetFactory.getTemplate(sheet, idx); })\n };\n }\n};\nexport default sheetsFactory;\n","import sheetsFactory from './sheets';\nvar workbookFactory = {\n getTemplate: function (names) {\n return {\n name: \"workbook\",\n properties: {\n prefixedAttributes: [{\n prefix: \"xmlns:\",\n map: {\n r: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships\"\n },\n }],\n rawMap: {\n xmlns: \"http://schemas.openxmlformats.org/spreadsheetml/2006/main\"\n }\n },\n children: [sheetsFactory.getTemplate(names)]\n };\n }\n};\nexport default workbookFactory;\n","// https://docs.microsoft.com/en-us/office/troubleshoot/excel/determine-column-widths\nvar getExcelCellWidth = function (width) { return Math.ceil((width - 12) / 7 + 1); };\nvar columnFactory = {\n getTemplate: function (config) {\n var min = config.min, max = config.max, outlineLevel = config.outlineLevel, s = config.s, width = config.width, hidden = config.hidden, bestFit = config.bestFit;\n var excelWidth = 1;\n var customWidth = '0';\n if (width > 1) {\n excelWidth = getExcelCellWidth(width);\n customWidth = '1';\n }\n return {\n name: 'col',\n properties: {\n rawMap: {\n min: min,\n max: max,\n outlineLevel: outlineLevel != null ? outlineLevel : undefined,\n width: excelWidth,\n style: s,\n hidden: hidden ? '1' : '0',\n bestFit: bestFit ? '1' : '0',\n customWidth: customWidth\n }\n }\n };\n }\n};\nexport default columnFactory;\n","import { _ } from '@ag-grid-community/core';\nimport { getStyleId } from './styles/stylesheet';\nvar convertLegacyType = function (type) {\n var t = type.charAt(0).toLowerCase();\n return t === 's' ? 'inlineStr' : t;\n};\nvar cellFactory = {\n getTemplate: function (config, idx, currentSheet) {\n var ref = config.ref, data = config.data, styleId = config.styleId;\n var type = data.type, value = data.value;\n var convertedType = type;\n if (type === 'f') {\n convertedType = 'str';\n }\n else if (type.charAt(0) === type.charAt(0).toUpperCase()) {\n convertedType = convertLegacyType(type);\n }\n var obj = {\n name: 'c',\n properties: {\n rawMap: {\n r: ref,\n t: convertedType === 'empty' ? undefined : convertedType,\n s: styleId ? getStyleId(styleId, currentSheet) : undefined\n }\n }\n };\n if (convertedType === 'empty') {\n return obj;\n }\n var children;\n if (convertedType === 'str' && type === 'f') {\n children = [{\n name: 'f',\n textNode: _.escapeString(_.utf8_encode(value))\n }];\n }\n else if (convertedType === 'inlineStr') {\n children = [{\n name: 'is',\n children: [{\n name: 't',\n textNode: _.escapeString(_.utf8_encode(value))\n }]\n }];\n }\n else {\n children = [{\n name: 'v',\n textNode: value\n }];\n }\n return Object.assign({}, obj, { children: children });\n }\n};\nexport default cellFactory;\n","var __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nimport { getExcelColumnName } from '../../assets/excelUtils';\nimport cellFactory from './cell';\nvar addEmptyCells = function (cells, rowIdx) {\n var mergeMap = [];\n var posCounter = 0;\n for (var i = 0; i < cells.length; i++) {\n var cell = cells[i];\n if (cell.mergeAcross) {\n mergeMap.push({\n pos: i,\n excelPos: posCounter\n });\n posCounter += cell.mergeAcross;\n }\n posCounter++;\n }\n if (mergeMap.length) {\n for (var i = mergeMap.length - 1; i >= 0; i--) {\n var mergedCells = [];\n var cell = cells[mergeMap[i].pos];\n for (var j = 1; j <= cell.mergeAcross; j++) {\n mergedCells.push({\n ref: \"\" + getExcelColumnName(mergeMap[i].excelPos + 1 + j) + (rowIdx + 1),\n styleId: cell.styleId,\n data: { type: 'empty', value: null }\n });\n }\n if (mergedCells.length) {\n cells.splice.apply(cells, __spread([mergeMap[i].pos + 1, 0], mergedCells));\n }\n }\n }\n};\nvar shouldDisplayCell = function (cell) { return cell.data.value !== '' || cell.styleId !== undefined; };\nvar rowFactory = {\n getTemplate: function (config, idx, currentSheet) {\n var index = config.index, collapsed = config.collapsed, hidden = config.hidden, height = config.height, s = config.s, _a = config.cells, cells = _a === void 0 ? [] : _a;\n addEmptyCells(cells, idx);\n var children = cells.filter(shouldDisplayCell).map(function (cell, idx) { return cellFactory.getTemplate(cell, idx, currentSheet); });\n return {\n name: \"row\",\n properties: {\n rawMap: {\n r: index,\n collapsed: collapsed,\n hidden: hidden ? '1' : '0',\n ht: height,\n customHeight: height != null ? '1' : '0',\n s: s,\n customFormat: s != null ? '1' : '0'\n }\n },\n children: children\n };\n }\n};\nexport default rowFactory;\n","var mergeCellFactory = {\n getTemplate: function (ref) {\n return {\n name: 'mergeCell',\n properties: {\n rawMap: {\n ref: ref\n }\n }\n };\n }\n};\nexport default mergeCellFactory;\n","import { _ } from '@ag-grid-community/core';\nimport columnFactory from './column';\nimport rowFactory from './row';\nimport mergeCellFactory from './mergeCell';\nimport { ExcelXlsxFactory } from '../../excelXlsxFactory';\nimport { getExcelColumnName } from '../../assets/excelUtils';\nvar getMergedCellsAndAddColumnGroups = function (rows, cols) {\n var mergedCells = [];\n var cellsWithCollapsibleGroups = [];\n rows.forEach(function (currentRow, rowIdx) {\n var cells = currentRow.cells;\n var merges = 0;\n currentRow.index = rowIdx + 1;\n var lastCol;\n cells.forEach(function (currentCell, cellIdx) {\n var min = cellIdx + merges + 1;\n var start = getExcelColumnName(min);\n var outputRow = rowIdx + 1;\n if (currentCell.mergeAcross) {\n merges += currentCell.mergeAcross;\n var end = getExcelColumnName(cellIdx + merges + 1);\n mergedCells.push(\"\" + start + outputRow + \":\" + end + outputRow);\n }\n if (!cols[min - 1]) {\n cols[min - 1] = {};\n }\n var collapsibleRanges = currentCell.collapsibleRanges;\n if (collapsibleRanges) {\n collapsibleRanges.forEach(function (range) {\n cellsWithCollapsibleGroups.push([min + range[0], min + range[1]]);\n });\n }\n lastCol = cols[min - 1];\n lastCol.min = min;\n lastCol.max = min;\n currentCell.ref = \"\" + start + outputRow;\n });\n });\n cellsWithCollapsibleGroups.sort(function (a, b) {\n if (a[0] !== b[0]) {\n return a[0] - b[0];\n }\n return b[1] - a[1];\n });\n var rangeMap = new Map();\n var outlineLevel = new Map();\n cellsWithCollapsibleGroups.filter(function (currentRange) {\n var rangeString = currentRange.toString();\n var inMap = rangeMap.get(rangeString);\n if (inMap) {\n return false;\n }\n rangeMap.set(rangeString, true);\n return true;\n }).forEach(function (range) {\n var refCol = cols.find(function (col) { return col.min == range[0] && col.max == range[1]; });\n var currentOutlineLevel = outlineLevel.get(range[0]);\n cols.push({\n min: range[0],\n max: range[1],\n outlineLevel: currentOutlineLevel || 1,\n width: (refCol || { width: 100 }).width\n });\n outlineLevel.set(range[0], (currentOutlineLevel || 0) + 1);\n });\n return mergedCells;\n};\nvar getPageOrientation = function (orientation) {\n if (!orientation || (orientation !== 'Portrait' && orientation !== 'Landscape')) {\n return 'portrait';\n }\n return orientation.toLocaleLowerCase();\n};\nvar getPageSize = function (pageSize) {\n if (pageSize == null) {\n return 1;\n }\n var positions = ['Letter', 'Letter Small', 'Tabloid', 'Ledger', 'Legal', 'Statement', 'Executive', 'A3', 'A4', 'A4 Small', 'A5', 'A6', 'B4', 'B5', 'Folio', 'Envelope', 'Envelope DL', 'Envelope C5', 'Envelope B5', 'Envelope C3', 'Envelope C4', 'Envelope C6', 'Envelope Monarch', 'Japanese Postcard', 'Japanese Double Postcard'];\n var pos = positions.indexOf(pageSize);\n return pos === -1 ? 1 : (pos + 1);\n};\nvar addColumns = function (columns) {\n return function (children) {\n if (columns.length) {\n children.push({\n name: 'cols',\n children: columns.map(function (column) { return columnFactory.getTemplate(column); })\n });\n }\n return children;\n };\n};\nvar addSheetData = function (rows, sheetNumber) {\n return function (children) {\n if (rows.length) {\n children.push({\n name: 'sheetData',\n children: rows.map(function (row, idx) { return rowFactory.getTemplate(row, idx, sheetNumber); })\n });\n }\n return children;\n };\n};\nvar addMergeCells = function (mergeCells) {\n return function (children) {\n if (mergeCells.length) {\n children.push({\n name: 'mergeCells',\n properties: {\n rawMap: {\n count: mergeCells.length\n }\n },\n children: mergeCells.map(function (mergedCell) { return mergeCellFactory.getTemplate(mergedCell); })\n });\n }\n return children;\n };\n};\nvar addPageMargins = function (margins) {\n return function (children) {\n var _a = margins.top, top = _a === void 0 ? 0.75 : _a, _b = margins.right, right = _b === void 0 ? 0.7 : _b, _c = margins.bottom, bottom = _c === void 0 ? 0.75 : _c, _d = margins.left, left = _d === void 0 ? 0.7 : _d, _e = margins.header, header = _e === void 0 ? 0.3 : _e, _f = margins.footer, footer = _f === void 0 ? 0.3 : _f;\n children.push({\n name: 'pageMargins',\n properties: {\n rawMap: { bottom: bottom, footer: footer, header: header, left: left, right: right, top: top }\n }\n });\n return children;\n };\n};\nvar addPageSetup = function (pageSetup) {\n return function (children) {\n if (pageSetup) {\n children.push({\n name: 'pageSetup',\n properties: {\n rawMap: {\n horizontalDpi: 0,\n verticalDpi: 0,\n orientation: getPageOrientation(pageSetup.orientation),\n paperSize: getPageSize(pageSetup.pageSize)\n }\n }\n });\n }\n return children;\n };\n};\nvar replaceHeaderFooterTokens = function (value) {\n var map = {\n '&[Page]': '&P',\n '&[Pages]': '&N',\n '&[Date]': '&D',\n '&[Time]': '&T',\n '&[Tab]': '&A',\n '&[Path]': '&Z',\n '&[File]': '&F'\n };\n _.iterateObject(map, function (key, val) {\n value = value.replace(key, val);\n });\n return value;\n};\nvar getHeaderPosition = function (position) {\n if (position === 'Center') {\n return 'C';\n }\n if (position === 'Right') {\n return 'R';\n }\n return 'L';\n};\nvar applyHeaderFontStyle = function (headerString, font) {\n if (!font) {\n return headerString;\n }\n headerString += '&"';\n headerString += font.fontName || 'Calibri';\n if (font.bold !== font.italic) {\n headerString += font.bold ? ',Bold' : ',Italic';\n }\n else if (font.bold) {\n headerString += ',Bold Italic';\n }\n else {\n headerString += ',Regular';\n }\n headerString += '"';\n if (font.size) {\n headerString += \"&\" + font.size;\n }\n if (font.strikeThrough) {\n headerString += '&S';\n }\n if (font.underline) {\n headerString += \"&\" + (font.underline === 'Double' ? 'E' : 'U');\n }\n if (font.color) {\n headerString += \"&K\" + font.color.replace('#', '').toUpperCase();\n }\n return headerString;\n};\nvar processHeaderFooterContent = function (content) {\n return content.reduce(function (prev, curr) {\n var pos = getHeaderPosition(curr.position);\n var output = applyHeaderFontStyle(prev + \"&\" + pos, curr.font);\n return \"\" + output + _.escapeString(replaceHeaderFooterTokens(curr.value));\n }, '');\n};\nvar buildHeaderFooter = function (headerFooterConfig) {\n var rules = ['all', 'first', 'even'];\n var headersAndFooters = [];\n rules.forEach(function (rule) {\n var headerFooter = headerFooterConfig[rule];\n var namePrefix = rule === 'all' ? 'odd' : rule;\n if (!headerFooter || (!headerFooter.header && !headerFooter.footer)) {\n return;\n }\n _.iterateObject(headerFooter, function (key, value) {\n var nameSuffix = \"\" + key.charAt(0).toUpperCase() + key.slice(1);\n if (value) {\n headersAndFooters.push({\n name: \"\" + namePrefix + nameSuffix,\n properties: {\n rawMap: {\n 'xml:space': 'preserve'\n }\n },\n textNode: processHeaderFooterContent(value)\n });\n }\n });\n });\n return headersAndFooters;\n};\nvar addHeaderFooter = function (headerFooterConfig) {\n return function (children) {\n if (!headerFooterConfig) {\n return children;\n }\n var differentFirst = headerFooterConfig.first != null ? 1 : 0;\n var differentOddEven = headerFooterConfig.even != null ? 1 : 0;\n children.push({\n name: 'headerFooter',\n properties: {\n rawMap: {\n differentFirst: differentFirst,\n differentOddEven: differentOddEven\n }\n },\n children: buildHeaderFooter(headerFooterConfig)\n });\n return children;\n };\n};\nvar addDrawingRel = function (currentSheet) {\n return function (children) {\n if (ExcelXlsxFactory.worksheetImages.get(currentSheet)) {\n children.push({\n name: 'drawing',\n properties: {\n rawMap: {\n 'r:id': 'rId1'\n }\n }\n });\n }\n return children;\n };\n};\nvar worksheetFactory = {\n getTemplate: function (params) {\n var worksheet = params.worksheet, currentSheet = params.currentSheet, _a = params.margins, margins = _a === void 0 ? {} : _a, pageSetup = params.pageSetup, headerFooterConfig = params.headerFooterConfig;\n var table = worksheet.table;\n var rows = table.rows, columns = table.columns;\n var mergedCells = (columns && columns.length) ? getMergedCellsAndAddColumnGroups(rows, columns) : [];\n var createWorksheetChildren = _.compose(addColumns(columns), addSheetData(rows, currentSheet + 1), addMergeCells(mergedCells), addPageMargins(margins), addPageSetup(pageSetup), addHeaderFooter(headerFooterConfig), addDrawingRel(currentSheet));\n var children = createWorksheetChildren([]);\n return {\n name: \"worksheet\",\n properties: {\n prefixedAttributes: [{\n prefix: \"xmlns:\",\n map: {\n r: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships\"\n }\n }],\n rawMap: {\n xmlns: \"http://schemas.openxmlformats.org/spreadsheetml/2006/main\"\n }\n },\n children: children\n };\n }\n};\nexport default worksheetFactory;\n","var relationshipFactory = {\n getTemplate: function (config) {\n var Id = config.Id, Type = config.Type, Target = config.Target;\n return {\n name: \"Relationship\",\n properties: {\n rawMap: {\n Id: Id,\n Type: Type,\n Target: Target\n }\n }\n };\n }\n};\nexport default relationshipFactory;\n","import relationshipFactory from './relationship';\nvar relationshipsFactory = {\n getTemplate: function (c) {\n var children = c.map(function (relationship) { return relationshipFactory.getTemplate(relationship); });\n return {\n name: \"Relationships\",\n properties: {\n rawMap: {\n xmlns: \"http://schemas.openxmlformats.org/package/2006/relationships\"\n }\n },\n children: children\n };\n }\n};\nexport default relationshipsFactory;\n","var __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nimport { ExcelFactoryMode } from '@ag-grid-community/core';\nimport coreFactory from './files/ooxml/core';\nimport contentTypesFactory from './files/ooxml/contentTypes';\nimport drawingFactory from './files/ooxml/drawing';\nimport officeThemeFactory from './files/ooxml/themes/office';\nimport sharedStringsFactory from './files/ooxml/sharedStrings';\nimport stylesheetFactory, { registerStyles } from './files/ooxml/styles/stylesheet';\nimport workbookFactory from './files/ooxml/workbook';\nimport worksheetFactory from './files/ooxml/worksheet';\nimport relationshipsFactory from './files/ooxml/relationships';\nimport { setExcelImageTotalHeight, setExcelImageTotalWidth, createXmlPart } from './assets/excelUtils';\n/**\n * See https://www.ecma-international.org/news/TC45_current_work/OpenXML%20White%20Paper.pdf\n */\nvar ExcelXlsxFactory = /** @class */ (function () {\n function ExcelXlsxFactory() {\n }\n ExcelXlsxFactory.createExcel = function (styles, worksheet, margins, pageSetup, headerFooterConfig) {\n this.addSheetName(worksheet);\n registerStyles(styles, this.sheetNames.length);\n return this.createWorksheet(worksheet, margins, pageSetup, headerFooterConfig);\n };\n ExcelXlsxFactory.buildImageMap = function (image, rowIndex, col, columnsToExport, rowHeight) {\n var currentSheetIndex = this.sheetNames.length;\n var registeredImage = this.images.get(image.id);\n if (!image.position || !image.position.row || !image.position.column) {\n if (!image.position) {\n image.position = {};\n }\n image.position = Object.assign({}, image.position, {\n row: rowIndex,\n column: columnsToExport.indexOf(col) + 1\n });\n }\n var calculatedImage = image;\n setExcelImageTotalWidth(calculatedImage, columnsToExport);\n setExcelImageTotalHeight(calculatedImage, rowHeight);\n if (registeredImage) {\n var currentSheetImages = registeredImage.find(function (currentImage) { return currentImage.sheetId === currentSheetIndex; });\n if (currentSheetImages) {\n currentSheetImages.image.push(calculatedImage);\n }\n else {\n registeredImage.push({\n sheetId: currentSheetIndex,\n image: [calculatedImage]\n });\n }\n }\n else {\n this.images.set(calculatedImage.id, [{ sheetId: currentSheetIndex, image: [calculatedImage] }]);\n this.workbookImageIds.set(calculatedImage.id, { type: calculatedImage.imageType, index: this.workbookImageIds.size });\n }\n this.buildSheetImageMap(currentSheetIndex, calculatedImage);\n };\n ExcelXlsxFactory.buildSheetImageMap = function (sheetIndex, image) {\n var worksheetImageIdMap = this.worksheetImageIds.get(sheetIndex);\n if (!worksheetImageIdMap) {\n worksheetImageIdMap = new Map();\n this.worksheetImageIds.set(sheetIndex, worksheetImageIdMap);\n }\n var sheetImages = this.worksheetImages.get(sheetIndex);\n if (!sheetImages) {\n this.worksheetImages.set(sheetIndex, [image]);\n worksheetImageIdMap.set(image.id, { index: 0, type: image.imageType });\n }\n else {\n sheetImages.push(image);\n if (!worksheetImageIdMap.get(image.id)) {\n worksheetImageIdMap.set(image.id, { index: worksheetImageIdMap.size, type: image.imageType });\n }\n }\n };\n ExcelXlsxFactory.addSheetName = function (worksheet) {\n var name = worksheet.name;\n var append = '';\n while (this.sheetNames.indexOf(name + append) !== -1) {\n if (append === '') {\n append = '_1';\n }\n else {\n var curr = parseInt(append.slice(1), 10);\n append = \"_\" + (curr + 1);\n }\n }\n worksheet.name += append;\n this.sheetNames.push(worksheet.name);\n };\n ExcelXlsxFactory.getStringPosition = function (str) {\n if (this.sharedStrings.has(str)) {\n return this.sharedStrings.get(str);\n }\n this.sharedStrings.set(str, this.sharedStrings.size);\n return this.sharedStrings.size - 1;\n };\n ExcelXlsxFactory.resetFactory = function () {\n this.sharedStrings = new Map();\n this.images = new Map();\n this.worksheetImages = new Map();\n this.workbookImageIds = new Map();\n this.worksheetImageIds = new Map();\n this.sheetNames = [];\n this.factoryMode = ExcelFactoryMode.SINGLE_SHEET;\n };\n ExcelXlsxFactory.createWorkbook = function () {\n return createXmlPart(workbookFactory.getTemplate(this.sheetNames));\n };\n ExcelXlsxFactory.createStylesheet = function (defaultFontSize) {\n return createXmlPart(stylesheetFactory.getTemplate(defaultFontSize));\n };\n ExcelXlsxFactory.createSharedStrings = function () {\n return createXmlPart(sharedStringsFactory.getTemplate(this.sharedStrings));\n };\n ExcelXlsxFactory.createCore = function (author) {\n return createXmlPart(coreFactory.getTemplate(author));\n };\n ExcelXlsxFactory.createContentTypes = function (sheetLen) {\n return createXmlPart(contentTypesFactory.getTemplate(sheetLen));\n };\n ExcelXlsxFactory.createRels = function () {\n var rs = relationshipsFactory.getTemplate([{\n Id: 'rId1',\n Type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument',\n Target: 'xl/workbook.xml'\n }, {\n Id: 'rId2',\n Type: 'http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties',\n Target: 'docProps/core.xml'\n }]);\n return createXmlPart(rs);\n };\n ExcelXlsxFactory.createTheme = function () {\n return createXmlPart(officeThemeFactory.getTemplate());\n };\n ExcelXlsxFactory.createWorkbookRels = function (sheetLen) {\n var worksheets = new Array(sheetLen).fill(undefined).map(function (v, i) { return ({\n Id: \"rId\" + (i + 1),\n Type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet',\n Target: \"worksheets/sheet\" + (i + 1) + \".xml\"\n }); });\n var rs = relationshipsFactory.getTemplate(__spread(worksheets, [\n {\n Id: \"rId\" + (sheetLen + 1),\n Type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme',\n Target: 'theme/theme1.xml'\n }, {\n Id: \"rId\" + (sheetLen + 2),\n Type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles',\n Target: 'styles.xml'\n }, {\n Id: \"rId\" + (sheetLen + 3),\n Type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings',\n Target: 'sharedStrings.xml'\n }\n ]));\n return createXmlPart(rs);\n };\n ExcelXlsxFactory.createDrawing = function (sheetIndex) {\n return createXmlPart(drawingFactory.getTemplate({ sheetIndex: sheetIndex }));\n };\n ExcelXlsxFactory.createDrawingRel = function (sheetIndex) {\n var _this = this;\n var worksheetImageIds = this.worksheetImageIds.get(sheetIndex);\n var XMLArr = [];\n worksheetImageIds.forEach(function (value, key) {\n XMLArr.push({\n Id: \"rId\" + (value.index + 1),\n Type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image',\n Target: \"../media/image\" + (_this.workbookImageIds.get(key).index + 1) + \".\" + value.type\n });\n });\n return createXmlPart(relationshipsFactory.getTemplate(XMLArr));\n };\n ExcelXlsxFactory.createWorksheetDrawingRel = function (currentRelationIndex) {\n var rs = relationshipsFactory.getTemplate([{\n Id: 'rId1',\n Type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing',\n Target: \"../drawings/drawing\" + (currentRelationIndex + 1) + \".xml\"\n }]);\n return createXmlPart(rs);\n };\n ExcelXlsxFactory.createWorksheet = function (worksheet, margins, pageSetup, headerFooterConfig) {\n return createXmlPart(worksheetFactory.getTemplate({\n worksheet: worksheet,\n currentSheet: this.sheetNames.length - 1,\n margins: margins,\n pageSetup: pageSetup,\n headerFooterConfig: headerFooterConfig\n }));\n };\n ExcelXlsxFactory.sharedStrings = new Map();\n ExcelXlsxFactory.sheetNames = [];\n /** Maps images to sheet */\n ExcelXlsxFactory.images = new Map();\n /** Maps sheets to images */\n ExcelXlsxFactory.worksheetImages = new Map();\n /** Maps all workbook images to a global Id */\n ExcelXlsxFactory.workbookImageIds = new Map();\n /** Maps all sheet images to unique Ids */\n ExcelXlsxFactory.worksheetImageIds = new Map();\n ExcelXlsxFactory.factoryMode = ExcelFactoryMode.SINGLE_SHEET;\n return ExcelXlsxFactory;\n}());\nexport { ExcelXlsxFactory };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { _ } from '@ag-grid-community/core';\nimport { ExcelXlsxFactory } from './excelXlsxFactory';\nimport { BaseExcelSerializingSession } from './baseExcelSerializingSession';\nvar ExcelXlsxSerializingSession = /** @class */ (function (_super) {\n __extends(ExcelXlsxSerializingSession, _super);\n function ExcelXlsxSerializingSession() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ExcelXlsxSerializingSession.prototype.createExcel = function (data) {\n var _a = this, excelStyles = _a.excelStyles, config = _a.config;\n var margins = config.margins, pageSetup = config.pageSetup, headerFooterConfig = config.headerFooterConfig;\n return ExcelXlsxFactory.createExcel(excelStyles, data, margins, pageSetup, headerFooterConfig);\n };\n ExcelXlsxSerializingSession.prototype.getDataTypeForValue = function (valueForCell) {\n if (valueForCell === undefined) {\n return 'empty';\n }\n return _.isNumeric(valueForCell) ? 'n' : 's';\n };\n ExcelXlsxSerializingSession.prototype.getType = function (type, style, value) {\n if (this.isFormula(value)) {\n return 'f';\n }\n if (style && style.dataType) {\n switch (style.dataType.toLocaleLowerCase()) {\n case 'formula':\n return 'f';\n case 'string':\n return 's';\n case 'number':\n return 'n';\n case 'datetime':\n return 'd';\n case 'error':\n return 'e';\n case 'boolean':\n return 'b';\n default:\n console.warn(\"AG Grid: Unrecognized data type for excel export [\" + style.id + \".dataType=\" + style.dataType + \"]\");\n }\n }\n return type;\n };\n ExcelXlsxSerializingSession.prototype.addImage = function (rowIndex, column, value) {\n if (!this.config.addImageToCell) {\n return;\n }\n var addedImage = this.config.addImageToCell(rowIndex, column, value);\n if (!addedImage) {\n return;\n }\n ExcelXlsxFactory.buildImageMap(addedImage.image, rowIndex, column, this.columnsToExport, this.config.rowHeight);\n return addedImage;\n };\n ExcelXlsxSerializingSession.prototype.createCell = function (styleId, type, value) {\n var actualStyle = this.getStyleById(styleId);\n var typeTransformed = this.getType(type, actualStyle, value) || type;\n return {\n styleId: actualStyle ? styleId : undefined,\n data: {\n type: typeTransformed,\n value: this.getCellValue(typeTransformed, value)\n }\n };\n };\n ExcelXlsxSerializingSession.prototype.createMergedCell = function (styleId, type, value, numOfCells) {\n var valueToUse = value == null ? '' : value;\n return {\n styleId: !!this.getStyleById(styleId) ? styleId : undefined,\n data: {\n type: type,\n value: type === 's' ? ExcelXlsxFactory.getStringPosition(valueToUse).toString() : value\n },\n mergeAcross: numOfCells\n };\n };\n ExcelXlsxSerializingSession.prototype.getCellValue = function (type, value) {\n if (value == null) {\n return ExcelXlsxFactory.getStringPosition('').toString();\n }\n switch (type) {\n case 's':\n return value === '' ? '' : ExcelXlsxFactory.getStringPosition(value).toString();\n case 'f':\n return value.slice(1);\n case 'n':\n return Number(value).toString();\n default:\n return value;\n }\n };\n return ExcelXlsxSerializingSession;\n}(BaseExcelSerializingSession));\nexport { ExcelXlsxSerializingSession };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __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};\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { _, Autowired, Bean, PostConstruct, } from '@ag-grid-community/core';\nimport { ExcelXmlSerializingSession } from './excelXmlSerializingSession';\nimport { ExcelXlsxSerializingSession } from './excelXlsxSerializingSession';\nimport { ExcelXlsxFactory } from './excelXlsxFactory';\nimport { BaseCreator, Downloader, RowType, ZipContainer } from \"@ag-grid-community/csv-export\";\nimport { ExcelXmlFactory } from './excelXmlFactory';\nexport var getMultipleSheetsAsExcel = function (params) {\n var data = params.data, _a = params.fontSize, fontSize = _a === void 0 ? 11 : _a, _b = params.author, author = _b === void 0 ? 'AG Grid' : _b;\n var hasImages = ExcelXlsxFactory.images.size > 0;\n ZipContainer.addFolders([\n '_rels/',\n 'docProps/',\n 'xl/',\n 'xl/theme/',\n 'xl/_rels/',\n 'xl/worksheets/'\n ]);\n if (hasImages) {\n ZipContainer.addFolders([\n 'xl/worksheets/_rels',\n 'xl/drawings/',\n 'xl/drawings/_rels',\n 'xl/media/',\n ]);\n var imgCounter_1 = 0;\n ExcelXlsxFactory.images.forEach(function (value) {\n var firstImage = value[0].image[0];\n var ext = firstImage.imageType;\n ZipContainer.addFile(\"xl/media/image\" + ++imgCounter_1 + \".\" + ext, firstImage.base64, true);\n });\n }\n if (!data || data.length === 0) {\n console.warn(\"AG Grid: Invalid params supplied to getMultipleSheetsAsExcel() - `ExcelExportParams.data` is empty.\");\n ExcelXlsxFactory.resetFactory();\n return;\n }\n var sheetLen = data.length;\n var imageRelationCounter = 0;\n data.forEach(function (value, idx) {\n ZipContainer.addFile(\"xl/worksheets/sheet\" + (idx + 1) + \".xml\", value);\n if (hasImages && ExcelXlsxFactory.worksheetImages.get(idx)) {\n createImageRelationsForSheet(idx, imageRelationCounter++);\n }\n });\n ZipContainer.addFile('xl/workbook.xml', ExcelXlsxFactory.createWorkbook());\n ZipContainer.addFile('xl/styles.xml', ExcelXlsxFactory.createStylesheet(fontSize));\n ZipContainer.addFile('xl/sharedStrings.xml', ExcelXlsxFactory.createSharedStrings());\n ZipContainer.addFile('xl/theme/theme1.xml', ExcelXlsxFactory.createTheme());\n ZipContainer.addFile('xl/_rels/workbook.xml.rels', ExcelXlsxFactory.createWorkbookRels(sheetLen));\n ZipContainer.addFile('docProps/core.xml', ExcelXlsxFactory.createCore(author));\n ZipContainer.addFile('[Content_Types].xml', ExcelXlsxFactory.createContentTypes(sheetLen));\n ZipContainer.addFile('_rels/.rels', ExcelXlsxFactory.createRels());\n ExcelXlsxFactory.resetFactory();\n var mimeType = params.mimeType || 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';\n return ZipContainer.getContent(mimeType);\n};\nexport var exportMultipleSheetsAsExcel = function (params) {\n var _a = params.fileName, fileName = _a === void 0 ? 'export.xlsx' : _a;\n var contents = getMultipleSheetsAsExcel(params);\n if (contents) {\n Downloader.download(fileName, contents);\n }\n};\nvar createImageRelationsForSheet = function (sheetIndex, currentRelationIndex) {\n var drawingFolder = 'xl/drawings';\n var drawingFileName = drawingFolder + \"/drawing\" + (currentRelationIndex + 1) + \".xml\";\n var relFileName = drawingFolder + \"/_rels/drawing\" + (currentRelationIndex + 1) + \".xml.rels\";\n var worksheetRelFile = \"xl/worksheets/_rels/sheet\" + (sheetIndex + 1) + \".xml.rels\";\n ZipContainer.addFile(relFileName, ExcelXlsxFactory.createDrawingRel(sheetIndex));\n ZipContainer.addFile(drawingFileName, ExcelXlsxFactory.createDrawing(sheetIndex));\n ZipContainer.addFile(worksheetRelFile, ExcelXlsxFactory.createWorksheetDrawingRel(currentRelationIndex));\n};\nvar ExcelCreator = /** @class */ (function (_super) {\n __extends(ExcelCreator, _super);\n function ExcelCreator() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.exportMode = 'xlsx';\n return _this;\n }\n ExcelCreator.prototype.postConstruct = function () {\n this.setBeans({\n gridSerializer: this.gridSerializer,\n gridOptionsWrapper: this.gridOptionsWrapper\n });\n };\n ExcelCreator.prototype.getMergedParams = function (params) {\n var baseParams = this.gridOptionsWrapper.getDefaultExportParams('excel');\n return Object.assign({}, baseParams, params);\n };\n ExcelCreator.prototype.getData = function (params) {\n this.setExportMode(params.exportMode || 'xlsx');\n return _super.prototype.getData.call(this, params);\n };\n ExcelCreator.prototype.export = function (userParams) {\n if (this.isExportSuppressed()) {\n console.warn(\"AG Grid: Export cancelled. Export is not allowed as per your configuration.\");\n return '';\n }\n var mergedParams = this.getMergedParams(userParams);\n var data = this.getData(mergedParams);\n var exportParams = {\n data: [data],\n fontSize: mergedParams.fontSize,\n author: mergedParams.author,\n mimeType: mergedParams.mimeType\n };\n var packageFile = this.packageFile(exportParams);\n if (packageFile) {\n Downloader.download(this.getFileName(mergedParams.fileName), packageFile);\n }\n return data;\n };\n ExcelCreator.prototype.exportDataAsExcel = function (params) {\n return this.export(params);\n };\n ExcelCreator.prototype.getDataAsExcel = function (params) {\n var mergedParams = this.getMergedParams(params);\n var data = this.getData(mergedParams);\n if (params && params.exportMode === 'xml') {\n return data;\n }\n var exportParams = {\n data: [data],\n fontSize: mergedParams.fontSize,\n author: mergedParams.author,\n mimeType: mergedParams.mimeType\n };\n return this.packageFile(exportParams);\n };\n ExcelCreator.prototype.setFactoryMode = function (factoryMode, exportMode) {\n if (exportMode === void 0) { exportMode = 'xlsx'; }\n var factory = exportMode === 'xlsx' ? ExcelXlsxFactory : ExcelXmlFactory;\n factory.factoryMode = factoryMode;\n };\n ExcelCreator.prototype.getFactoryMode = function (exportMode) {\n var factory = exportMode === 'xlsx' ? ExcelXlsxFactory : ExcelXmlFactory;\n return factory.factoryMode;\n };\n ExcelCreator.prototype.getSheetDataForExcel = function (params) {\n var mergedParams = this.getMergedParams(params);\n var data = this.getData(mergedParams);\n return data;\n };\n ExcelCreator.prototype.getMultipleSheetsAsExcel = function (params) {\n return getMultipleSheetsAsExcel(params);\n };\n ExcelCreator.prototype.exportMultipleSheetsAsExcel = function (params) {\n return exportMultipleSheetsAsExcel(params);\n };\n ExcelCreator.prototype.getDefaultFileName = function () {\n return \"export.\" + this.getExportMode();\n };\n ExcelCreator.prototype.getDefaultFileExtension = function () {\n return this.getExportMode();\n };\n ExcelCreator.prototype.createSerializingSession = function (params) {\n var _a = this, columnModel = _a.columnModel, valueService = _a.valueService, gridOptionsWrapper = _a.gridOptionsWrapper;\n var isXlsx = this.getExportMode() === 'xlsx';\n var sheetName = 'ag-grid';\n if (params.sheetName != null) {\n sheetName = _.utf8_encode(params.sheetName.toString().substr(0, 31));\n }\n var config = __assign(__assign({}, params), { sheetName: sheetName,\n columnModel: columnModel,\n valueService: valueService,\n gridOptionsWrapper: gridOptionsWrapper, headerRowHeight: params.headerRowHeight || params.rowHeight, baseExcelStyles: this.gridOptions.excelStyles || [], styleLinker: this.styleLinker.bind(this) });\n return new (isXlsx ? ExcelXlsxSerializingSession : ExcelXmlSerializingSession)(config);\n };\n ExcelCreator.prototype.styleLinker = function (rowType, rowIndex, value, column, node) {\n if (rowType === RowType.HEADER) {\n return [\"header\"];\n }\n if (rowType === RowType.HEADER_GROUPING) {\n return [\"header\", \"headerGroup\"];\n }\n var styles = this.gridOptions.excelStyles;\n var applicableStyles = [\"cell\"];\n if (!styles || !styles.length) {\n return applicableStyles;\n }\n var styleIds = styles.map(function (it) {\n return it.id;\n });\n this.stylingService.processAllCellClasses(column.getColDef(), {\n value: value,\n data: node.data,\n node: node,\n colDef: column.getColDef(),\n rowIndex: rowIndex,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n $scope: null,\n context: this.gridOptionsWrapper.getContext()\n }, function (className) {\n if (styleIds.indexOf(className) > -1) {\n applicableStyles.push(className);\n }\n });\n return applicableStyles.sort(function (left, right) {\n return (styleIds.indexOf(left) < styleIds.indexOf(right)) ? -1 : 1;\n });\n };\n ExcelCreator.prototype.isExportSuppressed = function () {\n return this.gridOptionsWrapper.isSuppressExcelExport();\n };\n ExcelCreator.prototype.setExportMode = function (exportMode) {\n this.exportMode = exportMode;\n };\n ExcelCreator.prototype.getExportMode = function () {\n return this.exportMode;\n };\n ExcelCreator.prototype.packageFile = function (params) {\n if (this.getExportMode() === 'xml') {\n var mimeType = params.mimeType || 'application/vnd.ms-excel';\n return new Blob([\"\\ufeff\", params.data[0]], { type: mimeType });\n }\n return getMultipleSheetsAsExcel(params);\n };\n __decorate([\n Autowired('columnModel')\n ], ExcelCreator.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('valueService')\n ], ExcelCreator.prototype, \"valueService\", void 0);\n __decorate([\n Autowired('gridOptions')\n ], ExcelCreator.prototype, \"gridOptions\", void 0);\n __decorate([\n Autowired('stylingService')\n ], ExcelCreator.prototype, \"stylingService\", void 0);\n __decorate([\n Autowired('gridSerializer')\n ], ExcelCreator.prototype, \"gridSerializer\", void 0);\n __decorate([\n Autowired('gridOptionsWrapper')\n ], ExcelCreator.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n PostConstruct\n ], ExcelCreator.prototype, \"postConstruct\", null);\n ExcelCreator = __decorate([\n Bean('excelCreator')\n ], ExcelCreator);\n return ExcelCreator;\n}(BaseCreator));\nexport { ExcelCreator };\n","import { ModuleNames } from \"@ag-grid-community/core\";\nimport { EnterpriseCoreModule } from \"@ag-grid-enterprise/core\";\nimport { ExcelCreator } from \"./excelExport/excelCreator\";\nimport { CsvCreator, GridSerializer } from \"@ag-grid-community/csv-export\";\nimport { CsvExportModule } from \"@ag-grid-community/csv-export\";\nexport var ExcelExportModule = {\n moduleName: ModuleNames.ExcelExportModule,\n beans: [\n // beans in this module\n ExcelCreator,\n // these beans are part of CSV Export module\n GridSerializer, CsvCreator\n ],\n dependantModules: [\n CsvExportModule,\n EnterpriseCoreModule\n ]\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { _, Autowired, Component, Events, PostConstruct, PreConstruct, RefSelector } from \"@ag-grid-community/core\";\nexport var EXPAND_STATE;\n(function (EXPAND_STATE) {\n EXPAND_STATE[EXPAND_STATE[\"EXPANDED\"] = 0] = \"EXPANDED\";\n EXPAND_STATE[EXPAND_STATE[\"COLLAPSED\"] = 1] = \"COLLAPSED\";\n EXPAND_STATE[EXPAND_STATE[\"INDETERMINATE\"] = 2] = \"INDETERMINATE\";\n})(EXPAND_STATE || (EXPAND_STATE = {}));\nvar FiltersToolPanelHeaderPanel = /** @class */ (function (_super) {\n __extends(FiltersToolPanelHeaderPanel, _super);\n function FiltersToolPanelHeaderPanel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FiltersToolPanelHeaderPanel.prototype.preConstruct = function () {\n this.setTemplate(/* html */ \"
    \\n
    \\n \\n
    \");\n };\n FiltersToolPanelHeaderPanel.prototype.postConstruct = function () {\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n this.eFilterTextField.onValueChange(this.onSearchTextChanged.bind(this));\n this.eFilterTextField.setInputAriaLabel(translate('ariaFilterColumnsInput', 'Filter Columns Input'));\n this.createExpandIcons();\n this.setExpandState(EXPAND_STATE.EXPANDED);\n this.addManagedListener(this.eExpand, 'click', this.onExpandClicked.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.showOrHideOptions.bind(this));\n };\n FiltersToolPanelHeaderPanel.prototype.init = function (params) {\n this.params = params;\n if (this.columnModel.isReady()) {\n this.showOrHideOptions();\n }\n };\n FiltersToolPanelHeaderPanel.prototype.createExpandIcons = function () {\n this.eExpand.appendChild(this.eExpandChecked = _.createIconNoSpan('columnSelectOpen', this.gridOptionsWrapper));\n this.eExpand.appendChild(this.eExpandUnchecked = _.createIconNoSpan('columnSelectClosed', this.gridOptionsWrapper));\n this.eExpand.appendChild(this.eExpandIndeterminate = _.createIconNoSpan('columnSelectIndeterminate', this.gridOptionsWrapper));\n };\n // we only show expand / collapse if we are showing filters\n FiltersToolPanelHeaderPanel.prototype.showOrHideOptions = function () {\n var showFilterSearch = !this.params.suppressFilterSearch;\n var showExpand = !this.params.suppressExpandAll;\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n this.eFilterTextField.setInputPlaceholder(translate('searchOoo', 'Search...'));\n var isFilterGroupPresent = function (col) { return col.getOriginalParent() && col.isFilterAllowed(); };\n var filterGroupsPresent = this.columnModel.getAllGridColumns().some(isFilterGroupPresent);\n _.setDisplayed(this.eFilterTextField.getGui(), showFilterSearch);\n _.setDisplayed(this.eExpand, showExpand && filterGroupsPresent);\n };\n FiltersToolPanelHeaderPanel.prototype.onSearchTextChanged = function () {\n var _this = this;\n if (!this.onSearchTextChangedDebounced) {\n this.onSearchTextChangedDebounced = _.debounce(function () {\n _this.dispatchEvent({ type: 'searchChanged', searchText: _this.eFilterTextField.getValue() });\n }, 300);\n }\n this.onSearchTextChangedDebounced();\n };\n FiltersToolPanelHeaderPanel.prototype.onExpandClicked = function () {\n var event = this.currentExpandState === EXPAND_STATE.EXPANDED ? { type: 'collapseAll' } : { type: 'expandAll' };\n this.dispatchEvent(event);\n };\n FiltersToolPanelHeaderPanel.prototype.setExpandState = function (state) {\n this.currentExpandState = state;\n _.setDisplayed(this.eExpandChecked, this.currentExpandState === EXPAND_STATE.EXPANDED);\n _.setDisplayed(this.eExpandUnchecked, this.currentExpandState === EXPAND_STATE.COLLAPSED);\n _.setDisplayed(this.eExpandIndeterminate, this.currentExpandState === EXPAND_STATE.INDETERMINATE);\n };\n __decorate([\n Autowired('columnModel')\n ], FiltersToolPanelHeaderPanel.prototype, \"columnModel\", void 0);\n __decorate([\n RefSelector('eExpand')\n ], FiltersToolPanelHeaderPanel.prototype, \"eExpand\", void 0);\n __decorate([\n RefSelector('eFilterTextField')\n ], FiltersToolPanelHeaderPanel.prototype, \"eFilterTextField\", void 0);\n __decorate([\n PreConstruct\n ], FiltersToolPanelHeaderPanel.prototype, \"preConstruct\", null);\n __decorate([\n PostConstruct\n ], FiltersToolPanelHeaderPanel.prototype, \"postConstruct\", null);\n return FiltersToolPanelHeaderPanel;\n}(Component));\nexport { FiltersToolPanelHeaderPanel };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { _, Autowired, Column, Component, Events, KeyCode, PostConstruct, RefSelector } from \"@ag-grid-community/core\";\nvar ToolPanelFilterComp = /** @class */ (function (_super) {\n __extends(ToolPanelFilterComp, _super);\n function ToolPanelFilterComp(hideHeader) {\n if (hideHeader === void 0) { hideHeader = false; }\n var _this = _super.call(this, ToolPanelFilterComp.TEMPLATE) || this;\n _this.expanded = false;\n _this.hideHeader = hideHeader;\n return _this;\n }\n ToolPanelFilterComp.prototype.postConstruct = function () {\n this.eExpandChecked = _.createIconNoSpan('columnSelectOpen', this.gridOptionsWrapper);\n this.eExpandUnchecked = _.createIconNoSpan('columnSelectClosed', this.gridOptionsWrapper);\n this.eExpand.appendChild(this.eExpandChecked);\n this.eExpand.appendChild(this.eExpandUnchecked);\n };\n ToolPanelFilterComp.prototype.setColumn = function (column) {\n var _this = this;\n this.column = column;\n this.eFilterName.innerText = this.columnModel.getDisplayNameForColumn(this.column, 'filterToolPanel', false) || '';\n this.addManagedListener(this.eFilterToolPanelHeader, 'click', this.toggleExpanded.bind(this));\n this.addManagedListener(this.eFilterToolPanelHeader, 'keydown', function (e) {\n if (e.key === KeyCode.ENTER) {\n _this.toggleExpanded();\n }\n });\n this.addManagedListener(this.eventService, Events.EVENT_FILTER_OPENED, this.onFilterOpened.bind(this));\n this.addInIcon('filter', this.eFilterIcon, this.column);\n this.eFilterIcon.classList.toggle('ag-hidden', !this.isFilterActive());\n this.eExpandChecked.classList.add('ag-hidden');\n if (this.hideHeader) {\n this.eFilterToolPanelHeader.classList.toggle('ag-hidden', true);\n this.eFilterToolPanelHeader.removeAttribute('tabindex');\n }\n else {\n this.eFilterToolPanelHeader.setAttribute('tabindex', '0');\n }\n this.addManagedListener(this.column, Column.EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));\n };\n ToolPanelFilterComp.prototype.getColumn = function () {\n return this.column;\n };\n ToolPanelFilterComp.prototype.getColumnFilterName = function () {\n return this.columnModel.getDisplayNameForColumn(this.column, 'filterToolPanel', false);\n };\n ToolPanelFilterComp.prototype.addCssClassToTitleBar = function (cssClass) {\n this.eFilterToolPanelHeader.classList.add(cssClass);\n };\n ToolPanelFilterComp.prototype.addInIcon = function (iconName, eParent, column) {\n if (eParent == null) {\n return;\n }\n var eIcon = _.createIconNoSpan(iconName, this.gridOptionsWrapper, column);\n eParent.appendChild(eIcon);\n };\n ToolPanelFilterComp.prototype.isFilterActive = function () {\n return this.filterManager.isFilterActive(this.column);\n };\n ToolPanelFilterComp.prototype.onFilterChanged = function () {\n this.eFilterIcon.classList.toggle('ag-hidden', !this.isFilterActive());\n this.dispatchEvent({ type: Column.EVENT_FILTER_CHANGED });\n };\n ToolPanelFilterComp.prototype.toggleExpanded = function () {\n this.expanded ? this.collapse() : this.expand();\n };\n ToolPanelFilterComp.prototype.expand = function () {\n var _this = this;\n var _a;\n if (this.expanded) {\n return;\n }\n this.expanded = true;\n _.setAriaExpanded(this.eFilterToolPanelHeader, true);\n var container = _.loadTemplate(/* html */ \"
    \");\n var filterPromise = (_a = this.filterManager.getOrCreateFilterWrapper(this.column, 'TOOLBAR')) === null || _a === void 0 ? void 0 : _a.filterPromise;\n if (filterPromise) {\n filterPromise.then(function (filter) {\n _this.underlyingFilter = filter;\n if (!filter) {\n return;\n }\n container.appendChild(filter.getGui());\n _this.agFilterToolPanelBody.appendChild(container);\n if (filter.afterGuiAttached) {\n filter.afterGuiAttached({ container: 'toolPanel' });\n }\n });\n }\n _.setDisplayed(this.eExpandChecked, true);\n _.setDisplayed(this.eExpandUnchecked, false);\n };\n ToolPanelFilterComp.prototype.collapse = function () {\n if (!this.expanded) {\n return;\n }\n this.expanded = false;\n _.setAriaExpanded(this.eFilterToolPanelHeader, false);\n this.agFilterToolPanelBody.removeChild(this.agFilterToolPanelBody.children[0]);\n _.setDisplayed(this.eExpandChecked, false);\n _.setDisplayed(this.eExpandUnchecked, true);\n };\n ToolPanelFilterComp.prototype.refreshFilter = function () {\n if (!this.expanded) {\n return;\n }\n var filter = this.underlyingFilter;\n if (!filter) {\n return;\n }\n // set filters should be updated when the filter has been changed elsewhere, i.e. via api. Note that we can't\n // use 'afterGuiAttached' to refresh the virtual list as it also focuses on the mini filter which changes the\n // scroll position in the filter list panel\n if (typeof filter.refreshVirtualList === 'function') {\n filter.refreshVirtualList();\n }\n };\n ToolPanelFilterComp.prototype.onFilterOpened = function (event) {\n if (event.source !== 'COLUMN_MENU') {\n return;\n }\n if (event.column !== this.column) {\n return;\n }\n if (!this.expanded) {\n return;\n }\n this.collapse();\n };\n ToolPanelFilterComp.TEMPLATE = \"\\n
    \\n
    \\n
    \\n \\n \\n
    \\n
    \\n
    \";\n __decorate([\n RefSelector('eFilterToolPanelHeader')\n ], ToolPanelFilterComp.prototype, \"eFilterToolPanelHeader\", void 0);\n __decorate([\n RefSelector('eFilterName')\n ], ToolPanelFilterComp.prototype, \"eFilterName\", void 0);\n __decorate([\n RefSelector('agFilterToolPanelBody')\n ], ToolPanelFilterComp.prototype, \"agFilterToolPanelBody\", void 0);\n __decorate([\n RefSelector('eFilterIcon')\n ], ToolPanelFilterComp.prototype, \"eFilterIcon\", void 0);\n __decorate([\n RefSelector('eExpand')\n ], ToolPanelFilterComp.prototype, \"eExpand\", void 0);\n __decorate([\n Autowired('filterManager')\n ], ToolPanelFilterComp.prototype, \"filterManager\", void 0);\n __decorate([\n Autowired('columnModel')\n ], ToolPanelFilterComp.prototype, \"columnModel\", void 0);\n __decorate([\n PostConstruct\n ], ToolPanelFilterComp.prototype, \"postConstruct\", null);\n return ToolPanelFilterComp;\n}(Component));\nexport { ToolPanelFilterComp };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { _, AgGroupComponent, Autowired, Column, Component, Events, ProvidedColumnGroup, PostConstruct, PreConstruct, RefSelector } from \"@ag-grid-community/core\";\nimport { ToolPanelFilterComp } from \"./toolPanelFilterComp\";\nvar ToolPanelFilterGroupComp = /** @class */ (function (_super) {\n __extends(ToolPanelFilterGroupComp, _super);\n function ToolPanelFilterGroupComp(columnGroup, childFilterComps, expandedCallback, depth, showingColumn) {\n var _this = _super.call(this) || this;\n _this.columnGroup = columnGroup;\n _this.childFilterComps = childFilterComps;\n _this.depth = depth;\n _this.expandedCallback = expandedCallback;\n _this.showingColumn = showingColumn;\n return _this;\n }\n ToolPanelFilterGroupComp.prototype.preConstruct = function () {\n var groupParams = {\n cssIdentifier: 'filter-toolpanel',\n direction: 'vertical'\n };\n this.setTemplate(ToolPanelFilterGroupComp.TEMPLATE, { filterGroupComp: groupParams });\n };\n ToolPanelFilterGroupComp.prototype.init = function () {\n var _this = this;\n this.setGroupTitle();\n this.filterGroupComp.setAlignItems('stretch');\n this.filterGroupComp.addCssClass(\"ag-filter-toolpanel-group-level-\" + this.depth);\n this.filterGroupComp.addCssClassToTitleBar(\"ag-filter-toolpanel-group-level-\" + this.depth + \"-header\");\n this.childFilterComps.forEach(function (filterComp) {\n _this.filterGroupComp.addItem(filterComp);\n filterComp.addCssClassToTitleBar(\"ag-filter-toolpanel-group-level-\" + (_this.depth + 1) + \"-header\");\n });\n this.refreshFilterClass();\n this.addExpandCollapseListeners();\n this.addFilterChangedListeners();\n this.setupTooltip();\n };\n ToolPanelFilterGroupComp.prototype.setupTooltip = function () {\n var _this = this;\n // we don't show tooltips for groups, as when the group expands, it's div contains the columns which also\n // have tooltips, so the tooltips would clash. Eg mouse over group, tooltip shows, mouse over column, another\n // tooltip shows but cos we didn't leave the group the group tooltip remains. this should be fixed in the future,\n // maybe the group shouldn't contain the children form a DOM perspective.\n if (!this.showingColumn) {\n return;\n }\n var refresh = function () {\n var newTooltipText = _this.columnGroup.getColDef().headerTooltip;\n _this.setTooltip(newTooltipText);\n };\n refresh();\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, refresh);\n };\n ToolPanelFilterGroupComp.prototype.getTooltipParams = function () {\n var res = _super.prototype.getTooltipParams.call(this);\n res.location = 'filterToolPanelColumnGroup';\n return res;\n };\n ToolPanelFilterGroupComp.prototype.addCssClassToTitleBar = function (cssClass) {\n this.filterGroupComp.addCssClassToTitleBar(cssClass);\n };\n ToolPanelFilterGroupComp.prototype.refreshFilters = function () {\n this.childFilterComps.forEach(function (filterComp) {\n if (filterComp instanceof ToolPanelFilterGroupComp) {\n filterComp.refreshFilters();\n }\n else {\n filterComp.refreshFilter();\n }\n });\n };\n ToolPanelFilterGroupComp.prototype.isColumnGroup = function () {\n return this.columnGroup instanceof ProvidedColumnGroup;\n };\n ToolPanelFilterGroupComp.prototype.isExpanded = function () {\n return this.filterGroupComp.isExpanded();\n };\n ToolPanelFilterGroupComp.prototype.getChildren = function () {\n return this.childFilterComps;\n };\n ToolPanelFilterGroupComp.prototype.getFilterGroupName = function () {\n return this.filterGroupName ? this.filterGroupName : '';\n };\n ToolPanelFilterGroupComp.prototype.getFilterGroupId = function () {\n return this.columnGroup.getId();\n };\n ToolPanelFilterGroupComp.prototype.hideGroupItem = function (hide, index) {\n this.filterGroupComp.hideItem(hide, index);\n };\n ToolPanelFilterGroupComp.prototype.hideGroup = function (hide) {\n this.addOrRemoveCssClass('ag-hidden', hide);\n };\n ToolPanelFilterGroupComp.prototype.forEachToolPanelFilterChild = function (action) {\n this.childFilterComps.forEach(function (filterComp) {\n if (filterComp instanceof ToolPanelFilterComp) {\n action(filterComp);\n }\n });\n };\n ToolPanelFilterGroupComp.prototype.addExpandCollapseListeners = function () {\n var _this = this;\n var expandListener = this.isColumnGroup() ?\n function () { return _this.expandedCallback(); } :\n function () { return _this.forEachToolPanelFilterChild(function (filterComp) { return filterComp.expand(); }); };\n var collapseListener = this.isColumnGroup() ?\n function () { return _this.expandedCallback(); } :\n function () { return _this.forEachToolPanelFilterChild(function (filterComp) { return filterComp.collapse(); }); };\n this.addManagedListener(this.filterGroupComp, AgGroupComponent.EVENT_EXPANDED, expandListener);\n this.addManagedListener(this.filterGroupComp, AgGroupComponent.EVENT_COLLAPSED, collapseListener);\n };\n ToolPanelFilterGroupComp.prototype.getColumns = function () {\n if (this.columnGroup instanceof ProvidedColumnGroup) {\n return this.columnGroup.getLeafColumns();\n }\n return [this.columnGroup];\n };\n ToolPanelFilterGroupComp.prototype.addFilterChangedListeners = function () {\n var _this = this;\n this.getColumns().forEach(function (column) {\n _this.addManagedListener(column, Column.EVENT_FILTER_CHANGED, function () { return _this.refreshFilterClass(); });\n });\n if (!(this.columnGroup instanceof ProvidedColumnGroup)) {\n this.addManagedListener(this.eventService, Events.EVENT_FILTER_OPENED, this.onFilterOpened.bind(this));\n }\n };\n ToolPanelFilterGroupComp.prototype.refreshFilterClass = function () {\n var columns = this.getColumns();\n var anyChildFiltersActive = function () { return columns.some(function (col) { return col.isFilterActive(); }); };\n this.filterGroupComp.addOrRemoveCssClass('ag-has-filter', anyChildFiltersActive());\n };\n ToolPanelFilterGroupComp.prototype.onFilterOpened = function (event) {\n // when a filter is opened elsewhere, i.e. column menu we close the filter comp so we also need to collapse\n // the column group. This approach means we don't need to try and sync filter models on the same column.\n if (event.source !== 'COLUMN_MENU') {\n return;\n }\n if (event.column !== this.columnGroup) {\n return;\n }\n if (!this.isExpanded()) {\n return;\n }\n this.collapse();\n };\n ToolPanelFilterGroupComp.prototype.expand = function () {\n this.filterGroupComp.toggleGroupExpand(true);\n };\n ToolPanelFilterGroupComp.prototype.collapse = function () {\n this.filterGroupComp.toggleGroupExpand(false);\n };\n ToolPanelFilterGroupComp.prototype.setGroupTitle = function () {\n this.filterGroupName = (this.columnGroup instanceof ProvidedColumnGroup) ?\n this.getColumnGroupName(this.columnGroup) : this.getColumnName(this.columnGroup);\n this.filterGroupComp.setTitle(this.filterGroupName || '');\n };\n ToolPanelFilterGroupComp.prototype.getColumnGroupName = function (columnGroup) {\n return this.columnModel.getDisplayNameForProvidedColumnGroup(null, columnGroup, 'filterToolPanel');\n };\n ToolPanelFilterGroupComp.prototype.getColumnName = function (column) {\n return this.columnModel.getDisplayNameForColumn(column, 'filterToolPanel', false);\n };\n ToolPanelFilterGroupComp.prototype.destroyFilters = function () {\n this.childFilterComps = this.destroyBeans(this.childFilterComps);\n _.clearElement(this.getGui());\n };\n ToolPanelFilterGroupComp.prototype.destroy = function () {\n this.destroyFilters();\n _super.prototype.destroy.call(this);\n };\n ToolPanelFilterGroupComp.TEMPLATE = \"
    \\n \\n
    \";\n __decorate([\n RefSelector('filterGroupComp')\n ], ToolPanelFilterGroupComp.prototype, \"filterGroupComp\", void 0);\n __decorate([\n Autowired('columnModel')\n ], ToolPanelFilterGroupComp.prototype, \"columnModel\", void 0);\n __decorate([\n PreConstruct\n ], ToolPanelFilterGroupComp.prototype, \"preConstruct\", null);\n __decorate([\n PostConstruct\n ], ToolPanelFilterGroupComp.prototype, \"init\", null);\n return ToolPanelFilterGroupComp;\n}(Component));\nexport { ToolPanelFilterGroupComp };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { _, Autowired, Component, Events, ProvidedColumnGroup } from \"@ag-grid-community/core\";\nimport { ToolPanelFilterComp } from \"./toolPanelFilterComp\";\nimport { ToolPanelFilterGroupComp } from \"./toolPanelFilterGroupComp\";\nimport { EXPAND_STATE } from \"./filtersToolPanelHeaderPanel\";\nvar FiltersToolPanelListPanel = /** @class */ (function (_super) {\n __extends(FiltersToolPanelListPanel, _super);\n function FiltersToolPanelListPanel() {\n var _this = _super.call(this, FiltersToolPanelListPanel.TEMPLATE) || this;\n _this.initialised = false;\n _this.filterGroupComps = [];\n return _this;\n }\n FiltersToolPanelListPanel.prototype.init = function (params) {\n var _this = this;\n this.initialised = true;\n var defaultParams = {\n suppressExpandAll: false,\n suppressFilterSearch: false,\n suppressSyncLayoutWithGrid: false,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n _.mergeDeep(defaultParams, params);\n this.params = defaultParams;\n if (!this.params.suppressSyncLayoutWithGrid) {\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_MOVED, function () { return _this.onColumnsChanged(); });\n }\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, function () { return _this.onColumnsChanged(); });\n this.addManagedListener(this.eventService, Events.EVENT_TOOL_PANEL_VISIBLE_CHANGED, function (event) {\n // when re-entering the filters tool panel we need to refresh the virtual lists in the set filters in case\n // filters have been changed elsewhere, i.e. via an api call.\n if (event.source === 'filters') {\n _this.refreshFilters();\n }\n });\n if (this.columnModel.isReady()) {\n this.onColumnsChanged();\n }\n };\n FiltersToolPanelListPanel.prototype.onColumnsChanged = function () {\n var pivotModeActive = this.columnModel.isPivotMode();\n var shouldSyncColumnLayoutWithGrid = !this.params.suppressSyncLayoutWithGrid && !pivotModeActive;\n shouldSyncColumnLayoutWithGrid ? this.syncFilterLayout() : this.buildTreeFromProvidedColumnDefs();\n };\n FiltersToolPanelListPanel.prototype.syncFilterLayout = function () {\n this.toolPanelColDefService.syncLayoutWithGrid(this.setFiltersLayout.bind(this));\n };\n FiltersToolPanelListPanel.prototype.buildTreeFromProvidedColumnDefs = function () {\n var _this = this;\n this.destroyFilters();\n var columnTree = this.columnModel.getPrimaryColumnTree();\n this.filterGroupComps = this.recursivelyAddComps(columnTree, 0);\n var len = this.filterGroupComps.length;\n if (len) {\n this.filterGroupComps.forEach(function (comp) { return _this.appendChild(comp); });\n this.setFirstAndLastVisible(0, len - 1);\n }\n // perform search if searchFilterText exists\n if (_.exists(this.searchFilterText)) {\n this.searchFilters(this.searchFilterText);\n }\n // notify header of expand\n this.fireExpandedEvent();\n };\n FiltersToolPanelListPanel.prototype.setFiltersLayout = function (colDefs) {\n var _this = this;\n this.destroyFilters();\n var columnTree = this.toolPanelColDefService.createColumnTree(colDefs);\n this.filterGroupComps = this.recursivelyAddComps(columnTree, 0);\n var len = this.filterGroupComps.length;\n if (len) {\n this.filterGroupComps.forEach(function (comp) { return _this.appendChild(comp); });\n this.setFirstAndLastVisible(0, len - 1);\n }\n // perform search if searchFilterText exists\n if (_.exists(this.searchFilterText)) {\n this.searchFilters(this.searchFilterText);\n }\n // notify header of expand\n this.fireExpandedEvent();\n };\n FiltersToolPanelListPanel.prototype.recursivelyAddComps = function (tree, depth) {\n var _this = this;\n return _.flatten(tree.map(function (child) {\n if (child instanceof ProvidedColumnGroup) {\n return _.flatten(_this.recursivelyAddFilterGroupComps(child, depth));\n }\n var column = child;\n if (!_this.shouldDisplayFilter(column)) {\n return [];\n }\n var hideFilterCompHeader = depth === 0;\n var filterComp = new ToolPanelFilterComp(hideFilterCompHeader);\n _this.getContext().createBean(filterComp);\n filterComp.setColumn(column);\n if (depth > 0) {\n return filterComp;\n }\n var filterGroupComp = _this.createBean(new ToolPanelFilterGroupComp(column, [filterComp], _this.onGroupExpanded.bind(_this), depth, true));\n filterGroupComp.addCssClassToTitleBar('ag-filter-toolpanel-header');\n filterGroupComp.collapse();\n return filterGroupComp;\n }));\n };\n FiltersToolPanelListPanel.prototype.recursivelyAddFilterGroupComps = function (columnGroup, depth) {\n if (!this.filtersExistInChildren(columnGroup.getChildren())) {\n return;\n }\n var colGroupDef = columnGroup.getColGroupDef();\n if (colGroupDef && colGroupDef.suppressFiltersToolPanel) {\n return [];\n }\n var newDepth = columnGroup.isPadding() ? depth : depth + 1;\n var childFilterComps = _.flatten(this.recursivelyAddComps(columnGroup.getChildren(), newDepth));\n if (columnGroup.isPadding()) {\n return childFilterComps;\n }\n var filterGroupComp = new ToolPanelFilterGroupComp(columnGroup, childFilterComps, this.onGroupExpanded.bind(this), depth, false);\n this.getContext().createBean(filterGroupComp);\n filterGroupComp.addCssClassToTitleBar('ag-filter-toolpanel-header');\n return [filterGroupComp];\n };\n FiltersToolPanelListPanel.prototype.filtersExistInChildren = function (tree) {\n var _this = this;\n return tree.some(function (child) {\n if (child instanceof ProvidedColumnGroup) {\n return _this.filtersExistInChildren(child.getChildren());\n }\n return _this.shouldDisplayFilter(child);\n });\n };\n FiltersToolPanelListPanel.prototype.shouldDisplayFilter = function (column) {\n var suppressFiltersToolPanel = column.getColDef() && column.getColDef().suppressFiltersToolPanel;\n return column.isFilterAllowed() && !suppressFiltersToolPanel;\n };\n // we don't support refreshing, but must implement because it's on the tool panel interface\n FiltersToolPanelListPanel.prototype.refresh = function () { };\n // lazy initialise the panel\n FiltersToolPanelListPanel.prototype.setVisible = function (visible) {\n _super.prototype.setDisplayed.call(this, visible);\n if (visible && !this.initialised) {\n this.init(this.params);\n }\n };\n FiltersToolPanelListPanel.prototype.expandFilterGroups = function (expand, groupIds) {\n var updatedGroupIds = [];\n var updateGroupExpandState = function (filterGroup) {\n var groupId = filterGroup.getFilterGroupId();\n var shouldExpandOrCollapse = !groupIds || _.includes(groupIds, groupId);\n if (shouldExpandOrCollapse) {\n // don't expand 'column groups', i.e. top level columns wrapped in a group\n if (expand && filterGroup.isColumnGroup()) {\n filterGroup.expand();\n }\n else {\n filterGroup.collapse();\n }\n updatedGroupIds.push(groupId);\n }\n // recursively look for more groups to expand / collapse\n filterGroup.getChildren().forEach(function (child) {\n if (child instanceof ToolPanelFilterGroupComp) {\n updateGroupExpandState(child);\n }\n });\n };\n this.filterGroupComps.forEach(updateGroupExpandState);\n // update header expand / collapse icon\n this.onGroupExpanded();\n if (groupIds) {\n var unrecognisedGroupIds = groupIds.filter(function (groupId) { return updatedGroupIds.indexOf(groupId) < 0; });\n if (unrecognisedGroupIds.length > 0) {\n console.warn('AG Grid: unable to find groups for these supplied groupIds:', unrecognisedGroupIds);\n }\n }\n };\n FiltersToolPanelListPanel.prototype.expandFilters = function (expand, colIds) {\n var updatedColIds = [];\n var updateGroupExpandState = function (filterComp) {\n if (filterComp instanceof ToolPanelFilterGroupComp) {\n var anyChildrenChanged_1 = false;\n filterComp.getChildren().forEach(function (child) {\n var childUpdated = updateGroupExpandState(child);\n if (childUpdated) {\n if (expand) {\n filterComp.expand();\n anyChildrenChanged_1 = true;\n }\n else if (!filterComp.isColumnGroup()) {\n // we only collapse columns wrapped in groups\n filterComp.collapse();\n }\n }\n });\n return anyChildrenChanged_1;\n }\n var colId = filterComp.getColumn().getColId();\n var updateFilterExpandState = !colIds || _.includes(colIds, colId);\n if (updateFilterExpandState) {\n expand ? filterComp.expand() : filterComp.collapse();\n updatedColIds.push(colId);\n }\n return updateFilterExpandState;\n };\n this.filterGroupComps.forEach(updateGroupExpandState);\n // update header expand / collapse icon\n this.onGroupExpanded();\n if (colIds) {\n var unrecognisedColIds = colIds.filter(function (colId) { return updatedColIds.indexOf(colId) < 0; });\n if (unrecognisedColIds.length > 0) {\n console.warn('AG Grid: unable to find columns for these supplied colIds:', unrecognisedColIds);\n }\n }\n };\n FiltersToolPanelListPanel.prototype.onGroupExpanded = function () {\n this.fireExpandedEvent();\n };\n FiltersToolPanelListPanel.prototype.fireExpandedEvent = function () {\n var expandedCount = 0;\n var notExpandedCount = 0;\n var updateExpandCounts = function (filterGroup) {\n if (!filterGroup.isColumnGroup()) {\n return;\n }\n filterGroup.isExpanded() ? expandedCount++ : notExpandedCount++;\n filterGroup.getChildren().forEach(function (child) {\n if (child instanceof ToolPanelFilterGroupComp) {\n updateExpandCounts(child);\n }\n });\n };\n this.filterGroupComps.forEach(updateExpandCounts);\n var state;\n if (expandedCount > 0 && notExpandedCount > 0) {\n state = EXPAND_STATE.INDETERMINATE;\n }\n else if (notExpandedCount > 0) {\n state = EXPAND_STATE.COLLAPSED;\n }\n else {\n state = EXPAND_STATE.EXPANDED;\n }\n this.dispatchEvent({ type: 'groupExpanded', state: state });\n };\n FiltersToolPanelListPanel.prototype.performFilterSearch = function (searchText) {\n this.searchFilterText = _.exists(searchText) ? searchText.toLowerCase() : null;\n this.searchFilters(this.searchFilterText);\n };\n FiltersToolPanelListPanel.prototype.searchFilters = function (searchFilter) {\n var passesFilter = function (groupName) {\n return !_.exists(searchFilter) || groupName.toLowerCase().indexOf(searchFilter) !== -1;\n };\n var recursivelySearch = function (filterItem, parentPasses) {\n if (!(filterItem instanceof ToolPanelFilterGroupComp)) {\n return passesFilter(filterItem.getColumnFilterName() || '');\n }\n var children = filterItem.getChildren();\n var groupNamePasses = passesFilter(filterItem.getFilterGroupName());\n // if group or parent already passed - ensure this group and all children are visible\n var alreadyPassed = parentPasses || groupNamePasses;\n if (alreadyPassed) {\n // ensure group visible\n filterItem.hideGroup(false);\n // ensure all children are visible\n for (var i = 0; i < children.length; i++) {\n recursivelySearch(children[i], alreadyPassed);\n filterItem.hideGroupItem(false, i);\n }\n return true;\n }\n // hide group item filters\n var anyChildPasses = false;\n children.forEach(function (child, index) {\n var childPasses = recursivelySearch(child, parentPasses);\n filterItem.hideGroupItem(!childPasses, index);\n if (childPasses) {\n anyChildPasses = true;\n }\n });\n // hide group if no children pass\n filterItem.hideGroup(!anyChildPasses);\n return anyChildPasses;\n };\n var firstVisible;\n var lastVisible;\n this.filterGroupComps.forEach(function (filterGroup, idx) {\n recursivelySearch(filterGroup, false);\n if (firstVisible === undefined) {\n if (!filterGroup.containsCssClass('ag-hidden')) {\n firstVisible = idx;\n lastVisible = idx;\n }\n }\n else if (!filterGroup.containsCssClass('ag-hidden') && lastVisible !== idx) {\n lastVisible = idx;\n }\n });\n this.setFirstAndLastVisible(firstVisible, lastVisible);\n };\n FiltersToolPanelListPanel.prototype.setFirstAndLastVisible = function (firstIdx, lastIdx) {\n this.filterGroupComps.forEach(function (filterGroup, idx) {\n filterGroup.removeCssClass('ag-first-group-visible');\n filterGroup.removeCssClass('ag-last-group-visible');\n if (idx === firstIdx) {\n filterGroup.addCssClass('ag-first-group-visible');\n }\n if (idx === lastIdx) {\n filterGroup.addCssClass('ag-last-group-visible');\n }\n });\n };\n FiltersToolPanelListPanel.prototype.refreshFilters = function () {\n this.filterGroupComps.forEach(function (filterGroupComp) { return filterGroupComp.refreshFilters(); });\n };\n FiltersToolPanelListPanel.prototype.destroyFilters = function () {\n this.filterGroupComps = this.destroyBeans(this.filterGroupComps);\n _.clearElement(this.getGui());\n };\n FiltersToolPanelListPanel.prototype.destroy = function () {\n this.destroyFilters();\n _super.prototype.destroy.call(this);\n };\n FiltersToolPanelListPanel.TEMPLATE = \"
    \";\n __decorate([\n Autowired(\"gridApi\")\n ], FiltersToolPanelListPanel.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired(\"columnApi\")\n ], FiltersToolPanelListPanel.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('toolPanelColDefService')\n ], FiltersToolPanelListPanel.prototype, \"toolPanelColDefService\", void 0);\n __decorate([\n Autowired('columnModel')\n ], FiltersToolPanelListPanel.prototype, \"columnModel\", void 0);\n return FiltersToolPanelListPanel;\n}(Component));\nexport { FiltersToolPanelListPanel };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { _, Autowired, Component, RefSelector } from \"@ag-grid-community/core\";\nvar FiltersToolPanel = /** @class */ (function (_super) {\n __extends(FiltersToolPanel, _super);\n function FiltersToolPanel() {\n var _this = _super.call(this, FiltersToolPanel.TEMPLATE) || this;\n _this.initialised = false;\n _this.listenerDestroyFuncs = [];\n return _this;\n }\n FiltersToolPanel.prototype.init = function (params) {\n // if initialised is true, means this is a refresh\n if (this.initialised) {\n this.listenerDestroyFuncs.forEach(function (func) { return func(); });\n this.listenerDestroyFuncs = [];\n }\n this.initialised = true;\n var defaultParams = {\n suppressExpandAll: false,\n suppressFilterSearch: false,\n suppressSyncLayoutWithGrid: false,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n _.mergeDeep(defaultParams, params);\n this.params = defaultParams;\n this.filtersToolPanelHeaderPanel.init(this.params);\n this.filtersToolPanelListPanel.init(this.params);\n var hideExpand = this.params.suppressExpandAll;\n var hideSearch = this.params.suppressFilterSearch;\n if (hideExpand && hideSearch) {\n this.filtersToolPanelHeaderPanel.setDisplayed(false);\n }\n // this is necessary to prevent a memory leak while refreshing the tool panel\n this.listenerDestroyFuncs.push(this.addManagedListener(this.filtersToolPanelHeaderPanel, 'expandAll', this.onExpandAll.bind(this)), this.addManagedListener(this.filtersToolPanelHeaderPanel, 'collapseAll', this.onCollapseAll.bind(this)), this.addManagedListener(this.filtersToolPanelHeaderPanel, 'searchChanged', this.onSearchChanged.bind(this)), this.addManagedListener(this.filtersToolPanelListPanel, 'groupExpanded', this.onGroupExpanded.bind(this)));\n };\n // lazy initialise the panel\n FiltersToolPanel.prototype.setVisible = function (visible) {\n _super.prototype.setDisplayed.call(this, visible);\n if (visible && !this.initialised) {\n this.init(this.params);\n }\n };\n FiltersToolPanel.prototype.onExpandAll = function () {\n this.filtersToolPanelListPanel.expandFilterGroups(true);\n };\n FiltersToolPanel.prototype.onCollapseAll = function () {\n this.filtersToolPanelListPanel.expandFilterGroups(false);\n };\n FiltersToolPanel.prototype.onSearchChanged = function (event) {\n this.filtersToolPanelListPanel.performFilterSearch(event.searchText);\n };\n FiltersToolPanel.prototype.setFilterLayout = function (colDefs) {\n this.filtersToolPanelListPanel.setFiltersLayout(colDefs);\n };\n FiltersToolPanel.prototype.onGroupExpanded = function (event) {\n this.filtersToolPanelHeaderPanel.setExpandState(event.state);\n };\n FiltersToolPanel.prototype.expandFilterGroups = function (groupIds) {\n this.filtersToolPanelListPanel.expandFilterGroups(true, groupIds);\n };\n FiltersToolPanel.prototype.collapseFilterGroups = function (groupIds) {\n this.filtersToolPanelListPanel.expandFilterGroups(false, groupIds);\n };\n FiltersToolPanel.prototype.expandFilters = function (colIds) {\n this.filtersToolPanelListPanel.expandFilters(true, colIds);\n };\n FiltersToolPanel.prototype.collapseFilters = function (colIds) {\n this.filtersToolPanelListPanel.expandFilters(false, colIds);\n };\n FiltersToolPanel.prototype.syncLayoutWithGrid = function () {\n this.filtersToolPanelListPanel.syncFilterLayout();\n };\n FiltersToolPanel.prototype.refresh = function () {\n this.init(this.params);\n };\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to override destroy() just to make the method public.\n FiltersToolPanel.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n FiltersToolPanel.TEMPLATE = \"
    \\n \\n \\n
    \";\n __decorate([\n RefSelector('filtersToolPanelHeaderPanel')\n ], FiltersToolPanel.prototype, \"filtersToolPanelHeaderPanel\", void 0);\n __decorate([\n RefSelector('filtersToolPanelListPanel')\n ], FiltersToolPanel.prototype, \"filtersToolPanelListPanel\", void 0);\n __decorate([\n Autowired('gridApi')\n ], FiltersToolPanel.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('columnApi')\n ], FiltersToolPanel.prototype, \"columnApi\", void 0);\n return FiltersToolPanel;\n}(Component));\nexport { FiltersToolPanel };\n","import { ModuleNames } from \"@ag-grid-community/core\";\nimport { EnterpriseCoreModule } from \"@ag-grid-enterprise/core\";\nimport { FiltersToolPanelHeaderPanel } from \"./filterToolPanel/filtersToolPanelHeaderPanel\";\nimport { FiltersToolPanelListPanel } from \"./filterToolPanel/filtersToolPanelListPanel\";\nimport { FiltersToolPanel } from \"./filterToolPanel/filtersToolPanel\";\nimport { SideBarModule } from \"@ag-grid-enterprise/side-bar\";\nexport var FiltersToolPanelModule = {\n moduleName: ModuleNames.FiltersToolPanelModule,\n beans: [],\n agStackComponents: [\n { componentName: 'AgFiltersToolPanelHeader', componentClass: FiltersToolPanelHeaderPanel },\n { componentName: 'AgFiltersToolPanelList', componentClass: FiltersToolPanelListPanel }\n ],\n userComponents: [\n { componentName: 'agFiltersToolPanel', componentClass: FiltersToolPanel },\n ],\n dependantModules: [\n SideBarModule,\n EnterpriseCoreModule\n ]\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { _, Autowired, BeanStub, ModuleNames, ModuleRegistry, Optional, } from \"@ag-grid-community/core\";\nimport { ChartDataModel } from \"./chartDataModel\";\nvar ChartDatasource = /** @class */ (function (_super) {\n __extends(ChartDatasource, _super);\n function ChartDatasource() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ChartDatasource.prototype.getData = function (params) {\n if (params.crossFiltering) {\n if (params.grouping) {\n console.warn(\"AG Grid: crossing filtering with row grouping is not supported.\");\n return { chartData: [], columnNames: {} };\n }\n if (!this.gridOptionsWrapper.isRowModelDefault()) {\n console.warn(\"AG Grid: crossing filtering is only supported in the client side row model.\");\n return { chartData: [], columnNames: {} };\n }\n }\n var isServerSide = this.gridOptionsWrapper.isRowModelServerSide();\n if (isServerSide && params.pivoting) {\n this.updatePivotKeysForSSRM();\n }\n var result = this.extractRowsFromGridRowModel(params);\n result.chartData = this.aggregateRowsByDimension(params, result.chartData);\n return result;\n };\n ChartDatasource.prototype.extractRowsFromGridRowModel = function (params) {\n var _this = this;\n var extractedRowData = [];\n var columnNames = {};\n // maps used to keep track of expanded groups that need to be removed\n var groupNodeIndexes = {};\n var groupsToRemove = {};\n // only used when cross filtering\n var filteredNodes = {};\n var allRowNodes = [];\n var numRows;\n if (params.crossFiltering) {\n filteredNodes = this.getFilteredRowNodes();\n allRowNodes = this.getAllRowNodes();\n numRows = allRowNodes.length;\n }\n else {\n // make sure enough rows in range to chart. if user filters and less rows, then end row will be\n // the last displayed row, not where the range ends.\n var modelLastRow = this.gridRowModel.getRowCount() - 1;\n var rangeLastRow = params.endRow >= 0 ? Math.min(params.endRow, modelLastRow) : modelLastRow;\n numRows = rangeLastRow - params.startRow + 1;\n }\n var _loop_1 = function (i) {\n var data = {};\n var rowNode = params.crossFiltering ? allRowNodes[i] : this_1.gridRowModel.getRow(i + params.startRow);\n // first get data for dimensions columns\n params.dimensionCols.forEach(function (col) {\n var colId = col.colId;\n var column = _this.columnModel.getGridColumn(colId);\n if (column) {\n var valueObject = _this.valueService.getValue(column, rowNode);\n // when grouping we also need to build up multi category labels for charts\n if (params.grouping) {\n var valueString = valueObject && valueObject.toString ? String(valueObject.toString()) : '';\n // traverse parents to extract group label path\n var labels = ChartDatasource.getGroupLabels(rowNode, valueString);\n data[colId] = {\n labels: labels, toString: function () {\n return this.labels.filter(function (l) { return !!l; }).reverse().join(' - ');\n }\n };\n // keep track of group node indexes so they can be padded when other groups are expanded\n if (rowNode.group) {\n groupNodeIndexes[labels.toString()] = i;\n }\n // if node (group or leaf) has parents then it is expanded and should be removed\n var groupKey = labels.slice(1, labels.length).toString();\n if (groupKey) {\n groupsToRemove[groupKey] = groupNodeIndexes[groupKey];\n }\n }\n else {\n // leaf nodes can be directly added to dimension columns\n data[colId] = valueObject;\n }\n }\n else {\n // introduce a default category when no dimensions exist with a value based off row index (+1)\n data[ChartDataModel.DEFAULT_CATEGORY] = i + 1;\n }\n });\n // then get data for value columns\n params.valueCols.forEach(function (col) {\n var columnNamesArr = [];\n // pivot keys should be added first\n var pivotKeys = col.getColDef().pivotKeys;\n if (pivotKeys) {\n columnNamesArr = pivotKeys.slice();\n }\n // then add column header name to results\n var headerName = col.getColDef().headerName;\n if (headerName) {\n columnNamesArr.push(headerName);\n }\n // add array of column names to results\n if (columnNamesArr.length > 0) {\n columnNames[col.getId()] = columnNamesArr;\n }\n var colId = col.getColId();\n if (params.crossFiltering) {\n var filteredOutColId = colId + '-filtered-out';\n // add data value to value column\n var value = _this.valueService.getValue(col, rowNode);\n var actualValue = value != null && typeof value.toNumber === 'function' ? value.toNumber() : value;\n if (filteredNodes[rowNode.id]) {\n data[colId] = actualValue;\n data[filteredOutColId] = params.aggFunc || params.isScatter ? undefined : 0;\n }\n else {\n data[colId] = params.aggFunc || params.isScatter ? undefined : 0;\n data[filteredOutColId] = actualValue;\n }\n }\n else {\n // add data value to value column\n var value = _this.valueService.getValue(col, rowNode);\n data[colId] = value != null && typeof value.toNumber === 'function' ? value.toNumber() : value;\n }\n });\n // row data from footer nodes should not be included in charts\n if (rowNode.footer) {\n // 'stamping' data as footer to avoid impacting previously calculated `groupIndexesToRemove` and will\n // be removed from the results along with any expanded group nodes\n data.footer = true;\n }\n // add data to results\n extractedRowData.push(data);\n };\n var this_1 = this;\n for (var i = 0; i < numRows; i++) {\n _loop_1(i);\n }\n if (params.grouping) {\n var groupIndexesToRemove_1 = _.values(groupsToRemove);\n var filterFunc = function (data, index) { return !data.footer && !_.includes(groupIndexesToRemove_1, index); };\n extractedRowData = extractedRowData.filter(filterFunc);\n }\n return { chartData: extractedRowData, columnNames: columnNames };\n };\n ChartDatasource.prototype.aggregateRowsByDimension = function (params, dataFromGrid) {\n var _this = this;\n var dimensionCols = params.dimensionCols;\n if (!params.aggFunc || dimensionCols.length === 0) {\n return dataFromGrid;\n }\n var lastCol = _.last(dimensionCols);\n var lastColId = lastCol && lastCol.colId;\n var map = {};\n var dataAggregated = [];\n dataFromGrid.forEach(function (data) {\n var currentMap = map;\n dimensionCols.forEach(function (col) {\n var colId = col.colId;\n var key = data[colId];\n if (colId === lastColId) {\n var groupItem_1 = currentMap[key];\n if (!groupItem_1) {\n groupItem_1 = { __children: [] };\n dimensionCols.forEach(function (dimCol) {\n var dimColId = dimCol.colId;\n groupItem_1[dimColId] = data[dimColId];\n });\n currentMap[key] = groupItem_1;\n dataAggregated.push(groupItem_1);\n }\n groupItem_1.__children.push(data);\n }\n else {\n // map of maps\n if (!currentMap[key]) {\n currentMap[key] = {};\n }\n currentMap = currentMap[key];\n }\n });\n });\n if (ModuleRegistry.assertRegistered(ModuleNames.RowGroupingModule, 'Charting Aggregation')) {\n dataAggregated.forEach(function (groupItem) { return params.valueCols.forEach(function (col) {\n if (params.crossFiltering) {\n params.valueCols.forEach(function (valueCol) {\n // filtered data\n var dataToAgg = groupItem.__children\n .filter(function (child) { return typeof child[valueCol.getColId()] !== 'undefined'; })\n .map(function (child) { return child[valueCol.getColId()]; });\n var aggResult = _this.aggregationStage.aggregateValues(dataToAgg, params.aggFunc);\n groupItem[valueCol.getId()] = aggResult && typeof aggResult.value !== 'undefined' ? aggResult.value : aggResult;\n // filtered out data\n var filteredOutColId = valueCol.getId() + '-filtered-out';\n var dataToAggFiltered = groupItem.__children\n .filter(function (child) { return typeof child[filteredOutColId] !== 'undefined'; })\n .map(function (child) { return child[filteredOutColId]; });\n var aggResultFiltered = _this.aggregationStage.aggregateValues(dataToAggFiltered, params.aggFunc);\n groupItem[filteredOutColId] = aggResultFiltered && typeof aggResultFiltered.value !== 'undefined' ? aggResultFiltered.value : aggResultFiltered;\n });\n }\n else {\n var dataToAgg = groupItem.__children.map(function (child) { return child[col.getId()]; });\n var aggResult = 0;\n if (ModuleRegistry.assertRegistered(ModuleNames.RowGroupingModule, 'Charting Aggregation')) {\n aggResult = _this.aggregationStage.aggregateValues(dataToAgg, params.aggFunc);\n }\n groupItem[col.getId()] = aggResult && typeof aggResult.value !== 'undefined' ? aggResult.value : aggResult;\n }\n }); });\n }\n return dataAggregated;\n };\n ChartDatasource.prototype.updatePivotKeysForSSRM = function () {\n var secondaryColumns = this.columnModel.getSecondaryColumns();\n if (!secondaryColumns) {\n return;\n }\n // we don't know what the application will use for the pivot key separator (i.e. '_' or '|' ) as the\n // secondary columns are provided to grid by the application via columnApi.setSecondaryColumns()\n var pivotKeySeparator = this.extractPivotKeySeparator(secondaryColumns);\n // 'pivotKeys' is not used by the SSRM for pivoting so it is safe to reuse this colDef property, this way\n // the same logic can be used for CSRM and SSRM to extract legend names in extractRowsFromGridRowModel()\n secondaryColumns.forEach(function (col) {\n var keys = col.getColId().split(pivotKeySeparator);\n col.getColDef().pivotKeys = keys.slice(0, keys.length - 1);\n });\n };\n ChartDatasource.prototype.extractPivotKeySeparator = function (secondaryColumns) {\n if (secondaryColumns.length === 0) {\n return \"\";\n }\n var extractSeparator = function (columnGroup, childId) {\n var groupId = columnGroup.getGroupId();\n if (!columnGroup.getParent()) {\n // removing groupId ('2000') from childId ('2000|Swimming') yields '|Swimming' so first char is separator\n return childId.split(groupId)[1][0];\n }\n return extractSeparator(columnGroup.getParent(), groupId);\n };\n var firstSecondaryCol = secondaryColumns[0];\n return extractSeparator(firstSecondaryCol.getParent(), firstSecondaryCol.getColId());\n };\n ChartDatasource.getGroupLabels = function (rowNode, initialLabel) {\n var labels = [initialLabel];\n while (rowNode && rowNode.level !== 0) {\n rowNode = rowNode.parent;\n if (rowNode) {\n labels.push(rowNode.key);\n }\n }\n return labels;\n };\n ChartDatasource.prototype.getFilteredRowNodes = function () {\n var filteredNodes = {};\n this.gridRowModel.forEachNodeAfterFilterAndSort(function (rowNode) {\n filteredNodes[rowNode.id] = rowNode;\n });\n return filteredNodes;\n };\n ChartDatasource.prototype.getAllRowNodes = function () {\n var allRowNodes = [];\n this.gridRowModel.forEachNode(function (rowNode) {\n allRowNodes.push(rowNode);\n });\n return this.sortRowNodes(allRowNodes);\n };\n ChartDatasource.prototype.sortRowNodes = function (rowNodes) {\n var sortOptions = this.sortController.getSortOptions();\n var noSort = !sortOptions || sortOptions.length == 0;\n if (noSort)\n return rowNodes;\n return this.rowNodeSorter.doFullSort(rowNodes, sortOptions);\n };\n __decorate([\n Autowired('rowModel')\n ], ChartDatasource.prototype, \"gridRowModel\", void 0);\n __decorate([\n Autowired('valueService')\n ], ChartDatasource.prototype, \"valueService\", void 0);\n __decorate([\n Autowired('columnModel')\n ], ChartDatasource.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('rowNodeSorter')\n ], ChartDatasource.prototype, \"rowNodeSorter\", void 0);\n __decorate([\n Autowired('sortController')\n ], ChartDatasource.prototype, \"sortController\", void 0);\n __decorate([\n Optional('aggregationStage')\n ], ChartDatasource.prototype, \"aggregationStage\", void 0);\n return ChartDatasource;\n}(BeanStub));\nexport { ChartDatasource };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nimport { _, Autowired, BeanStub, CellRangeType, Constants, PostConstruct } from \"@ag-grid-community/core\";\nimport { ChartDatasource } from \"./chartDatasource\";\nvar ChartDataModel = /** @class */ (function (_super) {\n __extends(ChartDataModel, _super);\n function ChartDataModel(params) {\n var _this = _super.call(this) || this;\n _this.unlinked = false;\n _this.chartData = [];\n _this.valueColState = [];\n _this.dimensionColState = [];\n _this.columnNames = {};\n _this.grouping = false;\n _this.crossFiltering = false;\n // this control flag is used to only log warning for the initial user config\n _this.suppressComboChartWarnings = false;\n _this.chartId = params.chartId;\n _this.chartType = params.chartType;\n _this.pivotChart = params.pivotChart;\n _this.chartThemeName = params.chartThemeName;\n _this.aggFunc = params.aggFunc;\n _this.referenceCellRange = params.cellRange;\n _this.suppliedCellRange = params.cellRange;\n _this.suppressChartRanges = params.suppressChartRanges;\n _this.unlinked = !!params.unlinkChart;\n _this.crossFiltering = !!params.crossFiltering;\n _this.seriesChartTypes = params.seriesChartTypes || [];\n _this.initComboCharts(params);\n return _this;\n }\n ChartDataModel.prototype.initComboCharts = function (params) {\n var seriesChartTypesExist = this.seriesChartTypes && this.seriesChartTypes.length > 0;\n var customCombo = params.chartType === 'customCombo' || seriesChartTypesExist;\n if (customCombo) {\n // it is not necessary to supply a chart type for combo charts when `seriesChartTypes` is supplied\n this.chartType = 'customCombo';\n // cache supplied `seriesChartTypes` to allow switching between different chart types in the settings panel\n this.savedCustomSeriesChartTypes = this.seriesChartTypes || [];\n }\n };\n ChartDataModel.prototype.init = function () {\n this.datasource = this.createManagedBean(new ChartDatasource());\n this.updateCellRanges();\n };\n ChartDataModel.prototype.updateCellRanges = function (updatedColState) {\n if (this.valueCellRange) {\n this.referenceCellRange = this.valueCellRange;\n }\n var _a = this.getAllChartColumns(), dimensionCols = _a.dimensionCols, valueCols = _a.valueCols;\n var allColsFromRanges = this.getAllColumnsFromRanges();\n if (updatedColState) {\n this.updateColumnState(updatedColState);\n }\n this.setDimensionCellRange(dimensionCols, allColsFromRanges, updatedColState);\n this.setValueCellRange(valueCols, allColsFromRanges, updatedColState);\n if (!updatedColState) {\n this.resetColumnState();\n // dimension / category cell range could be out of sync after resetting column state when row grouping\n this.syncDimensionCellRange();\n }\n this.updateSeriesChartTypes();\n this.updateData();\n };\n ChartDataModel.prototype.updateSeriesChartTypes = function () {\n if (!this.isComboChart()) {\n return;\n }\n // ensure primary only chart types are not placed on secondary axis\n this.seriesChartTypes = this.seriesChartTypes.map(function (seriesChartType) {\n var primaryOnly = ['groupedColumn', 'stackedColumn', 'stackedArea'].includes(seriesChartType.chartType);\n seriesChartType.secondaryAxis = primaryOnly ? false : seriesChartType.secondaryAxis;\n return seriesChartType;\n });\n // note that when seriesChartTypes are supplied the chart type is also changed to 'customCombo'\n if (this.chartType === 'customCombo') {\n this.updateSeriesChartTypesForCustomCombo();\n return;\n }\n this.updateChartSeriesTypesForBuiltInCombos();\n };\n ChartDataModel.prototype.updateSeriesChartTypesForCustomCombo = function () {\n var _this = this;\n var seriesChartTypesSupplied = this.seriesChartTypes && this.seriesChartTypes.length > 0;\n if (!seriesChartTypesSupplied && !this.suppressComboChartWarnings) {\n console.warn(\"AG Grid: 'seriesChartTypes' are required when the 'customCombo' chart type is specified.\");\n }\n // ensure correct chartTypes are supplied\n this.seriesChartTypes = this.seriesChartTypes.map(function (s) {\n if (!ChartDataModel.SUPPORTED_COMBO_CHART_TYPES.includes(s.chartType)) {\n console.warn(\"AG Grid: invalid chartType '\" + s.chartType + \"' supplied in 'seriesChartTypes', converting to 'line' instead.\");\n s.chartType = 'line';\n }\n return s;\n });\n var getSeriesChartType = function (valueCol) {\n if (!_this.savedCustomSeriesChartTypes || _this.savedCustomSeriesChartTypes.length === 0) {\n _this.savedCustomSeriesChartTypes = _this.seriesChartTypes;\n }\n var providedSeriesChartType = _this.savedCustomSeriesChartTypes.find(function (s) { return s.colId === valueCol.colId; });\n if (!providedSeriesChartType) {\n if (valueCol.selected && !_this.suppressComboChartWarnings) {\n console.warn(\"AG Grid: no 'seriesChartType' found for colId = '\" + valueCol.colId + \"', defaulting to 'line'.\");\n }\n return {\n colId: valueCol.colId,\n chartType: 'line',\n secondaryAxis: false\n };\n }\n return providedSeriesChartType;\n };\n var updatedSeriesChartTypes = this.valueColState.map(getSeriesChartType);\n this.seriesChartTypes = updatedSeriesChartTypes;\n // also cache custom `seriesChartTypes` to allow for switching between different chart types\n this.savedCustomSeriesChartTypes = updatedSeriesChartTypes;\n // turn off warnings as first combo chart attempt has completed\n this.suppressComboChartWarnings = true;\n };\n ChartDataModel.prototype.updateChartSeriesTypesForBuiltInCombos = function () {\n var primaryChartType = this.chartType === 'columnLineCombo' ? 'groupedColumn' : 'stackedArea';\n var secondaryChartType = this.chartType === 'columnLineCombo' ? 'line' : 'groupedColumn';\n var selectedCols = this.valueColState.filter(function (cs) { return cs.selected; });\n var lineIndex = Math.ceil(selectedCols.length / 2);\n this.seriesChartTypes = selectedCols.map(function (valueCol, i) {\n var seriesType = (i >= lineIndex) ? secondaryChartType : primaryChartType;\n return { colId: valueCol.colId, chartType: seriesType, secondaryAxis: false };\n });\n };\n ChartDataModel.prototype.updateData = function () {\n var _a = this.getRowIndexes(), startRow = _a.startRow, endRow = _a.endRow;\n if (this.pivotChart) {\n this.resetColumnState();\n }\n this.grouping = this.isGrouping();\n var params = {\n aggFunc: this.aggFunc,\n dimensionCols: [this.getSelectedDimension()],\n grouping: this.grouping,\n pivoting: this.isPivotActive(),\n crossFiltering: this.crossFiltering,\n valueCols: this.getSelectedValueCols(),\n startRow: startRow,\n endRow: endRow,\n isScatter: _.includes(['scatter', 'bubble'], this.chartType)\n };\n var _b = this.datasource.getData(params), chartData = _b.chartData, columnNames = _b.columnNames;\n this.chartData = chartData;\n this.columnNames = columnNames;\n };\n ChartDataModel.prototype.isGrouping = function () {\n var usingTreeData = this.gridOptionsWrapper.isTreeData();\n var groupedCols = usingTreeData ? null : this.columnModel.getRowGroupColumns();\n var isGroupActive = usingTreeData || (groupedCols && groupedCols.length > 0);\n // charts only group when the selected category is a group column\n var colId = this.getSelectedDimension().colId;\n var displayedGroupCols = this.columnModel.getGroupDisplayColumns();\n var groupDimensionSelected = displayedGroupCols.map(function (col) { return col.getColId(); }).some(function (id) { return id === colId; });\n return !!isGroupActive && groupDimensionSelected;\n };\n ChartDataModel.prototype.getSelectedValueCols = function () {\n return this.valueColState.filter(function (cs) { return cs.selected; }).map(function (cs) { return cs.column; });\n };\n ChartDataModel.prototype.getSelectedDimension = function () {\n return this.dimensionColState.filter(function (cs) { return cs.selected; })[0];\n };\n ChartDataModel.prototype.getColDisplayName = function (col) {\n return this.columnModel.getDisplayNameForColumn(col, 'chart');\n };\n ChartDataModel.prototype.isPivotMode = function () {\n return this.columnModel.isPivotMode();\n };\n ChartDataModel.prototype.isPivotActive = function () {\n return this.columnModel.isPivotActive();\n };\n ChartDataModel.prototype.createCellRange = function (type) {\n var columns = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n columns[_i - 1] = arguments[_i];\n }\n return {\n id: this.chartId,\n startRow: this.referenceCellRange.startRow,\n endRow: this.referenceCellRange.endRow,\n columns: columns,\n startColumn: type === CellRangeType.DIMENSION ? columns[0] : this.referenceCellRange.startColumn,\n type: type\n };\n };\n ChartDataModel.prototype.getAllColumnsFromRanges = function () {\n if (this.pivotChart) {\n return _.convertToSet(this.columnModel.getAllDisplayedColumns());\n }\n var columns = this.dimensionCellRange || this.valueCellRange ? [] : this.referenceCellRange.columns;\n if (this.dimensionCellRange) {\n columns.push.apply(columns, __spread(this.dimensionCellRange.columns));\n }\n if (this.valueCellRange) {\n columns.push.apply(columns, __spread(this.valueCellRange.columns));\n }\n return _.convertToSet(columns);\n };\n ChartDataModel.prototype.getRowIndexes = function () {\n var startRow = 0, endRow = 0;\n var rangeService = this.rangeService;\n var range = this.valueCellRange;\n if (rangeService && range) {\n startRow = rangeService.getRangeStartRow(range).rowIndex;\n // when the last row the cell range is a pinned 'bottom' row, the `endRow` index is set to -1 which results\n // in the ChartDatasource processing all non pinned rows from the `startRow` index.\n var endRowPosition = rangeService.getRangeEndRow(range);\n endRow = endRowPosition.rowPinned === Constants.PINNED_BOTTOM ? -1 : endRowPosition.rowIndex;\n }\n return { startRow: startRow, endRow: endRow };\n };\n ChartDataModel.prototype.getAllChartColumns = function () {\n var _this = this;\n var displayedCols = this.columnModel.getAllDisplayedColumns();\n var dimensionCols = new Set();\n var valueCols = new Set();\n displayedCols.forEach(function (col) {\n var colDef = col.getColDef();\n var chartDataType = colDef.chartDataType;\n if (chartDataType) {\n // chart data type was specified explicitly\n switch (chartDataType) {\n case 'category':\n case 'time':\n dimensionCols.add(col);\n return;\n case 'series':\n valueCols.add(col);\n return;\n case 'excluded':\n return;\n default:\n console.warn(\"AG Grid: unexpected chartDataType value '\" + chartDataType + \"' supplied, instead use 'category', 'series' or 'excluded'\");\n break;\n }\n }\n if (colDef.colId === 'ag-Grid-AutoColumn') {\n dimensionCols.add(col);\n return;\n }\n if (!col.isPrimary()) {\n valueCols.add(col);\n return;\n }\n // if 'chartDataType' is not provided then infer type based data contained in first row\n (_this.isNumberCol(col) ? valueCols : dimensionCols).add(col);\n });\n return { dimensionCols: dimensionCols, valueCols: valueCols };\n };\n ChartDataModel.prototype.isNumberCol = function (col) {\n if (col.getColId() === 'ag-Grid-AutoColumn') {\n return false;\n }\n var row = this.rowRenderer.getRowNode({ rowIndex: 0, rowPinned: null });\n if (!row) {\n return false;\n }\n var cellValue = this.valueService.getValue(col, row);\n if (cellValue == null) {\n cellValue = this.extractLeafData(row, col);\n }\n if (cellValue != null && typeof cellValue.toNumber === 'function') {\n cellValue = cellValue.toNumber();\n }\n return typeof cellValue === 'number';\n };\n ChartDataModel.prototype.extractLeafData = function (row, col) {\n if (!row.allLeafChildren) {\n return null;\n }\n for (var i = 0; i < row.allLeafChildren.length; i++) {\n var childRow = row.allLeafChildren[i];\n var value = this.valueService.getValue(col, childRow);\n if (value != null) {\n return value;\n }\n }\n return null;\n };\n ChartDataModel.prototype.resetColumnState = function () {\n var _this = this;\n var _a = this.getAllChartColumns(), dimensionCols = _a.dimensionCols, valueCols = _a.valueCols;\n var allCols = this.getAllColumnsFromRanges();\n var isInitialising = this.valueColState.length < 1;\n this.dimensionColState = [];\n this.valueColState = [];\n var hasSelectedDimension = false;\n var order = 1;\n var aggFuncDimension = this.suppliedCellRange.columns[0]; //TODO\n dimensionCols.forEach(function (column) {\n var isAutoGroupCol = column.getColId() === 'ag-Grid-AutoColumn';\n var selected = false;\n if (_this.crossFiltering && _this.aggFunc) {\n if (aggFuncDimension.getColId() === column.getColId()) {\n selected = true;\n }\n }\n else {\n selected = isAutoGroupCol ? true : !hasSelectedDimension && allCols.has(column);\n }\n _this.dimensionColState.push({\n column: column,\n colId: column.getColId(),\n displayName: _this.getColDisplayName(column),\n selected: selected,\n order: order++\n });\n if (selected) {\n hasSelectedDimension = true;\n }\n });\n var defaultCategory = {\n colId: ChartDataModel.DEFAULT_CATEGORY,\n displayName: this.chartTranslationService.translate('defaultCategory'),\n selected: !hasSelectedDimension,\n order: 0\n };\n this.dimensionColState.unshift(defaultCategory);\n var valueColumnsFromReferenceRange = this.referenceCellRange.columns.filter(function (c) { return valueCols.has(c); });\n valueCols.forEach(function (column) {\n // first time the value cell range is set, preserve the column order from the supplied range\n if (isInitialising && _.includes(_this.referenceCellRange.columns, column)) {\n column = valueColumnsFromReferenceRange.shift();\n }\n _this.valueColState.push({\n column: column,\n colId: column.getColId(),\n displayName: _this.getColDisplayName(column),\n selected: allCols.has(column),\n order: order++\n });\n });\n };\n ChartDataModel.prototype.updateColumnState = function (updatedCol) {\n var idsMatch = function (cs) { return cs.colId === updatedCol.colId; };\n var _a = this, dimensionColState = _a.dimensionColState, valueColState = _a.valueColState;\n if (dimensionColState.filter(idsMatch).length > 0) {\n // only one dimension should be selected\n dimensionColState.forEach(function (cs) { return cs.selected = idsMatch(cs); });\n }\n else {\n // just update the selected value on the supplied value column\n valueColState.filter(idsMatch).forEach(function (cs) { return cs.selected = updatedCol.selected; });\n }\n var allColumns = __spread(dimensionColState, valueColState);\n var orderedColIds = [];\n // calculate new order\n allColumns.forEach(function (col, i) {\n if (i === updatedCol.order) {\n orderedColIds.push(updatedCol.colId);\n }\n if (col.colId !== updatedCol.colId) {\n orderedColIds.push(col.colId);\n }\n });\n // update col state with new order\n allColumns.forEach(function (col) {\n var order = orderedColIds.indexOf(col.colId);\n col.order = order >= 0 ? orderedColIds.indexOf(col.colId) : allColumns.length - 1;\n });\n this.reorderColState();\n };\n ChartDataModel.prototype.reorderColState = function () {\n var ascColStateOrder = function (a, b) { return a.order - b.order; };\n this.dimensionColState.sort(ascColStateOrder);\n this.valueColState.sort(ascColStateOrder);\n };\n ChartDataModel.prototype.setDimensionCellRange = function (dimensionCols, colsInRange, updatedColState) {\n var _this = this;\n this.dimensionCellRange = undefined;\n if (!updatedColState && !this.dimensionColState.length) {\n // use first dimension column in range by default\n dimensionCols.forEach(function (col) {\n if (_this.dimensionCellRange || !colsInRange.has(col)) {\n return;\n }\n _this.dimensionCellRange = _this.createCellRange(CellRangeType.DIMENSION, col);\n });\n return;\n }\n var selectedDimensionColState = updatedColState;\n if (this.crossFiltering && this.aggFunc) {\n var aggFuncDimension_1 = this.suppliedCellRange.columns[0]; //TODO\n selectedDimensionColState = this.dimensionColState.filter(function (cs) { return cs.colId === aggFuncDimension_1.getColId(); })[0];\n }\n else if (!selectedDimensionColState || !dimensionCols.has(selectedDimensionColState.column)) {\n selectedDimensionColState = this.dimensionColState.filter(function (cs) { return cs.selected; })[0];\n }\n if (selectedDimensionColState && selectedDimensionColState.colId !== ChartDataModel.DEFAULT_CATEGORY) {\n this.dimensionCellRange = this.createCellRange(CellRangeType.DIMENSION, selectedDimensionColState.column);\n }\n };\n ChartDataModel.prototype.setValueCellRange = function (valueCols, colsInRange, updatedColState) {\n this.valueCellRange = undefined;\n var selectedValueCols = [];\n valueCols.forEach(function (col) {\n if (updatedColState && updatedColState.colId === col.getColId()) {\n if (updatedColState.selected) {\n selectedValueCols.push(updatedColState.column);\n }\n }\n else if (colsInRange.has(col)) {\n selectedValueCols.push(col);\n }\n });\n if (selectedValueCols.length > 0) {\n var orderedColIds_1 = [];\n if (this.valueColState.length > 0) {\n orderedColIds_1 = this.valueColState.map(function (c) { return c.colId; });\n }\n else {\n colsInRange.forEach(function (c) { return orderedColIds_1.push(c.getColId()); });\n }\n selectedValueCols.sort(function (a, b) { return orderedColIds_1.indexOf(a.getColId()) - orderedColIds_1.indexOf(b.getColId()); });\n this.valueCellRange = this.createCellRange.apply(this, __spread([CellRangeType.VALUE], selectedValueCols));\n }\n };\n ChartDataModel.prototype.syncDimensionCellRange = function () {\n var selectedDimension = this.getSelectedDimension();\n if (selectedDimension && selectedDimension.column) {\n this.dimensionCellRange = this.createCellRange(CellRangeType.DIMENSION, selectedDimension.column);\n }\n };\n ChartDataModel.prototype.isComboChart = function () {\n return ['columnLineCombo', 'areaColumnCombo', 'customCombo'].includes(this.chartType);\n };\n ChartDataModel.DEFAULT_CATEGORY = 'AG-GRID-DEFAULT-CATEGORY';\n ChartDataModel.SUPPORTED_COMBO_CHART_TYPES = ['line', 'groupedColumn', 'stackedColumn', 'area', 'stackedArea'];\n __decorate([\n Autowired('columnModel')\n ], ChartDataModel.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('valueService')\n ], ChartDataModel.prototype, \"valueService\", void 0);\n __decorate([\n Autowired('rangeService')\n ], ChartDataModel.prototype, \"rangeService\", void 0);\n __decorate([\n Autowired('rowRenderer')\n ], ChartDataModel.prototype, \"rowRenderer\", void 0);\n __decorate([\n Autowired('chartTranslationService')\n ], ChartDataModel.prototype, \"chartTranslationService\", void 0);\n __decorate([\n PostConstruct\n ], ChartDataModel.prototype, \"init\", null);\n return ChartDataModel;\n}(BeanStub));\nexport { ChartDataModel };\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};\nvar Observable = /** @class */ (function () {\n function Observable() {\n // Note that these maps can't be specified generically, so they are kept untyped.\n // Some methods in this class only need generics in their signatures, the generics inside the methods\n // are just for clarity. The generics in signatures allow for static type checking of user provided\n // listeners and for type inference, so that the users wouldn't have to specify the type of parameters\n // of their inline lambdas.\n this.allPropertyListeners = new Map(); // property name => property change listener => scopes\n this.allEventListeners = new Map(); // event type => event listener => scopes\n }\n Observable.prototype.addPropertyListener = function (name, listener, scope) {\n if (scope === void 0) { scope = this; }\n var allPropertyListeners = this.allPropertyListeners;\n var propertyListeners = allPropertyListeners.get(name);\n if (!propertyListeners) {\n propertyListeners = new Map();\n allPropertyListeners.set(name, propertyListeners);\n }\n if (!propertyListeners.has(listener)) {\n var scopes_1 = new Set();\n propertyListeners.set(listener, scopes_1);\n }\n var scopes = propertyListeners.get(listener);\n if (scopes) {\n scopes.add(scope);\n }\n };\n Observable.prototype.removePropertyListener = function (name, listener, scope) {\n if (scope === void 0) { scope = this; }\n var allPropertyListeners = this.allPropertyListeners;\n var propertyListeners = allPropertyListeners.get(name);\n if (propertyListeners) {\n if (listener) {\n var scopes = propertyListeners.get(listener);\n if (scopes) {\n scopes.delete(scope);\n if (!scopes.size) {\n propertyListeners.delete(listener);\n }\n }\n }\n else {\n propertyListeners.clear();\n }\n }\n };\n Observable.prototype.notifyPropertyListeners = function (name, oldValue, value) {\n var _this = this;\n var allPropertyListeners = this.allPropertyListeners;\n var propertyListeners = allPropertyListeners.get(name);\n if (propertyListeners) {\n propertyListeners.forEach(function (scopes, listener) {\n scopes.forEach(function (scope) { return listener.call(scope, { type: name, source: _this, value: value, oldValue: oldValue }); });\n });\n }\n };\n Observable.prototype.addEventListener = function (type, listener, scope) {\n if (scope === void 0) { scope = this; }\n var allEventListeners = this.allEventListeners;\n var eventListeners = allEventListeners.get(type);\n if (!eventListeners) {\n eventListeners = new Map();\n allEventListeners.set(type, eventListeners);\n }\n if (!eventListeners.has(listener)) {\n var scopes_2 = new Set();\n eventListeners.set(listener, scopes_2);\n }\n var scopes = eventListeners.get(listener);\n if (scopes) {\n scopes.add(scope);\n }\n };\n Observable.prototype.removeEventListener = function (type, listener, scope) {\n if (scope === void 0) { scope = this; }\n var allEventListeners = this.allEventListeners;\n var eventListeners = allEventListeners.get(type);\n if (eventListeners) {\n if (listener) {\n var scopes = eventListeners.get(listener);\n if (scopes) {\n scopes.delete(scope);\n if (!scopes.size) {\n eventListeners.delete(listener);\n }\n }\n }\n else {\n eventListeners.clear();\n }\n }\n };\n Observable.prototype.notifyEventListeners = function (types) {\n var _this = this;\n var allEventListeners = this.allEventListeners;\n types.forEach(function (type) {\n var listeners = allEventListeners.get(type);\n if (listeners) {\n listeners.forEach(function (scopes, listener) {\n scopes.forEach(function (scope) { return listener.call(scope, { type: type, source: _this }); });\n });\n }\n });\n };\n // 'source' is added automatically and is always the object this method belongs to.\n Observable.prototype.fireEvent = function (event) {\n var _this = this;\n var listeners = this.allEventListeners.get(event.type);\n if (listeners) {\n listeners.forEach(function (scopes, listener) {\n scopes.forEach(function (scope) { return listener.call(scope, __assign(__assign({}, event), { source: _this })); });\n });\n }\n };\n Observable.privateKeyPrefix = '_';\n return Observable;\n}());\nexport { Observable };\nexport function reactive() {\n var events = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n events[_i] = arguments[_i];\n }\n var debug = events.indexOf('debugger') >= 0;\n return function (target, key) {\n // `target` is either a constructor (static member) or prototype (instance member)\n var privateKey = Observable.privateKeyPrefix + key;\n var privateKeyEvents = privateKey + 'Events';\n if (!target[key]) {\n if (events) {\n target[privateKeyEvents] = events;\n }\n Object.defineProperty(target, key, {\n set: function (value) {\n var oldValue = this[privateKey];\n // This is a way to stop inside the setter by adding the special\n // 'debugger' event to a reactive property, for example:\n // @reactive('layoutChange', 'debugger') title?: Caption;\n if (debug) { // DO NOT REMOVE\n debugger;\n }\n if (value !== oldValue || (typeof value === 'object' && value !== null)) {\n this[privateKey] = value;\n this.notifyPropertyListeners(key, oldValue, value);\n var events_1 = this[privateKeyEvents];\n if (events_1) {\n this.notifyEventListeners(events_1);\n }\n }\n },\n get: function () {\n return this[privateKey];\n },\n enumerable: true,\n configurable: true\n });\n }\n };\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Observable, reactive } from \"./observable\";\nvar Padding = /** @class */ (function (_super) {\n __extends(Padding, _super);\n function Padding(top, right, bottom, left) {\n if (top === void 0) { top = 0; }\n if (right === void 0) { right = top; }\n if (bottom === void 0) { bottom = top; }\n if (left === void 0) { left = right; }\n var _this = _super.call(this) || this;\n _this.top = top;\n _this.right = right;\n _this.bottom = bottom;\n _this.left = left;\n return _this;\n }\n Padding.prototype.clear = function () {\n this.top = this.right = this.bottom = this.left = 0;\n };\n __decorate([\n reactive('layoutChange')\n ], Padding.prototype, \"top\", void 0);\n __decorate([\n reactive('layoutChange')\n ], Padding.prototype, \"right\", void 0);\n __decorate([\n reactive('layoutChange')\n ], Padding.prototype, \"bottom\", void 0);\n __decorate([\n reactive('layoutChange')\n ], Padding.prototype, \"left\", void 0);\n return Padding;\n}(Observable));\nexport { Padding };\n","// For small data structs like a bounding box, objects are superior to arrays\n// in terms of performance (by 3-4% in Chrome 71, Safari 12 and by 20% in Firefox 64).\n// They are also self descriptive and harder to abuse.\n// For example, one has to do:\n// `ctx.strokeRect(bbox.x, bbox.y, bbox.width, bbox.height);`\n// rather than become enticed by the much slower:\n// `ctx.strokeRect(...bbox);`\n// https://jsperf.com/array-vs-object-create-access\nvar BBox = /** @class */ (function () {\n function BBox(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n BBox.prototype.isValid = function () {\n return isFinite(this.x) && isFinite(this.y) && isFinite(this.width) && isFinite(this.height);\n };\n BBox.prototype.dilate = function (value) {\n this.x -= value;\n this.y -= value;\n this.width += value * 2;\n this.height += value * 2;\n };\n BBox.prototype.containsPoint = function (x, y) {\n return x >= this.x && x <= (this.x + this.width)\n && y >= this.y && y <= (this.y + this.height);\n };\n BBox.prototype.render = function (ctx, params) {\n if (params === void 0) { params = BBox.noParams; }\n ctx.save();\n if (params.resetTransform) {\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n }\n ctx.strokeStyle = params.strokeStyle || 'cyan';\n ctx.lineWidth = params.lineWidth || 1;\n ctx.strokeRect(this.x, this.y, this.width, this.height);\n if (params.label) {\n ctx.fillStyle = params.fillStyle || 'black';\n ctx.textBaseline = 'bottom';\n ctx.fillText(params.label, this.x, this.y);\n }\n ctx.restore();\n };\n BBox.noParams = {};\n return BBox;\n}());\nexport { BBox };\n","var __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nimport { BBox } from \"./bbox\";\n/**\n * As of Jan 8, 2019, Firefox still doesn't implement\n * `getTransform(): DOMMatrix;`\n * `setTransform(transform?: DOMMatrix2DInit)`\n * in the `CanvasRenderingContext2D`.\n * Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=928150\n * IE11 and Edge 44 also don't have the support.\n * Thus this class, to keep track of the current transform and\n * combine transformations.\n * Standards:\n * https://html.spec.whatwg.org/dev/canvas.html\n * https://www.w3.org/TR/geometry-1/\n */\nvar Matrix = /** @class */ (function () {\n function Matrix(elements) {\n if (elements === void 0) { elements = [1, 0, 0, 1, 0, 0]; }\n this.elements = elements;\n }\n Matrix.prototype.setElements = function (elements) {\n var e = this.elements;\n // `this.elements = elements.slice()` is 4-5 times slower\n // (in Chrome 71 and FF 64) than manually copying elements,\n // since slicing allocates new memory.\n // The performance of passing parameters individually\n // vs as an array is about the same in both browsers, so we\n // go with a single (array of elements) parameter, because\n // `setElements(elements)` and `setElements([a, b, c, d, e, f])`\n // calls give us roughly the same performance, versus\n // `setElements(...elements)` and `setElements(a, b, c, d, e, f)`,\n // where the spread operator causes a 20-30x performance drop\n // (30x when compiled to ES5's `.apply(this, elements)`\n // 20x when used natively).\n e[0] = elements[0];\n e[1] = elements[1];\n e[2] = elements[2];\n e[3] = elements[3];\n e[4] = elements[4];\n e[5] = elements[5];\n return this;\n };\n Matrix.prototype.setIdentityElements = function () {\n var e = this.elements;\n e[0] = 1;\n e[1] = 0;\n e[2] = 0;\n e[3] = 1;\n e[4] = 0;\n e[5] = 0;\n return this;\n };\n Object.defineProperty(Matrix.prototype, \"identity\", {\n get: function () {\n var e = this.elements;\n return e[0] === 1 && e[1] === 0 && e[2] === 0 &&\n e[3] === 1 && e[4] === 0 && e[5] === 0;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"a\", {\n get: function () {\n return this.elements[0];\n },\n set: function (value) {\n this.elements[0] = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"b\", {\n get: function () {\n return this.elements[1];\n },\n set: function (value) {\n this.elements[1] = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"c\", {\n get: function () {\n return this.elements[2];\n },\n set: function (value) {\n this.elements[2] = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"d\", {\n get: function () {\n return this.elements[3];\n },\n set: function (value) {\n this.elements[3] = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"e\", {\n get: function () {\n return this.elements[4];\n },\n set: function (value) {\n this.elements[4] = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"f\", {\n get: function () {\n return this.elements[5];\n },\n set: function (value) {\n this.elements[5] = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Performs the AxB matrix multiplication and saves the result\n * to `C`, if given, or to `A` otherwise.\n */\n Matrix.prototype.AxB = function (A, B, C) {\n var _a = __read(A, 6), m11 = _a[0], m12 = _a[1], m21 = _a[2], m22 = _a[3], m31 = _a[4], m32 = _a[5];\n var _b = __read(B, 6), o11 = _b[0], o12 = _b[1], o21 = _b[2], o22 = _b[3], o31 = _b[4], o32 = _b[5];\n C = C || A;\n C[0] = m11 * o11 + m21 * o12;\n C[1] = m12 * o11 + m22 * o12;\n C[2] = m11 * o21 + m21 * o22;\n C[3] = m12 * o21 + m22 * o22;\n C[4] = m11 * o31 + m21 * o32 + m31;\n C[5] = m12 * o31 + m22 * o32 + m32;\n };\n /**\n * The `other` matrix gets post-multiplied to the current matrix.\n * Returns the current matrix.\n * @param other\n */\n Matrix.prototype.multiplySelf = function (other) {\n this.AxB(this.elements, other.elements);\n return this;\n };\n /**\n * The `other` matrix gets post-multiplied to the current matrix.\n * Returns a new matrix.\n * @param other\n */\n Matrix.prototype.multiply = function (other) {\n var elements = new Array(6);\n this.AxB(this.elements, other.elements, elements);\n return new Matrix(elements);\n };\n Matrix.prototype.preMultiplySelf = function (other) {\n this.AxB(other.elements, this.elements, this.elements);\n return this;\n };\n /**\n * Returns the inverse of this matrix as a new matrix.\n */\n Matrix.prototype.inverse = function () {\n var _a = __read(this.elements, 6), a = _a[0], b = _a[1], c = _a[2], d = _a[3], e = _a[4], f = _a[5];\n var rD = 1 / (a * d - b * c); // reciprocal of determinant\n a *= rD;\n b *= rD;\n c *= rD;\n d *= rD;\n return new Matrix([d, -b, -c, a, c * f - d * e, b * e - a * f]);\n };\n /**\n * Save the inverse of this matrix to the given matrix.\n */\n Matrix.prototype.inverseTo = function (other) {\n var _a = __read(this.elements, 6), a = _a[0], b = _a[1], c = _a[2], d = _a[3], e = _a[4], f = _a[5];\n var rD = 1 / (a * d - b * c); // reciprocal of determinant\n a *= rD;\n b *= rD;\n c *= rD;\n d *= rD;\n other.setElements([d, -b, -c, a, c * f - d * e, b * e - a * f]);\n return this;\n };\n Matrix.prototype.invertSelf = function () {\n var elements = this.elements;\n var _a = __read(elements, 6), a = _a[0], b = _a[1], c = _a[2], d = _a[3], e = _a[4], f = _a[5];\n var rD = 1 / (a * d - b * c); // reciprocal of determinant\n a *= rD;\n b *= rD;\n c *= rD;\n d *= rD;\n elements[0] = d;\n elements[1] = -b;\n elements[2] = -c;\n elements[3] = a;\n elements[4] = c * f - d * e;\n elements[5] = b * e - a * f;\n return this;\n };\n Matrix.prototype.clone = function () {\n return new Matrix(this.elements.slice());\n };\n Matrix.prototype.transformPoint = function (x, y) {\n var e = this.elements;\n return {\n x: x * e[0] + y * e[2] + e[4],\n y: x * e[1] + y * e[3] + e[5]\n };\n };\n Matrix.prototype.transformBBox = function (bbox, radius, target) {\n if (radius === void 0) { radius = 0; }\n var elements = this.elements;\n var xx = elements[0];\n var xy = elements[1];\n var yx = elements[2];\n var yy = elements[3];\n var h_w = bbox.width * 0.5;\n var h_h = bbox.height * 0.5;\n var cx = bbox.x + h_w;\n var cy = bbox.y + h_h;\n var w, h;\n if (radius) {\n h_w -= radius;\n h_h -= radius;\n var sx = Math.sqrt(xx * xx + yx * yx);\n var sy = Math.sqrt(xy * xy + yy * yy);\n w = Math.abs(h_w * xx) + Math.abs(h_h * yx) + Math.abs(sx * radius);\n h = Math.abs(h_w * xy) + Math.abs(h_h * yy) + Math.abs(sy * radius);\n }\n else {\n w = Math.abs(h_w * xx) + Math.abs(h_h * yx);\n h = Math.abs(h_w * xy) + Math.abs(h_h * yy);\n }\n if (!target) {\n target = new BBox(0, 0, 0, 0);\n }\n target.x = cx * xx + cy * yx + elements[4] - w;\n target.y = cx * xy + cy * yy + elements[5] - h;\n target.width = w + w;\n target.height = h + h;\n return target;\n };\n Matrix.prototype.toContext = function (ctx) {\n // It's fair to say that matrix multiplications are not cheap.\n // However, updating path definitions on every frame isn't either, so\n // it may be cheaper to just translate paths. It's also fair to\n // say, that most paths will have to be re-rendered anyway, say\n // rectangle paths in a bar chart, where an animation would happen when\n // the data set changes and existing bars are morphed into new ones.\n // Or a pie chart, where old sectors are also morphed into new ones.\n // Same for the line chart. The only plausible case where translating\n // existing paths would be enough, is the scatter chart, where marker\n // icons, typically circles, stay the same size. But if circle radii\n // are bound to some data points, even circle paths would have to be\n // updated. And thus it makes sense to optimize for fewer matrix\n // transforms, where transform matrices of paths are mostly identity\n // matrices and `x`/`y`, `centerX`/`centerY` and similar properties\n // are used to define a path at specific coordinates. And only groups\n // are used to collectively apply a transform to a set of nodes.\n // If the matrix is mostly identity (95% of the time),\n // the `if (this.isIdentity)` check can make this call 3-4 times\n // faster on average: https://jsperf.com/matrix-check-first-vs-always-set\n if (this.identity) {\n return;\n }\n var e = this.elements;\n ctx.transform(e[0], e[1], e[2], e[3], e[4], e[5]);\n };\n Matrix.flyweight = function (elements) {\n if (elements) {\n if (elements instanceof Matrix) {\n Matrix.matrix.setElements(elements.elements);\n }\n else {\n Matrix.matrix.setElements(elements);\n }\n }\n else {\n Matrix.matrix.setIdentityElements();\n }\n return Matrix.matrix;\n };\n Matrix.matrix = new Matrix();\n return Matrix;\n}());\nexport { Matrix };\n","export function createId(instance) {\n var constructor = instance.constructor;\n var className = constructor.className;\n if (!className) {\n throw new Error(\"The \" + constructor + \" is missing the 'className' property.\");\n }\n return className + '-' + (constructor.id = (constructor.id || 0) + 1);\n}\n","var __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nimport { Matrix } from \"./matrix\";\nimport { createId } from \"../util/id\";\nexport var PointerEvents;\n(function (PointerEvents) {\n PointerEvents[PointerEvents[\"All\"] = 0] = \"All\";\n PointerEvents[PointerEvents[\"None\"] = 1] = \"None\";\n})(PointerEvents || (PointerEvents = {}));\n/**\n * Abstract scene graph node.\n * Each node can have zero or one parent and belong to zero or one scene.\n */\nvar Node = /** @class */ (function () {\n function Node() {\n /**\n * Unique node ID in the form `ClassName-NaturalNumber`.\n */\n this.id = createId(this);\n /**\n * Some number to identify this node, typically within a `Group` node.\n * Usually this will be some enum value used as a selector.\n */\n this.tag = NaN;\n /**\n * To simplify the type system (especially in Selections) we don't have the `Parent` node\n * (one that has children). Instead, we mimic HTML DOM, where any node can have children.\n * But we still need to distinguish regular leaf nodes from container leafs somehow.\n */\n this.isContainerNode = false;\n this._children = [];\n // Used to check for duplicate nodes.\n this.childSet = {}; // new Set()\n // These matrices may need to have package level visibility\n // for performance optimization purposes.\n this.matrix = new Matrix();\n this.inverseMatrix = new Matrix();\n this._dirtyTransform = false;\n this._scalingX = 1;\n this._scalingY = 1;\n /**\n * The center of scaling.\n * The default value of `null` means the scaling center will be\n * determined automatically, as the center of the bounding box\n * of a node.\n */\n this._scalingCenterX = null;\n this._scalingCenterY = null;\n this._rotationCenterX = null;\n this._rotationCenterY = null;\n /**\n * Rotation angle in radians.\n * The value is set as is. No normalization to the [-180, 180) or [0, 360)\n * interval is performed.\n */\n this._rotation = 0;\n this._translationX = 0;\n this._translationY = 0;\n /**\n * Each time a property of the node that effects how it renders changes\n * the `dirty` property of the node should be set to `true`. The change\n * to the `dirty` property of the node will propagate up to its parents\n * and eventually to the scene, at which point an animation frame callback\n * will be scheduled to rerender the scene and its nodes and reset the `dirty`\n * flags of all nodes and the {@link Scene._dirty | Scene} back to `false`.\n * Since changes to node properties are not rendered immediately, it's possible\n * to change as many properties on as many nodes as needed and the rendering\n * will still only happen once in the next animation frame callback.\n * The animation frame callback is only scheduled if it hasn't been already.\n */\n this._dirty = true;\n this._visible = true;\n this.dirtyZIndex = false;\n this._zIndex = 0;\n this.pointerEvents = PointerEvents.All;\n }\n /**\n * This is meaningfully faster than `instanceof` and should be the preferred way\n * of checking inside loops.\n * @param node\n */\n Node.isNode = function (node) {\n return node ? node.matrix !== undefined : false;\n };\n Node.prototype._setScene = function (value) {\n this._scene = value;\n var children = this.children;\n var n = children.length;\n for (var i = 0; i < n; i++) {\n children[i]._setScene(value);\n }\n };\n Object.defineProperty(Node.prototype, \"scene\", {\n get: function () {\n return this._scene;\n },\n enumerable: true,\n configurable: true\n });\n Node.prototype._setParent = function (value) {\n this._parent = value;\n };\n Object.defineProperty(Node.prototype, \"parent\", {\n get: function () {\n return this._parent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"children\", {\n get: function () {\n return this._children;\n },\n enumerable: true,\n configurable: true\n });\n Node.prototype.countChildren = function (depth) {\n if (depth === void 0) { depth = Node.MAX_SAFE_INTEGER; }\n if (depth <= 0) {\n return 0;\n }\n var children = this.children;\n var n = children.length;\n var size = n;\n for (var i = 0; i < n; i++) {\n size += children[i].countChildren(depth - 1);\n }\n return size;\n };\n /**\n * Appends one or more new node instances to this parent.\n * If one needs to:\n * - move a child to the end of the list of children\n * - move a child from one parent to another (including parents in other scenes)\n * one should use the {@link insertBefore} method instead.\n * @param nodes A node or nodes to append.\n */\n Node.prototype.append = function (nodes) {\n // Passing a single parameter to an open-ended version of `append`\n // would be 30-35% slower than this.\n if (Node.isNode(nodes)) {\n nodes = [nodes];\n }\n // The function takes an array rather than having open-ended\n // arguments like `...nodes: Node[]` because the latter is\n // transpiled to a function where the `arguments` object\n // is copied to a temporary array inside a loop.\n // So an array is created either way. And if we already have\n // an array of nodes we want to add, we have to use the prohibitively\n // expensive spread operator to pass it to the function,\n // and, on top of that, the copy of the `arguments` is still made.\n var n = nodes.length;\n for (var i = 0; i < n; i++) {\n var node = nodes[i];\n if (node.parent) {\n throw new Error(node + \" already belongs to another parent: \" + node.parent + \".\");\n }\n if (node.scene) {\n throw new Error(node + \" already belongs a scene: \" + node.scene + \".\");\n }\n if (this.childSet[node.id]) {\n // Cast to `any` to avoid `Property 'name' does not exist on type 'Function'`.\n throw new Error(\"Duplicate \" + node.constructor.name + \" node: \" + node);\n }\n this._children.push(node);\n this.childSet[node.id] = true;\n node._setParent(this);\n node._setScene(this.scene);\n }\n this.dirty = true;\n };\n Node.prototype.appendChild = function (node) {\n if (node.parent) {\n throw new Error(node + \" already belongs to another parent: \" + node.parent + \".\");\n }\n if (node.scene) {\n throw new Error(node + \" already belongs to a scene: \" + node.scene + \".\");\n }\n if (this.childSet[node.id]) {\n // Cast to `any` to avoid `Property 'name' does not exist on type 'Function'`.\n throw new Error(\"Duplicate \" + node.constructor.name + \" node: \" + node);\n }\n this._children.push(node);\n this.childSet[node.id] = true;\n node._setParent(this);\n node._setScene(this.scene);\n this.dirty = true;\n return node;\n };\n Node.prototype.removeChild = function (node) {\n if (node.parent === this) {\n var i = this.children.indexOf(node);\n if (i >= 0) {\n this._children.splice(i, 1);\n delete this.childSet[node.id];\n node._setParent();\n node._setScene();\n this.dirty = true;\n return node;\n }\n }\n throw new Error(\"The node to be removed is not a child of this node.\");\n };\n /**\n * Inserts the node `node` before the existing child node `nextNode`.\n * If `nextNode` is null, insert `node` at the end of the list of children.\n * If the `node` belongs to another parent, it is first removed.\n * Returns the `node`.\n * @param node\n * @param nextNode\n */\n Node.prototype.insertBefore = function (node, nextNode) {\n var parent = node.parent;\n if (node.parent) {\n node.parent.removeChild(node);\n }\n if (nextNode && nextNode.parent === this) {\n var i = this.children.indexOf(nextNode);\n if (i >= 0) {\n this._children.splice(i, 0, node);\n this.childSet[node.id] = true;\n node._setParent(this);\n node._setScene(this.scene);\n }\n else {\n throw new Error(nextNode + \" has \" + parent + \" as the parent, \"\n + \"but is not in its list of children.\");\n }\n this.dirty = true;\n }\n else {\n this.append(node);\n }\n return node;\n };\n Object.defineProperty(Node.prototype, \"nextSibling\", {\n get: function () {\n var parent = this.parent;\n if (parent) {\n var children = parent.children;\n var index = children.indexOf(this);\n if (index >= 0 && index <= children.length - 1) {\n return children[index + 1];\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Node.prototype.transformPoint = function (x, y) {\n var matrix = Matrix.flyweight(this.matrix);\n var parent = this.parent;\n while (parent) {\n matrix.preMultiplySelf(parent.matrix);\n parent = parent.parent;\n }\n return matrix.invertSelf().transformPoint(x, y);\n };\n Node.prototype.inverseTransformPoint = function (x, y) {\n var matrix = Matrix.flyweight(this.matrix);\n var parent = this.parent;\n while (parent) {\n matrix.preMultiplySelf(parent.matrix);\n parent = parent.parent;\n }\n return matrix.transformPoint(x, y);\n };\n Object.defineProperty(Node.prototype, \"dirtyTransform\", {\n get: function () {\n return this._dirtyTransform;\n },\n set: function (value) {\n this._dirtyTransform = value;\n if (value) {\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"scalingX\", {\n get: function () {\n return this._scalingX;\n },\n set: function (value) {\n if (this._scalingX !== value) {\n this._scalingX = value;\n this.dirtyTransform = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"scalingY\", {\n get: function () {\n return this._scalingY;\n },\n set: function (value) {\n if (this._scalingY !== value) {\n this._scalingY = value;\n this.dirtyTransform = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"scalingCenterX\", {\n get: function () {\n return this._scalingCenterX;\n },\n set: function (value) {\n if (this._scalingCenterX !== value) {\n this._scalingCenterX = value;\n this.dirtyTransform = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"scalingCenterY\", {\n get: function () {\n return this._scalingCenterY;\n },\n set: function (value) {\n if (this._scalingCenterY !== value) {\n this._scalingCenterY = value;\n this.dirtyTransform = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"rotationCenterX\", {\n get: function () {\n return this._rotationCenterX;\n },\n set: function (value) {\n if (this._rotationCenterX !== value) {\n this._rotationCenterX = value;\n this.dirtyTransform = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"rotationCenterY\", {\n get: function () {\n return this._rotationCenterY;\n },\n set: function (value) {\n if (this._rotationCenterY !== value) {\n this._rotationCenterY = value;\n this.dirtyTransform = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"rotation\", {\n get: function () {\n return this._rotation;\n },\n set: function (value) {\n if (this._rotation !== value) {\n this._rotation = value;\n this.dirtyTransform = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"rotationDeg\", {\n get: function () {\n return this.rotation / Math.PI * 180;\n },\n /**\n * For performance reasons the rotation angle's internal representation\n * is in radians. Therefore, don't expect to get the same number you set.\n * Even with integer angles about a quarter of them from 0 to 359 cannot\n * be converted to radians and back without precision loss.\n * For example:\n *\n * node.rotationDeg = 11;\n * console.log(node.rotationDeg); // 10.999999999999998\n *\n * @param value Rotation angle in degrees.\n */\n set: function (value) {\n this.rotation = value / 180 * Math.PI;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"translationX\", {\n get: function () {\n return this._translationX;\n },\n set: function (value) {\n if (this._translationX !== value) {\n this._translationX = value;\n this.dirtyTransform = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"translationY\", {\n get: function () {\n return this._translationY;\n },\n set: function (value) {\n if (this._translationY !== value) {\n this._translationY = value;\n this.dirtyTransform = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Node.prototype.containsPoint = function (x, y) {\n return false;\n };\n /**\n * Hit testing method.\n * Recursively checks if the given point is inside this node or any of its children.\n * Returns the first matching node or `undefined`.\n * Nodes that render later (show on top) are hit tested first.\n * @param x\n * @param y\n */\n Node.prototype.pickNode = function (x, y) {\n if (!this.visible || this.pointerEvents === PointerEvents.None || !this.containsPoint(x, y)) {\n return;\n }\n var children = this.children;\n if (children.length) {\n // Nodes added later should be hit-tested first,\n // as they are rendered on top of the previously added nodes.\n for (var i = children.length - 1; i >= 0; i--) {\n var hit = children[i].pickNode(x, y);\n if (hit) {\n return hit;\n }\n }\n }\n else if (!this.isContainerNode) { // a leaf node, but not a container leaf\n return this;\n }\n };\n Node.prototype.computeBBox = function () { return; };\n Node.prototype.computeBBoxCenter = function () {\n var bbox = this.computeBBox && this.computeBBox();\n if (bbox) {\n return [\n bbox.x + bbox.width * 0.5,\n bbox.y + bbox.height * 0.5\n ];\n }\n return [0, 0];\n };\n Node.prototype.computeTransformMatrix = function () {\n // TODO: transforms without center of scaling and rotation correspond directly\n // to `setAttribute('transform', 'translate(tx, ty) rotate(rDeg) scale(sx, sy)')`\n // in SVG. Our use cases will mostly require positioning elements (rects, circles)\n // within a group, rotating groups at right angles (e.g. for axis) and translating\n // groups. We shouldn't even need `scale(1, -1)` (invert vertically), since this\n // can be done using D3-like scales already by inverting the output range.\n // So for now, just assume that centers of scaling and rotation are at the origin.\n // const [bbcx, bbcy] = this.computeBBoxCenter();\n var _a = __read([0, 0], 2), bbcx = _a[0], bbcy = _a[1];\n var sx = this.scalingX;\n var sy = this.scalingY;\n var scx;\n var scy;\n if (sx === 1 && sy === 1) {\n scx = 0;\n scy = 0;\n }\n else {\n scx = this.scalingCenterX === null ? bbcx : this.scalingCenterX;\n scy = this.scalingCenterY === null ? bbcy : this.scalingCenterY;\n }\n var r = this.rotation;\n var cos = Math.cos(r);\n var sin = Math.sin(r);\n var rcx;\n var rcy;\n if (r === 0) {\n rcx = 0;\n rcy = 0;\n }\n else {\n rcx = this.rotationCenterX === null ? bbcx : this.rotationCenterX;\n rcy = this.rotationCenterY === null ? bbcy : this.rotationCenterY;\n }\n var tx = this.translationX;\n var ty = this.translationY;\n // The transform matrix `M` is a result of the following transformations:\n // 1) translate the center of scaling to the origin\n // 2) scale\n // 3) translate back\n // 4) translate the center of rotation to the origin\n // 5) rotate\n // 6) translate back\n // 7) translate\n // (7) (6) (5) (4) (3) (2) (1)\n // | 1 0 tx | | 1 0 rcx | | cos -sin 0 | | 1 0 -rcx | | 1 0 scx | | sx 0 0 | | 1 0 -scx |\n // M = | 0 1 ty | * | 0 1 rcy | * | sin cos 0 | * | 0 1 -rcy | * | 0 1 scy | * | 0 sy 0 | * | 0 1 -scy |\n // | 0 0 1 | | 0 0 1 | | 0 0 1 | | 0 0 1 | | 0 0 1 | | 0 0 0 | | 0 0 1 |\n // Translation after steps 1-4 above:\n var tx4 = scx * (1 - sx) - rcx;\n var ty4 = scy * (1 - sy) - rcy;\n this.dirtyTransform = false;\n this.matrix.setElements([\n cos * sx, sin * sx,\n -sin * sy, cos * sy,\n cos * tx4 - sin * ty4 + rcx + tx,\n sin * tx4 + cos * ty4 + rcy + ty\n ]).inverseTo(this.inverseMatrix);\n };\n Object.defineProperty(Node.prototype, \"dirty\", {\n get: function () {\n return this._dirty;\n },\n set: function (value) {\n // TODO: check if we are already dirty (e.g. if (this._dirty !== value))\n // if we are, then all parents and the scene have been\n // notified already, and we are doing redundant work\n // (but test if this is indeed the case)\n this._dirty = value;\n if (value) {\n if (this.parent) {\n this.parent.dirty = true;\n }\n else if (this.scene) {\n this.scene.dirty = true;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"visible\", {\n get: function () {\n return this._visible;\n },\n set: function (value) {\n if (this._visible !== value) {\n this._visible = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"zIndex\", {\n get: function () {\n return this._zIndex;\n },\n set: function (value) {\n if (this._zIndex !== value) {\n this._zIndex = value;\n if (this.parent) {\n this.parent.dirtyZIndex = true;\n }\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Node.MAX_SAFE_INTEGER = Math.pow(2, 53) - 1; // Number.MAX_SAFE_INTEGER\n return Node;\n}());\nexport { Node };\n","/**\n * Creates a new object with a `parent` as its prototype\n * and copies properties from the `child` into it.\n * @param parent\n * @param child\n */\nexport function chainObjects(parent, child) {\n var obj = Object.create(parent);\n for (var prop in child) {\n if (child.hasOwnProperty(prop)) {\n obj[prop] = child[prop];\n }\n }\n return obj;\n}\nexport function getValue(object, path, defaultValue) {\n var parts = Array.isArray(path) ? path : path.split('.');\n var value = object;\n try {\n parts.forEach(function (part) {\n value = value[part];\n });\n }\n catch (e) {\n if (arguments.length === 3) {\n value = defaultValue;\n }\n else {\n throw e;\n }\n }\n return value;\n}\nfunction emptyTarget(value) {\n return Array.isArray(value) ? [] : {};\n}\nexport function cloneUnlessOtherwiseSpecified(value, options) {\n return (options.clone !== false && options.isMergeableObject(value))\n ? deepMerge(emptyTarget(value), value, options)\n : value;\n}\nexport function defaultArrayMerge(target, source, options) {\n return target.concat(source).map(function (element) {\n return cloneUnlessOtherwiseSpecified(element, options);\n });\n}\nfunction getMergeFunction(key, options) {\n if (!options.customMerge) {\n return deepMerge;\n }\n var customMerge = options.customMerge(key);\n return typeof customMerge === 'function' ? customMerge : deepMerge;\n}\nfunction getEnumerableOwnPropertySymbols(target) {\n return Object.getOwnPropertySymbols\n ? Object.getOwnPropertySymbols(target).filter(function (symbol) {\n return target.propertyIsEnumerable(symbol);\n })\n : [];\n}\nfunction getKeys(target) {\n return Object.keys(target).concat(getEnumerableOwnPropertySymbols(target));\n}\nfunction propertyIsOnObject(object, property) {\n try {\n return property in object;\n }\n catch (_) {\n return false;\n }\n}\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n return propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n && !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n && Object.propertyIsEnumerable.call(target, key)); // and also unsafe if they're nonenumerable.\n}\nfunction mergeObject(target, source, options) {\n var destination = {};\n if (options.isMergeableObject(target)) {\n getKeys(target).forEach(function (key) {\n destination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n });\n }\n getKeys(source).forEach(function (key) {\n if (propertyIsUnsafe(target, key)) {\n return;\n }\n if (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n destination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n }\n else {\n destination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n }\n });\n return destination;\n}\nexport function defaultIsMergeableObject(value) {\n return isNonNullObject(value) && !isSpecial(value);\n}\nfunction isNonNullObject(value) {\n return !!value && typeof value === 'object';\n}\nfunction isSpecial(value) {\n var stringValue = Object.prototype.toString.call(value);\n return stringValue === '[object RegExp]' || stringValue === '[object Date]';\n}\nexport function deepMerge(target, source, options) {\n options = options || {};\n options.arrayMerge = options.arrayMerge || defaultArrayMerge;\n options.isMergeableObject = options.isMergeableObject || defaultIsMergeableObject;\n // cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n // implementations can use it. The caller may not replace it.\n options.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n var sourceIsArray = Array.isArray(source);\n var targetIsArray = Array.isArray(target);\n var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n if (!sourceAndTargetTypesMatch) {\n return cloneUnlessOtherwiseSpecified(source, options);\n }\n else if (sourceIsArray) {\n return options.arrayMerge(target, source, options);\n }\n else {\n return mergeObject(target, source, options);\n }\n}\nexport function isObject(value) {\n return typeof value === 'object' && !Array.isArray(value);\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Node } from \"../node\";\nimport { chainObjects } from \"../../util/object\";\nvar Shape = /** @class */ (function (_super) {\n __extends(Shape, _super);\n function Shape() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.lastInstanceId = 0;\n _this._fillOpacity = 1;\n _this._strokeOpacity = 1;\n _this._fill = Shape.defaultStyles.fill;\n /**\n * Note that `strokeStyle = null` means invisible stroke,\n * while `lineWidth = 0` means no stroke, and sometimes this can mean different things.\n * For example, a rect shape with an invisible stroke may not align to the pixel grid\n * properly because the stroke affects the rules of alignment, and arc shapes forming\n * a pie chart will have a gap between them if they have an invisible stroke, whereas\n * there would be not gap if there was no stroke at all.\n * The preferred way of making the stroke invisible is setting the `lineWidth` to zero,\n * unless specific looks that is achieved by having an invisible stroke is desired.\n */\n _this._stroke = Shape.defaultStyles.stroke;\n _this._strokeWidth = Shape.defaultStyles.strokeWidth;\n _this._lineDash = Shape.defaultStyles.lineDash;\n _this._lineDashOffset = Shape.defaultStyles.lineDashOffset;\n _this._lineCap = Shape.defaultStyles.lineCap;\n _this._lineJoin = Shape.defaultStyles.lineJoin;\n _this._opacity = Shape.defaultStyles.opacity;\n _this.onShadowChange = function () {\n _this.dirty = true;\n };\n _this._fillShadow = Shape.defaultStyles.fillShadow;\n _this._strokeShadow = Shape.defaultStyles.strokeShadow;\n return _this;\n }\n /**\n * Creates a light-weight instance of the given shape (that serves as a template).\n * The created instance only stores the properites set on the instance itself\n * and the rest of the properties come via the prototype chain from the template.\n * This can greatly reduce memory usage in cases where one has many simular shapes,\n * for example, circles of different size, position and color. The exact memory usage\n * reduction will depend on the size of the template and the number of own properties\n * set on its lightweight instances, but will typically be around an order of magnitude\n * or more.\n *\n * Note: template shapes are not supposed to be part of the scene graph (they should not\n * have a parent).\n *\n * @param template\n */\n Shape.createInstance = function (template) {\n var shape = Object.create(template);\n shape._setParent(undefined);\n shape.id = template.id + '-Instance-' + String(++template.lastInstanceId);\n return shape;\n };\n /**\n * Restores the default styles introduced by this subclass.\n */\n Shape.prototype.restoreOwnStyles = function () {\n var styles = this.constructor.defaultStyles;\n var keys = Object.getOwnPropertyNames(styles);\n // getOwnPropertyNames is about 2.5 times faster than\n // for..in with the hasOwnProperty check and in this\n // case, where most properties are inherited, can be\n // more then an order of magnitude faster.\n for (var i = 0, n = keys.length; i < n; i++) {\n var key = keys[i];\n this[key] = styles[key];\n }\n };\n Shape.prototype.restoreAllStyles = function () {\n var styles = this.constructor.defaultStyles;\n for (var property in styles) {\n this[property] = styles[property];\n }\n };\n /**\n * Restores the base class default styles that have been overridden by this subclass.\n */\n Shape.prototype.restoreOverriddenStyles = function () {\n var styles = this.constructor.defaultStyles;\n var protoStyles = Object.getPrototypeOf(styles);\n for (var property in styles) {\n if (styles.hasOwnProperty(property) && protoStyles.hasOwnProperty(property)) {\n this[property] = styles[property];\n }\n }\n };\n Object.defineProperty(Shape.prototype, \"fillOpacity\", {\n get: function () {\n return this._fillOpacity;\n },\n set: function (value) {\n if (this._fillOpacity !== value) {\n this._fillOpacity = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Shape.prototype, \"strokeOpacity\", {\n get: function () {\n return this._strokeOpacity;\n },\n set: function (value) {\n if (this._strokeOpacity !== value) {\n this._strokeOpacity = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Shape.prototype, \"fill\", {\n get: function () {\n return this._fill;\n },\n set: function (value) {\n if (this._fill !== value) {\n this._fill = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Shape.prototype, \"stroke\", {\n get: function () {\n return this._stroke;\n },\n set: function (value) {\n if (this._stroke !== value) {\n this._stroke = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Shape.prototype, \"strokeWidth\", {\n get: function () {\n return this._strokeWidth;\n },\n set: function (value) {\n if (this._strokeWidth !== value) {\n this._strokeWidth = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Shape.prototype, \"alignment\", {\n // An offset value to align to the pixel grid.\n get: function () {\n return Math.floor(this.strokeWidth) % 2 / 2;\n },\n enumerable: true,\n configurable: true\n });\n // Returns the aligned `start` or `length` value.\n // For example: `start` could be `y` and `length` could be `height` of a rectangle.\n Shape.prototype.align = function (alignment, start, length) {\n if (length != undefined) {\n return Math.floor(length) + Math.floor(start % 1 + length % 1);\n }\n return Math.floor(start) + alignment;\n };\n Object.defineProperty(Shape.prototype, \"lineDash\", {\n get: function () {\n return this._lineDash;\n },\n set: function (value) {\n var oldValue = this._lineDash;\n if (oldValue !== value) {\n if (oldValue && value && oldValue.length === value.length) {\n var identical = true;\n var n = value.length;\n for (var i = 0; i < n; i++) {\n if (oldValue[i] !== value[i]) {\n identical = false;\n break;\n }\n }\n if (identical) {\n return;\n }\n }\n this._lineDash = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Shape.prototype, \"lineDashOffset\", {\n get: function () {\n return this._lineDashOffset;\n },\n set: function (value) {\n if (this._lineDashOffset !== value) {\n this._lineDashOffset = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Shape.prototype, \"lineCap\", {\n get: function () {\n return this._lineCap;\n },\n set: function (value) {\n if (this._lineCap !== value) {\n this._lineCap = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Shape.prototype, \"lineJoin\", {\n get: function () {\n return this._lineJoin;\n },\n set: function (value) {\n if (this._lineJoin !== value) {\n this._lineJoin = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Shape.prototype, \"opacity\", {\n get: function () {\n return this._opacity;\n },\n set: function (value) {\n value = Math.min(1, Math.max(0, value));\n if (this._opacity !== value) {\n this._opacity = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Shape.prototype, \"fillShadow\", {\n get: function () {\n return this._fillShadow;\n },\n set: function (value) {\n var oldValue = this._fillShadow;\n if (oldValue !== value) {\n if (oldValue) {\n oldValue.removeEventListener('change', this.onShadowChange);\n }\n if (value) {\n value.addEventListener('change', this.onShadowChange);\n }\n this._fillShadow = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Shape.prototype, \"strokeShadow\", {\n get: function () {\n return this._strokeShadow;\n },\n set: function (value) {\n var oldValue = this._strokeShadow;\n if (oldValue !== value) {\n if (oldValue) {\n oldValue.removeEventListener('change', this.onShadowChange);\n }\n if (value) {\n value.addEventListener('change', this.onShadowChange);\n }\n this._strokeShadow = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Shape.prototype.fillStroke = function (ctx) {\n if (!this.scene) {\n return;\n }\n var pixelRatio = this.scene.canvas.pixelRatio || 1;\n var globalAlpha = ctx.globalAlpha;\n if (this.fill) {\n ctx.fillStyle = this.fill;\n ctx.globalAlpha = globalAlpha * this.opacity * this.fillOpacity;\n // The canvas context scaling (depends on the device's pixel ratio)\n // has no effect on shadows, so we have to account for the pixel ratio\n // manually here.\n var fillShadow = this.fillShadow;\n if (fillShadow && fillShadow.enabled) {\n ctx.shadowColor = fillShadow.color;\n ctx.shadowOffsetX = fillShadow.xOffset * pixelRatio;\n ctx.shadowOffsetY = fillShadow.yOffset * pixelRatio;\n ctx.shadowBlur = fillShadow.blur * pixelRatio;\n }\n ctx.fill();\n }\n ctx.shadowColor = 'rgba(0, 0, 0, 0)';\n if (this.stroke && this.strokeWidth) {\n ctx.strokeStyle = this.stroke;\n ctx.globalAlpha = globalAlpha * this.opacity * this.strokeOpacity;\n ctx.lineWidth = this.strokeWidth;\n if (this.lineDash) {\n ctx.setLineDash(this.lineDash);\n }\n if (this.lineDashOffset) {\n ctx.lineDashOffset = this.lineDashOffset;\n }\n if (this.lineCap) {\n ctx.lineCap = this.lineCap;\n }\n if (this.lineJoin) {\n ctx.lineJoin = this.lineJoin;\n }\n var strokeShadow = this.strokeShadow;\n if (strokeShadow && strokeShadow.enabled) {\n ctx.shadowColor = strokeShadow.color;\n ctx.shadowOffsetX = strokeShadow.xOffset * pixelRatio;\n ctx.shadowOffsetY = strokeShadow.yOffset * pixelRatio;\n ctx.shadowBlur = strokeShadow.blur * pixelRatio;\n }\n ctx.stroke();\n }\n };\n Shape.prototype.containsPoint = function (x, y) {\n return this.isPointInPath(x, y);\n };\n /**\n * Defaults for style properties. Note that properties that affect the position\n * and shape of the node are not considered style properties, for example:\n * `x`, `y`, `width`, `height`, `radius`, `rotation`, etc.\n * Can be used to reset to the original styling after some custom styling\n * has been applied (using the `restoreOwnStyles` and `restoreAllStyles` methods).\n * These static defaults are meant to be inherited by subclasses.\n */\n Shape.defaultStyles = chainObjects({}, {\n fill: 'black',\n stroke: undefined,\n strokeWidth: 0,\n lineDash: undefined,\n lineDashOffset: 0,\n lineCap: undefined,\n lineJoin: undefined,\n opacity: 1,\n fillShadow: undefined,\n strokeShadow: undefined\n });\n return Shape;\n}(Node));\nexport { Shape };\n","/**\n * Wraps the native Canvas element and overrides its CanvasRenderingContext2D to\n * provide resolution independent rendering based on `window.devicePixelRatio`.\n */\nvar HdpiCanvas = /** @class */ (function () {\n // The width/height attributes of the Canvas element default to\n // 300/150 according to w3.org.\n function HdpiCanvas(document, width, height) {\n if (document === void 0) { document = window.document; }\n if (width === void 0) { width = 600; }\n if (height === void 0) { height = 300; }\n this._container = undefined;\n // `NaN` is deliberate here, so that overrides are always applied\n // and the `resetTransform` inside the `resize` method works in IE11.\n this._pixelRatio = NaN;\n this._width = 0;\n this._height = 0;\n this.document = document;\n this.element = document.createElement('canvas');\n this.context = this.element.getContext('2d');\n this.element.style.userSelect = 'none';\n this.element.style.display = 'block';\n this.setPixelRatio();\n this.resize(width, height);\n }\n Object.defineProperty(HdpiCanvas.prototype, \"container\", {\n get: function () {\n return this._container;\n },\n set: function (value) {\n if (this._container !== value) {\n this.remove();\n if (value) {\n value.appendChild(this.element);\n }\n this._container = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n HdpiCanvas.prototype.remove = function () {\n var parentNode = this.element.parentNode;\n if (parentNode != null) {\n parentNode.removeChild(this.element);\n }\n };\n HdpiCanvas.prototype.destroy = function () {\n this.element.remove();\n this._canvas = undefined;\n Object.freeze(this);\n };\n HdpiCanvas.prototype.toImage = function () {\n var img = this.document.createElement('img');\n img.src = this.getDataURL();\n return img;\n };\n HdpiCanvas.prototype.getDataURL = function (type) {\n return this.element.toDataURL(type);\n };\n /**\n * @param fileName The name of the file upon save. The `.png` extension is going to be added automatically.\n */\n HdpiCanvas.prototype.download = function (fileName) {\n fileName = ((fileName || '').trim() || 'image') + '.png';\n // Chart images saved as JPEG are a few times larger at 50% quality than PNG images,\n // so we don't support saving to JPEG.\n var type = 'image/png';\n var dataUrl = this.getDataURL(type);\n var document = this.document;\n var a = document.createElement('a');\n a.href = dataUrl;\n a.download = fileName;\n a.style.display = 'none';\n document.body.appendChild(a); // required for the `click` to work in Firefox\n a.click();\n document.body.removeChild(a);\n };\n Object.defineProperty(HdpiCanvas.prototype, \"pixelRatio\", {\n get: function () {\n return this._pixelRatio;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Changes the pixel ratio of the Canvas element to the given value,\n * or uses the window.devicePixelRatio (default), then resizes the Canvas\n * element accordingly (default).\n */\n HdpiCanvas.prototype.setPixelRatio = function (ratio) {\n var pixelRatio = ratio || window.devicePixelRatio;\n if (pixelRatio === this.pixelRatio) {\n return;\n }\n HdpiCanvas.overrideScale(this.context, pixelRatio);\n this._pixelRatio = pixelRatio;\n this.resize(this.width, this.height);\n };\n Object.defineProperty(HdpiCanvas.prototype, \"pixelated\", {\n get: function () {\n return this.element.style.imageRendering === 'pixelated';\n },\n set: function (value) {\n this.element.style.imageRendering = value ? 'pixelated' : 'auto';\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(HdpiCanvas.prototype, \"width\", {\n get: function () {\n return this._width;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(HdpiCanvas.prototype, \"height\", {\n get: function () {\n return this._height;\n },\n enumerable: true,\n configurable: true\n });\n HdpiCanvas.prototype.resize = function (width, height) {\n if (!(width > 0 && height > 0)) {\n return;\n }\n var _a = this, element = _a.element, context = _a.context, pixelRatio = _a.pixelRatio;\n element.width = Math.round(width * pixelRatio);\n element.height = Math.round(height * pixelRatio);\n element.style.width = width + 'px';\n element.style.height = height + 'px';\n context.resetTransform();\n this._width = width;\n this._height = height;\n };\n Object.defineProperty(HdpiCanvas, \"textMeasuringContext\", {\n get: function () {\n if (this._textMeasuringContext) {\n return this._textMeasuringContext;\n }\n var canvas = document.createElement('canvas');\n return this._textMeasuringContext = canvas.getContext('2d');\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(HdpiCanvas, \"svgText\", {\n get: function () {\n if (this._svgText) {\n return this._svgText;\n }\n var xmlns = 'http://www.w3.org/2000/svg';\n var svg = document.createElementNS(xmlns, 'svg');\n svg.setAttribute('width', '100');\n svg.setAttribute('height', '100');\n // Add a descriptive class name in case someone sees this SVG element\n // in devtools and wonders about its purpose:\n if (svg.classList) {\n svg.classList.add('text-measuring-svg');\n }\n else {\n svg.setAttribute('class', 'text-measuring-svg');\n }\n svg.style.position = 'absolute';\n svg.style.top = '-1000px';\n svg.style.visibility = 'hidden';\n var svgText = document.createElementNS(xmlns, 'text');\n svgText.setAttribute('x', '0');\n svgText.setAttribute('y', '30');\n svgText.setAttribute('text', 'black');\n svg.appendChild(svgText);\n document.body.appendChild(svg);\n this._svgText = svgText;\n return svgText;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(HdpiCanvas, \"has\", {\n get: function () {\n if (this._has) {\n return this._has;\n }\n var isChrome = navigator.userAgent.indexOf('Chrome') > -1;\n var isFirefox = navigator.userAgent.indexOf('Firefox') > -1;\n var isSafari = !isChrome && navigator.userAgent.indexOf('Safari') > -1;\n return this._has = Object.freeze({\n textMetrics: this.textMeasuringContext.measureText('test').actualBoundingBoxDescent !== undefined\n // Firefox implemented advanced TextMetrics object in v74:\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1102584\n // but it's buggy, so we'll keed using the SVG for text measurement in Firefox for now.\n && !isFirefox && !isSafari,\n getTransform: this.textMeasuringContext.getTransform !== undefined\n });\n },\n enumerable: true,\n configurable: true\n });\n HdpiCanvas.measureText = function (text, font, textBaseline, textAlign) {\n var ctx = this.textMeasuringContext;\n ctx.font = font;\n ctx.textBaseline = textBaseline;\n ctx.textAlign = textAlign;\n return ctx.measureText(text);\n };\n /**\n * Returns the width and height of the measured text.\n * @param text The single-line text to measure.\n * @param font The font shorthand string.\n */\n HdpiCanvas.getTextSize = function (text, font) {\n if (this.has.textMetrics) {\n var ctx = this.textMeasuringContext;\n ctx.font = font;\n var metrics = ctx.measureText(text);\n return {\n width: metrics.width,\n height: metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent\n };\n }\n else {\n return this.measureSvgText(text, font);\n }\n };\n HdpiCanvas.measureSvgText = function (text, font) {\n var cache = this.textSizeCache;\n var fontCache = cache[font];\n // Note: consider not caching the size of numeric strings.\n // For example: if (isNaN(+text)) { // skip\n if (fontCache) {\n var size_1 = fontCache[text];\n if (size_1) {\n return size_1;\n }\n }\n else {\n cache[font] = {};\n }\n var svgText = this.svgText;\n svgText.style.font = font;\n svgText.textContent = text;\n // `getBBox` returns an instance of `SVGRect` with the same `width` and `height`\n // measurements as `DOMRect` instance returned by the `getBoundingClientRect`.\n // But the `SVGRect` instance has half the properties of the `DOMRect`,\n // so we use the `getBBox` method.\n var bbox = svgText.getBBox();\n var size = {\n width: bbox.width,\n height: bbox.height\n };\n cache[font][text] = size;\n return size;\n };\n HdpiCanvas.overrideScale = function (ctx, scale) {\n var depth = 0;\n var overrides = {\n save: function () {\n this.$save();\n depth++;\n },\n restore: function () {\n if (depth > 0) {\n this.$restore();\n depth--;\n }\n },\n setTransform: function (a, b, c, d, e, f) {\n this.$setTransform(a * scale, b * scale, c * scale, d * scale, e * scale, f * scale);\n },\n resetTransform: function () {\n // As of Jan 8, 2019, `resetTransform` is still an \"experimental technology\",\n // and doesn't work in IE11 and Edge 44.\n this.$setTransform(scale, 0, 0, scale, 0, 0);\n this.save();\n depth = 0;\n // The scale above will be impossible to restore,\n // because we override the `ctx.restore` above and\n // check `depth` there.\n }\n };\n for (var name_1 in overrides) {\n if (overrides.hasOwnProperty(name_1)) {\n // Save native methods under prefixed names,\n // if this hasn't been done by the previous overrides already.\n if (!ctx['$' + name_1]) {\n ctx['$' + name_1] = ctx[name_1];\n }\n // Replace native methods with overrides,\n // or previous overrides with the new ones.\n ctx[name_1] = overrides[name_1];\n }\n }\n };\n HdpiCanvas.textSizeCache = {};\n return HdpiCanvas;\n}());\nexport { HdpiCanvas };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Shape } from \"./shape\";\nimport { chainObjects } from \"../../util/object\";\nimport { BBox } from \"../bbox\";\nimport { HdpiCanvas } from \"../../canvas/hdpiCanvas\";\nvar Text = /** @class */ (function (_super) {\n __extends(Text, _super);\n function Text() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._x = 0;\n _this._y = 0;\n _this.lineBreakRegex = /\\r?\\n/g;\n _this.lines = [];\n _this._text = '';\n _this._dirtyFont = true;\n _this._fontSize = 10;\n _this._fontFamily = 'sans-serif';\n _this._textAlign = Text.defaultStyles.textAlign;\n _this._textBaseline = Text.defaultStyles.textBaseline;\n _this._lineHeight = 14;\n return _this;\n }\n Object.defineProperty(Text.prototype, \"x\", {\n get: function () {\n return this._x;\n },\n set: function (value) {\n if (this._x !== value) {\n this._x = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"y\", {\n get: function () {\n return this._y;\n },\n set: function (value) {\n if (this._y !== value) {\n this._y = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Text.prototype.splitText = function () {\n this.lines = this._text.split(this.lineBreakRegex);\n };\n Object.defineProperty(Text.prototype, \"text\", {\n get: function () {\n return this._text;\n },\n set: function (value) {\n var str = String(value); // `value` can be an object here\n if (this._text !== str) {\n this._text = str;\n this.splitText();\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"font\", {\n get: function () {\n if (this.dirtyFont) {\n this.dirtyFont = false;\n this._font = getFont(this.fontSize, this.fontFamily, this.fontStyle, this.fontWeight);\n }\n return this._font;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"dirtyFont\", {\n get: function () {\n return this._dirtyFont;\n },\n set: function (value) {\n if (this._dirtyFont !== value) {\n this._dirtyFont = value;\n if (value) {\n this.dirty = true;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"fontStyle\", {\n get: function () {\n return this._fontStyle;\n },\n set: function (value) {\n if (this._fontStyle !== value) {\n this._fontStyle = value;\n this.dirtyFont = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"fontWeight\", {\n get: function () {\n return this._fontWeight;\n },\n set: function (value) {\n if (this._fontWeight !== value) {\n this._fontWeight = value;\n this.dirtyFont = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"fontSize\", {\n get: function () {\n return this._fontSize;\n },\n set: function (value) {\n if (!isFinite(value)) {\n value = 10;\n }\n if (this._fontSize !== value) {\n this._fontSize = value;\n this.dirtyFont = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"fontFamily\", {\n get: function () {\n return this._fontFamily;\n },\n set: function (value) {\n if (this._fontFamily !== value) {\n this._fontFamily = value;\n this.dirtyFont = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"textAlign\", {\n get: function () {\n return this._textAlign;\n },\n set: function (value) {\n if (this._textAlign !== value) {\n this._textAlign = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"textBaseline\", {\n get: function () {\n return this._textBaseline;\n },\n set: function (value) {\n if (this._textBaseline !== value) {\n this._textBaseline = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"lineHeight\", {\n get: function () {\n return this._lineHeight;\n },\n set: function (value) {\n // Multi-line text is complicated because:\n // - Canvas does not support it natively, so we have to implement it manually\n // - need to know the height of each line -> need to parse the font shorthand ->\n // generally impossible to do because font size may not be in pixels\n // - so, need to measure the text instead, each line individually -> expensive\n // - or make the user provide the line height manually for multi-line text\n // - computeBBox should use the lineHeight for multi-line text but ignore it otherwise\n // - textBaseline kind of loses its meaning for multi-line text\n if (this._lineHeight !== value) {\n this._lineHeight = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Text.prototype.computeBBox = function () {\n return HdpiCanvas.has.textMetrics\n ? this.getPreciseBBox()\n : this.getApproximateBBox();\n };\n Text.prototype.getPreciseBBox = function () {\n var metrics = HdpiCanvas.measureText(this.text, this.font, this.textBaseline, this.textAlign);\n return new BBox(this.x - metrics.actualBoundingBoxLeft, this.y - metrics.actualBoundingBoxAscent, metrics.width, metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent);\n };\n Text.prototype.getApproximateBBox = function () {\n var size = HdpiCanvas.getTextSize(this.text, this.font);\n var _a = this, x = _a.x, y = _a.y;\n switch (this.textAlign) {\n case 'end':\n case 'right':\n x -= size.width;\n break;\n case 'center':\n x -= size.width / 2;\n }\n switch (this.textBaseline) {\n case 'alphabetic':\n y -= size.height * 0.7;\n break;\n case 'middle':\n y -= size.height * 0.45;\n break;\n case 'ideographic':\n y -= size.height;\n break;\n case 'hanging':\n y -= size.height * 0.2;\n break;\n case 'bottom':\n y -= size.height;\n break;\n }\n return new BBox(x, y, size.width, size.height);\n };\n Text.prototype.isPointInPath = function (x, y) {\n var point = this.transformPoint(x, y);\n var bbox = this.computeBBox();\n return bbox ? bbox.containsPoint(point.x, point.y) : false;\n };\n Text.prototype.isPointInStroke = function (x, y) {\n return false;\n };\n Text.prototype.render = function (ctx) {\n if (!this.lines.length || !this.scene) {\n return;\n }\n if (this.dirtyTransform) {\n this.computeTransformMatrix();\n }\n // this.matrix.transformBBox(this.computeBBox!()).render(ctx); // debug\n this.matrix.toContext(ctx);\n var _a = this, fill = _a.fill, stroke = _a.stroke, strokeWidth = _a.strokeWidth;\n ctx.font = this.font;\n ctx.textAlign = this.textAlign;\n ctx.textBaseline = this.textBaseline;\n var pixelRatio = this.scene.canvas.pixelRatio || 1;\n var globalAlpha = ctx.globalAlpha;\n if (fill) {\n ctx.fillStyle = fill;\n ctx.globalAlpha = globalAlpha * this.opacity * this.fillOpacity;\n var _b = this, fillShadow = _b.fillShadow, text = _b.text, x = _b.x, y = _b.y;\n if (fillShadow && fillShadow.enabled) {\n ctx.shadowColor = fillShadow.color;\n ctx.shadowOffsetX = fillShadow.xOffset * pixelRatio;\n ctx.shadowOffsetY = fillShadow.yOffset * pixelRatio;\n ctx.shadowBlur = fillShadow.blur * pixelRatio;\n }\n ctx.fillText(text, x, y);\n }\n if (stroke && strokeWidth) {\n ctx.strokeStyle = stroke;\n ctx.lineWidth = strokeWidth;\n ctx.globalAlpha = globalAlpha * this.opacity * this.strokeOpacity;\n var _c = this, lineDash = _c.lineDash, lineDashOffset = _c.lineDashOffset, lineCap = _c.lineCap, lineJoin = _c.lineJoin, strokeShadow = _c.strokeShadow, text = _c.text, x = _c.x, y = _c.y;\n if (lineDash) {\n ctx.setLineDash(lineDash);\n }\n if (lineDashOffset) {\n ctx.lineDashOffset = lineDashOffset;\n }\n if (lineCap) {\n ctx.lineCap = lineCap;\n }\n if (lineJoin) {\n ctx.lineJoin = lineJoin;\n }\n if (strokeShadow && strokeShadow.enabled) {\n ctx.shadowColor = strokeShadow.color;\n ctx.shadowOffsetX = strokeShadow.xOffset * pixelRatio;\n ctx.shadowOffsetY = strokeShadow.yOffset * pixelRatio;\n ctx.shadowBlur = strokeShadow.blur * pixelRatio;\n }\n ctx.strokeText(text, x, y);\n }\n this.dirty = false;\n };\n Text.className = 'Text';\n Text.defaultStyles = chainObjects(Shape.defaultStyles, {\n textAlign: 'start',\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 10,\n fontFamily: 'sans-serif',\n textBaseline: 'alphabetic'\n });\n return Text;\n}(Shape));\nexport { Text };\nexport function getFont(fontSize, fontFamily, fontStyle, fontWeight) {\n return [\n fontStyle || '',\n fontWeight || '',\n fontSize + 'px',\n fontFamily\n ].join(' ').trim();\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Padding } from \"./util/padding\";\nimport { Text } from \"./scene/shape/text\";\nimport { PointerEvents } from \"./scene/node\";\nimport { Observable, reactive } from \"./util/observable\";\nvar Caption = /** @class */ (function (_super) {\n __extends(Caption, _super);\n function Caption() {\n var _this = _super.call(this) || this;\n _this.node = new Text();\n _this.enabled = false;\n _this.padding = new Padding(10);\n var node = _this.node;\n node.textAlign = 'center';\n node.textBaseline = 'top';\n node.pointerEvents = PointerEvents.None;\n return _this;\n }\n Object.defineProperty(Caption.prototype, \"text\", {\n get: function () {\n return this.node.text;\n },\n set: function (value) {\n if (this.node.text !== value) {\n this.node.text = value;\n this.fireEvent({ type: 'change' });\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Caption.prototype, \"fontStyle\", {\n get: function () {\n return this.node.fontStyle;\n },\n set: function (value) {\n if (this.node.fontStyle !== value) {\n this.node.fontStyle = value;\n this.fireEvent({ type: 'change' });\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Caption.prototype, \"fontWeight\", {\n get: function () {\n return this.node.fontWeight;\n },\n set: function (value) {\n if (this.node.fontWeight !== value) {\n this.node.fontWeight = value;\n this.fireEvent({ type: 'change' });\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Caption.prototype, \"fontSize\", {\n get: function () {\n return this.node.fontSize;\n },\n set: function (value) {\n if (this.node.fontSize !== value) {\n this.node.fontSize = value;\n this.fireEvent({ type: 'change' });\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Caption.prototype, \"fontFamily\", {\n get: function () {\n return this.node.fontFamily;\n },\n set: function (value) {\n if (this.node.fontFamily !== value) {\n this.node.fontFamily = value;\n this.fireEvent({ type: 'change' });\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Caption.prototype, \"color\", {\n get: function () {\n return this.node.fill;\n },\n set: function (value) {\n if (this.node.fill !== value) {\n this.node.fill = value;\n this.fireEvent({ type: 'change' });\n }\n },\n enumerable: true,\n configurable: true\n });\n __decorate([\n reactive('change')\n ], Caption.prototype, \"enabled\", void 0);\n __decorate([\n reactive('change')\n ], Caption.prototype, \"padding\", void 0);\n return Caption;\n}(Observable));\nexport { Caption };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nexport default function (a, b, count) {\n var step = tickStep(a, b, count);\n a = Math.ceil(a / step) * step;\n b = Math.floor(b / step) * step + step / 2;\n // Add half a step here so that the array returned by `range` includes the last tick.\n return range(a, b, step);\n}\nvar e10 = Math.sqrt(50);\nvar e5 = Math.sqrt(10);\nvar e2 = Math.sqrt(2);\nexport function tickStep(a, b, count) {\n var rawStep = Math.abs(b - a) / Math.max(0, count);\n var step = Math.pow(10, Math.floor(Math.log(rawStep) / Math.LN10)); // = Math.log10(rawStep)\n var error = rawStep / step;\n if (error >= e10) {\n step *= 10;\n }\n else if (error >= e5) {\n step *= 5;\n }\n else if (error >= e2) {\n step *= 2;\n }\n return b < a ? -step : step;\n}\nexport function tickIncrement(a, b, count) {\n var rawStep = (b - a) / Math.max(0, count);\n var power = Math.floor(Math.log(rawStep) / Math.LN10);\n var error = rawStep / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\nvar NumericTicks = /** @class */ (function (_super) {\n __extends(NumericTicks, _super);\n function NumericTicks(fractionDigits, elements) {\n var _this = _super.call(this) || this;\n if (elements) {\n for (var i = 0, n = elements.length; i < n; i++) {\n _this[i] = elements[i];\n }\n }\n _this.fractionDigits = fractionDigits;\n return _this;\n }\n return NumericTicks;\n}(Array));\nexport { NumericTicks };\nfunction range(a, b, step) {\n if (step === void 0) { step = 1; }\n var absStep = Math.abs(step);\n var fractionDigits = (absStep > 0 && absStep < 1)\n ? Math.abs(Math.floor(Math.log(absStep) / Math.LN10))\n : 0;\n var f = Math.pow(10, fractionDigits);\n var n = Math.max(0, Math.ceil((b - a) / step)) || 0;\n var values = new NumericTicks(fractionDigits);\n for (var i = 0; i < n; i++) {\n var value = a + step * i;\n values[i] = Math.round(value * f) / f;\n }\n return values;\n}\n","export default function (a, b) {\n a = +a;\n b = +b;\n return function (t) { return a * (1 - t) + b * t; };\n}\n","var __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar Color = /** @class */ (function () {\n /**\n * Every color component should be in the [0, 1] range.\n * Some easing functions (such as elastic easing) can overshoot the target value by some amount.\n * So, when animating colors, if the source or target color components are already near\n * or at the edge of the allowed [0, 1] range, it is possible for the intermediate color\n * component value to end up outside of that range mid-animation. For this reason the constructor\n * performs range checking/constraining.\n * @param r Red component.\n * @param g Green component.\n * @param b Blue component.\n * @param a Alpha (opacity) component.\n */\n function Color(r, g, b, a) {\n if (a === void 0) { a = 1; }\n // NaN is treated as 0.\n this.r = Math.min(1, Math.max(0, r || 0));\n this.g = Math.min(1, Math.max(0, g || 0));\n this.b = Math.min(1, Math.max(0, b || 0));\n this.a = Math.min(1, Math.max(0, a || 0));\n }\n /**\n * The given string can be in one of the following formats:\n * - #rgb\n * - #rrggbb\n * - rgb(r, g, b)\n * - rgba(r, g, b, a)\n * - CSS color name such as 'white', 'orange', 'cyan', etc.\n * @param str\n */\n Color.fromString = function (str) {\n // hexadecimal notation\n if (str.indexOf('#') >= 0) { // there can be some leading whitespace\n return Color.fromHexString(str);\n }\n // color name\n var hex = Color.nameToHex[str];\n if (hex) {\n return Color.fromHexString(hex);\n }\n // rgb(a) notation\n if (str.indexOf('rgb') >= 0) {\n return Color.fromRgbaString(str);\n }\n throw new Error(\"Invalid color string: '\" + str + \"'\");\n };\n // See https://drafts.csswg.org/css-color/#hex-notation\n Color.parseHex = function (input) {\n input = input.replace(/ /g, '').slice(1);\n var parts;\n switch (input.length) {\n case 6:\n case 8:\n parts = [];\n for (var i = 0; i < input.length; i += 2) {\n parts.push(parseInt(\"\" + input[i] + input[i + 1], 16));\n }\n break;\n case 3:\n case 4:\n parts = input.split('').map(function (p) { return parseInt(p, 16); }).map(function (p) { return p + p * 16; });\n break;\n }\n if (parts.length >= 3) {\n if (parts.every(function (p) { return p >= 0; })) {\n if (parts.length === 3) {\n parts.push(255);\n }\n return parts;\n }\n }\n };\n Color.fromHexString = function (str) {\n var values = Color.parseHex(str);\n if (values) {\n var _a = __read(values, 4), r = _a[0], g = _a[1], b = _a[2], a = _a[3];\n return new Color(r / 255, g / 255, b / 255, a / 255);\n }\n throw new Error(\"Malformed hexadecimal color string: '\" + str + \"'\");\n };\n Color.stringToRgba = function (str) {\n // Find positions of opening and closing parentheses.\n var _a = __read([NaN, NaN], 2), po = _a[0], pc = _a[1];\n for (var i = 0; i < str.length; i++) {\n var c = str[i];\n if (!po && c === '(') {\n po = i;\n }\n else if (c === ')') {\n pc = i;\n break;\n }\n }\n var contents = po && pc && str.substring(po + 1, pc);\n if (!contents) {\n return;\n }\n var parts = contents.split(',');\n var rgba = [];\n for (var i = 0; i < parts.length; i++) {\n var part = parts[i];\n var value = parseFloat(part);\n if (isNaN(value)) {\n return;\n }\n if (part.indexOf('%') >= 0) { // percentage r, g, or b value\n value = Math.max(0, Math.min(100, value));\n value /= 100;\n }\n else {\n if (i === 3) { // alpha component\n value = Math.max(0, Math.min(1, value));\n }\n else { // absolute r, g, or b value\n value = Math.max(0, Math.min(255, value));\n value /= 255;\n }\n }\n rgba.push(value);\n }\n return rgba;\n };\n Color.fromRgbaString = function (str) {\n var rgba = Color.stringToRgba(str);\n if (rgba) {\n if (rgba.length === 3) {\n return new Color(rgba[0], rgba[1], rgba[2]);\n }\n else if (rgba.length === 4) {\n return new Color(rgba[0], rgba[1], rgba[2], rgba[3]);\n }\n }\n throw new Error(\"Malformed rgb/rgba color string: '\" + str + \"'\");\n };\n Color.fromArray = function (arr) {\n if (arr.length === 4) {\n return new Color(arr[0], arr[1], arr[2], arr[3]);\n }\n if (arr.length === 3) {\n return new Color(arr[0], arr[1], arr[2]);\n }\n throw new Error('The given array should contain 3 or 4 color components (numbers).');\n };\n Color.fromHSB = function (h, s, b, alpha) {\n if (alpha === void 0) { alpha = 1; }\n var rgb = Color.HSBtoRGB(h, s, b);\n return new Color(rgb[0], rgb[1], rgb[2], alpha);\n };\n Color.padHex = function (str) {\n // Can't use `padStart(2, '0')` here because of IE.\n return str.length === 1 ? '0' + str : str;\n };\n Color.prototype.toHexString = function () {\n var hex = '#'\n + Color.padHex(Math.round(this.r * 255).toString(16))\n + Color.padHex(Math.round(this.g * 255).toString(16))\n + Color.padHex(Math.round(this.b * 255).toString(16));\n if (this.a < 1) {\n hex += Color.padHex(Math.round(this.a * 255).toString(16));\n }\n return hex;\n };\n Color.prototype.toRgbaString = function (fractionDigits) {\n if (fractionDigits === void 0) { fractionDigits = 3; }\n var components = [\n Math.round(this.r * 255),\n Math.round(this.g * 255),\n Math.round(this.b * 255)\n ];\n var k = Math.pow(10, fractionDigits);\n if (this.a !== 1) {\n components.push(Math.round(this.a * k) / k);\n return \"rgba(\" + components.join(', ') + \")\";\n }\n return \"rgb(\" + components.join(', ') + \")\";\n };\n Color.prototype.toString = function () {\n if (this.a === 1) {\n return this.toHexString();\n }\n return this.toRgbaString();\n };\n Color.prototype.toHSB = function () {\n return Color.RGBtoHSB(this.r, this.g, this.b);\n };\n /**\n * Converts the given RGB triple to an array of HSB (HSV) components.\n * The hue component will be `NaN` for achromatic colors.\n */\n Color.RGBtoHSB = function (r, g, b) {\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n var S = max !== 0 ? (max - min) / max : 0;\n var H = NaN;\n // min == max, means all components are the same\n // and the color is a shade of gray with no hue (H is NaN)\n if (min !== max) {\n var delta = max - min;\n var rc = (max - r) / delta;\n var gc = (max - g) / delta;\n var bc = (max - b) / delta;\n if (r === max) {\n H = bc - gc;\n }\n else if (g === max) {\n H = 2.0 + rc - bc;\n }\n else {\n H = 4.0 + gc - rc;\n }\n H /= 6.0;\n if (H < 0) {\n H = H + 1.0;\n }\n }\n return [H * 360, S, max];\n };\n /**\n * Converts the given HSB (HSV) triple to an array of RGB components.\n */\n Color.HSBtoRGB = function (H, S, B) {\n if (isNaN(H)) {\n H = 0;\n }\n H = (((H % 360) + 360) % 360) / 360; // normalize hue to [0, 360] interval, then scale to [0, 1]\n var r = 0;\n var g = 0;\n var b = 0;\n if (S === 0) {\n r = g = b = B;\n }\n else {\n var h = (H - Math.floor(H)) * 6;\n var f = h - Math.floor(h);\n var p = B * (1 - S);\n var q = B * (1 - S * f);\n var t = B * (1 - (S * (1 - f)));\n switch (h >> 0) { // discard the floating point part of the number\n case 0:\n r = B;\n g = t;\n b = p;\n break;\n case 1:\n r = q;\n g = B;\n b = p;\n break;\n case 2:\n r = p;\n g = B;\n b = t;\n break;\n case 3:\n r = p;\n g = q;\n b = B;\n break;\n case 4:\n r = t;\n g = p;\n b = B;\n break;\n case 5:\n r = B;\n g = p;\n b = q;\n break;\n }\n }\n return [r, g, b];\n };\n Color.prototype.derive = function (hueShift, saturationFactor, brightnessFactor, opacityFactor) {\n var hsb = Color.RGBtoHSB(this.r, this.g, this.b);\n var b = hsb[2];\n if (b == 0 && brightnessFactor > 1.0) {\n b = 0.05;\n }\n var h = (((hsb[0] + hueShift) % 360) + 360) % 360;\n var s = Math.max(Math.min(hsb[1] * saturationFactor, 1.0), 0.0);\n b = Math.max(Math.min(b * brightnessFactor, 1.0), 0.0);\n var a = Math.max(Math.min(this.a * opacityFactor, 1.0), 0.0);\n var rgba = Color.HSBtoRGB(h, s, b);\n rgba.push(a);\n return Color.fromArray(rgba);\n };\n Color.prototype.brighter = function () {\n return this.derive(0, 1.0, 1.0 / 0.7, 1.0);\n };\n Color.prototype.darker = function () {\n return this.derive(0, 1.0, 0.7, 1.0);\n };\n /**\n * CSS Color Module Level 4:\n * https://drafts.csswg.org/css-color/#named-colors\n */\n Color.nameToHex = Object.freeze({\n aliceblue: '#F0F8FF',\n antiquewhite: '#FAEBD7',\n aqua: '#00FFFF',\n aquamarine: '#7FFFD4',\n azure: '#F0FFFF',\n beige: '#F5F5DC',\n bisque: '#FFE4C4',\n black: '#000000',\n blanchedalmond: '#FFEBCD',\n blue: '#0000FF',\n blueviolet: '#8A2BE2',\n brown: '#A52A2A',\n burlywood: '#DEB887',\n cadetblue: '#5F9EA0',\n chartreuse: '#7FFF00',\n chocolate: '#D2691E',\n coral: '#FF7F50',\n cornflowerblue: '#6495ED',\n cornsilk: '#FFF8DC',\n crimson: '#DC143C',\n cyan: '#00FFFF',\n darkblue: '#00008B',\n darkcyan: '#008B8B',\n darkgoldenrod: '#B8860B',\n darkgray: '#A9A9A9',\n darkgreen: '#006400',\n darkgrey: '#A9A9A9',\n darkkhaki: '#BDB76B',\n darkmagenta: '#8B008B',\n darkolivegreen: '#556B2F',\n darkorange: '#FF8C00',\n darkorchid: '#9932CC',\n darkred: '#8B0000',\n darksalmon: '#E9967A',\n darkseagreen: '#8FBC8F',\n darkslateblue: '#483D8B',\n darkslategray: '#2F4F4F',\n darkslategrey: '#2F4F4F',\n darkturquoise: '#00CED1',\n darkviolet: '#9400D3',\n deeppink: '#FF1493',\n deepskyblue: '#00BFFF',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1E90FF',\n firebrick: '#B22222',\n floralwhite: '#FFFAF0',\n forestgreen: '#228B22',\n fuchsia: '#FF00FF',\n gainsboro: '#DCDCDC',\n ghostwhite: '#F8F8FF',\n gold: '#FFD700',\n goldenrod: '#DAA520',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#ADFF2F',\n grey: '#808080',\n honeydew: '#F0FFF0',\n hotpink: '#FF69B4',\n indianred: '#CD5C5C',\n indigo: '#4B0082',\n ivory: '#FFFFF0',\n khaki: '#F0E68C',\n lavender: '#E6E6FA',\n lavenderblush: '#FFF0F5',\n lawngreen: '#7CFC00',\n lemonchiffon: '#FFFACD',\n lightblue: '#ADD8E6',\n lightcoral: '#F08080',\n lightcyan: '#E0FFFF',\n lightgoldenrodyellow: '#FAFAD2',\n lightgray: '#D3D3D3',\n lightgreen: '#90EE90',\n lightgrey: '#D3D3D3',\n lightpink: '#FFB6C1',\n lightsalmon: '#FFA07A',\n lightseagreen: '#20B2AA',\n lightskyblue: '#87CEFA',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#B0C4DE',\n lightyellow: '#FFFFE0',\n lime: '#00FF00',\n limegreen: '#32CD32',\n linen: '#FAF0E6',\n magenta: '#FF00FF',\n maroon: '#800000',\n mediumaquamarine: '#66CDAA',\n mediumblue: '#0000CD',\n mediumorchid: '#BA55D3',\n mediumpurple: '#9370DB',\n mediumseagreen: '#3CB371',\n mediumslateblue: '#7B68EE',\n mediumspringgreen: '#00FA9A',\n mediumturquoise: '#48D1CC',\n mediumvioletred: '#C71585',\n midnightblue: '#191970',\n mintcream: '#F5FFFA',\n mistyrose: '#FFE4E1',\n moccasin: '#FFE4B5',\n navajowhite: '#FFDEAD',\n navy: '#000080',\n oldlace: '#FDF5E6',\n olive: '#808000',\n olivedrab: '#6B8E23',\n orange: '#FFA500',\n orangered: '#FF4500',\n orchid: '#DA70D6',\n palegoldenrod: '#EEE8AA',\n palegreen: '#98FB98',\n paleturquoise: '#AFEEEE',\n palevioletred: '#DB7093',\n papayawhip: '#FFEFD5',\n peachpuff: '#FFDAB9',\n peru: '#CD853F',\n pink: '#FFC0CB',\n plum: '#DDA0DD',\n powderblue: '#B0E0E6',\n purple: '#800080',\n rebeccapurple: '#663399',\n red: '#FF0000',\n rosybrown: '#BC8F8F',\n royalblue: '#4169E1',\n saddlebrown: '#8B4513',\n salmon: '#FA8072',\n sandybrown: '#F4A460',\n seagreen: '#2E8B57',\n seashell: '#FFF5EE',\n sienna: '#A0522D',\n silver: '#C0C0C0',\n skyblue: '#87CEEB',\n slateblue: '#6A5ACD',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#FFFAFA',\n springgreen: '#00FF7F',\n steelblue: '#4682B4',\n tan: '#D2B48C',\n teal: '#008080',\n thistle: '#D8BFD8',\n tomato: '#FF6347',\n turquoise: '#40E0D0',\n violet: '#EE82EE',\n wheat: '#F5DEB3',\n white: '#FFFFFF',\n whitesmoke: '#F5F5F5',\n yellow: '#FFFF00',\n yellowgreen: '#9ACD32'\n });\n return Color;\n}());\nexport { Color };\n","import number from \"./number\";\nimport { Color } from \"../util/color\";\nexport default function (a, b) {\n if (typeof a === 'string') {\n try {\n a = Color.fromString(a);\n }\n catch (e) {\n a = Color.fromArray([0, 0, 0]);\n }\n }\n if (typeof b === 'string') {\n try {\n b = Color.fromString(b);\n }\n catch (e) {\n b = Color.fromArray([0, 0, 0]);\n }\n }\n var red = number(a.r, b.r);\n var green = number(a.g, b.g);\n var blue = number(a.b, b.b);\n var alpha = number(a.a, b.a);\n return function (t) {\n return Color.fromArray([red(t), green(t), blue(t), alpha(t)]).toRgbaString();\n };\n}\n","import constant from \"./constant\";\nimport number from \"./number\";\nimport date from \"./date\";\nimport array from \"./array\";\nimport object from \"./object\";\nimport color from \"./color\";\nimport { Color } from \"../util/color\";\nexport default function (a, b) {\n var t = typeof b;\n var c;\n if (b == null || t === 'boolean') {\n return constant(b);\n }\n if (t === 'number') {\n return number(a, b);\n }\n if (t === 'string') {\n try {\n c = Color.fromString(b);\n b = c;\n return color(a, b);\n }\n catch (e) {\n // return string(a, b);\n }\n }\n if (b instanceof Color) {\n return color(a, b);\n }\n if (b instanceof Date) {\n return date(a, b);\n }\n if (Array.isArray(b)) {\n return array(a, b);\n }\n if (typeof b.valueOf !== 'function' && typeof b.toString !== 'function' || isNaN(b)) {\n return object(a, b);\n }\n return number(a, b);\n}\n","export default (function (x) { return function () { return x; }; });\n","export default function (a, b) {\n var date = new Date;\n var msA = +a;\n var msB = +b;\n return function (t) {\n date.setTime(msA * (1 - t) + msB * t);\n return date;\n };\n}\n","import value from \"./value\";\nexport default function (a, b) {\n var nb = b ? b.length : 0;\n var na = a ? Math.min(nb, a.length) : 0;\n var x = new Array(na);\n var c = new Array(nb);\n var i;\n for (i = 0; i < na; ++i) {\n x[i] = value(a[i], b[i]);\n }\n for (; i < nb; ++i) {\n c[i] = b[i];\n }\n return function (t) {\n for (i = 0; i < na; ++i) {\n c[i] = x[i](t);\n }\n return c;\n };\n}\n","import value from \"./value\";\nexport default function (a, b) {\n var i = {};\n var c = {};\n var k;\n if (a === null || typeof a !== 'object') {\n a = {};\n }\n if (b === null || typeof b !== 'object') {\n b = {};\n }\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n }\n else {\n c[k] = b[k];\n }\n }\n return function (t) {\n for (k in i) {\n c[k] = i[k](t);\n }\n return c;\n };\n}\n","export function ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","var __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nimport interpolateValue from \"../interpolate/value\";\nimport interpolateNumber from \"../interpolate/number\";\nimport { bisectRight } from \"../util/bisect\";\nimport { ascending } from \"../util/compare\";\nvar constant = function (x) { return function () { return x; }; };\nvar identity = function (x) { return x; };\nexport function clamper(domain) {\n var _a;\n var a = domain[0];\n var b = domain[domain.length - 1];\n if (a > b) {\n _a = __read([b, a], 2), a = _a[0], b = _a[1];\n }\n return function (x) { return Math.max(a, Math.min(b, x)); };\n}\nvar ContinuousScale = /** @class */ (function () {\n function ContinuousScale() {\n /**\n * The output value of the scale for `undefined` or `NaN` input values.\n */\n this.unknown = undefined;\n this.clamper = clamper;\n this._clamp = identity;\n this._domain = [0, 1];\n this._range = [0, 1];\n this.transform = identity; // transforms domain value\n this.untransform = identity; // untransforms domain value\n this._interpolate = interpolateValue;\n this.rescale();\n }\n Object.defineProperty(ContinuousScale.prototype, \"clamp\", {\n get: function () {\n return this._clamp !== identity;\n },\n set: function (value) {\n this._clamp = value ? this.clamper(this.domain) : identity;\n },\n enumerable: true,\n configurable: true\n });\n ContinuousScale.prototype.setDomain = function (values) {\n this._domain = Array.prototype.map.call(values, function (v) { return +v; });\n if (this._clamp !== identity) {\n this._clamp = this.clamper(this.domain);\n }\n this.rescale();\n };\n ContinuousScale.prototype.getDomain = function () {\n return this._domain.slice();\n };\n Object.defineProperty(ContinuousScale.prototype, \"domain\", {\n get: function () {\n return this.getDomain();\n },\n set: function (values) {\n this.setDomain(values);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ContinuousScale.prototype, \"range\", {\n get: function () {\n return this._range.slice();\n },\n set: function (values) {\n this._range = Array.prototype.slice.call(values);\n this.rescale();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ContinuousScale.prototype, \"interpolate\", {\n get: function () {\n return this._interpolate;\n },\n set: function (value) {\n this._interpolate = value;\n this.rescale();\n },\n enumerable: true,\n configurable: true\n });\n ContinuousScale.prototype.rescale = function () {\n if (Math.min(this.domain.length, this.range.length) > 2) {\n this.piecewise = this.polymap;\n }\n else {\n this.piecewise = this.bimap;\n }\n this.output = undefined;\n this.input = undefined;\n };\n /**\n * Returns a function that converts `x` in `[a, b]` to `t` in `[0, 1]`. Non-clamping.\n * @param a\n * @param b\n */\n ContinuousScale.prototype.normalize = function (a, b) {\n return (b -= (a = +a))\n ? function (x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n };\n ContinuousScale.prototype.bimap = function (domain, range, interpolate) {\n var x0 = domain[0];\n var x1 = domain[1];\n var y0 = range[0];\n var y1 = range[1];\n var xt;\n var ty;\n if (x1 < x0) {\n xt = this.normalize(x1, x0);\n ty = interpolate(y1, y0);\n }\n else {\n xt = this.normalize(x0, x1);\n ty = interpolate(y0, y1);\n }\n return function (x) { return ty(xt(x)); }; // domain value x --> t in [0, 1] --> range value y\n };\n ContinuousScale.prototype.polymap = function (domain, range, interpolate) {\n var _this = this;\n // number of segments in the polylinear scale\n var n = Math.min(domain.length, range.length) - 1;\n if (domain[n] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n // deinterpolators from domain segment value to t\n var dt = Array.from({ length: n }, function (_, i) { return _this.normalize(domain[i], domain[i + 1]); });\n // reinterpolators from t to range segment value\n var tr = Array.from({ length: n }, function (_, i) { return interpolate(range[i], range[i + 1]); });\n return function (x) {\n var i = bisectRight(domain, x, ascending, 1, n) - 1; // Find the domain segment that `x` belongs to.\n // This also tells us which deinterpolator/reinterpolator pair to use.\n return tr[i](dt[i](x));\n };\n };\n ContinuousScale.prototype.convert = function (x, clamper) {\n x = +x;\n if (isNaN(x)) {\n return this.unknown;\n }\n if (!this.output) {\n this.output = this.piecewise(this.domain.map(this.transform), this.range, this.interpolate);\n }\n var clamp = clamper ? clamper(this.domain) : this._clamp;\n return this.output(this.transform(clamp(x)));\n };\n ContinuousScale.prototype.invert = function (y) {\n if (!this.input) {\n this.input = this.piecewise(this.range, this.domain.map(this.transform), interpolateNumber);\n }\n return this._clamp(this.untransform(this.input(y)));\n };\n return ContinuousScale;\n}());\nexport { ContinuousScale };\n","import { tickStep } from './ticks';\nfunction formatDefault(x, p) {\n var xs = x.toPrecision(p);\n out: for (var n = xs.length, i = 1, i0 = -1, i1 = 0; i < n; ++i) {\n switch (xs[i]) {\n case '.':\n i0 = i1 = i;\n break;\n case '0':\n if (i0 === 0)\n i0 = i;\n i1 = i;\n break;\n case 'e': break out;\n default:\n if (i0 > 0)\n i0 = 0;\n break;\n }\n }\n return i0 > 0 ? xs.slice(0, i0) + xs.slice(i1 + 1) : xs;\n}\nvar formatTypes = {\n '': formatDefault,\n // Multiply by 100, and then decimal notation with a percent sign.\n '%': function (x, p) { return (x * 100).toFixed(p); },\n // Binary notation, rounded to integer.\n 'b': function (x) { return Math.round(x).toString(2); },\n // Converts the integer to the corresponding unicode character before printing.\n 'c': function (x) { return String(x); },\n // Decimal notation, rounded to integer.\n 'd': formatDecimal,\n // Exponent notation.\n 'e': function (x, p) { return x.toExponential(p); },\n // Fixed point notation.\n 'f': function (x, p) { return x.toFixed(p); },\n // Either decimal or exponent notation, rounded to significant digits.\n 'g': function (x, p) { return x.toPrecision(p); },\n // Octal notation, rounded to integer.\n 'o': function (x) { return Math.round(x).toString(8); },\n // Multiply by 100, round to significant digits, and then decimal notation with a percent sign.\n 'p': function (x, p) { return formatRounded(x * 100, p); },\n // Decimal notation, rounded to significant digits.\n 'r': formatRounded,\n // Decimal notation with a SI prefix, rounded to significant digits.\n 's': formatPrefixAuto,\n // Hexadecimal notation, using upper-case letters, rounded to integer.\n 'X': function (x) { return Math.round(x).toString(16).toUpperCase(); },\n // Hexadecimal notation, using lower-case letters, rounded to integer.\n 'x': function (x) { return Math.round(x).toString(16); }\n};\nvar prefixes = ['y', 'z', 'a', 'f', 'p', 'n', '\\xB5', 'm', '', 'k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y'];\n/**\n * [[fill]align][sign][#][0][width][grouping_option][.precision][type]\n */\nvar FormatSpecifier = /** @class */ (function () {\n function FormatSpecifier(specifier) {\n if (specifier instanceof FormatSpecifier) {\n this.fill = specifier.fill;\n this.align = specifier.align;\n this.sign = specifier.sign;\n this.symbol = specifier.symbol;\n this.zero = specifier.zero;\n this.width = specifier.width;\n this.comma = specifier.comma;\n this.precision = specifier.precision;\n this.trim = specifier.trim;\n this.type = specifier.type;\n this.string = specifier.string;\n }\n else {\n this.fill = specifier.fill === undefined ? ' ' : String(specifier.fill);\n this.align = specifier.align === undefined ? '>' : String(specifier.align);\n this.sign = specifier.sign === undefined ? '-' : String(specifier.sign);\n this.symbol = specifier.symbol === undefined ? '' : String(specifier.symbol);\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? '' : String(specifier.type);\n this.string = specifier.string;\n }\n }\n return FormatSpecifier;\n}());\nexport { FormatSpecifier };\n// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar formatRegEx = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\nvar interpolateRegEx = /(#\\{(.*?)\\})/g;\nexport function makeFormatSpecifier(specifier) {\n if (specifier instanceof FormatSpecifier) {\n return new FormatSpecifier(specifier);\n }\n var found = false;\n var string = specifier.replace(interpolateRegEx, function () {\n if (!found) {\n specifier = arguments[2];\n found = true;\n }\n return '#{}';\n });\n var match = formatRegEx.exec(specifier);\n if (!match) {\n throw new Error(\"Invalid format: \" + specifier);\n }\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10],\n string: found ? string : undefined\n });\n}\nexport function tickFormat(start, stop, count, specifier) {\n var step = tickStep(start, stop, count);\n var formatSpecifier = makeFormatSpecifier(specifier == undefined ? ',f' : specifier);\n var precision;\n switch (formatSpecifier.type) {\n case 's': {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (formatSpecifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) {\n formatSpecifier.precision = precision;\n }\n return formatPrefix(formatSpecifier, value);\n }\n case '':\n case 'e':\n case 'g':\n case 'p':\n case 'r': {\n if (formatSpecifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) {\n formatSpecifier.precision = precision - +(formatSpecifier.type === 'e');\n }\n break;\n }\n case 'f':\n case '%': {\n if (formatSpecifier.precision == null && !isNaN(precision = precisionFixed(step))) {\n formatSpecifier.precision = precision - +(formatSpecifier.type === '%') * 2;\n }\n break;\n }\n }\n return format(formatSpecifier);\n}\nvar prefixExponent;\nfunction formatPrefixAuto(x, p) {\n if (p === void 0) { p = 0; }\n var d = formatDecimalParts(x, p);\n if (!d) {\n return String(x);\n }\n var coefficient = d[0];\n var exponent = d[1];\n prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3;\n var i = exponent - prefixExponent + 1;\n var n = coefficient.length;\n if (i === n) {\n return coefficient;\n }\n else {\n if (i > n) {\n return coefficient + new Array(i - n + 1).join('0');\n }\n if (i > 0) {\n return coefficient.slice(0, i) + '.' + coefficient.slice(i);\n }\n else {\n var parts = formatDecimalParts(x, Math.max(0, p + i - 1));\n return '0.' + new Array(1 - i).join('0') + parts[0]; // less than 1y!\n }\n }\n}\nfunction formatDecimal(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString('en').replace(/,/g, '')\n : x.toString(10);\n}\nfunction formatGroup(grouping, thousands) {\n return function (value, width) {\n var t = [];\n var i = value.length;\n var j = 0;\n var g = grouping[0];\n var length = 0;\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) {\n g = Math.max(1, width - length);\n }\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) {\n break;\n }\n g = grouping[j = (j + 1) % grouping.length];\n }\n return t.reverse().join(thousands);\n };\n}\nexport function formatNumerals(numerals) {\n return function (value) { return value.replace(/[0-9]/g, function (i) { return numerals[+i]; }); };\n}\n// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nfunction formatTrim(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1 = 0; i < n; ++i) {\n switch (s[i]) {\n case '.':\n i0 = i1 = i;\n break;\n case '0':\n if (i0 === 0)\n i0 = i;\n i1 = i;\n break;\n default:\n if (!+s[i])\n break out;\n if (i0 > 0)\n i0 = 0;\n break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\nfunction formatRounded(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) {\n return String(x);\n }\n var coefficient = d[0];\n var exponent = d[1];\n if (exponent < 0) {\n return '0.' + new Array(-exponent).join('0') + coefficient;\n }\n else {\n if (coefficient.length > exponent + 1) {\n return coefficient.slice(0, exponent + 1) + '.' + coefficient.slice(exponent + 1);\n }\n else {\n return coefficient + new Array(exponent - coefficient.length + 2).join('0');\n }\n }\n}\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns ['123', 0].\nexport function formatDecimalParts(x, p) {\n var sx = p ? x.toExponential(p - 1) : x.toExponential();\n var i = sx.indexOf('e');\n if (i < 0) { // NaN, ±Infinity\n return undefined;\n }\n var coefficient = sx.slice(0, i);\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +sx.slice(i + 1)\n ];\n}\nfunction identity(x) {\n return x;\n}\nexport var formatDefaultLocale;\nexport var format;\nexport var formatPrefix;\ndefaultLocale({\n thousands: ',',\n grouping: [3],\n currency: ['$', '']\n});\nfunction defaultLocale(definition) {\n formatDefaultLocale = formatLocale(definition);\n format = formatDefaultLocale.format;\n formatPrefix = formatDefaultLocale.formatPrefix;\n}\nfunction exponent(x) {\n var parts = formatDecimalParts(Math.abs(x));\n if (parts) {\n return parts[1];\n }\n return NaN;\n}\nfunction precisionFixed(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\nfunction precisionPrefix(step, value) {\n var x = Math.floor(exponent(value) / 3);\n x = Math.min(8, x);\n x = Math.max(-8, x);\n return Math.max(0, x * 3 - exponent(Math.abs(step)));\n}\nfunction precisionRound(step, max) {\n step = Math.abs(step);\n max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\nexport function formatLocale(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined\n ? identity\n : formatGroup(Array.prototype.map.call(locale.grouping, Number), String(locale.thousands));\n var currencyPrefix = locale.currency === undefined ? '' : String(locale.currency[0]);\n var currencySuffix = locale.currency === undefined ? '' : String(locale.currency[1]);\n var decimal = locale.decimal === undefined ? '.' : String(locale.decimal);\n var numerals = locale.numerals === undefined\n ? identity\n : formatNumerals(Array.prototype.map.call(locale.numerals, String));\n var percent = locale.percent === undefined ? '%' : String(locale.percent);\n var minus = locale.minus === undefined ? '\\u2212' : String(locale.minus);\n var nan = locale.nan === undefined ? 'NaN' : String(locale.nan);\n function newFormat(specifier) {\n var formatSpecifier = makeFormatSpecifier(specifier);\n var fill = formatSpecifier.fill;\n var align = formatSpecifier.align;\n var sign = formatSpecifier.sign;\n var symbol = formatSpecifier.symbol;\n var zero = formatSpecifier.zero;\n var width = formatSpecifier.width;\n var comma = formatSpecifier.comma;\n var precision = formatSpecifier.precision;\n var trim = formatSpecifier.trim;\n var type = formatSpecifier.type;\n // The 'n' type is an alias for ',g'.\n if (type === 'n') {\n comma = true;\n type = 'g';\n }\n else if (!formatTypes[type]) { // The '' type, and any invalid type, is an alias for '.12~g'.\n if (precision === undefined) {\n precision = 12;\n }\n trim = true;\n type = 'g';\n }\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === '0' && align === '=')) {\n zero = true;\n fill = '0';\n align = '=';\n }\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === '$' ? currencyPrefix : symbol === '#' && /[boxX]/.test(type) ? '0' + type.toLowerCase() : '';\n var suffix = symbol === '$' ? currencySuffix : /[%p]/.test(type) ? percent : '';\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type];\n var maybeSuffix = /[defgprs%]/.test(type);\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n if (precision === undefined) {\n precision = 6;\n }\n else if (/[gprs]/.test(type)) {\n precision = Math.max(1, Math.min(21, precision));\n }\n else {\n precision = Math.max(0, Math.min(20, precision));\n }\n function format(x) {\n var valuePrefix = prefix;\n var valueSuffix = suffix;\n var value;\n if (type === 'c') {\n valueSuffix = formatType(+x) + valueSuffix;\n value = '';\n }\n else {\n var nx = +x;\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = x < 0 || 1 / nx < 0;\n // Perform the initial formatting.\n value = isNaN(nx) ? nan : formatType(Math.abs(nx), precision);\n // Trim insignificant zeros.\n if (trim) {\n value = formatTrim(value);\n }\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== '+') {\n valueNegative = false;\n }\n // Compute the prefix and suffix.\n var signPrefix = valueNegative\n ? (sign === '(' ? sign : minus)\n : (sign === '-' || sign === '(' ? '' : sign);\n var signSuffix = valueNegative && sign === '(' ? ')' : '';\n valuePrefix = signPrefix + valuePrefix;\n valueSuffix = (type === 's' ? prefixes[8 + prefixExponent / 3] : '') + valueSuffix + signSuffix;\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n for (var i = 0, n = value.length; i < n; i++) {\n var c = value.charCodeAt(i);\n if (48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n // If the fill character is not '0', grouping is applied before padding.\n if (comma && !zero)\n value = group(value, Infinity);\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length;\n var padding = length < width ? new Array(width - length + 1).join(fill) : '';\n // If the fill character is '0', grouping is applied after padding.\n if (comma && zero) {\n value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity);\n padding = '';\n }\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case '<':\n value = valuePrefix + value + valueSuffix + padding;\n break;\n case '=':\n value = valuePrefix + padding + value + valueSuffix;\n break;\n case '^':\n value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length);\n break;\n default:\n value = padding + valuePrefix + value + valueSuffix;\n break;\n }\n var string = formatSpecifier.string;\n if (string) {\n return string.replace(interpolateRegEx, function () { return numerals(value); });\n }\n return numerals(value);\n }\n return format;\n }\n function formatPrefix(specifier, value) {\n var formatSpecifier = makeFormatSpecifier(specifier);\n formatSpecifier.type = 'f';\n var f = newFormat(formatSpecifier);\n var e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3;\n var k = Math.pow(10, -e);\n var prefix = prefixes[8 + e / 3];\n return function (value) {\n return f(k * +value) + prefix;\n };\n }\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import { ascending } from \"./compare\";\n/**\n * Returns the insertion point for `x` in array to maintain sorted order.\n * The arguments `lo` and `hi` may be used to specify a subset of the array which should be considered;\n * by default the entire array is used. If `x` is already present in array, the insertion point will be before\n * (to the left of) any existing entries. The return value is suitable for use as the first argument to `splice`\n * assuming that array is already sorted. The returned insertion point `i` partitions the array into two halves\n * so that all `v < x` for `v` in `array.slice(lo, i)` for the left side and all `v >= x` for `v` in `array.slice(i, hi)`\n * for the right side.\n * @param list\n * @param x\n * @param comparator\n * @param lo\n * @param hi\n */\nexport function bisectLeft(list, x, comparator, lo, hi) {\n if (lo === void 0) { lo = 0; }\n if (hi === void 0) { hi = list.length; }\n while (lo < hi) {\n var mid = (lo + hi) >>> 1;\n if (comparator(list[mid], x) < 0) { // list[mid] < x\n lo = mid + 1;\n }\n else {\n hi = mid;\n }\n }\n return lo;\n}\nexport function bisectRight(list, x, comparator, lo, hi) {\n if (lo === void 0) { lo = 0; }\n if (hi === void 0) { hi = list.length; }\n while (lo < hi) {\n var mid = (lo + hi) >>> 1;\n if (comparator(list[mid], x) > 0) { // list[mid] > x\n hi = mid;\n }\n else {\n lo = mid + 1;\n }\n }\n return lo;\n}\n/**\n * A specialized version of `bisectLeft` that works with the arrays whose elements cannot be compared directly.\n * The map function is used instead to produce a comparable value for a given array element, then the values\n * returned by the map are compared using the `ascendingComparator`.\n * @param list\n * @param x\n * @param map\n * @param lo\n * @param hi\n */\nexport function complexBisectLeft(list, x, map, lo, hi) {\n if (lo === void 0) { lo = 0; }\n if (hi === void 0) { hi = list.length; }\n var comparator = ascendingComparator(map);\n while (lo < hi) {\n var mid = (lo + hi) >>> 1;\n if (comparator(list[mid], x) < 0) {\n lo = mid + 1;\n }\n else {\n hi = mid;\n }\n }\n return lo;\n}\nexport function complexBisectRight(list, x, map, lo, hi) {\n if (lo === void 0) { lo = 0; }\n if (hi === void 0) { hi = list.length; }\n var comparator = ascendingComparator(map);\n while (lo < hi) {\n var mid = (lo + hi) >>> 1;\n if (comparator(list[mid], x) < 0) {\n lo = mid + 1;\n }\n else {\n hi = mid;\n }\n }\n return lo;\n}\nfunction ascendingComparator(map) {\n return function (item, x) {\n return ascending(map(item), x);\n };\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { ContinuousScale } from \"./continuousScale\";\nimport ticks, { tickIncrement } from \"../util/ticks\";\nimport { tickFormat } from \"../util/numberFormat\";\n/**\n * Maps continuous domain to a continuous range.\n */\nvar LinearScale = /** @class */ (function (_super) {\n __extends(LinearScale, _super);\n function LinearScale() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'linear';\n return _this;\n }\n LinearScale.prototype.ticks = function (count) {\n if (count === void 0) { count = 10; }\n var d = this._domain;\n return ticks(d[0], d[d.length - 1], count);\n };\n /**\n * Extends the domain so that it starts and ends on nice round values.\n * @param count Tick count.\n */\n LinearScale.prototype.nice = function (count) {\n if (count === void 0) { count = 10; }\n var d = this.domain;\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var step;\n if (stop < start) {\n step = start;\n start = stop;\n stop = step;\n step = i0;\n i0 = i1;\n i1 = step;\n }\n step = tickIncrement(start, stop, count);\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = tickIncrement(start, stop, count);\n }\n else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = tickIncrement(start, stop, count);\n }\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n this.domain = d;\n }\n else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n this.domain = d;\n }\n };\n LinearScale.prototype.tickFormat = function (count, specifier) {\n var d = this.domain;\n return tickFormat(d[0], d[d.length - 1], count == undefined ? 10 : count, specifier);\n };\n return LinearScale;\n}(ContinuousScale));\nexport { LinearScale };\n","var __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\n// Custom `Array.find` implementation for legacy browsers.\nexport function find(arr, predicate) {\n for (var i = 0; i < arr.length; i++) {\n var value = arr[i];\n if (predicate(value, i, arr)) {\n return value;\n }\n }\n}\nexport function findIndex(arr, predicate) {\n for (var i = 0; i < arr.length; i++) {\n if (predicate(arr[i], i, arr)) {\n return i;\n }\n }\n return -1;\n}\nfunction identity(value) {\n return value;\n}\nexport function extent(values, predicate, map) {\n var transform = map || identity;\n var n = values.length;\n var i = -1;\n var value;\n var min;\n var max;\n while (++i < n) { // Find the first value.\n value = values[i];\n if (predicate(value)) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n value = values[i];\n if (predicate(value)) {\n if (min > value) {\n min = value;\n }\n if (max < value) {\n max = value;\n }\n }\n }\n }\n }\n return min === undefined || max === undefined ? undefined : [transform(min), transform(max)];\n}\n/**\n * finds the min and max using a process appropriate for stacked values. Ie,\n * summing up the positive and negative numbers, and returning the totals of each\n */\nexport function findMinMax(values) {\n var e_1, _a;\n var min = 0;\n var max = 0;\n try {\n for (var values_1 = __values(values), values_1_1 = values_1.next(); !values_1_1.done; values_1_1 = values_1.next()) {\n var value = values_1_1.value;\n if (value < 0) {\n min += value;\n }\n else {\n max += value;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (values_1_1 && !values_1_1.done && (_a = values_1.return)) _a.call(values_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return { min: min, max: max };\n}\nexport function copy(array, start, count) {\n if (start === void 0) { start = 0; }\n if (count === void 0) { count = array.length; }\n var result = [];\n var n = array.length;\n if (n) {\n for (var i = 0; i < count; i++) {\n result.push(array[(start + i) % n]);\n }\n }\n return result;\n}\n","// Simplified version of https://github.com/plotly/fast-isnumeric\n// that doesn't treat number strings with leading/trailing whitespace as numbers.\nexport function isNumber(value) {\n var type = typeof value;\n if (type === 'string') {\n return false;\n }\n else if (type !== 'number') {\n return false;\n }\n // value - value is going to be:\n // - zero, for any finite number\n // - NaN, for NaN, Infinity, -Infinity\n return value - value < 1;\n}\nexport function isNumberObject(value) {\n return !!value && value.hasOwnProperty('valueOf') && isNumber(value.valueOf());\n}\nexport function isNumeric(value) {\n return isNumber(value) || isNumberObject(value);\n}\nexport function isDate(value) {\n return value instanceof Date && !isNaN(+value);\n}\nexport function isString(value) {\n return typeof value === 'string';\n}\nexport function isStringObject(value) {\n return !!value && value.hasOwnProperty('toString') && isString(value.toString());\n}\nexport function isDiscrete(value) {\n return isString(value) || isStringObject(value);\n}\nexport function isContinuous(value) {\n return isNumeric(value) || isDate(value);\n}\nexport function isComparable(value) {\n return isContinuous(value) || isDiscrete(value) && value >= value;\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Node } from \"./node\";\nimport { BBox } from \"./bbox\";\nimport { Matrix } from \"./matrix\";\nvar Group = /** @class */ (function (_super) {\n __extends(Group, _super);\n function Group() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.isContainerNode = true;\n _this._opacity = 1;\n return _this;\n }\n Object.defineProperty(Group.prototype, \"opacity\", {\n get: function () {\n return this._opacity;\n },\n set: function (value) {\n value = Math.min(1, Math.max(0, value));\n if (this._opacity !== value) {\n this._opacity = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n // We consider a group to be boundless, thus any point belongs to it.\n Group.prototype.containsPoint = function (x, y) {\n return true;\n };\n Group.prototype.computeBBox = function () {\n var left = Infinity;\n var right = -Infinity;\n var top = Infinity;\n var bottom = -Infinity;\n if (this.dirtyTransform) {\n this.computeTransformMatrix();\n }\n this.children.forEach(function (child) {\n if (!child.visible) {\n return;\n }\n var bbox = child.computeBBox();\n if (!bbox) {\n return;\n }\n if (!(child instanceof Group)) {\n if (child.dirtyTransform) {\n child.computeTransformMatrix();\n }\n var matrix = Matrix.flyweight(child.matrix);\n var parent_1 = child.parent;\n while (parent_1) {\n matrix.preMultiplySelf(parent_1.matrix);\n parent_1 = parent_1.parent;\n }\n matrix.transformBBox(bbox, 0, bbox);\n }\n var x = bbox.x;\n var y = bbox.y;\n if (x < left) {\n left = x;\n }\n if (y < top) {\n top = y;\n }\n if (x + bbox.width > right) {\n right = x + bbox.width;\n }\n if (y + bbox.height > bottom) {\n bottom = y + bbox.height;\n }\n });\n return new BBox(left, top, right - left, bottom - top);\n };\n Group.prototype.render = function (ctx) {\n // A group can have `scaling`, `rotation`, `translation` properties\n // that are applied to the canvas context before children are rendered,\n // so all children can be transformed at once.\n if (this.dirtyTransform) {\n this.computeTransformMatrix();\n }\n this.matrix.toContext(ctx);\n var children = this.children;\n var n = children.length;\n ctx.globalAlpha *= this.opacity;\n if (this.dirtyZIndex) {\n this.dirtyZIndex = false;\n children.sort(function (a, b) { return a.zIndex - b.zIndex; });\n }\n for (var i = 0; i < n; i++) {\n var child = children[i];\n if (child.visible) {\n ctx.save();\n child.render(ctx);\n ctx.restore();\n }\n }\n // debug\n // this.computeBBox().render(ctx, {\n // label: this.id,\n // resetTransform: true,\n // fillStyle: 'rgba(0, 0, 0, 0.5)'\n // });\n };\n Group.className = 'Group';\n return Group;\n}(Node));\nexport { Group };\n","import { Node } from \"./node\";\nvar EnterNode = /** @class */ (function () {\n function EnterNode(parent, datum) {\n this.next = null;\n this.scene = parent.scene;\n this.parent = parent;\n this.datum = datum;\n }\n EnterNode.prototype.appendChild = function (node) {\n // This doesn't work without the `strict: true` in the `tsconfig.json`,\n // so we must have two `if` checks below, instead of this single one.\n // if (this.next && !Node.isNode(this.next)) {\n // throw new Error(`${this.next} is not a Node.`);\n // }\n if (this.next === null) {\n return this.parent.insertBefore(node, null);\n }\n if (!Node.isNode(this.next)) {\n throw new Error(this.next + \" is not a Node.\");\n }\n return this.parent.insertBefore(node, this.next);\n };\n EnterNode.prototype.insertBefore = function (node, nextNode) {\n return this.parent.insertBefore(node, nextNode);\n };\n return EnterNode;\n}());\nexport { EnterNode };\n/**\n * G - type of the selected node(s).\n * GDatum - type of the datum of the selected node(s).\n * P - type of the parent node(s).\n * PDatum - type of the datum of the parent node(s).\n */\nvar Selection = /** @class */ (function () {\n function Selection(groups, parents) {\n this.groups = groups;\n this.parents = parents;\n }\n Selection.select = function (node) {\n return new Selection([[typeof node === 'function' ? node() : node]], [undefined]);\n };\n Selection.selectAll = function (nodes) {\n return new Selection([nodes == null ? [] : nodes], [undefined]);\n };\n /**\n * Creates new nodes, appends them to the nodes of this selection and returns them\n * as a new selection. The created nodes inherit the datums and the parents of the nodes\n * they replace.\n * @param Class The constructor function to use to create the new nodes.\n */\n Selection.prototype.append = function (Class) {\n return this.select(function (node) {\n return node.appendChild(new Class());\n });\n };\n /**\n * Same as the {@link append}, but accepts a custom creator function with the\n * {@link NodeSelector} signature rather than a constructor function.\n * @param creator\n */\n Selection.prototype.appendFn = function (creator) {\n return this.select(function (node, data, index, group) {\n return node.appendChild(creator(node, data, index, group));\n });\n };\n /**\n * Runs the given selector that returns a single node for every node in each group.\n * The original nodes are then replaced by the nodes returned by the selector\n * and returned as a new selection.\n * The selected nodes inherit the datums and the parents of the original nodes.\n */\n Selection.prototype.select = function (selector) {\n var groups = this.groups;\n var numGroups = groups.length;\n var subgroups = [];\n for (var j = 0; j < numGroups; j++) {\n var group = groups[j];\n var groupSize = group.length;\n var subgroup = subgroups[j] = new Array(groupSize);\n for (var i = 0; i < groupSize; i++) {\n var node = group[i];\n if (node) {\n var subnode = selector(node, node.datum, i, group);\n if (subnode) {\n subnode.datum = node.datum;\n }\n subgroup[i] = subnode;\n }\n // else this can be a group of the `enter` selection,\n // for example, with no nodes at the i-th position,\n // only nodes at the end of the group\n }\n }\n return new Selection(subgroups, this.parents);\n };\n /**\n * Same as {@link select}, but uses the given {@param Class} (constructor) as a selector.\n * @param Class The constructor function to use to find matching nodes.\n */\n Selection.prototype.selectByClass = function (Class) {\n return this.select(function (node) {\n if (Node.isNode(node)) {\n var children = node.children;\n var n = children.length;\n for (var i = 0; i < n; i++) {\n var child = children[i];\n if (child instanceof Class) {\n return child;\n }\n }\n }\n });\n };\n Selection.prototype.selectByTag = function (tag) {\n return this.select(function (node) {\n if (Node.isNode(node)) {\n var children = node.children;\n var n = children.length;\n for (var i = 0; i < n; i++) {\n var child = children[i];\n if (child.tag === tag) {\n return child;\n }\n }\n }\n });\n };\n Selection.prototype.selectAllByClass = function (Class) {\n return this.selectAll(function (node) {\n var nodes = [];\n if (Node.isNode(node)) {\n var children = node.children;\n var n = children.length;\n for (var i = 0; i < n; i++) {\n var child = children[i];\n if (child instanceof Class) {\n nodes.push(child);\n }\n }\n }\n return nodes;\n });\n };\n Selection.prototype.selectAllByTag = function (tag) {\n return this.selectAll(function (node) {\n var nodes = [];\n if (Node.isNode(node)) {\n var children = node.children;\n var n = children.length;\n for (var i = 0; i < n; i++) {\n var child = children[i];\n if (child.tag === tag) {\n nodes.push(child);\n }\n }\n }\n return nodes;\n });\n };\n Selection.prototype.selectNone = function () {\n return [];\n };\n /**\n * Runs the given selector that returns a group of nodes for every node in each group.\n * The original nodes are then replaced by the groups of nodes returned by the selector\n * and returned as a new selection. The original nodes become the parent nodes for each\n * group in the new selection. The selected nodes do not inherit the datums of the original nodes.\n * If called without any parameters, creates a new selection with an empty group for each\n * node in this selection.\n */\n Selection.prototype.selectAll = function (selectorAll) {\n if (!selectorAll) {\n selectorAll = this.selectNone;\n }\n // Each subgroup is populated with the selector (run on each group node) results.\n var subgroups = [];\n // In the new selection that we return, subgroups become groups,\n // and group nodes become parents.\n var parents = [];\n var groups = this.groups;\n var groupCount = groups.length;\n for (var j = 0; j < groupCount; j++) {\n var group = groups[j];\n var groupLength = group.length;\n for (var i = 0; i < groupLength; i++) {\n var node = group[i];\n if (node) {\n subgroups.push(selectorAll(node, node.datum, i, group));\n parents.push(node);\n }\n }\n }\n return new Selection(subgroups, parents);\n };\n /**\n * Runs the given callback for every node in this selection and returns this selection.\n * @param cb\n */\n Selection.prototype.each = function (cb) {\n var groups = this.groups;\n var numGroups = groups.length;\n for (var j = 0; j < numGroups; j++) {\n var group = groups[j];\n var groupSize = group.length;\n for (var i = 0; i < groupSize; i++) {\n var node = group[i];\n if (node) {\n cb(node, node.datum, i, group);\n }\n }\n }\n return this;\n };\n Selection.prototype.remove = function () {\n return this.each(function (node) {\n if (Node.isNode(node)) {\n var parent_1 = node.parent;\n if (parent_1) {\n parent_1.removeChild(node);\n }\n }\n });\n };\n Selection.prototype.merge = function (other) {\n var groups0 = this.groups;\n var groups1 = other.groups;\n var m0 = groups0.length;\n var m1 = groups1.length;\n var m = Math.min(m0, m1);\n var merges = new Array(m0);\n var j = 0;\n for (; j < m; j++) {\n var group0 = groups0[j];\n var group1 = groups1[j];\n var n = group0.length;\n var merge = merges[j] = new Array(n);\n for (var i = 0; i < n; i++) {\n var node = group0[i] || group1[i];\n merge[i] = node || undefined;\n }\n }\n for (; j < m0; j++) {\n merges[j] = groups0[j];\n }\n return new Selection(merges, this.parents);\n };\n /**\n * Return the first non-null element in this selection.\n * If the selection is empty, returns null.\n */\n Selection.prototype.node = function () {\n var groups = this.groups;\n var numGroups = groups.length;\n for (var j = 0; j < numGroups; j++) {\n var group = groups[j];\n var groupSize = group.length;\n for (var i = 0; i < groupSize; i++) {\n var node = group[i];\n if (node) {\n return node;\n }\n }\n }\n return null;\n };\n Selection.prototype.attr = function (name, value) {\n this.each(function (node) {\n node[name] = value;\n });\n return this;\n };\n Selection.prototype.attrFn = function (name, value) {\n this.each(function (node, datum, index, group) {\n node[name] = value(node, datum, index, group);\n });\n return this;\n };\n /**\n * Invokes the given function once, passing in this selection.\n * Returns this selection. Facilitates method chaining.\n * @param cb\n */\n Selection.prototype.call = function (cb) {\n cb(this);\n return this;\n };\n Object.defineProperty(Selection.prototype, \"size\", {\n /**\n * Returns the total number of nodes in this selection.\n */\n get: function () {\n var size = 0;\n this.each(function () { return size++; });\n return size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Selection.prototype, \"data\", {\n /**\n * Returns the array of data for the selected elements.\n */\n get: function () {\n var data = [];\n this.each(function (_, datum) { return data.push(datum); });\n return data;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Selection.prototype, \"enter\", {\n get: function () {\n return new Selection(this.enterGroups ? this.enterGroups : [[]], this.parents);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Selection.prototype, \"exit\", {\n get: function () {\n return new Selection(this.exitGroups ? this.exitGroups : [[]], this.parents);\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Binds the given value to each selected node and returns this selection\n * with its {@link GDatum} type changed to the type of the given value.\n * This method doesn't compute a join and doesn't affect indexes or the enter and exit selections.\n * This method can also be used to clear bound data.\n * @param value\n */\n Selection.prototype.setDatum = function (value) {\n return this.each(function (node) {\n node.datum = value;\n });\n };\n Object.defineProperty(Selection.prototype, \"datum\", {\n /**\n * Returns the bound datum for the first non-null element in the selection.\n * This is generally useful only if you know the selection contains exactly one element.\n */\n get: function () {\n var node = this.node();\n return node ? node.datum : null;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Binds the specified array of values with the selected nodes, returning a new selection\n * that represents the _update_ selection: the nodes successfully bound to the values.\n * Also defines the {@link enter} and {@link exit} selections on the returned selection,\n * which can be used to add or remove the nodes to correspond to the new data.\n * The `values` is an array of values of a particular type, or a function that returns\n * an array of values for each group.\n * When values are assigned to the nodes, they are stored in the {@link Node.datum} property.\n * @param values\n * @param key\n */\n Selection.prototype.setData = function (values, key) {\n if (typeof values !== 'function') {\n var data_1 = values;\n values = function () { return data_1; };\n }\n var groups = this.groups;\n var parents = this.parents;\n var numGroups = groups.length;\n var updateGroups = new Array(numGroups);\n var enterGroups = new Array(numGroups);\n var exitGroups = new Array(numGroups);\n for (var j = 0; j < numGroups; j++) {\n var group = groups[j];\n var parent_2 = parents[j];\n if (!parent_2) {\n throw new Error(\"Group #\" + j + \" has no parent: \" + group);\n }\n var groupSize = group.length;\n var data = values(parent_2, parent_2.datum, j, parents);\n var dataSize = data.length;\n var enterGroup = enterGroups[j] = new Array(dataSize);\n var updateGroup = updateGroups[j] = new Array(dataSize);\n var exitGroup = exitGroups[j] = new Array(groupSize);\n if (key) {\n this.bindKey(parent_2, group, enterGroup, updateGroup, exitGroup, data, key);\n }\n else {\n this.bindIndex(parent_2, group, enterGroup, updateGroup, exitGroup, data);\n }\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0; i0 < dataSize; i0++) {\n var previous = enterGroup[i0];\n if (previous) {\n if (i0 >= i1) {\n i1 = i0 + 1;\n }\n var next = void 0;\n while (!(next = updateGroup[i1]) && i1 < dataSize) {\n i1++;\n }\n previous.next = next || null;\n }\n }\n }\n var result = new Selection(updateGroups, parents);\n result.enterGroups = enterGroups;\n result.exitGroups = exitGroups;\n return result;\n };\n Selection.prototype.bindIndex = function (parent, group, enter, update, exit, data) {\n var groupSize = group.length;\n var dataSize = data.length;\n var i = 0;\n for (; i < dataSize; i++) {\n var node = group[i];\n if (node) {\n node.datum = data[i];\n update[i] = node;\n }\n else { // more datums than group nodes\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n // more group nodes than datums\n for (; i < groupSize; i++) {\n var node = group[i];\n if (node) {\n exit[i] = node;\n }\n }\n };\n Selection.prototype.bindKey = function (parent, group, enter, update, exit, data, key) {\n var groupSize = group.length;\n var dataSize = data.length;\n var keyValues = new Array(groupSize);\n var nodeByKeyValue = {};\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (var i = 0; i < groupSize; i++) {\n var node = group[i];\n if (node) {\n var keyValue = keyValues[i] = Selection.keyPrefix + key(node, node.datum, i, group);\n if (keyValue in nodeByKeyValue) {\n exit[i] = node;\n }\n else {\n nodeByKeyValue[keyValue] = node;\n }\n }\n }\n // Compute the key for each datum.\n // If there is a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (var i = 0; i < dataSize; i++) {\n var keyValue = Selection.keyPrefix + key(parent, data[i], i, data);\n var node = nodeByKeyValue[keyValue];\n if (node) {\n update[i] = node;\n node.datum = data[i];\n nodeByKeyValue[keyValue] = undefined;\n }\n else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n // Add any remaining nodes that were not bound to data to exit.\n for (var i = 0; i < groupSize; i++) {\n var node = group[i];\n if (node && (nodeByKeyValue[keyValues[i]] === node)) {\n exit[i] = node;\n }\n }\n };\n Selection.keyPrefix = '$'; // Protect against keys like '__proto__'.\n return Selection;\n}());\nexport { Selection };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Shape } from \"./shape\";\nimport { chainObjects } from \"../../util/object\";\nimport { BBox } from \"../bbox\";\nvar Line = /** @class */ (function (_super) {\n __extends(Line, _super);\n function Line() {\n var _this = _super.call(this) || this;\n _this._x1 = 0;\n _this._y1 = 0;\n _this._x2 = 0;\n _this._y2 = 0;\n _this.restoreOwnStyles();\n return _this;\n }\n Object.defineProperty(Line.prototype, \"x1\", {\n get: function () {\n // TODO: Investigate getter performance further in the context\n // of the scene graph.\n // In isolated benchmarks using a getter has the same\n // performance as a direct property access in Firefox 64.\n // But in Chrome 71 the getter is 60% slower than direct access.\n // Direct read is 4.5+ times slower in Chrome than it is in Firefox.\n // Property access and direct read have the same performance\n // in Safari 12, which is 2+ times faster than Firefox at this.\n // https://jsperf.com/es5-getters-setters-versus-getter-setter-methods/18\n // This is a know Chrome issue. They say it's not a regression, since\n // the behavior is observed since M60, but jsperf.com history shows the\n // 10x slowdown happened between Chrome 48 and Chrome 57.\n // https://bugs.chromium.org/p/chromium/issues/detail?id=908743\n return this._x1;\n },\n set: function (value) {\n if (this._x1 !== value) {\n this._x1 = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Line.prototype, \"y1\", {\n get: function () {\n return this._y1;\n },\n set: function (value) {\n if (this._y1 !== value) {\n this._y1 = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Line.prototype, \"x2\", {\n get: function () {\n return this._x2;\n },\n set: function (value) {\n if (this._x2 !== value) {\n this._x2 = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Line.prototype, \"y2\", {\n get: function () {\n return this._y2;\n },\n set: function (value) {\n if (this._y2 !== value) {\n this._y2 = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Line.prototype.computeBBox = function () {\n return new BBox(this.x1, this.y1, this.x2 - this.x1, this.y2 - this.y1);\n };\n Line.prototype.isPointInPath = function (x, y) {\n return false;\n };\n Line.prototype.isPointInStroke = function (x, y) {\n return false;\n };\n Line.prototype.render = function (ctx) {\n if (this.dirtyTransform) {\n this.computeTransformMatrix();\n }\n this.matrix.toContext(ctx);\n var x1 = this.x1;\n var y1 = this.y1;\n var x2 = this.x2;\n var y2 = this.y2;\n // Align to the pixel grid if the line is strictly vertical\n // or horizontal (but not both, i.e. a dot).\n if (x1 === x2) {\n var x = Math.round(x1) + Math.floor(this.strokeWidth) % 2 / 2;\n x1 = x;\n x2 = x;\n }\n else if (y1 === y2) {\n var y = Math.round(y1) + Math.floor(this.strokeWidth) % 2 / 2;\n y1 = y;\n y2 = y;\n }\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y2);\n this.fillStroke(ctx);\n this.dirty = false;\n };\n Line.className = 'Line';\n Line.defaultStyles = chainObjects(Shape.defaultStyles, {\n fill: undefined,\n strokeWidth: 1\n });\n return Line;\n}(Shape));\nexport { Line };\n","// @ts-ignore Suppress tsc error: Property 'sign' does not exist on type 'Math'\nvar sign = Math.sign ? Math.sign : function (x) {\n x = +x;\n if (x === 0 || isNaN(x)) {\n return x;\n }\n return x > 0 ? 1 : -1;\n};\n/**\n * Finds the roots of a parametric linear equation in `t`,\n * where `t` lies in the interval of `[0,1]`.\n */\nexport function linearRoot(a, b) {\n var t = -b / a;\n return (a !== 0 && t >= 0 && t <= 1) ? [t] : [];\n}\n/**\n * Finds the roots of a parametric quadratic equation in `t`,\n * where `t` lies in the interval of `[0,1]`.\n */\nexport function quadraticRoots(a, b, c) {\n if (a === 0) {\n return linearRoot(b, c);\n }\n var D = b * b - 4 * a * c; // The polynomial's discriminant.\n var roots = [];\n if (D === 0) { // A single real root.\n var t = -b / (2 * a);\n if (t >= 0 && t <= 1) {\n roots.push(t);\n }\n }\n else if (D > 0) { // A pair of distinct real roots.\n var rD = Math.sqrt(D);\n var t1 = (-b - rD) / (2 * a);\n var t2 = (-b + rD) / (2 * a);\n if (t1 >= 0 && t1 <= 1) {\n roots.push(t1);\n }\n if (t2 >= 0 && t2 <= 1) {\n roots.push(t2);\n }\n }\n // else -> Complex roots.\n return roots;\n}\n/**\n * Finds the roots of a parametric cubic equation in `t`,\n * where `t` lies in the interval of `[0,1]`.\n * Returns an array of parametric intersection locations along the cubic,\n * excluding out-of-bounds intersections (before or after the end point\n * or in the imaginary plane).\n * An adaptation of http://www.particleincell.com/blog/2013/cubic-line-intersection/\n */\nexport function cubicRoots(a, b, c, d) {\n if (a === 0) {\n return quadraticRoots(b, c, d);\n }\n var A = b / a;\n var B = c / a;\n var C = d / a;\n var Q = (3 * B - A * A) / 9;\n var R = (9 * A * B - 27 * C - 2 * A * A * A) / 54;\n var D = Q * Q * Q + R * R; // The polynomial's discriminant.\n var third = 1 / 3;\n var roots = [];\n if (D >= 0) { // Complex or duplicate roots.\n var rD = Math.sqrt(D);\n var S = sign(R + rD) * Math.pow(Math.abs(R + rD), third);\n var T = sign(R - rD) * Math.pow(Math.abs(R - rD), third);\n var Im = Math.abs(Math.sqrt(3) * (S - T) / 2); // Complex part of the root pair.\n var t = -third * A + (S + T); // A real root.\n if (t >= 0 && t <= 1) {\n roots.push(t);\n }\n if (Im === 0) {\n var t_1 = -third * A - (S + T) / 2; // The real part of a complex root.\n if (t_1 >= 0 && t_1 <= 1) {\n roots.push(t_1);\n }\n }\n }\n else { // Distinct real roots.\n var theta = Math.acos(R / Math.sqrt(-Q * Q * Q));\n var thirdA = third * A;\n var twoSqrtQ = 2 * Math.sqrt(-Q);\n var t1 = twoSqrtQ * Math.cos(third * theta) - thirdA;\n var t2 = twoSqrtQ * Math.cos(third * (theta + 2 * Math.PI)) - thirdA;\n var t3 = twoSqrtQ * Math.cos(third * (theta + 4 * Math.PI)) - thirdA;\n if (t1 >= 0 && t1 <= 1) {\n roots.push(t1);\n }\n if (t2 >= 0 && t2 <= 1) {\n roots.push(t2);\n }\n if (t3 >= 0 && t3 <= 1) {\n roots.push(t3);\n }\n }\n return roots;\n}\n","import { cubicRoots } from \"./polyRoots\";\n/**\n * Returns the intersection point for the given pair of line segments, or null,\n * if the segments are parallel or don't intersect.\n * Based on http://paulbourke.net/geometry/pointlineplane/\n */\nexport function segmentIntersection(ax1, ay1, ax2, ay2, bx1, by1, bx2, by2) {\n var d = (ax2 - ax1) * (by2 - by1) - (ay2 - ay1) * (bx2 - bx1);\n if (d === 0) { // The lines are parallel.\n return null;\n }\n var ua = ((bx2 - bx1) * (ay1 - by1) - (ax1 - bx1) * (by2 - by1)) / d;\n var ub = ((ax2 - ax1) * (ay1 - by1) - (ay2 - ay1) * (ax1 - bx1)) / d;\n if (ua >= 0 && ua <= 1 && ub >= 0 && ub <= 1) {\n return {\n x: ax1 + ua * (ax2 - ax1),\n y: ay1 + ua * (ay2 - ay1)\n };\n }\n return null; // The intersection point is outside either or both segments.\n}\n/**\n * Returns intersection points of the given cubic curve and the line segment.\n * Takes in x/y components of cubic control points and line segment start/end points\n * as parameters.\n */\nexport function cubicSegmentIntersections(px1, py1, px2, py2, px3, py3, px4, py4, x1, y1, x2, y2) {\n var intersections = [];\n // Find line equation coefficients.\n var A = y1 - y2;\n var B = x2 - x1;\n var C = x1 * (y2 - y1) - y1 * (x2 - x1);\n // Find cubic Bezier curve equation coefficients from control points.\n var bx = bezierCoefficients(px1, px2, px3, px4);\n var by = bezierCoefficients(py1, py2, py3, py4);\n var a = A * bx[0] + B * by[0]; // t^3\n var b = A * bx[1] + B * by[1]; // t^2\n var c = A * bx[2] + B * by[2]; // t\n var d = A * bx[3] + B * by[3] + C; // 1\n var roots = cubicRoots(a, b, c, d);\n // Verify that the roots are within bounds of the linear segment.\n for (var i = 0; i < roots.length; i++) {\n var t = roots[i];\n var tt = t * t;\n var ttt = t * tt;\n // Find the cartesian plane coordinates for the parametric root `t`.\n var x = bx[0] * ttt + bx[1] * tt + bx[2] * t + bx[3];\n var y = by[0] * ttt + by[1] * tt + by[2] * t + by[3];\n // The parametric cubic roots we found are intersection points\n // with an infinite line, and so the x/y coordinates above are as well.\n // Make sure the x/y is also within the bounds of the given segment.\n var s = void 0;\n if (x1 !== x2) {\n s = (x - x1) / (x2 - x1);\n }\n else { // the line is vertical\n s = (y - y1) / (y2 - y1);\n }\n if (s >= 0 && s <= 1) {\n intersections.push({ x: x, y: y });\n }\n }\n return intersections;\n}\n/**\n * Returns the given coordinates vector multiplied by the coefficient matrix\n * of the parametric cubic Bézier equation.\n */\nexport function bezierCoefficients(P1, P2, P3, P4) {\n return [\n -P1 + 3 * P2 - 3 * P3 + P4,\n 3 * P1 - 6 * P2 + 3 * P3,\n -3 * P1 + 3 * P2,\n P1 // | 1 0 0 0| |P4|\n ];\n}\n","import { cubicSegmentIntersections, segmentIntersection } from \"./intersection\";\nvar Path2D = /** @class */ (function () {\n function Path2D() {\n // The methods of this class will likely be called many times per animation frame,\n // and any allocation can trigger a GC cycle during animation, so we attempt\n // to minimize the number of allocations.\n this.commands = [];\n this.params = [];\n this._closedPath = false;\n }\n Path2D.prototype.draw = function (ctx) {\n var commands = this.commands;\n var params = this.params;\n var n = commands.length;\n var j = 0;\n ctx.beginPath();\n for (var i = 0; i < n; i++) {\n switch (commands[i]) {\n case 'M':\n ctx.moveTo(params[j++], params[j++]);\n break;\n case 'L':\n ctx.lineTo(params[j++], params[j++]);\n break;\n case 'C':\n ctx.bezierCurveTo(params[j++], params[j++], params[j++], params[j++], params[j++], params[j++]);\n break;\n case 'Z':\n ctx.closePath();\n break;\n }\n }\n };\n Path2D.prototype.moveTo = function (x, y) {\n if (this.xy) {\n this.xy[0] = x;\n this.xy[1] = y;\n }\n else {\n this.xy = [x, y];\n }\n this.commands.push('M');\n this.params.push(x, y);\n };\n Path2D.prototype.lineTo = function (x, y) {\n if (this.xy) {\n this.commands.push('L');\n this.params.push(x, y);\n this.xy[0] = x;\n this.xy[1] = y;\n }\n else {\n this.moveTo(x, y);\n }\n };\n Path2D.prototype.rect = function (x, y, width, height) {\n this.moveTo(x, y);\n this.lineTo(x + width, y);\n this.lineTo(x + width, y + height);\n this.lineTo(x, y + height);\n this.closePath();\n };\n /**\n * Adds an arc segment to the path definition.\n * https://www.w3.org/TR/SVG11/paths.html#PathDataEllipticalArcCommands\n * @param rx The major-axis radius.\n * @param ry The minor-axis radius.\n * @param rotation The x-axis rotation, expressed in radians.\n * @param fA The large arc flag. `1` to use angle > π.\n * @param fS The sweep flag. `1` for the arc that goes to `x`/`y` clockwise.\n * @param x2 The x coordinate to arc to.\n * @param y2 The y coordinate to arc to.\n */\n Path2D.prototype.arcTo = function (rx, ry, rotation, fA, fS, x2, y2) {\n // Convert from endpoint to center parametrization:\n // https://www.w3.org/TR/SVG/implnote.html#ArcImplementationNotes\n var xy = this.xy;\n if (!xy) {\n return;\n }\n if (rx < 0) {\n rx = -rx;\n }\n if (ry < 0) {\n ry = -ry;\n }\n var x1 = xy[0];\n var y1 = xy[1];\n var hdx = (x1 - x2) / 2;\n var hdy = (y1 - y2) / 2;\n var sinPhi = Math.sin(rotation);\n var cosPhi = Math.cos(rotation);\n var xp = cosPhi * hdx + sinPhi * hdy;\n var yp = -sinPhi * hdx + cosPhi * hdy;\n var ratX = xp / rx;\n var ratY = yp / ry;\n var lambda = ratX * ratX + ratY * ratY;\n var cx = (x1 + x2) / 2;\n var cy = (y1 + y2) / 2;\n var cpx = 0;\n var cpy = 0;\n if (lambda >= 1) {\n lambda = Math.sqrt(lambda);\n rx *= lambda;\n ry *= lambda;\n // me gives lambda == cpx == cpy == 0;\n }\n else {\n lambda = Math.sqrt(1 / lambda - 1);\n if (fA === fS) {\n lambda = -lambda;\n }\n cpx = lambda * rx * ratY;\n cpy = -lambda * ry * ratX;\n cx += cosPhi * cpx - sinPhi * cpy;\n cy += sinPhi * cpx + cosPhi * cpy;\n }\n var theta1 = Math.atan2((yp - cpy) / ry, (xp - cpx) / rx);\n var deltaTheta = Math.atan2((-yp - cpy) / ry, (-xp - cpx) / rx) - theta1;\n // if (fS) {\n // if (deltaTheta <= 0) {\n // deltaTheta += Math.PI * 2;\n // }\n // }\n // else {\n // if (deltaTheta >= 0) {\n // deltaTheta -= Math.PI * 2;\n // }\n // }\n this.cubicArc(cx, cy, rx, ry, rotation, theta1, theta1 + deltaTheta, 1 - fS);\n };\n /**\n * Approximates an elliptical arc with up to four cubic Bézier curves.\n * @param commands The string array to write SVG command letters to.\n * @param params The number array to write SVG command parameters (cubic control points) to.\n * @param cx The x-axis coordinate for the ellipse's center.\n * @param cy The y-axis coordinate for the ellipse's center.\n * @param rx The ellipse's major-axis radius.\n * @param ry The ellipse's minor-axis radius.\n * @param phi The rotation for this ellipse, expressed in radians.\n * @param theta1 The starting angle, measured clockwise from the positive x-axis and expressed in radians.\n * @param theta2 The ending angle, measured clockwise from the positive x-axis and expressed in radians.\n * @param anticlockwise The arc control points are always placed clockwise from `theta1` to `theta2`,\n * even when `theta1 > theta2`, unless this flag is set to `1`.\n */\n Path2D.cubicArc = function (commands, params, cx, cy, rx, ry, phi, theta1, theta2, anticlockwise) {\n if (anticlockwise) {\n var temp = theta1;\n theta1 = theta2;\n theta2 = temp;\n }\n var start = params.length;\n // See https://pomax.github.io/bezierinfo/#circles_cubic\n // Arc of unit circle (start angle = 0, end angle <= π/2) in cubic Bézier coordinates:\n // S = [1, 0]\n // C1 = [1, f]\n // C2 = [cos(θ) + f * sin(θ), sin(θ) - f * cos(θ)]\n // E = [cos(θ), sin(θ)]\n // f = 4/3 * tan(θ/4)\n var f90 = 0.5522847498307935; // f for θ = π/2 is 4/3 * (Math.sqrt(2) - 1)\n var sinTheta1 = Math.sin(theta1);\n var cosTheta1 = Math.cos(theta1);\n var sinPhi = Math.sin(phi);\n var cosPhi = Math.cos(phi);\n var rightAngle = Math.PI / 2;\n // Since we know how to draw an arc of a unit circle with a cubic Bézier,\n // to draw an elliptical arc with arbitrary rotation and radii we:\n // 1) rotate the Bézier coordinates that represent a circular arc by θ\n // 2) scale the circular arc separately along the x/y axes, making it elliptical\n // 3) rotate elliptical arc by φ\n // |cos(φ) -sin(φ)| |sx 0| |cos(θ) -sin(θ)| -> |xx xy|\n // |sin(φ) cos(φ)| | 0 sy| |sin(θ) cos(θ)| -> |yx yy|\n var xx = cosPhi * cosTheta1 * rx - sinPhi * sinTheta1 * ry;\n var yx = sinPhi * cosTheta1 * rx + cosPhi * sinTheta1 * ry;\n var xy = -cosPhi * sinTheta1 * rx - sinPhi * cosTheta1 * ry;\n var yy = -sinPhi * sinTheta1 * rx + cosPhi * cosTheta1 * ry;\n // TODO: what if delta between θ1 and θ2 is greater than 2π?\n // Always draw clockwise from θ1 to θ2.\n theta2 -= theta1;\n if (theta2 < 0) {\n theta2 += Math.PI * 2;\n }\n // Multiplying each point [x, y] by:\n // |xx xy cx| |x|\n // |yx yy cy| |y|\n // | 0 0 1| |1|\n // TODO: This move command may be redundant, if we are already at this point.\n // The coordinates of the point calculated here may differ ever so slightly\n // because of precision error.\n commands.push('M');\n params.push(xx + cx, yx + cy);\n while (theta2 >= rightAngle) {\n theta2 -= rightAngle;\n commands.push('C');\n // Temp workaround for https://bugs.chromium.org/p/chromium/issues/detail?id=993330\n // Revert this commit when fixed ^^.\n var lastX = xy + cx;\n params.push(xx + xy * f90 + cx, yx + yy * f90 + cy, xx * f90 + xy + cx, yx * f90 + yy + cy, Math.abs(lastX) < 1e-8 ? 0 : lastX, yy + cy);\n // Prepend π/2 rotation matrix.\n // |xx xy| | 0 1| -> | xy -xx|\n // |yx yy| |-1 0| -> | yy -yx|\n // [xx, yx, xy, yy] = [xy, yy, -xx, -yx];\n // Compared to swapping with a temp variable, destructuring is:\n // - 10% faster in Chrome 70\n // - 99% slower in Firefox 63\n // Temp variable solution is 45% faster in FF than Chrome.\n // https://jsperf.com/multi-swap\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1165569\n var temp = xx;\n xx = xy;\n xy = -temp;\n temp = yx;\n yx = yy;\n yy = -temp;\n }\n if (theta2) {\n var f = 4 / 3 * Math.tan(theta2 / 4);\n var sinPhi2 = Math.sin(theta2);\n var cosPhi2 = Math.cos(theta2);\n var C2x = cosPhi2 + f * sinPhi2;\n var C2y = sinPhi2 - f * cosPhi2;\n commands.push('C');\n // Temp workaround for https://bugs.chromium.org/p/chromium/issues/detail?id=993330\n // Revert this commit when fixed ^^.\n var lastX = xx * cosPhi2 + xy * sinPhi2 + cx;\n params.push(xx + xy * f + cx, yx + yy * f + cy, xx * C2x + xy * C2y + cx, yx * C2x + yy * C2y + cy, Math.abs(lastX) < 1e-8 ? 0 : lastX, yx * cosPhi2 + yy * sinPhi2 + cy);\n }\n if (anticlockwise) {\n for (var i = start, j = params.length - 2; i < j; i += 2, j -= 2) {\n var temp = params[i];\n params[i] = params[j];\n params[j] = temp;\n temp = params[i + 1];\n params[i + 1] = params[j + 1];\n params[j + 1] = temp;\n }\n }\n };\n Path2D.prototype.cubicArc = function (cx, cy, rx, ry, phi, theta1, theta2, anticlockwise) {\n var commands = this.commands;\n var params = this.params;\n var start = commands.length;\n Path2D.cubicArc(commands, params, cx, cy, rx, ry, phi, theta1, theta2, anticlockwise);\n var x = params[params.length - 2];\n var y = params[params.length - 1];\n if (this.xy) {\n commands[start] = 'L';\n this.xy[0] = x;\n this.xy[1] = y;\n }\n else {\n this.xy = [x, y];\n }\n };\n /**\n * Returns the `[x, y]` coordinates of the curve at `t`.\n * @param points `(n + 1) * 2` control point coordinates for a Bézier curve of n-th order.\n * @param t\n */\n Path2D.prototype.deCasteljau = function (points, t) {\n var n = points.length;\n if (n < 2 || n % 2 === 1) {\n throw new Error('Fewer than two points or not an even count.');\n }\n else if (n === 2 || t === 0) {\n return points.slice(0, 2);\n }\n else if (t === 1) {\n return points.slice(-2);\n }\n else {\n var newPoints = [];\n var last = n - 2;\n for (var i = 0; i < last; i += 2) {\n newPoints.push((1 - t) * points[i] + t * points[i + 2], // x\n (1 - t) * points[i + 1] + t * points[i + 3] // y\n );\n }\n return this.deCasteljau(newPoints, t);\n }\n };\n /**\n * Approximates the given curve using `n` line segments.\n * @param points `(n + 1) * 2` control point coordinates for a Bézier curve of n-th order.\n * @param n\n */\n Path2D.prototype.approximateCurve = function (points, n) {\n var xy = this.deCasteljau(points, 0);\n this.moveTo(xy[0], xy[1]);\n var step = 1 / n;\n for (var t = step; t <= 1; t += step) {\n var xy_1 = this.deCasteljau(points, t);\n this.lineTo(xy_1[0], xy_1[1]);\n }\n };\n /**\n * Adds a quadratic curve segment to the path definition.\n * Note: the given quadratic segment is converted and stored as a cubic one.\n * @param cx x-component of the curve's control point\n * @param cy y-component of the curve's control point\n * @param x x-component of the end point\n * @param y y-component of the end point\n */\n Path2D.prototype.quadraticCurveTo = function (cx, cy, x, y) {\n if (!this.xy) {\n this.moveTo(cx, cy);\n }\n // See https://pomax.github.io/bezierinfo/#reordering\n this.cubicCurveTo((this.xy[0] + 2 * cx) / 3, (this.xy[1] + 2 * cy) / 3, // 1/3 start + 2/3 control\n (2 * cx + x) / 3, (2 * cy + y) / 3, // 2/3 control + 1/3 end\n x, y);\n };\n Path2D.prototype.cubicCurveTo = function (cx1, cy1, cx2, cy2, x, y) {\n if (!this.xy) {\n this.moveTo(cx1, cy1);\n }\n this.commands.push('C');\n this.params.push(cx1, cy1, cx2, cy2, x, y);\n this.xy[0] = x;\n this.xy[1] = y;\n };\n Object.defineProperty(Path2D.prototype, \"closedPath\", {\n get: function () {\n return this._closedPath;\n },\n enumerable: true,\n configurable: true\n });\n Path2D.prototype.closePath = function () {\n if (this.xy) {\n this.xy = undefined;\n this.commands.push('Z');\n this._closedPath = true;\n }\n };\n Path2D.prototype.clear = function () {\n this.commands.length = 0;\n this.params.length = 0;\n this.xy = undefined;\n this._closedPath = false;\n };\n Path2D.prototype.isPointInPath = function (x, y) {\n var commands = this.commands;\n var params = this.params;\n var cn = commands.length;\n // Hit testing using ray casting method, where the ray's origin is some point\n // outside the path. In this case, an offscreen point that is remote enough, so that\n // even if the path itself is large and is partially offscreen, the ray's origin\n // will likely be outside the path anyway. To test if the given point is inside the\n // path or not, we cast a ray from the origin to the given point and check the number\n // of intersections of this segment with the path. If the number of intersections is\n // even, then the ray both entered and exited the path an equal number of times,\n // therefore the point is outside the path, and inside the path, if the number of\n // intersections is odd. Since the path is compound, we check if the ray segment\n // intersects with each of the path's segments, which can be either a line segment\n // (one or no intersection points) or a Bézier curve segment (up to 3 intersection\n // points).\n var ox = -10000;\n var oy = -10000;\n // the starting point of the current path\n var sx = NaN;\n var sy = NaN;\n // the previous point of the current path\n var px = 0;\n var py = 0;\n var intersectionCount = 0;\n for (var ci = 0, pi = 0; ci < cn; ci++) {\n switch (commands[ci]) {\n case 'M':\n if (!isNaN(sx)) {\n if (segmentIntersection(sx, sy, px, py, ox, oy, x, y)) {\n intersectionCount++;\n }\n }\n sx = px = params[pi++];\n sy = py = params[pi++];\n break;\n case 'L':\n if (segmentIntersection(px, py, px = params[pi++], py = params[pi++], ox, oy, x, y)) {\n intersectionCount++;\n }\n break;\n case 'C':\n intersectionCount += cubicSegmentIntersections(px, py, params[pi++], params[pi++], params[pi++], params[pi++], px = params[pi++], py = params[pi++], ox, oy, x, y).length;\n break;\n case 'Z':\n if (!isNaN(sx)) {\n if (segmentIntersection(sx, sy, px, py, ox, oy, x, y)) {\n intersectionCount++;\n }\n }\n break;\n }\n }\n return intersectionCount % 2 === 1;\n };\n Path2D.fromString = function (value) {\n var path = new Path2D();\n path.setFromString(value);\n return path;\n };\n /**\n * Split the SVG path at command letters,\n * then extract the command letter and parameters from each substring.\n * @param value\n */\n Path2D.parseSvgPath = function (value) {\n return value.trim().split(Path2D.splitCommandsRe).map(function (part) {\n var strParams = part.match(Path2D.matchParamsRe);\n return {\n command: part.substr(0, 1),\n params: strParams ? strParams.map(parseFloat) : []\n };\n });\n };\n Path2D.prettifySvgPath = function (value) {\n return Path2D.parseSvgPath(value).map(function (d) { return d.command + d.params.join(','); }).join('\\n');\n };\n /**\n * See https://www.w3.org/TR/SVG11/paths.html\n * @param value\n */\n Path2D.prototype.setFromString = function (value) {\n var _this = this;\n this.clear();\n var parts = Path2D.parseSvgPath(value);\n // Current point.\n var x;\n var y;\n // Last control point. Used to calculate the reflection point\n // for `S`, `s`, `T`, `t` commands.\n var cpx;\n var cpy;\n var lastCommand;\n function checkQuadraticCP() {\n if (!lastCommand.match(Path2D.quadraticCommandRe)) {\n cpx = x;\n cpy = y;\n }\n }\n function checkCubicCP() {\n if (!lastCommand.match(Path2D.cubicCommandRe)) {\n cpx = x;\n cpy = y;\n }\n }\n // But that will make compiler complain about x/y, cpx/cpy\n // being used without being set first.\n parts.forEach(function (part) {\n var p = part.params;\n var n = p.length;\n var i = 0;\n switch (part.command) {\n case 'M':\n _this.moveTo(x = p[i++], y = p[i++]);\n while (i < n) {\n _this.lineTo(x = p[i++], y = p[i++]);\n }\n break;\n case 'm':\n _this.moveTo(x += p[i++], y += p[i++]);\n while (i < n) {\n _this.lineTo(x += p[i++], y += p[i++]);\n }\n break;\n case 'L':\n while (i < n) {\n _this.lineTo(x = p[i++], y = p[i++]);\n }\n break;\n case 'l':\n while (i < n) {\n _this.lineTo(x += p[i++], y += p[i++]);\n }\n break;\n case 'C':\n while (i < n) {\n _this.cubicCurveTo(p[i++], p[i++], cpx = p[i++], cpy = p[i++], x = p[i++], y = p[i++]);\n }\n break;\n case 'c':\n while (i < n) {\n _this.cubicCurveTo(x + p[i++], y + p[i++], cpx = x + p[i++], cpy = y + p[i++], x += p[i++], y += p[i++]);\n }\n break;\n case 'S':\n checkCubicCP();\n while (i < n) {\n _this.cubicCurveTo(x + x - cpx, y + y - cpy, cpx = p[i++], cpy = p[i++], x = p[i++], y = p[i++]);\n }\n break;\n case 's':\n checkCubicCP();\n while (i < n) {\n _this.cubicCurveTo(x + x - cpx, y + y - cpy, cpx = x + p[i++], cpy = y + p[i++], x += p[i++], y += p[i++]);\n }\n break;\n case 'Q':\n while (i < n) {\n _this.quadraticCurveTo(cpx = p[i++], cpy = p[i++], x = p[i++], y = p[i++]);\n }\n break;\n case 'q':\n while (i < n) {\n _this.quadraticCurveTo(cpx = x + p[i++], cpy = y + p[i++], x += p[i++], y += p[i++]);\n }\n break;\n case 'T':\n checkQuadraticCP();\n while (i < n) {\n _this.quadraticCurveTo(cpx = x + x - cpx, cpy = y + y - cpy, x = p[i++], y = p[i++]);\n }\n break;\n case 't':\n checkQuadraticCP();\n while (i < n) {\n _this.quadraticCurveTo(cpx = x + x - cpx, cpy = y + y - cpy, x += p[i++], y += p[i++]);\n }\n break;\n case 'A':\n while (i < n) {\n _this.arcTo(p[i++], p[i++], p[i++] * Math.PI / 180, p[i++], p[i++], x = p[i++], y = p[i++]);\n }\n break;\n case 'a':\n while (i < n) {\n _this.arcTo(p[i++], p[i++], p[i++] * Math.PI / 180, p[i++], p[i++], x += p[i++], y += p[i++]);\n }\n break;\n case 'Z':\n case 'z':\n _this.closePath();\n break;\n case 'H':\n while (i < n) {\n _this.lineTo(x = p[i++], y);\n }\n break;\n case 'h':\n while (i < n) {\n _this.lineTo(x += p[i++], y);\n }\n break;\n case 'V':\n while (i < n) {\n _this.lineTo(x, y = p[i++]);\n }\n break;\n case 'v':\n while (i < n) {\n _this.lineTo(x, y += p[i++]);\n }\n break;\n }\n lastCommand = part.command;\n });\n };\n Path2D.prototype.toString = function () {\n var c = this.commands;\n var p = this.params;\n var cn = c.length;\n var out = [];\n for (var ci = 0, pi = 0; ci < cn; ci++) {\n switch (c[ci]) {\n case 'M':\n out.push('M' + p[pi++] + ',' + p[pi++]);\n break;\n case 'L':\n out.push('L' + p[pi++] + ',' + p[pi++]);\n break;\n case 'C':\n out.push('C' + p[pi++] + ',' + p[pi++] + ' ' +\n p[pi++] + ',' + p[pi++] + ' ' +\n p[pi++] + ',' + p[pi++]);\n break;\n case 'Z':\n out.push('Z');\n break;\n }\n }\n return out.join('');\n };\n Path2D.prototype.toPrettyString = function () {\n return Path2D.prettifySvgPath(this.toString());\n };\n Path2D.prototype.toSvg = function () {\n return Path2D.xmlDeclaration + \"\\n\\n \\n\";\n };\n Path2D.prototype.toDebugSvg = function () {\n var d = Path2D.prettifySvgPath(this.toString());\n return Path2D.xmlDeclaration + \"\\n\\n \\n\";\n };\n /**\n * Returns an array of sub-paths of this Path,\n * where each sub-path is represented exclusively by cubic segments.\n */\n Path2D.prototype.toCubicPaths = function () {\n // Each sub-path is an array of `(n * 3 + 1) * 2` numbers,\n // where `n` is the number of segments.\n var paths = [];\n var params = this.params;\n // current path\n var path;\n // the starting point of the current path\n var sx;\n var sy;\n // the previous point of the current path\n var px;\n var py;\n var i = 0; // current parameter\n this.commands.forEach(function (command) {\n switch (command) {\n case 'M':\n path = [\n sx = px = params[i++],\n sy = py = params[i++]\n ];\n paths.push(path);\n break;\n case 'L':\n var x = params[i++];\n var y = params[i++];\n // Place control points along the line `a + (b - a) * t`\n // at t = 1/3 and 2/3:\n path.push((px + px + x) / 3, (py + py + y) / 3, (px + x + x) / 3, (py + y + y) / 3, px = x, py = y);\n break;\n case 'C':\n path.push(params[i++], params[i++], params[i++], params[i++], px = params[i++], py = params[i++]);\n break;\n case 'Z':\n path.push((px + px + sx) / 3, (py + py + sy) / 3, (px + sx + sx) / 3, (py + sy + sy) / 3, px = sx, py = sy);\n break;\n }\n });\n return paths;\n };\n Path2D.cubicPathToString = function (path) {\n var n = path.length;\n if (!(n % 2 === 0 && (n / 2 - 1) / 2 >= 1)) {\n throw new Error('Invalid path.');\n }\n return 'M' + path.slice(0, 2).join(',') + 'C' + path.slice(2).join(',');\n };\n Path2D.splitCommandsRe = /(?=[AaCcHhLlMmQqSsTtVvZz])/g;\n Path2D.matchParamsRe = /-?[0-9]*\\.?\\d+/g;\n Path2D.quadraticCommandRe = /[QqTt]/;\n Path2D.cubicCommandRe = /[CcSs]/;\n Path2D.xmlDeclaration = '';\n Path2D.xmlns = 'http://www.w3.org/2000/svg';\n return Path2D;\n}());\nexport { Path2D };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Shape } from \"./shape\";\nimport { Path2D } from \"../path2D\";\nvar Path = /** @class */ (function (_super) {\n __extends(Path, _super);\n function Path() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * Declare a path to retain for later rendering and hit testing\n * using custom Path2D class. Think of it as a TypeScript version\n * of the native Path2D (with some differences) that works in all browsers.\n */\n _this.path = new Path2D();\n /**\n * The path only has to be updated when certain attributes change.\n * For example, if transform attributes (such as `translationX`)\n * are changed, we don't have to update the path. The `dirtyPath` flag\n * is how we keep track if the path has to be updated or not.\n */\n _this._dirtyPath = true;\n /**\n * Path definition in SVG path syntax:\n * https://www.w3.org/TR/SVG11/paths.html#DAttribute\n */\n _this._svgPath = '';\n return _this;\n }\n Object.defineProperty(Path.prototype, \"dirtyPath\", {\n get: function () {\n return this._dirtyPath;\n },\n set: function (value) {\n if (this._dirtyPath !== value) {\n this._dirtyPath = value;\n if (value) {\n this.dirty = true;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Path.prototype, \"svgPath\", {\n get: function () {\n return this._svgPath;\n },\n set: function (value) {\n if (this._svgPath !== value) {\n this._svgPath = value;\n this.path.setFromString(value);\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Path.prototype.isPointInPath = function (x, y) {\n var point = this.transformPoint(x, y);\n return this.path.closedPath && this.path.isPointInPath(point.x, point.y);\n };\n Path.prototype.isPointInStroke = function (x, y) {\n return false;\n };\n Path.prototype.updatePath = function () { };\n Path.prototype.render = function (ctx) {\n if (this.dirtyTransform) {\n this.computeTransformMatrix();\n }\n // if (scene.debug.renderBoundingBoxes) {\n // const bbox = this.computeBBox();\n // if (bbox) {\n // this.matrix.transformBBox(bbox).render(ctx);\n // }\n // }\n this.matrix.toContext(ctx);\n if (this.dirtyPath) {\n this.updatePath();\n this.dirtyPath = false;\n }\n this.path.draw(ctx);\n this.fillStroke(ctx);\n this.dirty = false;\n };\n Path.className = 'Path';\n return Path;\n}(Shape));\nexport { Path };\n","var twoPi = Math.PI * 2;\n/**\n * Normalize the given angle to be in the [0, 2π) interval.\n * @param radians Angle in radians.\n */\nexport function normalizeAngle360(radians) {\n radians %= twoPi;\n radians += twoPi;\n radians %= twoPi;\n return radians;\n}\nexport function normalizeAngle360Inclusive(radians) {\n radians %= twoPi;\n radians += twoPi;\n if (radians !== twoPi) {\n radians %= twoPi;\n }\n return radians;\n}\n/**\n * Normalize the given angle to be in the [-π, π) interval.\n * @param radians Angle in radians.\n */\nexport function normalizeAngle180(radians) {\n radians %= twoPi;\n if (radians < -Math.PI) {\n radians += twoPi;\n }\n else if (radians >= Math.PI) {\n radians -= twoPi;\n }\n return radians;\n}\nexport function toRadians(degrees) {\n return degrees / 180 * Math.PI;\n}\nexport function toDegrees(radians) {\n return radians / Math.PI * 180;\n}\n","export function isEqual(a, b, epsilon) {\n if (epsilon === void 0) { epsilon = 1e-10; }\n return Math.abs(a - b) < epsilon;\n}\n/**\n * `Number.toFixed(n)` always formats a number so that it has `n` digits after the decimal point.\n * For example, `Number(0.00003427).toFixed(2)` returns `0.00`.\n * That's not very helpful, because all the meaningful information is lost.\n * In this case we would want the formatted value to have at least two significant digits: `0.000034`,\n * not two fraction digits.\n * @param value\n * @param fractionOrSignificantDigits\n */\nexport function toFixed(value, fractionOrSignificantDigits) {\n if (fractionOrSignificantDigits === void 0) { fractionOrSignificantDigits = 2; }\n var power = Math.floor(Math.log(Math.abs(value)) / Math.LN10);\n if (power >= 0 || !isFinite(power)) {\n return value.toFixed(fractionOrSignificantDigits); // fraction digits\n }\n return value.toFixed(Math.abs(power) - 1 + fractionOrSignificantDigits); // significant digits\n}\nvar numberUnits = ['', 'K', 'M', 'B', 'T'];\nexport function log10(x) {\n return Math.log(x) * Math.LOG10E;\n}\nexport var EPSILON = Number.EPSILON || Math.pow(2, -52);\nexport function toReadableNumber(value, fractionDigits) {\n if (fractionDigits === void 0) { fractionDigits = 2; }\n // For example: toReadableNumber(10550000000) yields \"10.6B\"\n var prefix = '';\n if (value <= 0) {\n value = -value;\n prefix = '-';\n }\n var thousands = ~~(log10(value) / log10(1000)); // discard the floating point part\n return prefix + (value / Math.pow(1000.0, thousands)).toFixed(fractionDigits) + numberUnits[thousands];\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Shape } from \"./shape\";\nimport { Path } from \"./path\";\nimport { BBox } from \"../bbox\";\nimport { normalizeAngle360 } from \"../../util/angle\";\nimport { chainObjects } from \"../../util/object\";\nimport { isEqual } from \"../../util/number\";\nexport var ArcType;\n(function (ArcType) {\n ArcType[ArcType[\"Open\"] = 0] = \"Open\";\n ArcType[ArcType[\"Chord\"] = 1] = \"Chord\";\n ArcType[ArcType[\"Round\"] = 2] = \"Round\";\n})(ArcType || (ArcType = {}));\n/**\n * Elliptical arc node.\n */\nvar Arc = /** @class */ (function (_super) {\n __extends(Arc, _super);\n function Arc() {\n var _this = _super.call(this) || this;\n _this._centerX = 0;\n _this._centerY = 0;\n _this._radiusX = 10;\n _this._radiusY = 10;\n _this._startAngle = 0;\n _this._endAngle = Math.PI * 2;\n _this._counterClockwise = false;\n /**\n * The type of arc to render:\n * - {@link ArcType.Open} - end points of the arc segment are not connected (default)\n * - {@link ArcType.Chord} - end points of the arc segment are connected by a line segment\n * - {@link ArcType.Round} - each of the end points of the arc segment are connected\n * to the center of the arc\n * Arcs with {@link ArcType.Open} do not support hit testing, even if they have their\n * {@link Shape.fillStyle} set, because they are not closed paths. Hit testing support\n * would require using two paths - one for rendering, another for hit testing - and there\n * doesn't seem to be a compelling reason to do that, when one can just use {@link ArcType.Chord}\n * to create a closed path.\n */\n _this._type = ArcType.Open;\n _this.restoreOwnStyles();\n return _this;\n }\n Object.defineProperty(Arc.prototype, \"centerX\", {\n get: function () {\n return this._centerX;\n },\n set: function (value) {\n if (this._centerX !== value) {\n this._centerX = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Arc.prototype, \"centerY\", {\n get: function () {\n return this._centerY;\n },\n set: function (value) {\n if (this._centerY !== value) {\n this._centerY = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Arc.prototype, \"radiusX\", {\n get: function () {\n return this._radiusX;\n },\n set: function (value) {\n if (this._radiusX !== value) {\n this._radiusX = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Arc.prototype, \"radiusY\", {\n get: function () {\n return this._radiusY;\n },\n set: function (value) {\n if (this._radiusY !== value) {\n this._radiusY = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Arc.prototype, \"startAngle\", {\n get: function () {\n return this._startAngle;\n },\n set: function (value) {\n if (this._startAngle !== value) {\n this._startAngle = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Arc.prototype, \"endAngle\", {\n get: function () {\n return this._endAngle;\n },\n set: function (value) {\n if (this._endAngle !== value) {\n this._endAngle = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Arc.prototype, \"fullPie\", {\n get: function () {\n return isEqual(normalizeAngle360(this.startAngle), normalizeAngle360(this.endAngle));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Arc.prototype, \"counterClockwise\", {\n get: function () {\n return this._counterClockwise;\n },\n set: function (value) {\n if (this._counterClockwise !== value) {\n this._counterClockwise = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Arc.prototype, \"type\", {\n get: function () {\n return this._type;\n },\n set: function (value) {\n if (this._type !== value) {\n this._type = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Arc.prototype.updatePath = function () {\n var path = this.path;\n path.clear(); // No need to recreate the Path, can simply clear the existing one.\n // This is much faster than the native Path2D implementation even though this `cubicArc`\n // method is pure TypeScript and actually produces the definition of an elliptical arc,\n // where you can specify two radii and rotation, while Path2D's `arc` method simply produces\n // a circular arc. Maybe it's due to the experimental nature of the Path2D class,\n // maybe it's because we have to create a new instance of it on each render, who knows...\n path.cubicArc(this.centerX, this.centerY, this.radiusX, this.radiusY, 0, this.startAngle, this.endAngle, this.counterClockwise ? 1 : 0);\n if (this.type === ArcType.Chord) {\n path.closePath();\n }\n else if (this.type === ArcType.Round && !this.fullPie) {\n path.lineTo(this.centerX, this.centerY);\n path.closePath();\n }\n };\n Arc.prototype.computeBBox = function () {\n // Only works with full arcs (circles) and untransformed ellipses.\n return new BBox(this.centerX - this.radiusX, this.centerY - this.radiusY, this.radiusX * 2, this.radiusY * 2);\n };\n Arc.prototype.isPointInPath = function (x, y) {\n var point = this.transformPoint(x, y);\n var bbox = this.computeBBox();\n return this.type !== ArcType.Open\n && bbox.containsPoint(point.x, point.y)\n && this.path.isPointInPath(point.x, point.y);\n };\n Arc.className = 'Arc';\n Arc.defaultStyles = chainObjects(Shape.defaultStyles, {\n lineWidth: 1,\n fillStyle: null\n });\n return Arc;\n}(Path));\nexport { Arc };\n","var doOnceFlags = {};\n/**\n * If the key was passed before, then doesn't execute the func\n * @param {Function} func\n * @param {string} key\n */\nexport function doOnce(func, key) {\n if (doOnceFlags[key]) {\n return;\n }\n func();\n doOnceFlags[key] = true;\n}\n","var __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nimport { Group } from \"./scene/group\";\nimport { Selection } from \"./scene/selection\";\nimport { Line } from \"./scene/shape/line\";\nimport { Text } from \"./scene/shape/text\";\nimport { Arc } from \"./scene/shape/arc\";\nimport { BBox } from \"./scene/bbox\";\nimport { Matrix } from \"./scene/matrix\";\nimport { createId } from \"./util/id\";\nimport { normalizeAngle360, normalizeAngle360Inclusive, toRadians } from \"./util/angle\";\nimport { doOnce } from \"./util/function\";\n// import { Rect } from \"./scene/shape/rect\"; // debug (bbox)\nvar Tags;\n(function (Tags) {\n Tags[Tags[\"Tick\"] = 0] = \"Tick\";\n Tags[Tags[\"GridLine\"] = 1] = \"GridLine\";\n})(Tags || (Tags = {}));\nvar AxisTick = /** @class */ (function () {\n function AxisTick() {\n /**\n * The line width to be used by axis ticks.\n */\n this.width = 1;\n /**\n * The line length to be used by axis ticks.\n */\n this.size = 6;\n /**\n * The color of the axis ticks.\n * Use `undefined` rather than `rgba(0, 0, 0, 0)` to make the ticks invisible.\n */\n this.color = 'rgba(195, 195, 195, 1)';\n /**\n * A hint of how many ticks to use (the exact number of ticks might differ),\n * a `TimeInterval` or a `CountableTimeInterval`.\n * For example:\n *\n * axis.tick.count = 5;\n * axis.tick.count = year;\n * axis.tick.count = month.every(6);\n */\n this.count = 10;\n }\n return AxisTick;\n}());\nexport { AxisTick };\nvar AxisLabel = /** @class */ (function () {\n function AxisLabel() {\n this.fontStyle = undefined;\n this.fontWeight = undefined;\n this.fontSize = 12;\n this.fontFamily = 'Verdana, sans-serif';\n /**\n * The padding between the labels and the ticks.\n */\n this.padding = 5;\n /**\n * The color of the labels.\n * Use `undefined` rather than `rgba(0, 0, 0, 0)` to make labels invisible.\n */\n this.color = 'rgba(87, 87, 87, 1)';\n /**\n * Custom label rotation in degrees.\n * Labels are rendered perpendicular to the axis line by default.\n * Or parallel to the axis line, if the {@link parallel} is set to `true`.\n * The value of this config is used as the angular offset/deflection\n * from the default rotation.\n */\n this.rotation = 0;\n /**\n * By default labels and ticks are positioned to the left of the axis line.\n * `true` positions the labels to the right of the axis line.\n * However, if the axis is rotated, its easier to think in terms\n * of this side or the opposite side, rather than left and right.\n * We use the term `mirror` for conciseness, although it's not\n * true mirroring - for example, when a label is rotated, so that\n * it is inclined at the 45 degree angle, text flowing from north-west\n * to south-east, ending at the tick to the left of the axis line,\n * and then we set this config to `true`, the text will still be flowing\n * from north-west to south-east, _starting_ at the tick to the right\n * of the axis line.\n */\n this.mirrored = false;\n /**\n * Labels are rendered perpendicular to the axis line by default.\n * Setting this config to `true` makes labels render parallel to the axis line\n * and center aligns labels' text at the ticks.\n */\n this.parallel = false;\n /**\n * In case {@param value} is a number, the {@param fractionDigits} parameter will\n * be provided as well. The `fractionDigits` corresponds to the number of fraction\n * digits used by the tick step. For example, if the tick step is `0.0005`,\n * the `fractionDigits` is 4.\n */\n this.formatter = undefined;\n this.onFormatChange = undefined;\n }\n Object.defineProperty(AxisLabel.prototype, \"format\", {\n get: function () {\n return this._format;\n },\n set: function (value) {\n // See `TimeLocaleObject` docs for the list of supported format directives.\n if (this._format !== value) {\n this._format = value;\n if (this.onFormatChange) {\n this.onFormatChange(value);\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n return AxisLabel;\n}());\nexport { AxisLabel };\n/**\n * A general purpose linear axis with no notion of orientation.\n * The axis is always rendered vertically, with horizontal labels positioned to the left\n * of the axis line by default. The axis can be {@link rotation | rotated} by an arbitrary angle,\n * so that it can be used as a top, right, bottom, left, radial or any other kind\n * of linear axis.\n * The generic `D` parameter is the type of the domain of the axis' scale.\n * The output range of the axis' scale is always numeric (screen coordinates).\n */\nvar Axis = /** @class */ (function () {\n function Axis(scale) {\n // debug (bbox)\n // private bboxRect = (() => {\n // const rect = new Rect();\n // rect.fill = undefined;\n // rect.stroke = 'red';\n // rect.strokeWidth = 1;\n // rect.strokeOpacity = 0.2;\n // return rect;\n // })();\n this.id = createId(this);\n this.lineNode = new Line();\n this.group = new Group();\n this.line = {\n width: 1,\n color: 'rgba(195, 195, 195, 1)'\n };\n this.tick = new AxisTick();\n this.label = new AxisLabel();\n this.translation = { x: 0, y: 0 };\n this.rotation = 0; // axis rotation angle in degrees\n this.requestedRange = [0, 1];\n this._visibleRange = [0, 1];\n this._title = undefined;\n /**\n * The length of the grid. The grid is only visible in case of a non-zero value.\n * In case {@link radialGrid} is `true`, the value is interpreted as an angle\n * (in degrees).\n */\n this._gridLength = 0;\n /**\n * The array of styles to cycle through when rendering grid lines.\n * For example, use two {@link GridStyle} objects for alternating styles.\n * Contains only one {@link GridStyle} object by default, meaning all grid lines\n * have the same style.\n */\n this.gridStyle = [{\n stroke: 'rgba(219, 219, 219, 1)',\n lineDash: [4, 2]\n }];\n /**\n * `false` - render grid as lines of {@link gridLength} that extend the ticks\n * on the opposite side of the axis\n * `true` - render grid as concentric circles that go through the ticks\n */\n this._radialGrid = false;\n this.fractionDigits = 0;\n this.thickness = 0;\n this.scale = scale;\n this.groupSelection = Selection.select(this.group).selectAll();\n this.label.onFormatChange = this.onLabelFormatChange.bind(this);\n this.group.append(this.lineNode);\n // this.group.append(this.bboxRect); // debug (bbox)\n }\n Object.defineProperty(Axis.prototype, \"scale\", {\n get: function () {\n return this._scale;\n },\n set: function (value) {\n this._scale = value;\n this.requestedRange = value.range.slice();\n this.onLabelFormatChange();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Axis.prototype, \"ticks\", {\n get: function () {\n return this._ticks;\n },\n set: function (values) {\n this._ticks = values;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Meant to be overridden in subclasses to provide extra context the the label formatter.\n * The return value of this function will be passed to the laber.formatter as the `axis` parameter.\n */\n Axis.prototype.getMeta = function () { };\n Axis.prototype.updateRange = function () {\n var _a = this, rr = _a.requestedRange, vr = _a.visibleRange, scale = _a.scale;\n var span = (rr[1] - rr[0]) / (vr[1] - vr[0]);\n var shift = span * vr[0];\n var start = rr[0] - shift;\n scale.range = [start, start + span];\n };\n /**\n * Checks if a point or an object is in range.\n * @param x A point (or object's starting point).\n * @param width Object's width.\n * @param tolerance Expands the range on both ends by this amount.\n */\n Axis.prototype.inRange = function (x, width, tolerance) {\n if (width === void 0) { width = 0; }\n if (tolerance === void 0) { tolerance = 0; }\n return this.inRangeEx(x, width, tolerance) === 0;\n };\n Axis.prototype.inRangeEx = function (x, width, tolerance) {\n if (width === void 0) { width = 0; }\n if (tolerance === void 0) { tolerance = 0; }\n var range = this.range;\n // Account for inverted ranges, for example [500, 100] as well as [100, 500]\n var min = Math.min(range[0], range[1]);\n var max = Math.max(range[0], range[1]);\n if ((x + width) < (min - tolerance)) {\n return -1; // left of range\n }\n if (x > (max + tolerance)) {\n return 1; // right of range\n }\n return 0; // in range\n };\n Object.defineProperty(Axis.prototype, \"range\", {\n get: function () {\n return this.requestedRange.slice();\n },\n set: function (value) {\n this.requestedRange = value.slice();\n this.updateRange();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Axis.prototype, \"visibleRange\", {\n get: function () {\n return this._visibleRange.slice();\n },\n set: function (value) {\n if (value && value.length === 2) {\n var _a = __read(value, 2), min = _a[0], max = _a[1];\n min = Math.max(0, min);\n max = Math.min(1, max);\n min = Math.min(min, max);\n max = Math.max(min, max);\n this._visibleRange = [min, max];\n this.updateRange();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Axis.prototype, \"domain\", {\n get: function () {\n return this.scale.domain.slice();\n },\n set: function (value) {\n this.scale.domain = value.slice();\n this.onLabelFormatChange(this.label.format);\n },\n enumerable: true,\n configurable: true\n });\n Axis.prototype.onLabelFormatChange = function (format) {\n if (format && this.scale && this.scale.tickFormat) {\n try {\n this.labelFormatter = this.scale.tickFormat(this.tick.count, format);\n }\n catch (e) {\n this.labelFormatter = undefined;\n doOnce(function () { return console.warn(\"AG Charts - the axis label format string \" + format + \" is invalid. No formatting will be applied\"); }, \"invalid axis label format string \" + format);\n }\n }\n else {\n this.labelFormatter = undefined;\n }\n };\n Object.defineProperty(Axis.prototype, \"title\", {\n get: function () {\n return this._title;\n },\n set: function (value) {\n var oldTitle = this._title;\n if (oldTitle !== value) {\n if (oldTitle) {\n this.group.removeChild(oldTitle.node);\n }\n if (value) {\n value.node.rotation = -Math.PI / 2;\n this.group.appendChild(value.node);\n }\n this._title = value;\n // position title so that it doesn't briefly get rendered in the top left hand corner of the canvas before update is called.\n this.positionTitle();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Axis.prototype, \"gridLength\", {\n get: function () {\n return this._gridLength;\n },\n set: function (value) {\n // Was visible and now invisible, or was invisible and now visible.\n if (this._gridLength && !value || !this._gridLength && value) {\n this.groupSelection = this.groupSelection.remove().setData([]);\n }\n this._gridLength = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Axis.prototype, \"radialGrid\", {\n get: function () {\n return this._radialGrid;\n },\n set: function (value) {\n if (this._radialGrid !== value) {\n this._radialGrid = value;\n this.groupSelection = this.groupSelection.remove().setData([]);\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Creates/removes/updates the scene graph nodes that constitute the axis.\n * Supposed to be called _manually_ after changing _any_ of the axis properties.\n * This allows to bulk set axis properties before updating the nodes.\n * The node changes made by this method are rendered on the next animation frame.\n * We could schedule this method call automatically on the next animation frame\n * when any of the axis properties change (the way we do when properties of scene graph's\n * nodes change), but this will mean that we first wait for the next animation\n * frame to make changes to the nodes of the axis, then wait for another animation\n * frame to render those changes. It's nice to have everything update automatically,\n * but this extra level of async indirection will not just introduce an unwanted delay,\n * it will also make it harder to reason about the program.\n */\n Axis.prototype.update = function () {\n var _this = this;\n var _a = this, group = _a.group, scale = _a.scale, tick = _a.tick, label = _a.label, gridStyle = _a.gridStyle, requestedRange = _a.requestedRange;\n var requestedRangeMin = Math.min(requestedRange[0], requestedRange[1]);\n var requestedRangeMax = Math.max(requestedRange[0], requestedRange[1]);\n var rotation = toRadians(this.rotation);\n var parallelLabels = label.parallel;\n var labelRotation = normalizeAngle360(toRadians(label.rotation));\n group.translationX = this.translation.x;\n group.translationY = this.translation.y;\n group.rotation = rotation;\n var halfBandwidth = (scale.bandwidth || 0) / 2;\n // The side of the axis line to position the labels on.\n // -1 = left (default)\n // 1 = right\n var sideFlag = label.mirrored ? 1 : -1;\n // When labels are parallel to the axis line, the `parallelFlipFlag` is used to\n // flip the labels to avoid upside-down text, when the axis is rotated\n // such that it is in the right hemisphere, i.e. the angle of rotation\n // is in the [0, π] interval.\n // The rotation angle is normalized, so that we have an easier time checking\n // if it's in the said interval. Since the axis is always rendered vertically\n // and then rotated, zero rotation means 12 (not 3) o-clock.\n // -1 = flip\n // 1 = don't flip (default)\n var parallelFlipRotation = normalizeAngle360(rotation);\n var parallelFlipFlag = !labelRotation && parallelFlipRotation >= 0 && parallelFlipRotation <= Math.PI ? -1 : 1;\n var regularFlipRotation = normalizeAngle360(rotation - Math.PI / 2);\n // Flip if the axis rotation angle is in the top hemisphere.\n var regularFlipFlag = !labelRotation && regularFlipRotation >= 0 && regularFlipRotation <= Math.PI ? -1 : 1;\n var alignFlag = labelRotation >= 0 && labelRotation <= Math.PI ? -1 : 1;\n var ticks = this.ticks || scale.ticks(this.tick.count);\n var update = this.groupSelection.setData(ticks);\n update.exit.remove();\n var enter = update.enter.append(Group);\n // Line auto-snaps to pixel grid if vertical or horizontal.\n enter.append(Line).each(function (node) { return node.tag = Tags.Tick; });\n if (this.gridLength) {\n if (this.radialGrid) {\n enter.append(Arc).each(function (node) { return node.tag = Tags.GridLine; });\n }\n else {\n enter.append(Line).each(function (node) { return node.tag = Tags.GridLine; });\n }\n }\n enter.append(Text);\n var groupSelection = update.merge(enter);\n groupSelection\n .attrFn('translationY', function (_, datum) {\n return Math.round(scale.convert(datum) + halfBandwidth);\n })\n .attrFn('visible', function (node) {\n var min = Math.floor(requestedRangeMin);\n var max = Math.ceil(requestedRangeMax);\n return node.translationY >= min && node.translationY <= max;\n });\n groupSelection.selectByTag(Tags.Tick)\n .each(function (line) {\n line.strokeWidth = tick.width;\n line.stroke = tick.color;\n })\n .attr('x1', sideFlag * tick.size)\n .attr('x2', 0)\n .attr('y1', 0)\n .attr('y2', 0);\n if (this.gridLength && gridStyle.length) {\n var styleCount_1 = gridStyle.length;\n var gridLines = void 0;\n if (this.radialGrid) {\n var angularGridLength_1 = normalizeAngle360Inclusive(toRadians(this.gridLength));\n gridLines = groupSelection.selectByTag(Tags.GridLine)\n .each(function (arc, datum) {\n var radius = Math.round(scale.convert(datum) + halfBandwidth);\n arc.centerX = 0;\n arc.centerY = scale.range[0] - radius;\n arc.endAngle = angularGridLength_1;\n arc.radiusX = radius;\n arc.radiusY = radius;\n });\n }\n else {\n gridLines = groupSelection.selectByTag(Tags.GridLine)\n .each(function (line) {\n line.x1 = 0;\n line.x2 = -sideFlag * _this.gridLength;\n line.y1 = 0;\n line.y2 = 0;\n line.visible = Math.abs(line.parent.translationY - scale.range[0]) > 1;\n });\n }\n gridLines.each(function (gridLine, _, index) {\n var style = gridStyle[index % styleCount_1];\n gridLine.stroke = style.stroke;\n gridLine.strokeWidth = tick.width;\n gridLine.lineDash = style.lineDash;\n gridLine.fill = undefined;\n });\n }\n // `ticks instanceof NumericTicks` doesn't work here, so we feature detect.\n this.fractionDigits = ticks.fractionDigits >= 0 ? ticks.fractionDigits : 0;\n var labelSelection = groupSelection.selectByClass(Text)\n .each(function (node, datum, index) {\n node.fontStyle = label.fontStyle;\n node.fontWeight = label.fontWeight;\n node.fontSize = label.fontSize;\n node.fontFamily = label.fontFamily;\n node.fill = label.color;\n node.textBaseline = parallelLabels && !labelRotation\n ? (sideFlag * parallelFlipFlag === -1 ? 'hanging' : 'bottom')\n : 'middle';\n node.text = _this.formatTickDatum(datum, index);\n node.textAlign = parallelLabels\n ? labelRotation ? (sideFlag * alignFlag === -1 ? 'end' : 'start') : 'center'\n : sideFlag * regularFlipFlag === -1 ? 'end' : 'start';\n });\n var labelX = sideFlag * (tick.size + label.padding);\n var autoRotation = parallelLabels\n ? parallelFlipFlag * Math.PI / 2\n : (regularFlipFlag === -1 ? Math.PI : 0);\n labelSelection.each(function (label) {\n label.x = labelX;\n label.rotationCenterX = labelX;\n label.rotation = autoRotation + labelRotation;\n });\n this.groupSelection = groupSelection;\n // Render axis line.\n var lineNode = this.lineNode;\n lineNode.x1 = 0;\n lineNode.x2 = 0;\n lineNode.y1 = requestedRange[0];\n lineNode.y2 = requestedRange[1];\n lineNode.strokeWidth = this.line.width;\n lineNode.stroke = this.line.color;\n lineNode.visible = ticks.length > 0;\n this.positionTitle();\n // debug (bbox)\n // const bbox = this.computeBBox();\n // const bboxRect = this.bboxRect;\n // bboxRect.x = bbox.x;\n // bboxRect.y = bbox.y;\n // bboxRect.width = bbox.width;\n // bboxRect.height = bbox.height;\n };\n Axis.prototype.positionTitle = function () {\n var _a = this, title = _a.title, lineNode = _a.lineNode;\n if (!title) {\n return;\n }\n var titleVisible = false;\n if (title.enabled && lineNode.visible) {\n titleVisible = true;\n var _b = this, label = _b.label, rotation = _b.rotation, requestedRange = _b.requestedRange;\n var sideFlag = label.mirrored ? 1 : -1;\n var parallelFlipRotation = normalizeAngle360(rotation);\n var padding = title.padding.bottom;\n var titleNode = title.node;\n var bbox = this.computeBBox({ excludeTitle: true });\n var titleRotationFlag = sideFlag === -1 && parallelFlipRotation > Math.PI && parallelFlipRotation < Math.PI * 2 ? -1 : 1;\n titleNode.rotation = titleRotationFlag * sideFlag * Math.PI / 2;\n // titleNode.x = titleRotationFlag * sideFlag * (lineNode.y1 + lineNode.y2) / 2; // TODO: remove?\n titleNode.x = titleRotationFlag * sideFlag * (requestedRange[0] + requestedRange[1]) / 2;\n if (sideFlag === -1) {\n titleNode.y = titleRotationFlag * (-padding - bbox.width + Math.max(bbox.x + bbox.width, 0));\n }\n else {\n titleNode.y = -padding - bbox.width - Math.min(bbox.x, 0);\n }\n titleNode.textBaseline = titleRotationFlag === 1 ? 'bottom' : 'top';\n }\n title.node.visible = titleVisible;\n };\n // For formatting (nice rounded) tick values.\n Axis.prototype.formatTickDatum = function (datum, index) {\n var _a = this, label = _a.label, labelFormatter = _a.labelFormatter, fractionDigits = _a.fractionDigits;\n var meta = this.getMeta();\n return label.formatter\n ? label.formatter({\n value: fractionDigits >= 0 ? datum : String(datum),\n index: index,\n fractionDigits: fractionDigits,\n formatter: labelFormatter,\n axis: meta\n })\n : labelFormatter\n ? labelFormatter(datum)\n : typeof datum === 'number' && fractionDigits >= 0\n // the `datum` is a floating point number\n ? datum.toFixed(fractionDigits)\n // the`datum` is an integer, a string or an object\n : String(datum);\n };\n // For formatting arbitrary values between the ticks.\n Axis.prototype.formatDatum = function (datum) {\n return String(datum);\n };\n Axis.prototype.computeBBox = function (options) {\n var _a = this, title = _a.title, lineNode = _a.lineNode;\n var labels = this.groupSelection.selectByClass(Text);\n var left = Infinity;\n var right = -Infinity;\n var top = Infinity;\n var bottom = -Infinity;\n labels.each(function (label) {\n // The label itself is rotated, but not translated, the group that\n // contains it is. So to capture the group transform in the label bbox\n // calculation we combine the transform matrices of the label and the group.\n // Depending on the timing of the `axis.computeBBox()` method call, we may\n // not have the group's and the label's transform matrices updated yet (because\n // the transform matrix is not recalculated whenever a node's transform attributes\n // change, instead it's marked for recalculation on the next frame by setting\n // the node's `dirtyTransform` flag to `true`), so we force them to update\n // right here by calling `computeTransformMatrix`.\n label.computeTransformMatrix();\n var matrix = Matrix.flyweight(label.matrix);\n var group = label.parent;\n group.computeTransformMatrix();\n matrix.preMultiplySelf(group.matrix);\n var labelBBox = label.computeBBox();\n if (labelBBox) {\n var bbox = matrix.transformBBox(labelBBox);\n left = Math.min(left, bbox.x);\n right = Math.max(right, bbox.x + bbox.width);\n top = Math.min(top, bbox.y);\n bottom = Math.max(bottom, bbox.y + bbox.height);\n }\n });\n if (title && title.enabled && lineNode.visible && (!options || !options.excludeTitle)) {\n var label = title.node;\n label.computeTransformMatrix();\n var matrix = Matrix.flyweight(label.matrix);\n var labelBBox = label.computeBBox();\n if (labelBBox) {\n var bbox = matrix.transformBBox(labelBBox);\n left = Math.min(left, bbox.x);\n right = Math.max(right, bbox.x + bbox.width);\n top = Math.min(top, bbox.y);\n bottom = Math.max(bottom, bbox.y + bbox.height);\n }\n }\n left = Math.min(left, 0);\n right = Math.max(right, 0);\n top = Math.min(top, lineNode.y1, lineNode.y2);\n bottom = Math.max(bottom, lineNode.y1, lineNode.y2);\n return new BBox(left, top, right - left, bottom - top);\n };\n return Axis;\n}());\nexport { Axis };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Axis } from \"../axis\";\nexport var ChartAxisDirection;\n(function (ChartAxisDirection) {\n ChartAxisDirection[\"X\"] = \"x\";\n ChartAxisDirection[\"Y\"] = \"y\"; // means 'radius' in polar charts\n})(ChartAxisDirection || (ChartAxisDirection = {}));\nexport function flipChartAxisDirection(direction) {\n if (direction === ChartAxisDirection.X) {\n return ChartAxisDirection.Y;\n }\n else {\n return ChartAxisDirection.X;\n }\n}\nexport var ChartAxisPosition;\n(function (ChartAxisPosition) {\n ChartAxisPosition[\"Top\"] = \"top\";\n ChartAxisPosition[\"Right\"] = \"right\";\n ChartAxisPosition[\"Bottom\"] = \"bottom\";\n ChartAxisPosition[\"Left\"] = \"left\";\n ChartAxisPosition[\"Angle\"] = \"angle\";\n ChartAxisPosition[\"Radius\"] = \"radius\";\n})(ChartAxisPosition || (ChartAxisPosition = {}));\nvar ChartAxis = /** @class */ (function (_super) {\n __extends(ChartAxis, _super);\n function ChartAxis() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.keys = [];\n _this.direction = ChartAxisDirection.Y;\n _this.boundSeries = [];\n _this._position = ChartAxisPosition.Left;\n return _this;\n }\n Object.defineProperty(ChartAxis.prototype, \"type\", {\n get: function () {\n return this.constructor.type || '';\n },\n enumerable: true,\n configurable: true\n });\n ChartAxis.prototype.getMeta = function () {\n return {\n id: this.id,\n direction: this.direction,\n boundSeries: this.boundSeries,\n };\n };\n Object.defineProperty(ChartAxis.prototype, \"position\", {\n get: function () {\n return this._position;\n },\n set: function (value) {\n if (this._position !== value) {\n this._position = value;\n switch (value) {\n case ChartAxisPosition.Top:\n this.direction = ChartAxisDirection.X;\n this.rotation = -90;\n this.label.mirrored = true;\n this.label.parallel = true;\n break;\n case ChartAxisPosition.Right:\n this.direction = ChartAxisDirection.Y;\n this.rotation = 0;\n this.label.mirrored = true;\n this.label.parallel = false;\n break;\n case ChartAxisPosition.Bottom:\n this.direction = ChartAxisDirection.X;\n this.rotation = -90;\n this.label.mirrored = false;\n this.label.parallel = true;\n break;\n case ChartAxisPosition.Left:\n this.direction = ChartAxisDirection.Y;\n this.rotation = 0;\n this.label.mirrored = false;\n this.label.parallel = false;\n break;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n return ChartAxis;\n}(Axis));\nexport { ChartAxis };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nimport { calculateNiceSecondaryAxis } from \"../../util/secondaryAxisTicks\";\nimport { LinearScale } from \"../../scale/linearScale\";\nimport { extent } from \"../../util/array\";\nimport { isContinuous } from \"../../util/value\";\nimport { ChartAxis } from \"../chartAxis\";\nimport { doOnce } from \"../../util/function\";\n// Instead of clamping the values outside of domain to the range,\n// return NaNs to indicate invalid input.\nexport function clamper(domain) {\n var _a;\n var a = domain[0];\n var b = domain[domain.length - 1];\n if (a > b) {\n _a = __read([b, a], 2), a = _a[0], b = _a[1];\n }\n return function (x) { return x >= a && x <= b ? x : NaN; };\n}\nvar NumberAxis = /** @class */ (function (_super) {\n __extends(NumberAxis, _super);\n function NumberAxis() {\n var _this = _super.call(this, new LinearScale()) || this;\n _this._nice = true;\n _this._min = NaN;\n _this._max = NaN;\n _this.scale.clamper = clamper;\n return _this;\n }\n Object.defineProperty(NumberAxis.prototype, \"nice\", {\n get: function () {\n return this._nice;\n },\n set: function (value) {\n if (this._nice !== value) {\n this._nice = value;\n if (value && this.scale.nice) {\n this.scale.nice(this.tick.count);\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n NumberAxis.prototype.setDomain = function (domain, primaryTickCount) {\n var _a = this, scale = _a.scale, min = _a.min, max = _a.max;\n if (domain.length > 2) {\n domain = extent(domain, isContinuous, Number) || [0, 1];\n }\n domain = [\n isNaN(min) ? domain[0] : min,\n isNaN(max) ? domain[1] : max\n ];\n if (primaryTickCount) {\n // when `primaryTickCount` is supplied the current axis is a secondary axis which needs to be aligned to\n // the primary by constraining the tick count to the primary axis tick count\n var _b = __read(calculateNiceSecondaryAxis(domain, primaryTickCount), 2), d = _b[0], ticks = _b[1];\n scale.domain = d;\n this.ticks = ticks;\n return;\n }\n else {\n scale.domain = domain;\n this.onLabelFormatChange(this.label.format); // not sure why this is required?\n this.scale.clamp = true;\n if (this.nice && this.scale.nice) {\n this.scale.nice(this.tick.count);\n }\n }\n };\n Object.defineProperty(NumberAxis.prototype, \"domain\", {\n get: function () {\n return this.scale.domain;\n },\n set: function (domain) {\n this.setDomain(domain);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NumberAxis.prototype, \"min\", {\n get: function () {\n return this._min;\n },\n set: function (value) {\n if (this._min !== value) {\n this._min = value;\n if (!isNaN(value)) {\n this.scale.domain = [value, this.scale.domain[1]];\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NumberAxis.prototype, \"max\", {\n get: function () {\n return this._max;\n },\n set: function (value) {\n if (this._max !== value) {\n this._max = value;\n if (!isNaN(value)) {\n this.scale.domain = [this.scale.domain[0], value];\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n NumberAxis.prototype.formatDatum = function (datum) {\n if (typeof datum === \"number\") {\n return datum.toFixed(2);\n }\n else {\n doOnce(function () { return console.warn('AG Charts - Data contains Date objects which are being plotted against a number axis, please only use a number axis for numbers.'); }, \"number axis config used with Date objects\");\n return String(datum);\n }\n };\n NumberAxis.className = 'NumberAxis';\n NumberAxis.type = 'number';\n return NumberAxis;\n}(ChartAxis));\nexport { NumberAxis };\n","import { NumericTicks } from \"./ticks\";\nexport function calculateNiceSecondaryAxis(domain, primaryTickCount) {\n // Make secondary axis domain nice using strict tick count, matching the tick count from the primary axis.\n // This is to make the secondary axis grid lines/ tick positions align with the ones from the primary axis.\n var start = Math.floor(domain[0]);\n var stop = domain[1];\n start = calculateNiceStart(start, stop, primaryTickCount);\n var step = getTickStep(start, stop, primaryTickCount);\n var segments = primaryTickCount - 1;\n stop = start + (segments * step);\n var d = [start, stop];\n var ticks = getTicks(start, step, primaryTickCount);\n return [d, ticks];\n}\nfunction calculateNiceStart(a, b, count) {\n var rawStep = Math.abs(b - a) / (count - 1);\n var order = Math.floor(Math.log10(rawStep));\n var magnitude = Math.pow(10, order);\n return Math.floor(a / magnitude) * magnitude;\n}\nexport function getTicks(start, step, count) {\n // power of the step will be negative if the step is a fraction (between 0 and 1)\n var stepPower = Math.floor(Math.log10(step));\n var fractionDigits = (step > 0 && step < 1) ? Math.abs(stepPower) : 0;\n var f = Math.pow(10, fractionDigits);\n var ticks = new NumericTicks(fractionDigits);\n for (var i = 0; i < count; i++) {\n var tick = start + step * i;\n ticks[i] = Math.round(tick * f) / f;\n }\n return ticks;\n}\nexport function getTickStep(start, stop, count) {\n var segments = count - 1;\n var rawStep = (stop - start) / segments;\n return calculateNextNiceStep(rawStep);\n}\nfunction calculateNextNiceStep(rawStep) {\n var order = Math.floor(Math.log10(rawStep));\n var magnitude = Math.pow(10, order);\n // Make order 1\n var step = (rawStep / magnitude) * 10;\n if (step > 0 && step <= 1) {\n return magnitude / 10;\n }\n if (step > 1 && step <= 2) {\n return 2 * magnitude / 10;\n }\n if (step > 1 && step <= 5) {\n return 5 * magnitude / 10;\n }\n if (step > 5 && step <= 10) {\n return 10 * magnitude / 10;\n }\n if (step > 10 && step <= 20) {\n return 20 * magnitude / 10;\n }\n if (step > 20 && step <= 40) {\n return 40 * magnitude / 10;\n }\n if (step > 40 && step <= 50) {\n return 50 * magnitude / 10;\n }\n if (step > 50 && step <= 100) {\n return 100 * magnitude / 10;\n }\n return step;\n}\n","var __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\n/**\n * Maps a discrete domain to a continuous numeric range.\n * See https://github.com/d3/d3-scale#band-scales for more info.\n */\nvar BandScale = /** @class */ (function () {\n function BandScale() {\n this.type = 'band';\n /**\n * Maps datum to its index in the {@link domain} array.\n * Used to check for duplicate datums (not allowed).\n */\n this.index = new Map();\n /**\n * The output range values for datum at each index.\n */\n this.ordinalRange = [];\n /**\n * Contains unique datums only. Since `{}` is used in place of `Map`\n * for IE11 compatibility, the datums are converted `toString` before\n * the uniqueness check.\n */\n this._domain = [];\n this._range = [0, 1];\n this._bandwidth = 1;\n /**\n * The ratio of the range that is reserved for space between bands.\n */\n this._paddingInner = 0;\n /**\n * The ratio of the range that is reserved for space before the first\n * and after the last band.\n */\n this._paddingOuter = 0;\n this._round = false;\n /**\n * How the leftover range is distributed.\n * `0.5` - equal distribution of space before the first and after the last band,\n * with bands effectively centered within the range.\n */\n this._align = 0.5;\n }\n Object.defineProperty(BandScale.prototype, \"domain\", {\n get: function () {\n return this._domain;\n },\n set: function (values) {\n var domain = this._domain;\n domain.length = 0;\n this.index = new Map();\n var index = this.index;\n // In case one wants to have duplicate domain values, for example, two 'Italy' categories,\n // one should use objects rather than strings for domain values like so:\n // { toString: () => 'Italy' }\n // { toString: () => 'Italy' }\n values.forEach(function (value) {\n if (index.get(value) === undefined) {\n index.set(value, domain.push(value) - 1);\n }\n });\n this.rescale();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BandScale.prototype, \"range\", {\n get: function () {\n return this._range;\n },\n set: function (values) {\n this._range[0] = values[0];\n this._range[1] = values[1];\n this.rescale();\n },\n enumerable: true,\n configurable: true\n });\n BandScale.prototype.ticks = function () {\n return this._domain;\n };\n BandScale.prototype.convert = function (d) {\n var i = this.index.get(d);\n if (i === undefined) {\n return NaN;\n }\n var r = this.ordinalRange[i];\n if (r === undefined) {\n return NaN;\n }\n return r;\n };\n Object.defineProperty(BandScale.prototype, \"bandwidth\", {\n get: function () {\n return this._bandwidth;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BandScale.prototype, \"padding\", {\n get: function () {\n return this._paddingInner;\n },\n set: function (value) {\n value = Math.max(0, Math.min(1, value));\n this._paddingInner = value;\n this._paddingOuter = value;\n this.rescale();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BandScale.prototype, \"paddingInner\", {\n get: function () {\n return this._paddingInner;\n },\n set: function (value) {\n this._paddingInner = Math.max(0, Math.min(1, value)); // [0, 1]\n this.rescale();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BandScale.prototype, \"paddingOuter\", {\n get: function () {\n return this._paddingOuter;\n },\n set: function (value) {\n this._paddingOuter = Math.max(0, Math.min(1, value)); // [0, 1]\n this.rescale();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BandScale.prototype, \"round\", {\n get: function () {\n return this._round;\n },\n set: function (value) {\n this._round = value;\n this.rescale();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BandScale.prototype, \"align\", {\n get: function () {\n return this._align;\n },\n set: function (value) {\n this._align = Math.max(0, Math.min(1, value)); // [0, 1]\n this.rescale();\n },\n enumerable: true,\n configurable: true\n });\n BandScale.prototype.rescale = function () {\n var _a;\n var n = this._domain.length;\n if (!n) {\n return;\n }\n var _b = __read(this._range, 2), a = _b[0], b = _b[1];\n var reversed = b < a;\n if (reversed) {\n _a = __read([b, a], 2), a = _a[0], b = _a[1];\n }\n var step = (b - a) / Math.max(1, n - this._paddingInner + this._paddingOuter * 2);\n if (this._round) {\n step = Math.floor(step);\n }\n a += (b - a - step * (n - this._paddingInner)) * this._align;\n this._bandwidth = step * (1 - this._paddingInner);\n if (this._round) {\n a = Math.round(a);\n this._bandwidth = Math.round(this._bandwidth);\n }\n var values = [];\n for (var i = 0; i < n; i++) {\n values.push(a + step * i);\n }\n this.ordinalRange = reversed ? values.reverse() : values;\n };\n return BandScale;\n}());\nexport { BandScale };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { BandScale } from \"../../scale/bandScale\";\nimport { ChartAxis } from \"../chartAxis\";\nvar CategoryAxis = /** @class */ (function (_super) {\n __extends(CategoryAxis, _super);\n function CategoryAxis() {\n var _this = _super.call(this, new BandScale()) || this;\n _this.scale.paddingInner = 0.2;\n _this.scale.paddingOuter = 0.3;\n return _this;\n }\n Object.defineProperty(CategoryAxis.prototype, \"paddingInner\", {\n get: function () {\n return this.scale.paddingInner;\n },\n set: function (value) {\n this.scale.paddingInner = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CategoryAxis.prototype, \"paddingOuter\", {\n get: function () {\n return this.scale.paddingOuter;\n },\n set: function (value) {\n this.scale.paddingOuter = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CategoryAxis.prototype, \"domain\", {\n get: function () {\n return this.scale.domain.slice();\n },\n set: function (values) {\n // Prevent duplicate categories.\n this.scale.domain = values\n .filter(function (s, i, arr) { return arr.indexOf(s) === i; });\n },\n enumerable: true,\n configurable: true\n });\n CategoryAxis.className = 'CategoryAxis';\n CategoryAxis.type = 'category';\n return CategoryAxis;\n}(ChartAxis));\nexport { CategoryAxis };\n","import { find } from \"../util/array\";\n/**\n * The tree layout is calculated in abstract x/y coordinates, where the root is at (0, 0)\n * and the tree grows downward from the root.\n */\nvar TreeNode = /** @class */ (function () {\n function TreeNode(label, parent, number) {\n if (label === void 0) { label = ''; }\n if (number === void 0) { number = 0; }\n this.x = 0;\n this.y = 0;\n this.subtreeLeft = NaN;\n this.subtreeRight = NaN;\n this.screenX = 0;\n this.screenY = 0;\n this.children = [];\n this.leafCount = 0;\n this.prelim = 0;\n this.mod = 0;\n this.ancestor = this;\n this.change = 0;\n this.shift = 0;\n this.label = label;\n // screenX and screenY are meant to be recomputed from (layout) x and y\n // when the tree is resized (without performing another layout)\n this.parent = parent;\n this.depth = parent ? parent.depth + 1 : 0;\n this.number = number;\n }\n TreeNode.prototype.getLeftSibling = function () {\n return this.number > 0 && this.parent ? this.parent.children[this.number - 1] : undefined;\n };\n TreeNode.prototype.getLeftmostSibling = function () {\n return this.number > 0 && this.parent ? this.parent.children[0] : undefined;\n };\n // traverse the left contour of a subtree, return the successor of v on this contour\n TreeNode.prototype.nextLeft = function () {\n return this.children ? this.children[0] : this.thread;\n };\n // traverse the right contour of a subtree, return the successor of v on this contour\n TreeNode.prototype.nextRight = function () {\n return this.children ? this.children[this.children.length - 1] : this.thread;\n };\n TreeNode.prototype.getSiblings = function () {\n var _this = this;\n return this.parent ? this.parent.children.filter(function (_, i) { return i !== _this.number; }) : [];\n };\n return TreeNode;\n}());\n/**\n * Converts an array of ticks, where each tick has an array of labels, to a label tree.\n * If `pad` is `true`, will ensure that every branch matches the depth of the tree by\n * creating empty labels.\n */\nexport function ticksToTree(ticks, pad) {\n if (pad === void 0) { pad = true; }\n var root = new TreeNode();\n var depth = 0;\n if (pad) {\n ticks.forEach(function (tick) { return depth = Math.max(depth, tick.labels.length); });\n }\n ticks.forEach(function (tick) {\n if (pad) {\n while (tick.labels.length < depth) {\n tick.labels.unshift('');\n }\n }\n insertTick(root, tick);\n });\n return root;\n}\nfunction insertTick(root, tick) {\n var pathParts = tick.labels.slice().reverse(); // path elements from root to leaf label\n var lastPartIndex = pathParts.length - 1;\n pathParts.forEach(function (pathPart, partIndex) {\n var children = root.children;\n var existingNode = find(children, function (child) { return child.label === pathPart; });\n var isNotLeaf = partIndex !== lastPartIndex;\n if (existingNode && isNotLeaf) { // the isNotLeaf check is to allow duplicate leafs\n root = existingNode;\n }\n else {\n var node = new TreeNode(pathPart, root);\n node.number = children.length;\n children.push(node);\n if (isNotLeaf) {\n root = node;\n }\n }\n });\n}\n// Shift the subtree.\nfunction moveSubtree(wm, wp, shift) {\n var subtrees = wp.number - wm.number;\n var ratio = shift / subtrees;\n wp.change -= ratio;\n wp.shift += shift;\n wm.change += ratio;\n wp.prelim += shift;\n wp.mod += shift;\n}\nfunction ancestor(vim, v, defaultAncestor) {\n return v.getSiblings().indexOf(vim.ancestor) >= 0 ? vim.ancestor : defaultAncestor;\n}\n// Spaces out the children.\nfunction executeShifts(v) {\n var children = v.children;\n if (children) {\n var shift = 0;\n var change = 0;\n for (var i = children.length - 1; i >= 0; i--) {\n var w = children[i];\n w.prelim += shift;\n w.mod += shift;\n change += w.change;\n shift += w.shift + change;\n }\n }\n}\n// Moves current subtree with v as the root if some nodes are conflicting in space.\nfunction apportion(v, defaultAncestor, distance) {\n var w = v.getLeftSibling();\n if (w) {\n var vop = v;\n var vip = v;\n var vim = w;\n var vom = vip.getLeftmostSibling();\n var sip = vip.mod;\n var sop = vop.mod;\n var sim = vim.mod;\n var som = vom.mod;\n while (vim.nextRight() && vip.nextLeft()) {\n vim = vim.nextRight();\n vip = vip.nextLeft();\n vom = vom.nextLeft();\n vop = vop.nextRight();\n vop.ancestor = v;\n var shift = (vim.prelim + sim) - (vip.prelim + sip) + distance;\n if (shift > 0) {\n moveSubtree(ancestor(vim, v, defaultAncestor), v, shift);\n sip += shift;\n sop += shift;\n }\n sim += vim.mod;\n sip += vip.mod;\n som += vom.mod;\n sop += vop.mod;\n }\n if (vim.nextRight() && !vop.nextRight()) {\n vop.thread = vim.nextRight();\n vop.mod += sim - sop;\n }\n else {\n if (vip.nextLeft() && !vom.nextLeft()) {\n vom.thread = vip.nextLeft();\n vom.mod += sip - som;\n }\n defaultAncestor = v;\n }\n }\n return defaultAncestor;\n}\n// Compute the preliminary x-coordinate of node and its children (recursively).\nfunction firstWalk(node, distance) {\n var children = node.children;\n if (children.length) {\n var defaultAncestor_1 = children[0];\n children.forEach(function (child) {\n firstWalk(child, distance);\n defaultAncestor_1 = apportion(child, defaultAncestor_1, distance);\n });\n executeShifts(node);\n var midpoint = (children[0].prelim + children[children.length - 1].prelim) / 2;\n var leftSibling = node.getLeftSibling();\n if (leftSibling) {\n node.prelim = leftSibling.prelim + distance;\n node.mod = node.prelim - midpoint;\n }\n else {\n node.prelim = midpoint;\n }\n }\n else {\n var leftSibling = node.getLeftSibling();\n node.prelim = leftSibling ? leftSibling.prelim + distance : 0;\n }\n}\nvar Dimensions = /** @class */ (function () {\n function Dimensions() {\n this.top = Infinity;\n this.right = -Infinity;\n this.bottom = -Infinity;\n this.left = Infinity;\n }\n Dimensions.prototype.update = function (node, xy) {\n var _a = xy(node), x = _a.x, y = _a.y;\n if (x > this.right) {\n this.right = x;\n }\n if (x < this.left) {\n this.left = x;\n }\n if (y > this.bottom) {\n this.bottom = y;\n }\n if (y < this.top) {\n this.top = y;\n }\n };\n return Dimensions;\n}());\nfunction secondWalk(v, m, layout) {\n v.x = v.prelim + m;\n v.y = v.depth;\n layout.update(v);\n v.children.forEach(function (w) { return secondWalk(w, m + v.mod, layout); });\n}\n// After the second walk the parent nodes are positioned at the center of their immediate children.\n// If we want the parent nodes to be positioned at the center of the subtree for which they are roots,\n// we need a third walk to adjust the positions.\nfunction thirdWalk(v) {\n var children = v.children;\n var leafCount = 0;\n children.forEach(function (w) {\n thirdWalk(w);\n if (w.children.length) {\n leafCount += w.leafCount;\n }\n else {\n leafCount++;\n }\n });\n v.leafCount = leafCount;\n if (children.length) {\n v.subtreeLeft = children[0].subtreeLeft;\n v.subtreeRight = children[v.children.length - 1].subtreeRight;\n v.x = (v.subtreeLeft + v.subtreeRight) / 2;\n }\n else {\n v.subtreeLeft = v.x;\n v.subtreeRight = v.x;\n }\n}\nexport function treeLayout(root) {\n var layout = new TreeLayout;\n firstWalk(root, 1);\n secondWalk(root, -root.prelim, layout);\n thirdWalk(root);\n return layout;\n}\nvar TreeLayout = /** @class */ (function () {\n function TreeLayout() {\n this.dimensions = new Dimensions;\n this.leafCount = 0;\n this.nodes = [];\n // One might want to process leaf nodes separately from the rest of the tree.\n // For example, position labels corresponding to leafs vertically, rather than horizontally.\n this.leafNodes = [];\n this.nonLeafNodes = [];\n this.depth = 0;\n }\n TreeLayout.prototype.update = function (node) {\n this.dimensions.update(node, function (node) { return ({ x: node.x, y: node.y }); });\n if (!node.children.length) {\n this.leafCount++;\n this.leafNodes.push(node);\n }\n else {\n this.nonLeafNodes.push(node);\n }\n if (node.depth > this.depth) {\n this.depth = node.depth;\n }\n this.nodes.push(node);\n };\n TreeLayout.prototype.resize = function (width, height, shiftX, shiftY, flipX) {\n if (shiftX === void 0) { shiftX = 0; }\n if (shiftY === void 0) { shiftY = 0; }\n if (flipX === void 0) { flipX = false; }\n var xSteps = this.leafCount - 1;\n var ySteps = this.depth;\n var dimensions = this.dimensions;\n var scalingX = 1;\n var scalingY = 1;\n if (width > 0 && xSteps) {\n var existingSpacingX = (dimensions.right - dimensions.left) / xSteps;\n var desiredSpacingX = width / xSteps;\n scalingX = desiredSpacingX / existingSpacingX;\n if (flipX) {\n scalingX = -scalingX;\n }\n }\n if (height > 0 && ySteps) {\n var existingSpacingY = (dimensions.bottom - dimensions.top) / ySteps;\n var desiredSpacingY = height / ySteps;\n scalingY = desiredSpacingY / existingSpacingY;\n }\n var screenDimensions = new Dimensions();\n this.nodes.forEach(function (node) {\n node.screenX = node.x * scalingX;\n node.screenY = node.y * scalingY;\n screenDimensions.update(node, function (node) { return ({ x: node.screenX, y: node.screenY }); });\n });\n // Normalize so that root top and leftmost leaf left start at zero.\n var offsetX = -screenDimensions.left;\n var offsetY = -screenDimensions.top;\n this.nodes.forEach(function (node) {\n node.screenX += offsetX + shiftX;\n node.screenY += offsetY + shiftY;\n });\n };\n return TreeLayout;\n}());\nexport { TreeLayout };\nfunction logTree(root, formatter) {\n root.children.forEach(function (child) { return logTree(child, formatter); });\n if (formatter) {\n console.log(formatter(root));\n }\n else {\n console.log(root);\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Selection } from \"../../scene/selection\";\nimport { Line } from \"../../scene/shape/line\";\nimport { normalizeAngle360, toRadians } from \"../../util/angle\";\nimport { Text } from \"../../scene/shape/text\";\nimport { BBox } from \"../../scene/bbox\";\nimport { Matrix } from \"../../scene/matrix\";\n// import { Rect } from \"../../scene/shape/rect\"; debug (bbox)\nimport { BandScale } from \"../../scale/bandScale\";\nimport { ticksToTree, treeLayout } from \"../../layout/tree\";\nimport { AxisLabel } from \"../../axis\";\nimport { ChartAxis } from \"../chartAxis\";\nvar GroupedCategoryAxisLabel = /** @class */ (function (_super) {\n __extends(GroupedCategoryAxisLabel, _super);\n function GroupedCategoryAxisLabel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.grid = false;\n return _this;\n }\n return GroupedCategoryAxisLabel;\n}(AxisLabel));\nvar GroupedCategoryAxis = /** @class */ (function (_super) {\n __extends(GroupedCategoryAxis, _super);\n function GroupedCategoryAxis() {\n var _this = _super.call(this, new BandScale()) || this;\n // Label scale (labels are positionsed between ticks, tick count = label count + 1).\n // We don't call is `labelScale` for consistency with other axes.\n _this.tickScale = new BandScale();\n _this.longestSeparatorLength = 0;\n _this.translation = {\n x: 0,\n y: 0\n };\n /**\n * Axis rotation angle in degrees.\n */\n _this.rotation = 0;\n _this.line = {\n width: 1,\n color: 'rgba(195, 195, 195, 1)'\n };\n // readonly tick = new AxisTick();\n _this.label = new GroupedCategoryAxisLabel();\n /**\n * The color of the labels.\n * Use `undefined` rather than `rgba(0, 0, 0, 0)` to make labels invisible.\n */\n _this.labelColor = 'rgba(87, 87, 87, 1)';\n var _a = _this, group = _a.group, tickScale = _a.tickScale, scale = _a.scale;\n scale.paddingOuter = 0.1;\n scale.paddingInner = scale.paddingOuter * 2;\n _this.requestedRange = scale.range.slice();\n _this.scale = scale;\n tickScale.paddingInner = 1;\n tickScale.paddingOuter = 0;\n _this.gridLineSelection = Selection.select(group).selectAll();\n _this.axisLineSelection = Selection.select(group).selectAll();\n _this.separatorSelection = Selection.select(group).selectAll();\n _this.labelSelection = Selection.select(group).selectAll();\n return _this;\n // this.group.append(this.bboxRect); // debug (bbox)\n }\n Object.defineProperty(GroupedCategoryAxis.prototype, \"domain\", {\n get: function () {\n return this.scale.domain;\n },\n set: function (domainValues) {\n // Prevent duplicate categories.\n var values = domainValues.filter(function (s, i, arr) { return arr.indexOf(s) === i; });\n this.scale.domain = values;\n var tickTree = ticksToTree(values);\n this.tickTreeLayout = treeLayout(tickTree);\n var domain = values.slice();\n domain.push('');\n this.tickScale.domain = domain;\n this.resizeTickTree();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GroupedCategoryAxis.prototype, \"range\", {\n get: function () {\n return this.requestedRange.slice();\n },\n set: function (value) {\n this.requestedRange = value.slice();\n this.updateRange();\n },\n enumerable: true,\n configurable: true\n });\n GroupedCategoryAxis.prototype.updateRange = function () {\n var _a = this, rr = _a.requestedRange, vr = _a.visibleRange, scale = _a.scale;\n var span = (rr[1] - rr[0]) / (vr[1] - vr[0]);\n var shift = span * vr[0];\n var start = rr[0] - shift;\n this.tickScale.range = scale.range = [start, start + span];\n this.resizeTickTree();\n };\n GroupedCategoryAxis.prototype.resizeTickTree = function () {\n var s = this.scale;\n var range = s.domain.length ? [s.convert(s.domain[0]), s.convert(s.domain[s.domain.length - 1])] : s.range;\n var layout = this.tickTreeLayout;\n var lineHeight = this.lineHeight;\n if (layout) {\n layout.resize(Math.abs(range[1] - range[0]), layout.depth * lineHeight, (Math.min(range[0], range[1]) || 0) + (s.bandwidth || 0) / 2, -layout.depth * lineHeight, (range[1] - range[0]) < 0);\n }\n };\n Object.defineProperty(GroupedCategoryAxis.prototype, \"lineHeight\", {\n get: function () {\n return this.label.fontSize * 1.5;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GroupedCategoryAxis.prototype, \"gridLength\", {\n get: function () {\n return this._gridLength;\n },\n /**\n * The length of the grid. The grid is only visible in case of a non-zero value.\n */\n set: function (value) {\n // Was visible and now invisible, or was invisible and now visible.\n if (this._gridLength && !value || !this._gridLength && value) {\n this.gridLineSelection = this.gridLineSelection.remove().setData([]);\n this.labelSelection = this.labelSelection.remove().setData([]);\n }\n this._gridLength = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Creates/removes/updates the scene graph nodes that constitute the axis.\n * Supposed to be called _manually_ after changing _any_ of the axis properties.\n * This allows to bulk set axis properties before updating the nodes.\n * The node changes made by this method are rendered on the next animation frame.\n * We could schedule this method call automatically on the next animation frame\n * when any of the axis properties change (the way we do when properties of scene graph's\n * nodes change), but this will mean that we first wait for the next animation\n * frame to make changes to the nodes of the axis, then wait for another animation\n * frame to render those changes. It's nice to have everything update automatically,\n * but this extra level of async indirection will not just introduce an unwanted delay,\n * it will also make it harder to reason about the program.\n */\n GroupedCategoryAxis.prototype.update = function () {\n var _this = this;\n var _a = this, group = _a.group, scale = _a.scale, label = _a.label, tickScale = _a.tickScale, requestedRange = _a.requestedRange;\n var rangeStart = scale.range[0];\n var rangeEnd = scale.range[1];\n var rangeLength = Math.abs(rangeEnd - rangeStart);\n var bandwidth = (rangeLength / scale.domain.length) || 0;\n var parallelLabels = label.parallel;\n var rotation = toRadians(this.rotation);\n var isHorizontal = Math.abs(Math.cos(rotation)) < 1e-8;\n var labelRotation = normalizeAngle360(toRadians(this.label.rotation));\n group.translationX = this.translation.x;\n group.translationY = this.translation.y;\n group.rotation = rotation;\n var title = this.title;\n // The Text `node` of the Caption is not used to render the title of the grouped category axis.\n // The phantom root of the tree layout is used instead.\n if (title) {\n title.node.visible = false;\n }\n var lineHeight = this.lineHeight;\n // Render ticks and labels.\n var tickTreeLayout = this.tickTreeLayout;\n var labels = scale.ticks();\n var treeLabels = tickTreeLayout ? tickTreeLayout.nodes : [];\n var isLabelTree = tickTreeLayout ? tickTreeLayout.depth > 1 : false;\n var ticks = tickScale.ticks();\n // The side of the axis line to position the labels on.\n // -1 = left (default)\n // 1 = right\n var sideFlag = label.mirrored ? 1 : -1;\n // When labels are parallel to the axis line, the `parallelFlipFlag` is used to\n // flip the labels to avoid upside-down text, when the axis is rotated\n // such that it is in the right hemisphere, i.e. the angle of rotation\n // is in the [0, π] interval.\n // The rotation angle is normalized, so that we have an easier time checking\n // if it's in the said interval. Since the axis is always rendered vertically\n // and then rotated, zero rotation means 12 (not 3) o-clock.\n // -1 = flip\n // 1 = don't flip (default)\n var parallelFlipRotation = normalizeAngle360(rotation);\n var parallelFlipFlag = (!labelRotation && parallelFlipRotation >= 0 && parallelFlipRotation <= Math.PI) ? -1 : 1;\n var regularFlipRotation = normalizeAngle360(rotation - Math.PI / 2);\n // Flip if the axis rotation angle is in the top hemisphere.\n var regularFlipFlag = (!labelRotation && regularFlipRotation >= 0 && regularFlipRotation <= Math.PI) ? -1 : 1;\n var updateGridLines = this.gridLineSelection.setData(this.gridLength ? ticks : []);\n updateGridLines.exit.remove();\n var enterGridLines = updateGridLines.enter.append(Line);\n var gridLineSelection = updateGridLines.merge(enterGridLines);\n var updateLabels = this.labelSelection.setData(treeLabels);\n updateLabels.exit.remove();\n var enterLabels = updateLabels.enter.append(Text);\n var labelSelection = updateLabels.merge(enterLabels);\n var labelFormatter = label.formatter;\n var maxLeafLabelWidth = 0;\n labelSelection\n .each(function (node, datum, index) {\n node.fontStyle = label.fontStyle;\n node.fontWeight = label.fontWeight;\n node.fontSize = label.fontSize;\n node.fontFamily = label.fontFamily;\n node.fill = label.color;\n node.textBaseline = parallelFlipFlag === -1 ? 'bottom' : 'hanging';\n // label.textBaseline = parallelLabels && !labelRotation\n // ? (sideFlag * parallelFlipFlag === -1 ? 'hanging' : 'bottom')\n // : 'middle';\n node.textAlign = 'center';\n node.translationX = datum.screenY - label.fontSize * 0.25;\n node.translationY = datum.screenX;\n if (index === 0) { // use the phantom root as the axis title\n if (title && title.enabled && labels.length > 0) {\n node.visible = true;\n node.text = title.text;\n node.fontSize = title.fontSize;\n node.fontStyle = title.fontStyle;\n node.fontWeight = title.fontWeight;\n node.fontFamily = title.fontFamily;\n node.textBaseline = 'hanging';\n }\n else {\n node.visible = false;\n }\n }\n else {\n node.text = labelFormatter\n ? labelFormatter({\n value: String(datum.label),\n index: index\n })\n : String(datum.label);\n node.visible =\n datum.screenX >= requestedRange[0] &&\n datum.screenX <= requestedRange[1];\n }\n var bbox = node.computeBBox();\n if (bbox && bbox.width > maxLeafLabelWidth) {\n maxLeafLabelWidth = bbox.width;\n }\n });\n var labelX = sideFlag * label.padding;\n var autoRotation = parallelLabels\n ? parallelFlipFlag * Math.PI / 2\n : (regularFlipFlag === -1 ? Math.PI : 0);\n var labelGrid = this.label.grid;\n var separatorData = [];\n labelSelection.each(function (label, datum, index) {\n label.x = labelX;\n label.rotationCenterX = labelX;\n if (!datum.children.length) {\n label.rotation = labelRotation;\n label.textAlign = 'end';\n label.textBaseline = 'middle';\n }\n else {\n label.translationX -= maxLeafLabelWidth - lineHeight + _this.label.padding;\n if (isHorizontal) {\n label.rotation = autoRotation;\n }\n else {\n label.rotation = -Math.PI / 2;\n }\n }\n // Calculate positions of label separators for all nodes except the root.\n // Each separator is placed to the top of the current label.\n if (datum.parent && isLabelTree) {\n var y = !datum.children.length\n ? datum.screenX - bandwidth / 2\n : datum.screenX - datum.leafCount * bandwidth / 2;\n if (!datum.children.length) {\n if ((datum.number !== datum.children.length - 1) || labelGrid) {\n separatorData.push({\n y: y,\n x1: 0,\n x2: -maxLeafLabelWidth - _this.label.padding * 2,\n toString: function () { return String(index); }\n });\n }\n }\n else {\n var x = -maxLeafLabelWidth - _this.label.padding * 2 + datum.screenY;\n separatorData.push({\n y: y,\n x1: x + lineHeight,\n x2: x,\n toString: function () { return String(index); }\n });\n }\n }\n });\n // Calculate the position of the long separator on the far bottom of the axis.\n var minX = 0;\n separatorData.forEach(function (d) { return minX = Math.min(minX, d.x2); });\n this.longestSeparatorLength = Math.abs(minX);\n separatorData.push({\n y: Math.max(rangeStart, rangeEnd),\n x1: 0,\n x2: minX,\n toString: function () { return String(separatorData.length); }\n });\n var updateSeparators = this.separatorSelection.setData(separatorData);\n updateSeparators.exit.remove();\n var enterSeparators = updateSeparators.enter.append(Line);\n var separatorSelection = updateSeparators.merge(enterSeparators);\n this.separatorSelection = separatorSelection;\n var epsilon = 0.0000001;\n separatorSelection.each(function (line, datum, i) {\n line.x1 = datum.x1;\n line.x2 = datum.x2;\n line.y1 = datum.y;\n line.y2 = datum.y;\n line.visible = datum.y >= requestedRange[0] - epsilon && datum.y <= requestedRange[1] + epsilon;\n line.stroke = _this.tick.color;\n line.fill = undefined;\n line.strokeWidth = 1;\n });\n this.gridLineSelection = gridLineSelection;\n this.labelSelection = labelSelection;\n // Render axis lines.\n var lineCount = tickTreeLayout ? tickTreeLayout.depth + 1 : 1;\n var lines = [];\n for (var i = 0; i < lineCount; i++) {\n lines.push(i);\n }\n var updateAxisLines = this.axisLineSelection.setData(lines);\n updateAxisLines.exit.remove();\n var enterAxisLines = updateAxisLines.enter.append(Line);\n var axisLineSelection = updateAxisLines.merge(enterAxisLines);\n this.axisLineSelection = axisLineSelection;\n axisLineSelection.each(function (line, _, index) {\n var x = index > 0 ? -maxLeafLabelWidth - _this.label.padding * 2 - (index - 1) * lineHeight : 0;\n line.x1 = x;\n line.x2 = x;\n line.y1 = requestedRange[0];\n line.y2 = requestedRange[1];\n line.strokeWidth = _this.line.width;\n line.stroke = _this.line.color;\n line.visible = labels.length > 0 && (index === 0 || (labelGrid && isLabelTree));\n });\n if (this.gridLength) {\n var styles_1 = this.gridStyle;\n var styleCount_1 = styles_1.length;\n gridLineSelection\n .each(function (line, datum, index) {\n var y = Math.round(tickScale.convert(datum));\n line.x1 = 0;\n line.x2 = -sideFlag * _this.gridLength;\n line.y1 = y;\n line.y2 = y;\n line.visible = y >= requestedRange[0] && y <= requestedRange[1] &&\n Math.abs(line.parent.translationY - rangeStart) > 1;\n var style = styles_1[index % styleCount_1];\n line.stroke = style.stroke;\n line.strokeWidth = _this.tick.width;\n line.lineDash = style.lineDash;\n line.fill = undefined;\n });\n }\n // debug (bbox)\n // const bbox = this.computeBBox();\n // const bboxRect = this.bboxRect;\n // bboxRect.x = bbox.x;\n // bboxRect.y = bbox.y;\n // bboxRect.width = bbox.width;\n // bboxRect.height = bbox.height;\n };\n GroupedCategoryAxis.prototype.computeBBox = function (options) {\n var includeTitle = !options || !options.excludeTitle;\n var left = Infinity;\n var right = -Infinity;\n var top = Infinity;\n var bottom = -Infinity;\n this.labelSelection.each(function (label, _, index) {\n // The label itself is rotated, but not translated, the group that\n // contains it is. So to capture the group transform in the label bbox\n // calculation we combine the transform matrices of the label and the group.\n // Depending on the timing of the `axis.computeBBox()` method call, we may\n // not have the group's and the label's transform matrices updated yet (because\n // the transform matrix is not recalculated whenever a node's transform attributes\n // change, instead it's marked for recalculation on the next frame by setting\n // the node's `dirtyTransform` flag to `true`), so we force them to update\n // right here by calling `computeTransformMatrix`.\n if (index > 0 || includeTitle) { // first node is the root (title)\n label.computeTransformMatrix();\n var matrix = Matrix.flyweight(label.matrix);\n var labelBBox = label.computeBBox();\n if (labelBBox) {\n var bbox = matrix.transformBBox(labelBBox);\n left = Math.min(left, bbox.x);\n right = Math.max(right, bbox.x + bbox.width);\n top = Math.min(top, bbox.y);\n bottom = Math.max(bottom, bbox.y + bbox.height);\n }\n }\n });\n return new BBox(left, top, Math.max(right - left, this.longestSeparatorLength), bottom - top);\n };\n // debug (bbox)\n // private bboxRect = (() => {\n // const rect = new Rect();\n // rect.fill = undefined;\n // rect.stroke = 'red';\n // rect.strokeWidth = 1;\n // rect.strokeOpacity = 0.2;\n // return rect;\n // })();\n GroupedCategoryAxis.className = 'GroupedCategoryAxis';\n GroupedCategoryAxis.type = 'groupedCategory';\n return GroupedCategoryAxis;\n}(ChartAxis));\nexport { GroupedCategoryAxis };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar t0 = new Date;\nvar t1 = new Date;\n/**\n * The interval methods don't mutate Date parameters.\n */\nvar TimeInterval = /** @class */ (function () {\n function TimeInterval(floor, offset) {\n this._floor = floor;\n this._offset = offset;\n }\n /**\n * Returns a new date representing the latest interval boundary date before or equal to date.\n * For example, `day.floor(date)` typically returns 12:00 AM local time on the given date.\n * @param date\n */\n TimeInterval.prototype.floor = function (date) {\n date = new Date(+date);\n this._floor(date);\n return date;\n };\n /**\n * Returns a new date representing the earliest interval boundary date after or equal to date.\n * @param date\n */\n TimeInterval.prototype.ceil = function (date) {\n date = new Date(+date - 1);\n this._floor(date);\n this._offset(date, 1);\n this._floor(date);\n return date;\n };\n /**\n * Returns a new date representing the closest interval boundary date to date.\n * @param date\n */\n TimeInterval.prototype.round = function (date) {\n var d0 = this.floor(date);\n var d1 = this.ceil(date);\n var ms = +date;\n return ms - d0.getTime() < d1.getTime() - ms ? d0 : d1;\n };\n /**\n * Returns a new date equal to date plus step intervals.\n * @param date\n * @param step\n */\n TimeInterval.prototype.offset = function (date, step) {\n if (step === void 0) { step = 1; }\n date = new Date(+date);\n this._offset(date, Math.floor(step));\n return date;\n };\n /**\n * Returns an array of dates representing every interval boundary after or equal to start (inclusive) and before stop (exclusive).\n * @param start\n * @param stop\n * @param step\n */\n TimeInterval.prototype.range = function (start, stop, step) {\n if (step === void 0) { step = 1; }\n var range = [];\n start = this.ceil(start);\n step = Math.floor(step);\n if (start > stop || step <= 0) {\n return range;\n }\n var previous;\n do {\n previous = new Date(+start);\n range.push(previous);\n this._offset(start, step);\n this._floor(start);\n } while (previous < start && start < stop);\n return range;\n };\n // Returns an interval that is a subset of this interval.\n // For example, to create an interval that return 1st, 11th, 21st and 31st of each month:\n // day.filter(date => (date.getDate() - 1) % 10 === 0)\n TimeInterval.prototype.filter = function (test) {\n var _this = this;\n var floor = function (date) {\n if (date >= date) {\n while (_this._floor(date), !test(date)) {\n date.setTime(date.getTime() - 1);\n }\n }\n return date;\n };\n var offset = function (date, step) {\n if (date >= date) {\n if (step < 0) {\n while (++step <= 0) {\n do {\n _this._offset(date, -1);\n } while (!test(date));\n }\n }\n else {\n while (--step >= 0) {\n do {\n _this._offset(date, 1);\n } while (!test(date));\n }\n }\n }\n return date;\n };\n return new TimeInterval(floor, offset);\n };\n return TimeInterval;\n}());\nexport { TimeInterval };\nvar CountableTimeInterval = /** @class */ (function (_super) {\n __extends(CountableTimeInterval, _super);\n function CountableTimeInterval(floor, offset, count, field) {\n var _this = _super.call(this, floor, offset) || this;\n _this._count = count;\n _this._field = field;\n return _this;\n }\n /**\n * Returns the number of interval boundaries after start (exclusive) and before or equal to end (inclusive).\n * @param start\n * @param end\n */\n CountableTimeInterval.prototype.count = function (start, end) {\n t0.setTime(+start);\n t1.setTime(+end);\n this._floor(t0);\n this._floor(t1);\n return Math.floor(this._count(t0, t1));\n };\n /**\n * Returns a filtered view of this interval representing every step'th date.\n * The meaning of step is dependent on this interval’s parent interval as defined by the `field` function.\n * @param step\n */\n CountableTimeInterval.prototype.every = function (step) {\n var _this = this;\n var result;\n step = Math.floor(step);\n if (isFinite(step) && step > 0) {\n if (step > 1) {\n var field_1 = this._field;\n if (field_1) {\n result = this.filter(function (d) { return field_1(d) % step === 0; });\n }\n else {\n result = this.filter(function (d) { return _this.count(0, d) % step === 0; });\n }\n }\n else {\n result = this;\n }\n }\n return result;\n };\n return CountableTimeInterval;\n}(TimeInterval));\nexport { CountableTimeInterval };\n","import { CountableTimeInterval } from \"./interval\";\nfunction floor(date) {\n return date;\n}\nfunction offset(date, milliseconds) {\n date.setTime(date.getTime() + milliseconds);\n}\nfunction count(start, end) {\n return end.getTime() - start.getTime();\n}\nexport var millisecond = new CountableTimeInterval(floor, offset, count);\nexport default millisecond;\n","// Common time unit sizes in milliseconds.\nexport var durationSecond = 1000;\nexport var durationMinute = durationSecond * 60;\nexport var durationHour = durationMinute * 60;\nexport var durationDay = durationHour * 24;\nexport var durationWeek = durationDay * 7;\nexport var durationMonth = durationDay * 30;\nexport var durationYear = durationDay * 365;\n","import { CountableTimeInterval } from \"./interval\";\nimport { durationSecond } from \"./duration\";\nfunction floor(date) {\n date.setTime(date.getTime() - date.getMilliseconds());\n}\nfunction offset(date, seconds) {\n date.setTime(date.getTime() + seconds * durationSecond);\n}\nfunction count(start, end) {\n return (end.getTime() - start.getTime()) / durationSecond;\n}\nexport var second = new CountableTimeInterval(floor, offset, count);\nexport default second;\n","import { CountableTimeInterval } from \"./interval\";\nimport { durationMinute, durationSecond } from \"./duration\";\nfunction floor(date) {\n date.setTime(date.getTime() - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}\nfunction offset(date, minutes) {\n date.setTime(date.getTime() + minutes * durationMinute);\n}\nfunction count(start, end) {\n return (end.getTime() - start.getTime()) / durationMinute;\n}\nfunction field(date) {\n return date.getMinutes();\n}\nexport var minute = new CountableTimeInterval(floor, offset, count, field);\nexport default minute;\n","import { CountableTimeInterval } from \"./interval\";\nimport { durationHour, durationMinute, durationSecond } from \"./duration\";\nfunction floor(date) {\n date.setTime(date.getTime() - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}\nfunction offset(date, hours) {\n date.setTime(date.getTime() + hours * durationHour);\n}\nfunction count(start, end) {\n return (end.getTime() - start.getTime()) / durationHour;\n}\nfunction field(date) {\n return date.getHours();\n}\nexport var hour = new CountableTimeInterval(floor, offset, count, field);\nexport default hour;\n","import { CountableTimeInterval } from \"./interval\";\nimport { durationDay, durationMinute } from \"./duration\";\nfunction floor(date) {\n date.setHours(0, 0, 0, 0);\n}\nfunction offset(date, days) {\n date.setDate(date.getDate() + days);\n}\nfunction count(start, end) {\n var tzMinuteDelta = end.getTimezoneOffset() - start.getTimezoneOffset();\n return (end.getTime() - start.getTime() - tzMinuteDelta * durationMinute) / durationDay;\n}\nfunction field(date) {\n return date.getDate() - 1;\n}\nexport var day = new CountableTimeInterval(floor, offset, count, field);\nexport default day;\n","import { durationMinute, durationWeek } from \"./duration\";\nimport { CountableTimeInterval } from \"./interval\";\n// Set date to n-th day of the week.\nfunction weekday(n) {\n // Sets the `date` to the start of the `n`-th day of the current week.\n // n == 0 is Sunday.\n function floor(date) {\n // 1..31 1..7\n date.setDate(date.getDate() - (date.getDay() + 7 - n) % 7);\n date.setHours(0, 0, 0, 0); // h, m, s, ms\n }\n // Offset the date by the given number of weeks.\n function offset(date, weeks) {\n date.setDate(date.getDate() + weeks * 7);\n }\n // Count the number of weeks between the start and end dates.\n function count(start, end) {\n var msDelta = end.getTime() - start.getTime();\n var tzMinuteDelta = end.getTimezoneOffset() - start.getTimezoneOffset();\n return (msDelta - tzMinuteDelta * durationMinute) / durationWeek;\n }\n return new CountableTimeInterval(floor, offset, count);\n}\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\nexport default sunday;\n","import { CountableTimeInterval } from \"./interval\";\nfunction floor(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}\nfunction offset(date, months) {\n date.setMonth(date.getMonth() + months);\n}\nfunction count(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}\nfunction field(date) {\n return date.getMonth();\n}\nexport var month = new CountableTimeInterval(floor, offset, count, field);\nexport default month;\n","import { CountableTimeInterval } from \"./interval\";\nfunction floor(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}\nfunction offset(date, years) {\n date.setFullYear(date.getFullYear() + years);\n}\nfunction count(start, end) {\n return end.getFullYear() - start.getFullYear();\n}\nfunction field(date) {\n return date.getFullYear();\n}\nexport var year = new CountableTimeInterval(floor, offset, count, field);\nexport default year;\n","import { CountableTimeInterval } from \"./interval\";\nimport { durationDay } from \"./duration\";\nfunction floor(date) {\n date.setUTCHours(0, 0, 0, 0);\n}\nfunction offset(date, days) {\n date.setUTCDate(date.getUTCDate() + days);\n}\nfunction count(start, end) {\n return (end.getTime() - start.getTime()) / durationDay;\n}\nfunction field(date) {\n return date.getUTCDate() - 1;\n}\nexport var utcDay = new CountableTimeInterval(floor, offset, count, field);\nexport default utcDay;\n","import { CountableTimeInterval } from \"./interval\";\nfunction floor(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}\nfunction offset(date, years) {\n date.setUTCFullYear(date.getUTCFullYear() + years);\n}\nfunction count(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}\nfunction field(date) {\n return date.getUTCFullYear();\n}\nexport var utcYear = new CountableTimeInterval(floor, offset, count, field);\nexport default utcYear;\n","import { durationWeek } from \"./duration\";\nimport { CountableTimeInterval } from \"./interval\";\n// Set date to n-th day of the week.\nfunction weekday(n) {\n // Sets the `date` to the start of the `n`-th day of the current week.\n // n == 0 is Sunday.\n function floor(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - n) % 7);\n date.setHours(0, 0, 0, 0); // h, m, s, ms\n }\n // Offset the date by the given number of weeks.\n function offset(date, weeks) {\n date.setUTCDate(date.getUTCDate() + weeks * 7);\n }\n // Count the number of weeks between the start and end dates.\n function count(start, end) {\n return (end.getTime() - start.getTime()) / durationWeek;\n }\n return new CountableTimeInterval(floor, offset, count);\n}\nexport var utcSunday = weekday(0);\nexport var utcMonday = weekday(1);\nexport var utcTuesday = weekday(2);\nexport var utcWednesday = weekday(3);\nexport var utcThursday = weekday(4);\nexport var utcFriday = weekday(5);\nexport var utcSaturday = weekday(6);\nexport default utcSunday;\n","import timeDay from \"../day\";\nimport year from \"../year\";\nimport { sunday as timeSunday, monday as timeMonday, thursday as timeThursday, } from \"../week\";\nimport utcDay from \"../utcDay\";\nimport utcYear from \"../utcYear\";\nimport utcSunday, { utcMonday, utcThursday } from \"../utcWeek\";\nfunction localDate(d) {\n // For JS Dates the [0, 100) interval is a time warp, a fast forward to the 20th century.\n // For example, -1 is -0001 BC, 0 is already 1900 AD.\n if (d.y >= 0 && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\nfunction utcDate(d) {\n if (d.y >= 0 && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n/**\n * Creates a lookup map for array of names to go from a name to index.\n * @param names\n */\nfunction formatLookup(names) {\n var map = {};\n for (var i = 0, n = names.length; i < n; i++) {\n map[names[i].toLowerCase()] = i;\n }\n return map;\n}\nfunction newYear(y) {\n return {\n y: y,\n m: 0,\n d: 1,\n H: 0,\n M: 0,\n S: 0,\n L: 0\n };\n}\nvar percentCharCode = 37;\nvar numberRe = /^\\s*\\d+/; // ignores next directive\nvar percentRe = /^%/;\nvar requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n/**\n * Prepends any character in the `requoteRe` set with a backslash.\n * @param s\n */\nexport var requote = function (s) { return s.replace(requoteRe, '\\\\$&'); }; // $& - matched substring\n/**\n * Returns a RegExp that matches any string that starts with any of the given names (case insensitive).\n * @param names\n */\nexport var formatRe = function (names) { return new RegExp('^(?:' + names.map(requote).join('|') + ')', 'i'); };\n// A map of padding modifiers to padding strings. Default is `0`.\nvar pads = {\n '-': '',\n '_': ' ',\n '0': '0'\n};\nexport function pad(value, fill, width) {\n var sign = value < 0 ? '-' : '';\n var string = String(sign ? -value : value);\n var length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n/**\n * Create a new time-locale-based object which exposes time-formatting\n * methods for the specified locale definition.\n *\n * @param timeLocale A time locale definition.\n */\nexport default function formatLocale(timeLocale) {\n var lDateTime = timeLocale.dateTime;\n var lDate = timeLocale.date;\n var lTime = timeLocale.time;\n var lPeriods = timeLocale.periods;\n var lWeekdays = timeLocale.days;\n var lShortWeekdays = timeLocale.shortDays;\n var lMonths = timeLocale.months;\n var lShortMonths = timeLocale.shortMonths;\n var periodRe = formatRe(lPeriods);\n var periodLookup = formatLookup(lPeriods);\n var weekdayRe = formatRe(lWeekdays);\n var weekdayLookup = formatLookup(lWeekdays);\n var shortWeekdayRe = formatRe(lShortWeekdays);\n var shortWeekdayLookup = formatLookup(lShortWeekdays);\n var monthRe = formatRe(lMonths);\n var monthLookup = formatLookup(lMonths);\n var shortMonthRe = formatRe(lShortMonths);\n var shortMonthLookup = formatLookup(lShortMonths);\n var formats = {\n 'a': formatShortWeekday,\n 'A': formatWeekday,\n 'b': formatShortMonth,\n 'B': formatMonth,\n 'c': undefined,\n 'd': formatDayOfMonth,\n 'e': formatDayOfMonth,\n 'f': formatMicroseconds,\n 'H': formatHour24,\n 'I': formatHour12,\n 'j': formatDayOfYear,\n 'L': formatMilliseconds,\n 'm': formatMonthNumber,\n 'M': formatMinutes,\n 'p': formatPeriod,\n 'Q': formatUnixTimestamp,\n 's': formatUnixTimestampSeconds,\n 'S': formatSeconds,\n 'u': formatWeekdayNumberMonday,\n 'U': formatWeekNumberSunday,\n 'V': formatWeekNumberISO,\n 'w': formatWeekdayNumberSunday,\n 'W': formatWeekNumberMonday,\n 'x': undefined,\n 'X': undefined,\n 'y': formatYear,\n 'Y': formatFullYear,\n 'Z': formatZone,\n '%': formatLiteralPercent\n };\n var utcFormats = {\n 'a': formatUTCShortWeekday,\n 'A': formatUTCWeekday,\n 'b': formatUTCShortMonth,\n 'B': formatUTCMonth,\n 'c': undefined,\n 'd': formatUTCDayOfMonth,\n 'e': formatUTCDayOfMonth,\n 'f': formatUTCMicroseconds,\n 'H': formatUTCHour24,\n 'I': formatUTCHour12,\n 'j': formatUTCDayOfYear,\n 'L': formatUTCMilliseconds,\n 'm': formatUTCMonthNumber,\n 'M': formatUTCMinutes,\n 'p': formatUTCPeriod,\n 'Q': formatUnixTimestamp,\n 's': formatUnixTimestampSeconds,\n 'S': formatUTCSeconds,\n 'u': formatUTCWeekdayNumberMonday,\n 'U': formatUTCWeekNumberSunday,\n 'V': formatUTCWeekNumberISO,\n 'w': formatUTCWeekdayNumberSunday,\n 'W': formatUTCWeekNumberMonday,\n 'x': undefined,\n 'X': undefined,\n 'y': formatUTCYear,\n 'Y': formatUTCFullYear,\n 'Z': formatUTCZone,\n '%': formatLiteralPercent\n };\n var parses = {\n 'a': parseShortWeekday,\n 'A': parseWeekday,\n 'b': parseShortMonth,\n 'B': parseMonth,\n 'c': parseLocaleDateTime,\n 'd': parseDayOfMonth,\n 'e': parseDayOfMonth,\n 'f': parseMicroseconds,\n 'H': parseHour24,\n 'I': parseHour24,\n 'j': parseDayOfYear,\n 'L': parseMilliseconds,\n 'm': parseMonthNumber,\n 'M': parseMinutes,\n 'p': parsePeriod,\n 'Q': parseUnixTimestamp,\n 's': parseUnixTimestampSeconds,\n 'S': parseSeconds,\n 'u': parseWeekdayNumberMonday,\n 'U': parseWeekNumberSunday,\n 'V': parseWeekNumberISO,\n 'w': parseWeekdayNumberSunday,\n 'W': parseWeekNumberMonday,\n 'x': parseLocaleDate,\n 'X': parseLocaleTime,\n 'y': parseYear,\n 'Y': parseFullYear,\n 'Z': parseZone,\n '%': parseLiteralPercent\n };\n // Recursive definitions.\n formats.x = newFormat(lDate, formats);\n formats.X = newFormat(lTime, formats);\n formats.c = newFormat(lDateTime, formats);\n utcFormats.x = newFormat(lDate, utcFormats);\n utcFormats.X = newFormat(lTime, utcFormats);\n utcFormats.c = newFormat(lDateTime, utcFormats);\n function newParse(specifier, newDate) {\n return function (str) {\n var d = newYear(1900);\n var i = parseSpecifier(d, specifier, str += '', 0);\n if (i != str.length) {\n return undefined;\n }\n // If a UNIX timestamp is specified, return it.\n if ('Q' in d) {\n return new Date(d.Q);\n }\n // The am-pm flag is 0 for AM, and 1 for PM.\n if ('p' in d) {\n d.H = d.H % 12 + d.p * 12;\n }\n // Convert day-of-week and week-of-year to day-of-year.\n if ('V' in d) {\n if (d.V < 1 || d.V > 53) {\n return undefined;\n }\n if (!('w' in d)) {\n d.w = 1;\n }\n if ('Z' in d) {\n var week = utcDate(newYear(d.y));\n var day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday.floor(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n }\n else {\n var week = newDate(newYear(d.y));\n var day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday.floor(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n }\n else if ('W' in d || 'U' in d) {\n if (!('w' in d)) {\n d.w = 'u' in d\n ? d.u % 7\n : 'W' in d ? 1 : 0;\n }\n var day = 'Z' in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n d.m = 0;\n d.d = 'W' in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if ('Z' in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n // Otherwise, all fields are in local time.\n return newDate(d);\n };\n }\n /**\n * Creates a new function that formats the given Date or timestamp according to specifier.\n * @param specifier\n * @param formats\n */\n function newFormat(specifier, formats) {\n return function (date) {\n var string = [];\n var n = specifier.length;\n var i = -1;\n var j = 0;\n if (!(date instanceof Date)) {\n date = new Date(+date);\n }\n while (++i < n) {\n if (specifier.charCodeAt(i) === percentCharCode) {\n string.push(specifier.slice(j, i)); // copy the chunks of specifier with no directives as is\n var c = specifier.charAt(++i);\n var pad_1 = pads[c];\n if (pad_1 != undefined) { // if format directive has a padding modifier in front of it\n c = specifier.charAt(++i); // fetch the directive itself\n }\n else {\n pad_1 = c === 'e' ? ' ' : '0'; // use the default padding modifier\n }\n var format = formats[c];\n if (format) { // if the directive has a corresponding formatting function\n c = format(date, pad_1); // replace the directive with the formatted date\n }\n string.push(c);\n j = i + 1;\n }\n }\n string.push(specifier.slice(j, i));\n return string.join('');\n };\n }\n // Simultaneously walks over the specifier and the parsed string, populating the `d` map with parsed values.\n // The returned number is expected to equal the length of the parsed `string`, if parsing succeeded.\n function parseSpecifier(d, specifier, string, j) {\n // i - `specifier` string index\n // j - parsed `string` index\n var i = 0;\n var n = specifier.length;\n var m = string.length;\n while (i < n) {\n if (j >= m) {\n return -1;\n }\n var code = specifier.charCodeAt(i++);\n if (code === percentCharCode) {\n var char = specifier.charAt(i++);\n var parse = parses[(char in pads ? specifier.charAt(i++) : char)];\n if (!parse || ((j = parse(d, string, j)) < 0)) {\n return -1;\n }\n }\n else if (code != string.charCodeAt(j++)) {\n return -1;\n }\n }\n return j;\n }\n // ----------------------------- formats ----------------------------------\n function formatMicroseconds(date, fill) {\n return formatMilliseconds(date, fill) + '000';\n }\n function formatMilliseconds(date, fill) {\n return pad(date.getMilliseconds(), fill, 3);\n }\n function formatSeconds(date, fill) {\n return pad(date.getSeconds(), fill, 2);\n }\n function formatMinutes(date, fill) {\n return pad(date.getMinutes(), fill, 2);\n }\n function formatHour12(date, fill) {\n return pad(date.getHours() % 12 || 12, fill, 2);\n }\n function formatHour24(date, fill) {\n return pad(date.getHours(), fill, 2);\n }\n function formatPeriod(date) {\n return lPeriods[date.getHours() >= 12 ? 1 : 0];\n }\n function formatShortWeekday(date) {\n return lShortWeekdays[date.getDay()];\n }\n function formatWeekday(date) {\n return lWeekdays[date.getDay()];\n }\n function formatWeekdayNumberMonday(date) {\n var dayOfWeek = date.getDay();\n return dayOfWeek === 0 ? 7 : dayOfWeek;\n }\n function formatWeekNumberSunday(date, fill) {\n return pad(timeSunday.count(year.floor(date), date), fill, 2);\n }\n function formatWeekNumberISO(date, fill) {\n var day = date.getDay();\n date = (day >= 4 || day === 0) ? timeThursday.floor(date) : timeThursday.ceil(date);\n var yearStart = year.floor(date);\n return pad(timeThursday.count(yearStart, date) + (yearStart.getDay() === 4 ? 1 : 0), fill, 2);\n }\n function formatWeekdayNumberSunday(date) {\n return date.getDay();\n }\n function formatWeekNumberMonday(date, fill) {\n return pad(timeMonday.count(year.floor(date), date), fill, 2);\n }\n function formatDayOfMonth(date, fill) {\n return pad(date.getDate(), fill, 2);\n }\n function formatDayOfYear(date, fill) {\n return pad(1 + timeDay.count(year.floor(date), date), fill, 3);\n }\n function formatShortMonth(date) {\n return lShortMonths[date.getMonth()];\n }\n function formatMonth(date) {\n return lMonths[date.getMonth()];\n }\n function formatMonthNumber(date, fill) {\n return pad(date.getMonth() + 1, fill, 2);\n }\n function formatYear(date, fill) {\n return pad(date.getFullYear() % 100, fill, 2);\n }\n function formatFullYear(date, fill) {\n return pad(date.getFullYear() % 10000, fill, 4);\n }\n function formatZone(date) {\n var z = date.getTimezoneOffset();\n return (z > 0 ? '-' : (z *= -1, '+')) + pad(Math.floor(z / 60), '0', 2) + pad(z % 60, '0', 2);\n }\n // -------------------------- UTC formats -----------------------------------\n function formatUTCMicroseconds(date, fill) {\n return formatUTCMilliseconds(date, fill) + '000';\n }\n function formatUTCMilliseconds(date, fill) {\n return pad(date.getUTCMilliseconds(), fill, 3);\n }\n function formatUTCSeconds(date, fill) {\n return pad(date.getUTCSeconds(), fill, 2);\n }\n function formatUTCMinutes(date, fill) {\n return pad(date.getUTCMinutes(), fill, 2);\n }\n function formatUTCHour12(date, fill) {\n return pad(date.getUTCHours() % 12 || 12, fill, 2);\n }\n function formatUTCHour24(date, fill) {\n return pad(date.getUTCHours(), fill, 2);\n }\n function formatUTCPeriod(date) {\n return lPeriods[date.getUTCHours() >= 12 ? 1 : 0];\n }\n function formatUTCDayOfMonth(date, fill) {\n return pad(date.getUTCDate(), fill, 2);\n }\n function formatUTCDayOfYear(date, fill) {\n return pad(1 + utcDay.count(utcYear.floor(date), date), fill, 3);\n }\n function formatUTCMonthNumber(date, fill) {\n return pad(date.getUTCMonth() + 1, fill, 2);\n }\n function formatUTCShortMonth(date) {\n return lShortMonths[date.getUTCMonth()];\n }\n function formatUTCMonth(date) {\n return lMonths[date.getUTCMonth()];\n }\n function formatUTCShortWeekday(date) {\n return lShortWeekdays[date.getUTCDay()];\n }\n function formatUTCWeekday(date) {\n return lWeekdays[date.getUTCDay()];\n }\n function formatUTCWeekdayNumberMonday(date) {\n var dayOfWeek = date.getUTCDay();\n return dayOfWeek === 0 ? 7 : dayOfWeek;\n }\n function formatUTCWeekNumberSunday(date, fill) {\n return pad(utcSunday.count(utcYear.floor(date), date), fill, 2);\n }\n function formatUTCWeekNumberISO(date, fill) {\n var day = date.getUTCDay();\n date = (day >= 4 || day === 0) ? utcThursday.floor(date) : utcThursday.ceil(date);\n var yearStart = utcYear.floor(date);\n return pad(utcThursday.count(yearStart, date) + (yearStart.getUTCDay() === 4 ? 1 : 0), fill, 4);\n }\n function formatUTCWeekdayNumberSunday(date) {\n return date.getUTCDay();\n }\n function formatUTCWeekNumberMonday(date, fill) {\n return pad(utcMonday.count(utcYear.floor(date), date), fill, 2);\n }\n function formatUTCYear(date, fill) {\n return pad(date.getUTCFullYear() % 100, fill, 2);\n }\n function formatUTCFullYear(date, fill) {\n return pad(date.getUTCFullYear() % 10000, fill, 4);\n }\n function formatUTCZone() {\n return '+0000';\n }\n function formatLiteralPercent(date) {\n return '%';\n }\n function formatUnixTimestamp(date) {\n return date.getTime();\n }\n function formatUnixTimestampSeconds(date) {\n return Math.floor(date.getTime() / 1000);\n }\n // ------------------------------- parsers ------------------------------------\n function parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(parseFloat(n[0]) / 1000), i + n[0].length) : -1;\n }\n function parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n }\n function parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n }\n function parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n }\n function parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n }\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n function parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n }\n function parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n }\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n function parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n }\n function parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n }\n function parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n }\n function parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n }\n function parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n }\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n function parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = parseFloat(n[0]) - 1, i + n[0].length) : -1;\n }\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, lDateTime, string, i);\n }\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, lDate, string, i);\n }\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, lTime, string, i);\n }\n function parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n }\n function parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = (+n[0]) * 1000, i + n[0].length) : -1;\n }\n function parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n }\n function parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n }\n function parseZone(d, string, i) {\n var n = /^(Z)|^([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || '00')), i + n[0].length) : -1;\n }\n function parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n }\n return {\n format: function (specifier) {\n var f = newFormat(specifier, formats);\n f.toString = function () { return specifier; };\n return f;\n },\n parse: function (specifier) {\n var p = newParse(specifier, localDate);\n p.toString = function () { return specifier; };\n return p;\n },\n utcFormat: function (specifier) {\n var f = newFormat(specifier, utcFormats);\n f.toString = function () { return specifier; };\n return f;\n },\n utcParse: function (specifier) {\n var p = newParse(specifier, utcDate);\n p.toString = function () { return specifier; };\n return p;\n }\n };\n}\n","import formatLocale from './locale';\nexport var locale;\nsetDefaultLocale({\n dateTime: '%x, %X',\n date: '%-m/%-d/%Y',\n time: '%-I:%M:%S %p',\n periods: ['AM', 'PM'],\n days: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n shortDays: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n shortMonths: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']\n});\nexport default function setDefaultLocale(definition) {\n return locale = formatLocale(definition);\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nimport { ContinuousScale } from \"./continuousScale\";\nimport timeMillisecond from \"../util/time/millisecond\";\nimport timeSecond from \"../util/time/second\";\nimport timeMinute from \"../util/time/minute\";\nimport timeHour from \"../util/time/hour\";\nimport timeDay from \"../util/time/day\";\nimport timeWeek from \"../util/time/week\";\nimport timeMonth from \"../util/time/month\";\nimport timeYear from \"../util/time/year\";\nimport { durationSecond, durationMinute, durationHour, durationDay, durationWeek, durationMonth, durationYear } from \"../util/time/duration\";\nimport { complexBisectRight } from \"../util/bisect\";\nimport { tickStep } from \"../util/ticks\";\nimport { locale } from \"../util/time/format/defaultLocale\";\nvar TimeScale = /** @class */ (function (_super) {\n __extends(TimeScale, _super);\n function TimeScale() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'time';\n _this.year = timeYear;\n _this.month = timeMonth;\n _this.week = timeWeek;\n _this.day = timeDay;\n _this.hour = timeHour;\n _this.minute = timeMinute;\n _this.second = timeSecond;\n _this.millisecond = timeMillisecond;\n _this.format = locale.format;\n /**\n * Array of default tick intervals in the following format:\n *\n * [\n * interval (unit of time),\n * number of units (step),\n * the length of that number of units in milliseconds\n * ]\n */\n _this.tickIntervals = [\n [_this.second, 1, durationSecond],\n [_this.second, 5, 5 * durationSecond],\n [_this.second, 15, 15 * durationSecond],\n [_this.second, 30, 30 * durationSecond],\n [_this.minute, 1, durationMinute],\n [_this.minute, 5, 5 * durationMinute],\n [_this.minute, 15, 15 * durationMinute],\n [_this.minute, 30, 30 * durationMinute],\n [_this.hour, 1, durationHour],\n [_this.hour, 3, 3 * durationHour],\n [_this.hour, 6, 6 * durationHour],\n [_this.hour, 12, 12 * durationHour],\n [_this.day, 1, durationDay],\n [_this.day, 2, 2 * durationDay],\n [_this.week, 1, durationWeek],\n [_this.month, 1, durationMonth],\n [_this.month, 3, 3 * durationMonth],\n [_this.year, 1, durationYear]\n ];\n _this.formatMillisecond = _this.format('.%L');\n _this.formatSecond = _this.format(':%S');\n _this.formatMinute = _this.format('%I:%M');\n _this.formatHour = _this.format('%I %p');\n _this.formatDay = _this.format('%a %d');\n _this.formatWeek = _this.format('%b %d');\n _this.formatMonth = _this.format('%B');\n _this.formatYear = _this.format('%Y');\n _this._domain = [new Date(2000, 0, 1), new Date(2000, 0, 2)];\n return _this;\n }\n TimeScale.prototype.defaultTickFormat = function (date) {\n return (this.second.floor(date) < date\n ? this.formatMillisecond\n : this.minute.floor(date) < date\n ? this.formatSecond\n : this.hour.floor(date) < date\n ? this.formatMinute\n : this.day.floor(date) < date\n ? this.formatHour\n : this.month.floor(date) < date\n ? (this.week.floor(date) < date ? this.formatDay : this.formatWeek)\n : this.year.floor(date) < date\n ? this.formatMonth\n : this.formatYear)(date);\n };\n /**\n *\n * @param interval If the `interval` is a number, it's interpreted as the desired tick count\n * and the method tries to pick an appropriate interval automatically, based on the extent of the domain.\n * If the `interval` is `undefined`, it defaults to `10`.\n * If the `interval` is a time interval, simply use it.\n * @param start The start time (timestamp).\n * @param stop The end time (timestamp).\n * @param step Number of intervals between ticks.\n */\n TimeScale.prototype.tickInterval = function (interval, start, stop, step) {\n var _a;\n if (typeof interval === 'number') {\n var tickCount = interval;\n var tickIntervals = this.tickIntervals;\n var target = Math.abs(stop - start) / tickCount;\n var i = complexBisectRight(tickIntervals, target, function (interval) { return interval[2]; });\n if (i === tickIntervals.length) {\n step = tickStep(start / durationYear, stop / durationYear, tickCount);\n interval = this.year;\n }\n else if (i) {\n _a = __read(tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i], 2), interval = _a[0], step = _a[1];\n }\n else {\n step = Math.max(tickStep(start, stop, interval), 1);\n interval = this.millisecond;\n }\n }\n return step == undefined ? interval : interval.every(step);\n };\n Object.defineProperty(TimeScale.prototype, \"domain\", {\n get: function () {\n return _super.prototype.getDomain.call(this).map(function (t) { return new Date(t); });\n },\n set: function (values) {\n _super.prototype.setDomain.call(this, Array.prototype.map.call(values, function (t) { return t instanceof Date ? +t : +new Date(+t); }));\n },\n enumerable: true,\n configurable: true\n });\n TimeScale.prototype.invert = function (y) {\n return new Date(_super.prototype.invert.call(this, y));\n };\n /**\n * Returns uniformly-spaced dates that represent the scale's domain.\n * @param interval The desired tick count or a time interval object.\n */\n TimeScale.prototype.ticks = function (interval) {\n if (interval === void 0) { interval = 10; }\n var d = _super.prototype.getDomain.call(this);\n var t0 = d[0];\n var t1 = d[d.length - 1];\n var reverse = t1 < t0;\n if (reverse) {\n var _ = t0;\n t0 = t1;\n t1 = _;\n }\n var t = this.tickInterval(interval, t0, t1);\n var i = t ? t.range(t0, t1 + 1) : []; // inclusive stop\n return reverse ? i.reverse() : i;\n };\n /**\n * Returns a time format function suitable for displaying tick values.\n * @param count Ignored. Used only to satisfy the {@link Scale} interface.\n * @param specifier If the specifier string is provided, this method is equivalent to\n * the {@link TimeLocaleObject.format} method.\n * If no specifier is provided, this method returns the default time format function.\n */\n TimeScale.prototype.tickFormat = function (count, specifier) {\n return specifier == undefined ? this.defaultTickFormat.bind(this) : this.format(specifier);\n };\n /**\n * Extends the domain so that it starts and ends on nice round values.\n * This method typically modifies the scale’s domain, and may only extend the bounds to the nearest round value.\n * @param interval\n */\n TimeScale.prototype.nice = function (interval) {\n if (interval === void 0) { interval = 10; }\n var d = _super.prototype.getDomain.call(this);\n var i = this.tickInterval(interval, d[0], d[d.length - 1]);\n if (i) {\n this.domain = this._nice(d, i);\n }\n };\n TimeScale.prototype._nice = function (domain, interval) {\n var _a, _b;\n domain = domain.slice();\n var i0 = 0;\n var i1 = domain.length - 1;\n var x0 = domain[i0];\n var x1 = domain[i1];\n if (x1 < x0) {\n _a = __read([i1, i0], 2), i0 = _a[0], i1 = _a[1];\n _b = __read([x1, x0], 2), x0 = _b[0], x1 = _b[1];\n }\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n };\n return TimeScale;\n}(ContinuousScale));\nexport { TimeScale };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { TimeScale } from \"../../scale/timeScale\";\nimport { extent } from \"../../util/array\";\nimport { isContinuous } from \"../../util/value\";\nimport { ChartAxis } from \"../chartAxis\";\nvar TimeAxis = /** @class */ (function (_super) {\n __extends(TimeAxis, _super);\n function TimeAxis() {\n var _this = _super.call(this, new TimeScale()) || this;\n _this.datumFormat = '%m/%d/%y, %H:%M:%S';\n _this._nice = true;\n var scale = _this.scale;\n scale.clamp = true;\n _this.scale = scale;\n _this.datumFormatter = scale.tickFormat(_this.tick.count, _this.datumFormat);\n return _this;\n }\n Object.defineProperty(TimeAxis.prototype, \"nice\", {\n get: function () {\n return this._nice;\n },\n set: function (value) {\n if (this._nice !== value) {\n this._nice = value;\n if (value && this.scale.nice) {\n this.scale.nice(10);\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TimeAxis.prototype, \"domain\", {\n get: function () {\n return this.scale.domain;\n },\n set: function (domain) {\n if (domain.length > 2) {\n domain = (extent(domain, isContinuous, Number) || [0, 1000]).map(function (x) { return new Date(x); });\n }\n this.scale.domain = domain;\n if (this.nice && this.scale.nice) {\n this.scale.nice(10);\n }\n },\n enumerable: true,\n configurable: true\n });\n TimeAxis.prototype.onLabelFormatChange = function (format) {\n if (format) {\n _super.prototype.onLabelFormatChange.call(this, format);\n }\n else {\n // For time axis labels to look nice, even if date format wasn't set.\n this.labelFormatter = this.scale.tickFormat(this.tick.count, undefined);\n }\n };\n TimeAxis.prototype.formatDatum = function (datum) {\n return this.datumFormatter(datum);\n };\n TimeAxis.className = 'TimeAxis';\n TimeAxis.type = 'time';\n return TimeAxis;\n}(ChartAxis));\nexport { TimeAxis };\n","var __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nimport { HdpiCanvas } from \"../canvas/hdpiCanvas\";\nimport { createId } from \"../util/id\";\nvar Scene = /** @class */ (function () {\n // As a rule of thumb, constructors with no parameters are preferred.\n // A few exceptions are:\n // - we absolutely need to know something at construction time (document)\n // - knowing something at construction time meaningfully improves performance (width, height)\n function Scene(document, width, height) {\n var _this = this;\n if (document === void 0) { document = window.document; }\n this.id = createId(this);\n this._dirty = false;\n this.animationFrameId = 0;\n this._root = null;\n this.debug = {\n renderFrameIndex: false,\n renderBoundingBoxes: false\n };\n this._frameIndex = 0;\n this.render = function () {\n var _a;\n var _b = _this, ctx = _b.ctx, root = _b.root, pendingSize = _b.pendingSize;\n _this.animationFrameId = 0;\n if (pendingSize) {\n (_a = _this.canvas).resize.apply(_a, __spread(pendingSize));\n _this.pendingSize = undefined;\n }\n if (root && !root.visible) {\n _this.dirty = false;\n return;\n }\n // start with a blank canvas, clear previous drawing\n ctx.clearRect(0, 0, _this.width, _this.height);\n if (root) {\n ctx.save();\n if (root.visible) {\n root.render(ctx);\n }\n ctx.restore();\n }\n _this._frameIndex++;\n if (_this.debug.renderFrameIndex) {\n ctx.fillStyle = 'white';\n ctx.fillRect(0, 0, 40, 15);\n ctx.fillStyle = 'black';\n ctx.fillText(_this.frameIndex.toString(), 2, 10);\n }\n _this.dirty = false;\n };\n this.canvas = new HdpiCanvas(document, width, height);\n this.ctx = this.canvas.context;\n }\n Object.defineProperty(Scene.prototype, \"container\", {\n get: function () {\n return this.canvas.container;\n },\n set: function (value) {\n this.canvas.container = value;\n },\n enumerable: true,\n configurable: true\n });\n Scene.prototype.download = function (fileName) {\n this.canvas.download(fileName);\n };\n Scene.prototype.getDataURL = function (type) {\n return this.canvas.getDataURL(type);\n };\n Object.defineProperty(Scene.prototype, \"width\", {\n get: function () {\n return this.pendingSize ? this.pendingSize[0] : this.canvas.width;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Scene.prototype, \"height\", {\n get: function () {\n return this.pendingSize ? this.pendingSize[1] : this.canvas.height;\n },\n enumerable: true,\n configurable: true\n });\n Scene.prototype.resize = function (width, height) {\n width = Math.round(width);\n height = Math.round(height);\n if (width === this.width && height === this.height) {\n return;\n }\n this.pendingSize = [width, height];\n this.dirty = true;\n };\n Object.defineProperty(Scene.prototype, \"dirty\", {\n get: function () {\n return this._dirty;\n },\n set: function (dirty) {\n if (dirty) {\n if (!this._dirty) {\n this.animationFrameId = requestAnimationFrame(this.render);\n }\n }\n else if (this.animationFrameId) {\n cancelAnimationFrame(this.animationFrameId);\n this.animationFrameId = 0;\n }\n this._dirty = dirty;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Scene.prototype, \"root\", {\n get: function () {\n return this._root;\n },\n set: function (node) {\n if (node === this._root) {\n return;\n }\n if (this._root) {\n this._root._setScene();\n }\n this._root = node;\n if (node) {\n // If `node` is the root node of another scene ...\n if (node.parent === null && node.scene && node.scene !== this) {\n node.scene.root = null;\n }\n node._setScene(this);\n }\n this.dirty = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Scene.prototype, \"frameIndex\", {\n get: function () {\n return this._frameIndex;\n },\n enumerable: true,\n configurable: true\n });\n Scene.className = 'Scene';\n return Scene;\n}());\nexport { Scene };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Gradient } from \"./gradient\";\nvar LinearGradient = /** @class */ (function (_super) {\n __extends(LinearGradient, _super);\n function LinearGradient() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.angle = 0;\n return _this;\n }\n LinearGradient.prototype.createGradient = function (ctx, bbox) {\n var stops = this.stops;\n var radians = (this.angle % 360) * Math.PI / 180;\n var cos = Math.cos(radians);\n var sin = Math.sin(radians);\n var w = bbox.width;\n var h = bbox.height;\n var cx = bbox.x + w * 0.5;\n var cy = bbox.y + h * 0.5;\n if (w > 0 && h > 0) {\n var l = (Math.sqrt(h * h + w * w) * Math.abs(Math.cos(radians - Math.atan(h / w)))) / 2;\n var gradient_1 = ctx.createLinearGradient(cx + cos * l, cy + sin * l, cx - cos * l, cy - sin * l);\n stops.forEach(function (stop) {\n gradient_1.addColorStop(stop.offset, stop.color);\n });\n return gradient_1;\n }\n return 'black';\n };\n return LinearGradient;\n}(Gradient));\nexport { LinearGradient };\n","var Gradient = /** @class */ (function () {\n function Gradient() {\n this.stops = [];\n }\n return Gradient;\n}());\nexport { Gradient };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Path } from \"./path\";\nimport { Shape } from \"./shape\";\nimport { BBox } from \"../bbox\";\nimport { LinearGradient } from \"../gradient/linearGradient\";\nimport { Color } from \"../../util/color\";\nexport var RectSizing;\n(function (RectSizing) {\n RectSizing[RectSizing[\"Content\"] = 0] = \"Content\";\n RectSizing[RectSizing[\"Border\"] = 1] = \"Border\";\n})(RectSizing || (RectSizing = {}));\nvar Rect = /** @class */ (function (_super) {\n __extends(Rect, _super);\n function Rect() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._x = 0;\n _this._y = 0;\n _this._width = 10;\n _this._height = 10;\n _this._radius = 0;\n /**\n * If `true`, the rect is aligned to the pixel grid for crisp looking lines.\n * Animated rects may not look nice with this option enabled, for example\n * when a rect is translated by a sub-pixel value on each frame.\n */\n _this._crisp = false;\n _this._gradient = false;\n _this.effectiveStrokeWidth = Shape.defaultStyles.strokeWidth;\n /**\n * Similar to https://developer.mozilla.org/en-US/docs/Web/CSS/box-sizing\n */\n _this._sizing = RectSizing.Content;\n return _this;\n }\n Object.defineProperty(Rect.prototype, \"x\", {\n get: function () {\n return this._x;\n },\n set: function (value) {\n if (this._x !== value) {\n this._x = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rect.prototype, \"y\", {\n get: function () {\n return this._y;\n },\n set: function (value) {\n if (this._y !== value) {\n this._y = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rect.prototype, \"width\", {\n get: function () {\n return this._width;\n },\n set: function (value) {\n if (this._width !== value) {\n this._width = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rect.prototype, \"height\", {\n get: function () {\n return this._height;\n },\n set: function (value) {\n if (this._height !== value) {\n this._height = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rect.prototype, \"radius\", {\n get: function () {\n return this._radius;\n },\n set: function (value) {\n if (this._radius !== value) {\n this._radius = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rect.prototype, \"crisp\", {\n get: function () {\n return this._crisp;\n },\n set: function (value) {\n if (this._crisp !== value) {\n this._crisp = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rect.prototype, \"gradient\", {\n get: function () {\n return this._gradient;\n },\n set: function (value) {\n if (this._gradient !== value) {\n this._gradient = value;\n this.updateGradientInstance();\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Rect.prototype.updateGradientInstance = function () {\n if (this.gradient) {\n var fill = this.fill;\n if (fill) {\n var gradient = new LinearGradient();\n gradient.angle = 270;\n gradient.stops = [{\n offset: 0,\n color: Color.fromString(fill).brighter().toString()\n }, {\n offset: 1,\n color: Color.fromString(fill).darker().toString()\n }];\n this.gradientInstance = gradient;\n }\n }\n else {\n this.gradientInstance = undefined;\n }\n };\n Object.defineProperty(Rect.prototype, \"fill\", {\n get: function () {\n return this._fill;\n },\n set: function (value) {\n if (this._fill !== value) {\n this._fill = value;\n this.updateGradientInstance();\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rect.prototype, \"strokeWidth\", {\n get: function () {\n return this._strokeWidth;\n },\n set: function (value) {\n if (this._strokeWidth !== value) {\n this._strokeWidth = value;\n // Normally, when the `lineWidth` changes, we only need to repaint the rect\n // without updating the path. If the `isCrisp` is set to `true` however,\n // we need to update the path to make sure the new stroke aligns to\n // the pixel grid. This is the reason we override the `lineWidth` setter\n // and getter here.\n if (this.crisp || this.sizing === RectSizing.Border) {\n this.dirtyPath = true;\n }\n else {\n this.effectiveStrokeWidth = value;\n this.dirty = true;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rect.prototype, \"sizing\", {\n get: function () {\n return this._sizing;\n },\n set: function (value) {\n if (this._sizing !== value) {\n this._sizing = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Rect.prototype.updatePath = function () {\n var borderSizing = this.sizing === RectSizing.Border;\n var path = this.path;\n path.clear();\n var x = this.x;\n var y = this.y;\n var width = this.width;\n var height = this.height;\n var strokeWidth;\n if (borderSizing) {\n var halfWidth = width / 2;\n var halfHeight = height / 2;\n strokeWidth = Math.min(this.strokeWidth, halfWidth, halfHeight);\n x = Math.min(x + strokeWidth / 2, x + halfWidth);\n y = Math.min(y + strokeWidth / 2, y + halfHeight);\n width = Math.max(width - strokeWidth, 0);\n height = Math.max(height - strokeWidth, 0);\n }\n else {\n strokeWidth = this.strokeWidth;\n }\n this.effectiveStrokeWidth = strokeWidth;\n if (this.crisp && !borderSizing) {\n var _a = this, a = _a.alignment, al = _a.align;\n path.rect(al(a, x), al(a, y), al(a, x, width), al(a, y, height));\n }\n else {\n path.rect(x, y, width, height);\n }\n };\n Rect.prototype.computeBBox = function () {\n var _a = this, x = _a.x, y = _a.y, width = _a.width, height = _a.height;\n return new BBox(x, y, width, height);\n };\n Rect.prototype.isPointInPath = function (x, y) {\n var point = this.transformPoint(x, y);\n var bbox = this.computeBBox();\n return bbox.containsPoint(point.x, point.y);\n };\n Rect.prototype.isPointInStroke = function (x, y) {\n return false;\n };\n Rect.prototype.fillStroke = function (ctx) {\n if (!this.scene) {\n return;\n }\n var pixelRatio = this.scene.canvas.pixelRatio || 1;\n if (this.fill) {\n if (this.gradientInstance) {\n ctx.fillStyle = this.gradientInstance.createGradient(ctx, this.computeBBox());\n }\n else {\n ctx.fillStyle = this.fill;\n }\n ctx.globalAlpha = this.opacity * this.fillOpacity;\n // The canvas context scaling (depends on the device's pixel ratio)\n // has no effect on shadows, so we have to account for the pixel ratio\n // manually here.\n var fillShadow = this.fillShadow;\n if (fillShadow && fillShadow.enabled) {\n ctx.shadowColor = fillShadow.color;\n ctx.shadowOffsetX = fillShadow.xOffset * pixelRatio;\n ctx.shadowOffsetY = fillShadow.yOffset * pixelRatio;\n ctx.shadowBlur = fillShadow.blur * pixelRatio;\n }\n ctx.fill();\n }\n ctx.shadowColor = 'rgba(0, 0, 0, 0)';\n if (this.stroke && this.effectiveStrokeWidth) {\n ctx.strokeStyle = this.stroke;\n ctx.globalAlpha = this.opacity * this.strokeOpacity;\n ctx.lineWidth = this.effectiveStrokeWidth;\n if (this.lineDash) {\n ctx.setLineDash(this.lineDash);\n }\n if (this.lineDashOffset) {\n ctx.lineDashOffset = this.lineDashOffset;\n }\n if (this.lineCap) {\n ctx.lineCap = this.lineCap;\n }\n if (this.lineJoin) {\n ctx.lineJoin = this.lineJoin;\n }\n var strokeShadow = this.strokeShadow;\n if (strokeShadow && strokeShadow.enabled) {\n ctx.shadowColor = strokeShadow.color;\n ctx.shadowOffsetX = strokeShadow.xOffset * pixelRatio;\n ctx.shadowOffsetY = strokeShadow.yOffset * pixelRatio;\n ctx.shadowBlur = strokeShadow.blur * pixelRatio;\n }\n ctx.stroke();\n }\n };\n Rect.className = 'Rect';\n return Rect;\n}(Path));\nexport { Rect };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Path } from \"../../scene/shape/path\";\nimport { BBox } from \"../../scene/bbox\";\nvar Marker = /** @class */ (function (_super) {\n __extends(Marker, _super);\n function Marker() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._x = 0;\n _this._y = 0;\n _this._size = 12;\n return _this;\n }\n Object.defineProperty(Marker.prototype, \"x\", {\n get: function () {\n return this._x;\n },\n set: function (value) {\n if (this._x !== value) {\n this._x = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Marker.prototype, \"y\", {\n get: function () {\n return this._y;\n },\n set: function (value) {\n if (this._y !== value) {\n this._y = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Marker.prototype, \"size\", {\n get: function () {\n return this._size;\n },\n set: function (value) {\n if (this._size !== value) {\n this._size = Math.abs(value);\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Marker.prototype.computeBBox = function () {\n var _a = this, x = _a.x, y = _a.y, size = _a.size;\n var half = size / 2;\n return new BBox(x - half, y - half, size, size);\n };\n return Marker;\n}(Path));\nexport { Marker };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Marker } from \"./marker\";\nvar Square = /** @class */ (function (_super) {\n __extends(Square, _super);\n function Square() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Square.prototype.updatePath = function () {\n var _a = this, path = _a.path, x = _a.x, y = _a.y;\n var hs = this.size / 2;\n var _b = this, a = _b.alignment, al = _b.align;\n path.clear();\n path.moveTo(al(a, x - hs), al(a, y - hs));\n path.lineTo(al(a, x + hs), al(a, y - hs));\n path.lineTo(al(a, x + hs), al(a, y + hs));\n path.lineTo(al(a, x - hs), al(a, y + hs));\n path.closePath();\n };\n Square.className = 'Square';\n return Square;\n}(Marker));\nexport { Square };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Group } from \"../scene/group\";\nimport { Text } from \"../scene/shape/text\";\nimport { Square } from \"./marker/square\";\nimport { HdpiCanvas } from \"../canvas/hdpiCanvas\";\nvar MarkerLabel = /** @class */ (function (_super) {\n __extends(MarkerLabel, _super);\n function MarkerLabel() {\n var _this = _super.call(this) || this;\n _this.label = new Text();\n _this._marker = new Square();\n _this._markerSize = 15;\n _this._spacing = 8;\n var label = _this.label;\n label.textBaseline = 'middle';\n label.fontSize = 12;\n label.fontFamily = 'Verdana, sans-serif';\n label.fill = 'black';\n // For better looking vertical alignment of labels to markers.\n label.y = HdpiCanvas.has.textMetrics ? 1 : 0;\n _this.append([_this.marker, label]);\n _this.update();\n return _this;\n }\n Object.defineProperty(MarkerLabel.prototype, \"text\", {\n get: function () {\n return this.label.text;\n },\n set: function (value) {\n this.label.text = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MarkerLabel.prototype, \"fontStyle\", {\n get: function () {\n return this.label.fontStyle;\n },\n set: function (value) {\n this.label.fontStyle = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MarkerLabel.prototype, \"fontWeight\", {\n get: function () {\n return this.label.fontWeight;\n },\n set: function (value) {\n this.label.fontWeight = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MarkerLabel.prototype, \"fontSize\", {\n get: function () {\n return this.label.fontSize;\n },\n set: function (value) {\n this.label.fontSize = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MarkerLabel.prototype, \"fontFamily\", {\n get: function () {\n return this.label.fontFamily;\n },\n set: function (value) {\n this.label.fontFamily = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MarkerLabel.prototype, \"color\", {\n get: function () {\n return this.label.fill;\n },\n set: function (value) {\n this.label.fill = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MarkerLabel.prototype, \"marker\", {\n get: function () {\n return this._marker;\n },\n set: function (value) {\n if (this._marker !== value) {\n this.removeChild(this._marker);\n this._marker = value;\n this.appendChild(value);\n this.update();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MarkerLabel.prototype, \"markerSize\", {\n get: function () {\n return this._markerSize;\n },\n set: function (value) {\n if (this._markerSize !== value) {\n this._markerSize = value;\n this.update();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MarkerLabel.prototype, \"markerFill\", {\n get: function () {\n return this.marker.fill;\n },\n set: function (value) {\n this.marker.fill = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MarkerLabel.prototype, \"markerStroke\", {\n get: function () {\n return this.marker.stroke;\n },\n set: function (value) {\n this.marker.stroke = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MarkerLabel.prototype, \"markerStrokeWidth\", {\n get: function () {\n return this.marker.strokeWidth;\n },\n set: function (value) {\n this.marker.strokeWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MarkerLabel.prototype, \"markerFillOpacity\", {\n get: function () {\n return this.marker.fillOpacity;\n },\n set: function (value) {\n this.marker.fillOpacity = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MarkerLabel.prototype, \"markerStrokeOpacity\", {\n get: function () {\n return this.marker.strokeOpacity;\n },\n set: function (value) {\n this.marker.strokeOpacity = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MarkerLabel.prototype, \"opacity\", {\n get: function () {\n return this.marker.opacity;\n },\n set: function (value) {\n this.marker.opacity = value;\n this.label.opacity = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MarkerLabel.prototype, \"spacing\", {\n get: function () {\n return this._spacing;\n },\n set: function (value) {\n if (this._spacing !== value) {\n this._spacing = value;\n this.update();\n }\n },\n enumerable: true,\n configurable: true\n });\n MarkerLabel.prototype.update = function () {\n var marker = this.marker;\n var markerSize = this.markerSize;\n marker.size = markerSize;\n this.label.x = markerSize / 2 + this.spacing;\n };\n MarkerLabel.className = 'MarkerLabel';\n return MarkerLabel;\n}(Group));\nexport { MarkerLabel };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Marker } from \"./marker\";\nvar Circle = /** @class */ (function (_super) {\n __extends(Circle, _super);\n function Circle() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Circle.prototype.updatePath = function () {\n var _a = this, x = _a.x, y = _a.y, path = _a.path, size = _a.size;\n var r = size / 2;\n path.clear();\n path.cubicArc(x, y, r, r, 0, 0, Math.PI * 2, 0);\n path.closePath();\n };\n Circle.className = 'Circle';\n return Circle;\n}(Marker));\nexport { Circle };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Marker } from \"./marker\";\nvar Cross = /** @class */ (function (_super) {\n __extends(Cross, _super);\n function Cross() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Cross.prototype.updatePath = function () {\n var _a = this, x = _a.x, y = _a.y;\n var _b = this, path = _b.path, size = _b.size;\n var s = size / 4.2;\n path.clear();\n path.moveTo(x -= s, y);\n path.lineTo(x -= s, y -= s);\n path.lineTo(x += s, y -= s);\n path.lineTo(x += s, y += s);\n path.lineTo(x += s, y -= s);\n path.lineTo(x += s, y += s);\n path.lineTo(x -= s, y += s);\n path.lineTo(x += s, y += s);\n path.lineTo(x -= s, y += s);\n path.lineTo(x -= s, y -= s);\n path.lineTo(x -= s, y += s);\n path.lineTo(x -= s, y -= s);\n path.closePath();\n };\n Cross.className = 'Cross';\n return Cross;\n}(Marker));\nexport { Cross };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Marker } from \"./marker\";\nvar Diamond = /** @class */ (function (_super) {\n __extends(Diamond, _super);\n function Diamond() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Diamond.prototype.updatePath = function () {\n var _a = this, x = _a.x, y = _a.y;\n var _b = this, path = _b.path, size = _b.size;\n var s = size / 2;\n path.clear();\n path.moveTo(x, y -= s);\n path.lineTo(x += s, y += s);\n path.lineTo(x -= s, y += s);\n path.lineTo(x -= s, y -= s);\n path.lineTo(x += s, y -= s);\n path.closePath();\n };\n Diamond.className = 'Diamond';\n return Diamond;\n}(Marker));\nexport { Diamond };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Marker } from \"./marker\";\nvar Heart = /** @class */ (function (_super) {\n __extends(Heart, _super);\n function Heart() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Heart.prototype.rad = function (degree) {\n return degree / 180 * Math.PI;\n };\n Heart.prototype.updatePath = function () {\n var _a = this, x = _a.x, path = _a.path, size = _a.size, rad = _a.rad;\n var r = size / 4;\n var y = this.y + r / 2;\n path.clear();\n path.cubicArc(x - r, y - r, r, r, 0, rad(130), rad(330), 0);\n path.cubicArc(x + r, y - r, r, r, 0, rad(220), rad(50), 0);\n path.lineTo(x, y + r);\n path.closePath();\n };\n Heart.className = 'Heart';\n return Heart;\n}(Marker));\nexport { Heart };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Marker } from \"./marker\";\nvar Plus = /** @class */ (function (_super) {\n __extends(Plus, _super);\n function Plus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Plus.prototype.updatePath = function () {\n var _a = this, x = _a.x, y = _a.y;\n var _b = this, path = _b.path, size = _b.size;\n var s = size / 3;\n var hs = s / 2;\n path.clear();\n path.moveTo(x -= hs, y -= hs);\n path.lineTo(x, y -= s);\n path.lineTo(x += s, y);\n path.lineTo(x, y += s);\n path.lineTo(x += s, y);\n path.lineTo(x, y += s);\n path.lineTo(x -= s, y);\n path.lineTo(x, y += s);\n path.lineTo(x -= s, y);\n path.lineTo(x, y -= s);\n path.lineTo(x -= s, y);\n path.lineTo(x, y -= s);\n path.closePath();\n };\n Plus.className = 'Plus';\n return Plus;\n}(Marker));\nexport { Plus };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Marker } from \"./marker\";\nvar Triangle = /** @class */ (function (_super) {\n __extends(Triangle, _super);\n function Triangle() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Triangle.prototype.updatePath = function () {\n var _a = this, x = _a.x, y = _a.y;\n var _b = this, path = _b.path, size = _b.size;\n var s = size * 1.1;\n path.clear();\n path.moveTo(x, y -= s * 0.48);\n path.lineTo(x += s * 0.5, y += s * 0.87);\n path.lineTo(x -= s, y);\n path.closePath();\n };\n Triangle.className = 'Triangle';\n return Triangle;\n}(Marker));\nexport { Triangle };\n","import { Square } from \"./square\";\nimport { Circle } from \"./circle\";\nimport { Cross } from \"./cross\";\nimport { Diamond } from \"./diamond\";\nimport { Heart } from \"./heart\";\nimport { Plus } from \"./plus\";\nimport { Triangle } from \"./triangle\";\n// This function is in its own file because putting it into SeriesMarker makes the Legend\n// suddenly aware of the series (it's an agnostic component), and putting it into Marker\n// introduces circular dependencies.\nexport function getMarker(shape) {\n if (shape === void 0) { shape = Square; }\n if (typeof shape === 'string') {\n switch (shape) {\n case 'circle':\n return Circle;\n case 'cross':\n return Cross;\n case 'diamond':\n return Diamond;\n case 'heart':\n return Heart;\n case 'plus':\n return Plus;\n case 'triangle':\n return Triangle;\n default:\n return Square;\n }\n }\n if (typeof shape === 'function') {\n return shape;\n }\n return Square;\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Group } from \"../scene/group\";\nimport { Selection } from \"../scene/selection\";\nimport { MarkerLabel } from \"./markerLabel\";\nimport { reactive, Observable } from \"../util/observable\";\nimport { getMarker } from \"./marker/util\";\nimport { createId } from \"../util/id\";\nexport var LegendOrientation;\n(function (LegendOrientation) {\n LegendOrientation[LegendOrientation[\"Vertical\"] = 0] = \"Vertical\";\n LegendOrientation[LegendOrientation[\"Horizontal\"] = 1] = \"Horizontal\";\n})(LegendOrientation || (LegendOrientation = {}));\nexport var LegendPosition;\n(function (LegendPosition) {\n LegendPosition[\"Top\"] = \"top\";\n LegendPosition[\"Right\"] = \"right\";\n LegendPosition[\"Bottom\"] = \"bottom\";\n LegendPosition[\"Left\"] = \"left\";\n})(LegendPosition || (LegendPosition = {}));\nvar LegendLabel = /** @class */ (function (_super) {\n __extends(LegendLabel, _super);\n function LegendLabel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.color = 'black';\n _this.fontSize = 12;\n _this.fontFamily = 'Verdana, sans-serif';\n return _this;\n }\n __decorate([\n reactive('change')\n ], LegendLabel.prototype, \"color\", void 0);\n __decorate([\n reactive('layoutChange')\n ], LegendLabel.prototype, \"fontStyle\", void 0);\n __decorate([\n reactive('layoutChange')\n ], LegendLabel.prototype, \"fontWeight\", void 0);\n __decorate([\n reactive('layoutChange')\n ], LegendLabel.prototype, \"fontSize\", void 0);\n __decorate([\n reactive('layoutChange')\n ], LegendLabel.prototype, \"fontFamily\", void 0);\n __decorate([\n reactive()\n ], LegendLabel.prototype, \"formatter\", void 0);\n return LegendLabel;\n}(Observable));\nexport { LegendLabel };\nvar LegendMarker = /** @class */ (function (_super) {\n __extends(LegendMarker, _super);\n function LegendMarker() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.size = 15;\n /**\n * Padding between the marker and the label within each legend item.\n */\n _this.padding = 8;\n _this.strokeWidth = 1;\n return _this;\n }\n __decorate([\n reactive('layoutChange')\n ], LegendMarker.prototype, \"size\", void 0);\n __decorate([\n reactive('layoutChange')\n ], LegendMarker.prototype, \"shape\", void 0);\n __decorate([\n reactive('layoutChange')\n ], LegendMarker.prototype, \"padding\", void 0);\n __decorate([\n reactive('change')\n ], LegendMarker.prototype, \"strokeWidth\", void 0);\n return LegendMarker;\n}(Observable));\nexport { LegendMarker };\nvar LegendItem = /** @class */ (function (_super) {\n __extends(LegendItem, _super);\n function LegendItem() {\n var _this = _super.call(this) || this;\n _this.marker = new LegendMarker();\n _this.label = new LegendLabel();\n /**\n * The legend uses grid layout for its items, occupying as few columns as possible when positioned to left or right,\n * and as few rows as possible when positioned to top or bottom. This config specifies the amount of horizontal\n * padding between legend items.\n */\n _this.paddingX = 16;\n /**\n * The legend uses grid layout for its items, occupying as few columns as possible when positioned to left or right,\n * and as few rows as possible when positioned to top or bottom. This config specifies the amount of vertical\n * padding between legend items.\n */\n _this.paddingY = 8;\n var changeListener = function () { return _this.fireEvent({ type: 'change' }); };\n _this.marker.addEventListener('change', changeListener);\n _this.label.addEventListener('change', changeListener);\n var layoutChangeListener = function () { return _this.fireEvent({ type: 'layoutChange' }); };\n _this.marker.addEventListener('layoutChange', layoutChangeListener);\n _this.label.addEventListener('layoutChange', layoutChangeListener);\n return _this;\n }\n __decorate([\n reactive('layoutChange')\n ], LegendItem.prototype, \"paddingX\", void 0);\n __decorate([\n reactive('layoutChange')\n ], LegendItem.prototype, \"paddingY\", void 0);\n return LegendItem;\n}(Observable));\nexport { LegendItem };\nvar Legend = /** @class */ (function (_super) {\n __extends(Legend, _super);\n function Legend() {\n var _this = _super.call(this) || this;\n _this.id = createId(_this);\n _this.group = new Group();\n _this.itemSelection = Selection.select(_this.group).selectAll();\n _this.oldSize = [0, 0];\n _this.item = new LegendItem();\n _this.data = [];\n _this.enabled = true;\n _this.orientation = LegendOrientation.Vertical;\n _this.position = LegendPosition.Right;\n /**\n * Spacing between the legend and the edge of the chart's element.\n */\n _this.spacing = 20;\n _this._size = [0, 0];\n _this.addPropertyListener('data', _this.onDataChange);\n _this.addPropertyListener('enabled', _this.onEnabledChange);\n _this.addPropertyListener('position', _this.onPositionChange);\n _this.item.marker.addPropertyListener('shape', _this.onMarkerShapeChange, _this);\n _this.addEventListener('change', _this.update);\n _this.item.addEventListener('change', function () { return _this.fireEvent({ type: 'change' }); });\n _this.item.addEventListener('layoutChange', function () { return _this.fireEvent({ type: 'layoutChange' }); });\n return _this;\n }\n Object.defineProperty(Legend.prototype, \"size\", {\n get: function () {\n return this._size;\n },\n enumerable: true,\n configurable: true\n });\n Legend.prototype.onDataChange = function (event) {\n this.group.visible = event.value.length > 0 && this.enabled;\n };\n Legend.prototype.onEnabledChange = function (event) {\n this.group.visible = event.value && this.data.length > 0;\n };\n Legend.prototype.onPositionChange = function (event) {\n switch (event.value) {\n case 'right':\n case 'left':\n this.orientation = LegendOrientation.Vertical;\n break;\n case 'bottom':\n case 'top':\n this.orientation = LegendOrientation.Horizontal;\n break;\n }\n };\n Legend.prototype.onMarkerShapeChange = function () {\n this.itemSelection = this.itemSelection.setData([]);\n this.itemSelection.exit.remove();\n if (this.group.scene) {\n this.group.scene.dirty = false;\n }\n };\n /**\n * The method is given the desired size of the legend, which only serves as a hint.\n * The vertically oriented legend will take as much horizontal space as needed, but will\n * respect the height constraints, and the horizontal legend will take as much vertical\n * space as needed in an attempt not to exceed the given width.\n * After the layout is done, the {@link size} will contain the actual size of the legend.\n * If the actual size is not the same as the previous actual size, the legend will fire\n * the 'layoutChange' event to communicate that another layout is needed, and the above\n * process should be repeated.\n * @param width\n * @param height\n */\n Legend.prototype.performLayout = function (width, height) {\n var item = this.item;\n var marker = item.marker, paddingX = item.paddingX, paddingY = item.paddingY;\n var updateSelection = this.itemSelection.setData(this.data, function (_, datum) {\n var MarkerShape = getMarker(marker.shape || datum.marker.shape);\n return datum.id + '-' + datum.itemId + '-' + MarkerShape.name;\n });\n updateSelection.exit.remove();\n var enterSelection = updateSelection.enter.append(MarkerLabel).each(function (node, datum) {\n var MarkerShape = getMarker(marker.shape || datum.marker.shape);\n node.marker = new MarkerShape();\n });\n var itemSelection = this.itemSelection = updateSelection.merge(enterSelection);\n var itemCount = itemSelection.size;\n // Update properties that affect the size of the legend items and measure them.\n var bboxes = [];\n var itemMarker = this.item.marker;\n var itemLabel = this.item.label;\n var maxCharCount = 25;\n var ellipsis = \"...\";\n itemSelection.each(function (markerLabel, datum) {\n // TODO: measure only when one of these properties or data change (in a separate routine)\n markerLabel.markerSize = itemMarker.size;\n markerLabel.spacing = itemMarker.padding;\n markerLabel.fontStyle = itemLabel.fontStyle;\n markerLabel.fontWeight = itemLabel.fontWeight;\n markerLabel.fontSize = itemLabel.fontSize;\n markerLabel.fontFamily = itemLabel.fontFamily;\n var text = datum.label.text;\n if (text.length > maxCharCount) {\n text = \"\" + text.substring(0, maxCharCount - ellipsis.length) + ellipsis;\n }\n markerLabel.text = text;\n bboxes.push(markerLabel.computeBBox());\n });\n var itemHeight = bboxes.length && bboxes[0].height;\n var rowCount = 0;\n var columnWidth = 0;\n var paddedItemsWidth = 0;\n var paddedItemsHeight = 0;\n width = Math.max(1, width);\n height = Math.max(1, height);\n switch (this.orientation) {\n case LegendOrientation.Horizontal:\n if (!(isFinite(width) && width > 0)) {\n return false;\n }\n rowCount = 0;\n var columnCount = 0;\n // Split legend items into columns until the width is suitable.\n do {\n var itemsWidth = 0;\n columnCount = 0;\n columnWidth = 0;\n rowCount++;\n var i = 0;\n while (i < itemCount) {\n var bbox = bboxes[i];\n if (bbox.width > columnWidth) {\n columnWidth = bbox.width;\n }\n i++;\n if (i % rowCount === 0) {\n itemsWidth += columnWidth;\n columnWidth = 0;\n columnCount++;\n }\n }\n if (i % rowCount !== 0) {\n itemsWidth += columnWidth;\n columnCount++;\n }\n paddedItemsWidth = itemsWidth + (columnCount - 1) * paddingX;\n } while (paddedItemsWidth > width && columnCount > 1);\n paddedItemsHeight = itemHeight * rowCount + (rowCount - 1) * paddingY;\n break;\n case LegendOrientation.Vertical:\n if (!(isFinite(height) && height > 0)) {\n return false;\n }\n rowCount = itemCount * 2;\n // Split legend items into columns until the height is suitable.\n do {\n rowCount = (rowCount >> 1) + (rowCount % 2);\n columnWidth = 0;\n var itemsWidth = 0;\n var itemsHeight = 0;\n var columnCount_1 = 0;\n var i = 0;\n while (i < itemCount) {\n var bbox = bboxes[i];\n if (!columnCount_1) {\n itemsHeight += bbox.height;\n }\n if (bbox.width > columnWidth) {\n columnWidth = bbox.width;\n }\n i++;\n if (i % rowCount === 0) {\n itemsWidth += columnWidth;\n columnWidth = 0;\n columnCount_1++;\n }\n }\n if (i % rowCount !== 0) {\n itemsWidth += columnWidth;\n columnCount_1++;\n }\n paddedItemsWidth = itemsWidth + (columnCount_1 - 1) * paddingX;\n paddedItemsHeight = itemsHeight + (rowCount - 1) * paddingY;\n } while (paddedItemsHeight > height && rowCount > 1);\n break;\n }\n // Top-left corner of the first legend item.\n var startX = (width - paddedItemsWidth) / 2;\n var startY = (height - paddedItemsHeight) / 2;\n var x = 0;\n var y = 0;\n columnWidth = 0;\n // Position legend items using the layout computed above.\n itemSelection.each(function (markerLabel, datum, i) {\n // Round off for pixel grid alignment to work properly.\n markerLabel.translationX = Math.floor(startX + x);\n markerLabel.translationY = Math.floor(startY + y);\n var bbox = bboxes[i];\n if (bbox.width > columnWidth) {\n columnWidth = bbox.width;\n }\n if ((i + 1) % rowCount === 0) {\n x += columnWidth + paddingX;\n y = 0;\n columnWidth = 0;\n }\n else {\n y += bbox.height + paddingY;\n }\n });\n // Update legend item properties that don't affect the layout.\n this.update();\n var size = this._size;\n var oldSize = this.oldSize;\n size[0] = paddedItemsWidth;\n size[1] = paddedItemsHeight;\n if (size[0] !== oldSize[0] || size[1] !== oldSize[1]) {\n oldSize[0] = size[0];\n oldSize[1] = size[1];\n }\n };\n Legend.prototype.update = function () {\n var _this = this;\n this.itemSelection.each(function (markerLabel, datum) {\n var marker = datum.marker;\n markerLabel.markerFill = marker.fill;\n markerLabel.markerStroke = marker.stroke;\n markerLabel.markerStrokeWidth = _this.item.marker.strokeWidth;\n markerLabel.markerFillOpacity = marker.fillOpacity;\n markerLabel.markerStrokeOpacity = marker.strokeOpacity;\n markerLabel.opacity = datum.enabled ? 1 : 0.5;\n markerLabel.color = _this.item.label.color;\n });\n };\n Legend.prototype.getDatumForPoint = function (x, y) {\n var node = this.group.pickNode(x, y);\n if (node && node.parent) {\n return node.parent.datum;\n }\n };\n Legend.className = 'Legend';\n __decorate([\n reactive('layoutChange')\n ], Legend.prototype, \"data\", void 0);\n __decorate([\n reactive('layoutChange')\n ], Legend.prototype, \"enabled\", void 0);\n __decorate([\n reactive('layoutChange')\n ], Legend.prototype, \"orientation\", void 0);\n __decorate([\n reactive('layoutChange')\n ], Legend.prototype, \"position\", void 0);\n __decorate([\n reactive('layoutChange')\n ], Legend.prototype, \"spacing\", void 0);\n return Legend;\n}(Observable));\nexport { Legend };\n","var __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar SizeMonitor = /** @class */ (function () {\n function SizeMonitor() {\n }\n SizeMonitor.init = function () {\n var _this = this;\n var NativeResizeObserver = window.ResizeObserver;\n if (NativeResizeObserver) {\n this.resizeObserver = new NativeResizeObserver(function (entries) {\n var e_1, _a;\n try {\n for (var entries_1 = __values(entries), entries_1_1 = entries_1.next(); !entries_1_1.done; entries_1_1 = entries_1.next()) {\n var entry = entries_1_1.value;\n var _b = entry.contentRect, width = _b.width, height = _b.height;\n _this.checkSize(_this.elements.get(entry.target), entry.target, width, height);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (entries_1_1 && !entries_1_1.done && (_a = entries_1.return)) _a.call(entries_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n });\n }\n else { // polyfill (more reliable even in browsers that support ResizeObserver)\n var step = function () {\n _this.elements.forEach(function (entry, element) {\n var width = element.clientWidth ? element.clientWidth : 0;\n var height = element.clientHeight ? element.clientHeight : 0;\n _this.checkSize(entry, element, width, height);\n });\n };\n window.setInterval(step, 100);\n }\n this.ready = true;\n };\n SizeMonitor.checkSize = function (entry, element, width, height) {\n if (entry) {\n if (!entry.size || width !== entry.size.width || height !== entry.size.height) {\n entry.size = { width: width, height: height };\n entry.cb(entry.size, element);\n }\n }\n };\n // Only a single callback is supported.\n SizeMonitor.observe = function (element, cb) {\n if (!this.ready) {\n this.init();\n }\n this.unobserve(element);\n if (this.resizeObserver) {\n this.resizeObserver.observe(element);\n }\n this.elements.set(element, { cb: cb });\n };\n SizeMonitor.unobserve = function (element) {\n if (this.resizeObserver) {\n this.resizeObserver.unobserve(element);\n }\n this.elements.delete(element);\n };\n SizeMonitor.elements = new Map();\n SizeMonitor.ready = false;\n return SizeMonitor;\n}());\nexport { SizeMonitor };\n","function circleRectOverlap(cx, cy, r, x, y, w, h) {\n // Find closest horizontal and vertical edges.\n var edgeX = cx < x ? x : cx > x + w ? x + w : cx;\n var edgeY = cy < y ? y : cy > y + h ? y + h : cy;\n // Find distance to closest edges.\n var dx = cx - edgeX;\n var dy = cy - edgeY;\n var d = Math.sqrt((dx * dx) + (dy * dy));\n return d <= r;\n}\nfunction rectRectOverlap(x1, y1, w1, h1, x2, y2, w2, h2) {\n var xOverlap = (x1 + w1) > x2 && x1 < (x2 + w2);\n var yOverlap = (y1 + h1) > y2 && y1 < (y2 + h2);\n return xOverlap && yOverlap;\n}\nfunction rectContainsRect(r1x, r1y, r1w, r1h, r2x, r2y, r2w, r2h) {\n return (r2x + r2w) < (r1x + r1w) && (r2x) > (r1x) && (r2y) > (r1y) && (r2y + r2h) < (r1y + r1h);\n}\n/**\n * @param data Points and labels for one or more series. The order of series determines label placement precedence.\n * @param bounds Bounds to fit the labels into. If a label can't be fully contained, it doesn't fit.\n * @returns Placed labels for the given series (in the given order).\n */\nexport function placeLabels(data, bounds, padding) {\n if (padding === void 0) { padding = 5; }\n var result = [];\n data = data.map(function (d) { return d.slice().sort(function (a, b) { return b.size - a.size; }); });\n for (var j = 0; j < data.length; j++) {\n var labels = result[j] = [];\n var datum = data[j];\n if (!(datum && datum.length && datum[0].label)) {\n continue;\n }\n var _loop_1 = function (i, ln) {\n var d = datum[i];\n var l = d.label;\n var r = d.size * 0.5;\n var x = d.point.x - l.width * 0.5;\n var y = d.point.y - r - l.height - padding;\n var width = l.width, height = l.height;\n var withinBounds = !bounds || rectContainsRect(bounds.x, bounds.y, bounds.width, bounds.height, x, y, width, height);\n if (!withinBounds) {\n return \"continue\";\n }\n var overlapPoints = data.some(function (datum) { return datum.some(function (d) { return circleRectOverlap(d.point.x, d.point.y, d.size * 0.5, x, y, width, height); }); });\n if (overlapPoints) {\n return \"continue\";\n }\n var overlapLabels = result.some(function (labels) { return labels.some(function (l) { return rectRectOverlap(l.x, l.y, l.width, l.height, x, y, width, height); }); });\n if (overlapLabels) {\n return \"continue\";\n }\n labels.push({\n index: i,\n text: l.text,\n x: x,\n y: y,\n width: width,\n height: height\n });\n };\n for (var i = 0, ln = datum.length; i < ln; i++) {\n _loop_1(i, ln);\n }\n }\n return result;\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __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};\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nimport { Scene } from \"../scene/scene\";\nimport { Group } from \"../scene/group\";\nimport { Padding } from \"../util/padding\";\nimport { Shape } from \"../scene/shape/shape\";\nimport { Rect } from \"../scene/shape/rect\";\nimport { Legend } from \"./legend\";\nimport { BBox } from \"../scene/bbox\";\nimport { find } from \"../util/array\";\nimport { SizeMonitor } from \"../util/sizeMonitor\";\nimport { Observable, reactive } from \"../util/observable\";\nimport { createId } from \"../util/id\";\nimport { placeLabels } from \"../util/labelPlacement\";\nvar defaultTooltipCss = \"\\n.ag-chart-tooltip {\\n display: table;\\n position: absolute;\\n user-select: none;\\n pointer-events: none;\\n white-space: nowrap;\\n z-index: 99999;\\n font: 12px Verdana, sans-serif;\\n color: black;\\n background: rgb(244, 244, 244);\\n border-radius: 5px;\\n box-shadow: 0 0 1px rgba(3, 3, 3, 0.7), 0.5vh 0.5vh 1vh rgba(3, 3, 3, 0.25);\\n}\\n\\n.ag-chart-tooltip-hidden {\\n top: -10000px !important;\\n}\\n\\n.ag-chart-tooltip-title {\\n font-weight: bold;\\n padding: 7px;\\n border-top-left-radius: 5px;\\n border-top-right-radius: 5px;\\n color: white;\\n background-color: #888888;\\n border-top-left-radius: 5px;\\n border-top-right-radius: 5px;\\n}\\n\\n.ag-chart-tooltip-content {\\n padding: 7px;\\n line-height: 1.7em;\\n border-bottom-left-radius: 5px;\\n border-bottom-right-radius: 5px;\\n overflow: hidden;\\n}\\n\\n.ag-chart-tooltip-content:empty {\\n padding: 0;\\n height: 7px;\\n}\\n\\n.ag-chart-tooltip-arrow::before {\\n content: \\\"\\\";\\n\\n position: absolute;\\n top: 100%;\\n left: 50%;\\n transform: translateX(-50%);\\n\\n border: 6px solid #989898;\\n\\n border-left-color: transparent;\\n border-right-color: transparent;\\n border-top-color: #989898;\\n border-bottom-color: transparent;\\n\\n width: 0;\\n height: 0;\\n\\n margin: 0 auto;\\n}\\n\\n.ag-chart-tooltip-arrow::after {\\n content: \\\"\\\";\\n\\n position: absolute;\\n top: 100%;\\n left: 50%;\\n transform: translateX(-50%);\\n\\n border: 5px solid black;\\n\\n border-left-color: transparent;\\n border-right-color: transparent;\\n border-top-color: rgb(244, 244, 244);\\n border-bottom-color: transparent;\\n\\n width: 0;\\n height: 0;\\n\\n margin: 0 auto;\\n}\\n\\n.ag-chart-wrapper {\\n box-sizing: border-box;\\n overflow: hidden;\\n}\\n\";\nexport function toTooltipHtml(input, defaults) {\n if (typeof input === 'string') {\n return input;\n }\n defaults = defaults || {};\n var _a = input.content, content = _a === void 0 ? defaults.content || '' : _a, _b = input.title, title = _b === void 0 ? defaults.title || undefined : _b, _c = input.color, color = _c === void 0 ? defaults.color || 'white' : _c, _d = input.backgroundColor, backgroundColor = _d === void 0 ? defaults.backgroundColor || '#888' : _d;\n var titleHtml = title ? \"
    \" + title + \"
    \" : '';\n return titleHtml + \"
    \" + content + \"
    \";\n}\nvar ChartTooltip = /** @class */ (function (_super) {\n __extends(ChartTooltip, _super);\n function ChartTooltip(chart, document) {\n var _this = _super.call(this) || this;\n _this.enabled = true;\n _this.class = Chart.defaultTooltipClass;\n _this.delay = 0;\n /**\n * If `true`, the tooltip will be shown for the marker closest to the mouse cursor.\n * Only has effect on series with markers.\n */\n _this.tracking = true;\n _this.showTimeout = 0;\n _this.constrained = false;\n _this.chart = chart;\n _this.class = '';\n var tooltipRoot = document.body;\n var element = document.createElement('div');\n _this.element = tooltipRoot.appendChild(element);\n // Detect when the chart becomes invisible and hide the tooltip as well.\n if (window.IntersectionObserver) {\n var target_1 = _this.chart.scene.canvas.element;\n var observer = new IntersectionObserver(function (entries) {\n var e_1, _a;\n try {\n for (var entries_1 = __values(entries), entries_1_1 = entries_1.next(); !entries_1_1.done; entries_1_1 = entries_1.next()) {\n var entry = entries_1_1.value;\n if (entry.target === target_1 && entry.intersectionRatio === 0) {\n _this.toggle(false);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (entries_1_1 && !entries_1_1.done && (_a = entries_1.return)) _a.call(entries_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }, { root: tooltipRoot });\n observer.observe(target_1);\n _this.observer = observer;\n }\n return _this;\n }\n ChartTooltip.prototype.destroy = function () {\n var parentNode = this.element.parentNode;\n if (parentNode) {\n parentNode.removeChild(this.element);\n }\n if (this.observer) {\n this.observer.unobserve(this.chart.scene.canvas.element);\n }\n };\n ChartTooltip.prototype.isVisible = function () {\n var element = this.element;\n if (element.classList) { // if not IE11\n return !element.classList.contains(Chart.defaultTooltipClass + '-hidden');\n }\n // IE11 part.\n var classes = element.getAttribute('class');\n if (classes) {\n return classes.split(' ').indexOf(Chart.defaultTooltipClass + '-hidden') < 0;\n }\n return false;\n };\n ChartTooltip.prototype.updateClass = function (visible, constrained) {\n var classList = [Chart.defaultTooltipClass, this.class];\n if (visible !== true) {\n classList.push(Chart.defaultTooltipClass + \"-hidden\");\n }\n if (constrained !== true) {\n classList.push(Chart.defaultTooltipClass + \"-arrow\");\n }\n this.element.setAttribute('class', classList.join(' '));\n };\n /**\n * Shows tooltip at the given event's coordinates.\n * If the `html` parameter is missing, moves the existing tooltip to the new position.\n */\n ChartTooltip.prototype.show = function (meta, html, instantly) {\n var _this = this;\n if (instantly === void 0) { instantly = false; }\n var el = this.element;\n if (html !== undefined) {\n el.innerHTML = html;\n }\n else if (!el.innerHTML) {\n return;\n }\n var left = meta.pageX - el.clientWidth / 2;\n var top = meta.pageY - el.clientHeight - 8;\n this.constrained = false;\n if (this.chart.container) {\n var tooltipRect = el.getBoundingClientRect();\n var minLeft = 0;\n var maxLeft = window.innerWidth - tooltipRect.width - 1;\n if (left < minLeft) {\n left = minLeft;\n this.updateClass(true, this.constrained = true);\n }\n else if (left > maxLeft) {\n left = maxLeft;\n this.updateClass(true, this.constrained = true);\n }\n if (top < window.pageYOffset) {\n top = meta.pageY + 20;\n this.updateClass(true, this.constrained = true);\n }\n }\n el.style.left = Math.round(left) + \"px\";\n el.style.top = Math.round(top) + \"px\";\n if (this.delay > 0 && !instantly) {\n this.toggle(false);\n this.showTimeout = window.setTimeout(function () {\n _this.toggle(true);\n }, this.delay);\n return;\n }\n this.toggle(true);\n };\n ChartTooltip.prototype.toggle = function (visible) {\n if (!visible) {\n window.clearTimeout(this.showTimeout);\n if (this.chart.lastPick && !this.delay) {\n this.chart.dehighlightDatum();\n this.chart.lastPick = undefined;\n }\n }\n this.updateClass(visible, this.constrained);\n };\n __decorate([\n reactive()\n ], ChartTooltip.prototype, \"enabled\", void 0);\n __decorate([\n reactive()\n ], ChartTooltip.prototype, \"class\", void 0);\n __decorate([\n reactive()\n ], ChartTooltip.prototype, \"delay\", void 0);\n __decorate([\n reactive()\n ], ChartTooltip.prototype, \"tracking\", void 0);\n return ChartTooltip;\n}(Observable));\nexport { ChartTooltip };\nvar Chart = /** @class */ (function (_super) {\n __extends(Chart, _super);\n function Chart(document) {\n if (document === void 0) { document = window.document; }\n var _this = _super.call(this) || this;\n _this.id = createId(_this);\n _this.background = new Rect();\n _this.legend = new Legend();\n _this.legendAutoPadding = new Padding();\n _this.captionAutoPadding = 0; // top padding only\n _this._container = undefined;\n _this._data = [];\n _this._autoSize = false;\n _this.padding = new Padding(20);\n _this._axes = [];\n _this._series = [];\n _this._axesChanged = false;\n _this._seriesChanged = false;\n _this.layoutCallbackId = 0;\n _this._performLayout = function () {\n _this.layoutCallbackId = 0;\n _this.background.width = _this.width;\n _this.background.height = _this.height;\n _this.performLayout();\n if (!_this.layoutPending) {\n _this.fireEvent({ type: 'layoutDone' });\n }\n };\n _this.dataCallbackId = 0;\n _this.nodeData = new Map();\n _this.updateCallbackId = 0;\n _this.legendBBox = new BBox(0, 0, 0, 0);\n _this._onMouseDown = _this.onMouseDown.bind(_this);\n _this._onMouseMove = _this.onMouseMove.bind(_this);\n _this._onMouseUp = _this.onMouseUp.bind(_this);\n _this._onMouseOut = _this.onMouseOut.bind(_this);\n _this._onClick = _this.onClick.bind(_this);\n _this.pointerInsideLegend = false;\n var root = new Group();\n var background = _this.background;\n background.fill = 'white';\n root.appendChild(background);\n var element = _this._element = document.createElement('div');\n element.setAttribute('class', 'ag-chart-wrapper');\n var scene = new Scene(document);\n _this.scene = scene;\n scene.root = root;\n scene.container = element;\n _this.autoSize = true;\n _this.padding.addEventListener('layoutChange', _this.scheduleLayout, _this);\n var legend = _this.legend;\n legend.addEventListener('layoutChange', _this.scheduleLayout, _this);\n legend.item.label.addPropertyListener('formatter', _this.updateLegend, _this);\n legend.addPropertyListener('position', _this.onLegendPositionChange, _this);\n _this.tooltip = new ChartTooltip(_this, document);\n _this.tooltip.addPropertyListener('class', function () { return _this.tooltip.toggle(); });\n if (Chart.tooltipDocuments.indexOf(document) < 0) {\n var styleElement = document.createElement('style');\n styleElement.innerHTML = defaultTooltipCss;\n // Make sure the default tooltip style goes before other styles so it can be overridden.\n document.head.insertBefore(styleElement, document.head.querySelector('style'));\n Chart.tooltipDocuments.push(document);\n }\n _this.setupDomListeners(scene.canvas.element);\n _this.addPropertyListener('title', _this.onCaptionChange);\n _this.addPropertyListener('subtitle', _this.onCaptionChange);\n _this.addEventListener('layoutChange', _this.scheduleLayout);\n return _this;\n }\n Object.defineProperty(Chart.prototype, \"container\", {\n get: function () {\n return this._container;\n },\n set: function (value) {\n if (this._container !== value) {\n var parentNode = this.element.parentNode;\n if (parentNode != null) {\n parentNode.removeChild(this.element);\n }\n if (value) {\n value.appendChild(this.element);\n }\n this._container = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Chart.prototype, \"data\", {\n get: function () {\n return this._data;\n },\n set: function (data) {\n this._data = data;\n this.series.forEach(function (series) { return series.data = data; });\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Chart.prototype, \"width\", {\n get: function () {\n return this.scene.width;\n },\n set: function (value) {\n this.autoSize = false;\n if (this.width !== value) {\n this.scene.resize(value, this.height);\n this.fireEvent({ type: 'layoutChange' });\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Chart.prototype, \"height\", {\n get: function () {\n return this.scene.height;\n },\n set: function (value) {\n this.autoSize = false;\n if (this.height !== value) {\n this.scene.resize(this.width, value);\n this.fireEvent({ type: 'layoutChange' });\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Chart.prototype, \"autoSize\", {\n get: function () {\n return this._autoSize;\n },\n set: function (value) {\n if (this._autoSize !== value) {\n this._autoSize = value;\n var style = this.element.style;\n if (value) {\n var chart_1 = this; // capture `this` for IE11\n SizeMonitor.observe(this.element, function (size) {\n if (size.width !== chart_1.width || size.height !== chart_1.height) {\n chart_1.scene.resize(size.width, size.height);\n chart_1.fireEvent({ type: 'layoutChange' });\n }\n });\n style.display = 'block';\n style.width = '100%';\n style.height = '100%';\n }\n else {\n SizeMonitor.unobserve(this.element);\n style.display = 'inline-block';\n style.width = 'auto';\n style.height = 'auto';\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Chart.prototype.download = function (fileName) {\n this.scene.download(fileName);\n };\n Chart.prototype.destroy = function () {\n this.tooltip.destroy();\n SizeMonitor.unobserve(this.element);\n this.container = undefined;\n this.cleanupDomListeners(this.scene.canvas.element);\n this.scene.container = undefined;\n };\n Chart.prototype.onLegendPositionChange = function () {\n this.legendAutoPadding.clear();\n this.layoutPending = true;\n };\n Chart.prototype.onCaptionChange = function (event) {\n var value = event.value, oldValue = event.oldValue;\n if (oldValue) {\n oldValue.removeEventListener('change', this.scheduleLayout, this);\n this.scene.root.removeChild(oldValue.node);\n }\n if (value) {\n value.addEventListener('change', this.scheduleLayout, this);\n this.scene.root.appendChild(value.node);\n }\n };\n Object.defineProperty(Chart.prototype, \"element\", {\n get: function () {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Chart.prototype, \"axes\", {\n get: function () {\n return this._axes;\n },\n set: function (values) {\n var _this = this;\n this._axes.forEach(function (axis) { return _this.detachAxis(axis); });\n // make linked axes go after the regular ones (simulates stable sort by `linkedTo` property)\n this._axes = values.filter(function (a) { return !a.linkedTo; }).concat(values.filter(function (a) { return a.linkedTo; }));\n this._axes.forEach(function (axis) { return _this.attachAxis(axis); });\n this.axesChanged = true;\n },\n enumerable: true,\n configurable: true\n });\n Chart.prototype.attachAxis = function (axis) {\n this.scene.root.insertBefore(axis.group, this.seriesRoot);\n };\n Chart.prototype.detachAxis = function (axis) {\n this.scene.root.removeChild(axis.group);\n };\n Object.defineProperty(Chart.prototype, \"series\", {\n get: function () {\n return this._series;\n },\n set: function (values) {\n var _this = this;\n this.removeAllSeries();\n values.forEach(function (series) { return _this.addSeries(series); });\n },\n enumerable: true,\n configurable: true\n });\n Chart.prototype.scheduleLayout = function () {\n this.layoutPending = true;\n };\n Chart.prototype.scheduleData = function () {\n // To prevent the chart from thinking the cursor is over the same node\n // after a change to data (the nodes are reused on data changes).\n this.dehighlightDatum();\n this.dataPending = true;\n };\n Chart.prototype.addSeries = function (series, before) {\n var _a = this, allSeries = _a.series, seriesRoot = _a.seriesRoot;\n var canAdd = allSeries.indexOf(series) < 0;\n if (canAdd) {\n var beforeIndex = before ? allSeries.indexOf(before) : -1;\n if (beforeIndex >= 0) {\n allSeries.splice(beforeIndex, 0, series);\n seriesRoot.insertBefore(series.group, before.group);\n }\n else {\n allSeries.push(series);\n seriesRoot.append(series.group);\n }\n this.initSeries(series);\n this.seriesChanged = true;\n this.axesChanged = true;\n return true;\n }\n return false;\n };\n Chart.prototype.initSeries = function (series) {\n series.chart = this;\n if (!series.data) {\n series.data = this.data;\n }\n series.addEventListener('layoutChange', this.scheduleLayout, this);\n series.addEventListener('dataChange', this.scheduleData, this);\n series.addEventListener('legendChange', this.updateLegend, this);\n series.addEventListener('nodeClick', this.onSeriesNodeClick, this);\n };\n Chart.prototype.freeSeries = function (series) {\n series.chart = undefined;\n series.removeEventListener('layoutChange', this.scheduleLayout, this);\n series.removeEventListener('dataChange', this.scheduleData, this);\n series.removeEventListener('legendChange', this.updateLegend, this);\n series.removeEventListener('nodeClick', this.onSeriesNodeClick, this);\n };\n Chart.prototype.addSeriesAfter = function (series, after) {\n var _a = this, allSeries = _a.series, seriesRoot = _a.seriesRoot;\n var canAdd = allSeries.indexOf(series) < 0;\n if (canAdd) {\n var afterIndex = after ? this.series.indexOf(after) : -1;\n if (afterIndex >= 0) {\n if (afterIndex + 1 < allSeries.length) {\n seriesRoot.insertBefore(series.group, allSeries[afterIndex + 1].group);\n }\n else {\n seriesRoot.append(series.group);\n }\n this.initSeries(series);\n allSeries.splice(afterIndex + 1, 0, series);\n }\n else {\n if (allSeries.length > 0) {\n seriesRoot.insertBefore(series.group, allSeries[0].group);\n }\n else {\n seriesRoot.append(series.group);\n }\n this.initSeries(series);\n allSeries.unshift(series);\n }\n this.seriesChanged = true;\n this.axesChanged = true;\n }\n return false;\n };\n Chart.prototype.removeSeries = function (series) {\n var index = this.series.indexOf(series);\n if (index >= 0) {\n this.series.splice(index, 1);\n this.freeSeries(series);\n this.seriesRoot.removeChild(series.group);\n this.seriesChanged = true;\n return true;\n }\n return false;\n };\n Chart.prototype.removeAllSeries = function () {\n var _this = this;\n this.series.forEach(function (series) {\n _this.freeSeries(series);\n _this.seriesRoot.removeChild(series.group);\n });\n this._series = []; // using `_series` instead of `series` to prevent infinite recursion\n this.seriesChanged = true;\n };\n Chart.prototype.assignSeriesToAxes = function () {\n var _this = this;\n this.axes.forEach(function (axis) {\n var axisName = axis.direction + 'Axis';\n var boundSeries = [];\n _this.series.forEach(function (series) {\n if (series[axisName] === axis) {\n boundSeries.push(series);\n }\n });\n axis.boundSeries = boundSeries;\n });\n this.seriesChanged = false;\n };\n Chart.prototype.assignAxesToSeries = function (force) {\n var _this = this;\n if (force === void 0) { force = false; }\n // This method has to run before `assignSeriesToAxes`.\n var directionToAxesMap = {};\n this.axes.forEach(function (axis) {\n var direction = axis.direction;\n var directionAxes = directionToAxesMap[direction] || (directionToAxesMap[direction] = []);\n directionAxes.push(axis);\n });\n this.series.forEach(function (series) {\n series.directions.forEach(function (direction) {\n var axisName = direction + 'Axis';\n if (!series[axisName] || force) {\n var directionAxes = directionToAxesMap[direction];\n if (directionAxes) {\n var axis = _this.findMatchingAxis(directionAxes, series.getKeys(direction));\n if (axis) {\n series[axisName] = axis;\n }\n }\n }\n });\n });\n this.axesChanged = false;\n };\n Chart.prototype.findMatchingAxis = function (directionAxes, directionKeys) {\n for (var i = 0; i < directionAxes.length; i++) {\n var axis = directionAxes[i];\n var axisKeys = axis.keys;\n if (!axisKeys.length) {\n return axis;\n }\n else if (directionKeys) {\n for (var j = 0; j < directionKeys.length; j++) {\n if (axisKeys.indexOf(directionKeys[j]) >= 0) {\n return axis;\n }\n }\n }\n }\n };\n Object.defineProperty(Chart.prototype, \"axesChanged\", {\n get: function () {\n return this._axesChanged;\n },\n set: function (value) {\n this._axesChanged = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Chart.prototype, \"seriesChanged\", {\n get: function () {\n return this._seriesChanged;\n },\n set: function (value) {\n this._seriesChanged = value;\n if (value) {\n this.dataPending = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Chart.prototype, \"layoutPending\", {\n /**\n * Only `true` while we are waiting for the layout to start.\n * This will be `false` if the layout has already started and is ongoing.\n */\n get: function () {\n return !!this.layoutCallbackId;\n },\n set: function (value) {\n if (value) {\n if (!(this.layoutCallbackId || this.dataPending)) {\n this.layoutCallbackId = requestAnimationFrame(this._performLayout);\n this.series.forEach(function (s) { return s.nodeDataPending = true; });\n }\n }\n else if (this.layoutCallbackId) {\n cancelAnimationFrame(this.layoutCallbackId);\n this.layoutCallbackId = 0;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Chart.prototype, \"dataPending\", {\n get: function () {\n return !!this.dataCallbackId;\n },\n set: function (value) {\n var _this = this;\n if (this.dataCallbackId) {\n clearTimeout(this.dataCallbackId);\n this.dataCallbackId = 0;\n }\n if (value) {\n this.dataCallbackId = window.setTimeout(function () {\n _this.dataPending = false;\n _this.processData();\n }, 0);\n }\n },\n enumerable: true,\n configurable: true\n });\n Chart.prototype.processData = function () {\n this.layoutPending = false;\n if (this.axesChanged) {\n this.assignAxesToSeries(true);\n this.assignSeriesToAxes();\n }\n if (this.seriesChanged) {\n this.assignSeriesToAxes();\n }\n this.series.forEach(function (s) { return s.processData(); });\n this.updateLegend(); // sets legend data which schedules a layout\n this.layoutPending = true;\n };\n Chart.prototype.createNodeData = function () {\n var _this = this;\n this.nodeData.clear();\n this.series.forEach(function (s) {\n var data = s.visible ? s.createNodeData() : [];\n _this.nodeData.set(s, data);\n });\n };\n Chart.prototype.placeLabels = function () {\n var series = [];\n var data = [];\n this.nodeData.forEach(function (d, s) {\n if (s.visible && s.label.enabled) {\n series.push(s);\n data.push(s.getLabelData());\n }\n });\n var seriesRect = this.seriesRect;\n var labels = seriesRect\n ? placeLabels(data, { x: 0, y: 0, width: seriesRect.width, height: seriesRect.height })\n : [];\n return new Map(labels.map(function (l, i) { return [series[i], l]; }));\n };\n Chart.prototype.updateLegend = function () {\n var legendData = [];\n this.series.filter(function (s) { return s.showInLegend; }).forEach(function (series) { return series.listSeriesItems(legendData); });\n var formatter = this.legend.item.label.formatter;\n if (formatter) {\n legendData.forEach(function (datum) { return datum.label.text = formatter({\n id: datum.id,\n itemId: datum.itemId,\n value: datum.label.text\n }); });\n }\n this.legend.data = legendData;\n };\n Object.defineProperty(Chart.prototype, \"updatePending\", {\n get: function () {\n return !!this.updateCallbackId;\n },\n set: function (value) {\n var _this = this;\n if (this.updateCallbackId) {\n clearTimeout(this.updateCallbackId);\n this.updateCallbackId = 0;\n }\n if (value && !this.layoutPending) {\n this.updateCallbackId = window.setTimeout(function () {\n _this.update();\n }, 0);\n }\n },\n enumerable: true,\n configurable: true\n });\n Chart.prototype.update = function () {\n this.updatePending = false;\n this.series.forEach(function (series) {\n if (series.updatePending) {\n series.update();\n }\n });\n };\n Chart.prototype.positionCaptions = function () {\n var _a = this, title = _a.title, subtitle = _a.subtitle;\n var titleVisible = false;\n var subtitleVisible = false;\n var spacing = 10;\n var paddingTop = spacing;\n if (title && title.enabled) {\n title.node.x = this.width / 2;\n title.node.y = paddingTop;\n titleVisible = true;\n var titleBBox = title.node.computeBBox(); // make sure to set node's x/y, then computeBBox\n if (titleBBox) {\n paddingTop = titleBBox.y + titleBBox.height;\n }\n if (subtitle && subtitle.enabled) {\n subtitle.node.x = this.width / 2;\n subtitle.node.y = paddingTop + spacing;\n subtitleVisible = true;\n var subtitleBBox = subtitle.node.computeBBox();\n if (subtitleBBox) {\n paddingTop = subtitleBBox.y + subtitleBBox.height;\n }\n }\n }\n if (title) {\n title.node.visible = titleVisible;\n }\n if (subtitle) {\n subtitle.node.visible = subtitleVisible;\n }\n this.captionAutoPadding = Math.floor(paddingTop);\n };\n Chart.prototype.positionLegend = function () {\n if (!this.legend.enabled || !this.legend.data.length) {\n return;\n }\n var _a = this, legend = _a.legend, captionAutoPadding = _a.captionAutoPadding, legendAutoPadding = _a.legendAutoPadding;\n var width = this.width;\n var height = this.height - captionAutoPadding;\n var legendGroup = legend.group;\n var legendSpacing = legend.spacing;\n var translationX = 0;\n var translationY = 0;\n var legendBBox;\n switch (legend.position) {\n case 'bottom':\n legend.performLayout(width - legendSpacing * 2, 0);\n legendBBox = legendGroup.computeBBox();\n legendGroup.visible = legendBBox.height < Math.floor((height * 0.5)); // Remove legend if it takes up more than 50% of the chart height.\n if (legendGroup.visible) {\n translationX = (width - legendBBox.width) / 2 - legendBBox.x;\n translationY = captionAutoPadding + height - legendBBox.height - legendBBox.y - legendSpacing;\n legendAutoPadding.bottom = legendBBox.height;\n }\n else {\n legendAutoPadding.bottom = 0;\n }\n break;\n case 'top':\n legend.performLayout(width - legendSpacing * 2, 0);\n legendBBox = legendGroup.computeBBox();\n legendGroup.visible = legendBBox.height < Math.floor((height * 0.5));\n if (legendGroup.visible) {\n translationX = (width - legendBBox.width) / 2 - legendBBox.x;\n translationY = captionAutoPadding + legendSpacing - legendBBox.y;\n legendAutoPadding.top = legendBBox.height;\n }\n else {\n legendAutoPadding.top = 0;\n }\n break;\n case 'left':\n legend.performLayout(0, height - legendSpacing * 2);\n legendBBox = legendGroup.computeBBox();\n legendGroup.visible = legendBBox.width < Math.floor((width * 0.5)); // Remove legend if it takes up more than 50% of the chart width.\n if (legendGroup.visible) {\n translationX = legendSpacing - legendBBox.x;\n translationY = captionAutoPadding + (height - legendBBox.height) / 2 - legendBBox.y;\n legendAutoPadding.left = legendBBox.width;\n }\n else {\n legendAutoPadding.left = 0;\n }\n break;\n default: // case 'right':\n legend.performLayout(0, height - legendSpacing * 2);\n legendBBox = legendGroup.computeBBox();\n legendGroup.visible = legendBBox.width < Math.floor((width * 0.5));\n if (legendGroup.visible) {\n translationX = width - legendBBox.width - legendBBox.x - legendSpacing;\n translationY = captionAutoPadding + (height - legendBBox.height) / 2 - legendBBox.y;\n legendAutoPadding.right = legendBBox.width;\n }\n else {\n legendAutoPadding.right = 0;\n }\n break;\n }\n if (legendGroup.visible) {\n // Round off for pixel grid alignment to work properly.\n legendGroup.translationX = Math.floor(translationX + legendGroup.translationX);\n legendGroup.translationY = Math.floor(translationY + legendGroup.translationY);\n this.legendBBox = legendGroup.computeBBox();\n }\n };\n Chart.prototype.setupDomListeners = function (chartElement) {\n chartElement.addEventListener('mousedown', this._onMouseDown);\n chartElement.addEventListener('mousemove', this._onMouseMove);\n chartElement.addEventListener('mouseup', this._onMouseUp);\n chartElement.addEventListener('mouseout', this._onMouseOut);\n chartElement.addEventListener('click', this._onClick);\n };\n Chart.prototype.cleanupDomListeners = function (chartElement) {\n chartElement.removeEventListener('mousedown', this._onMouseDown);\n chartElement.removeEventListener('mousemove', this._onMouseMove);\n chartElement.removeEventListener('mouseup', this._onMouseUp);\n chartElement.removeEventListener('mouseout', this._onMouseOut);\n chartElement.removeEventListener('click', this._onClick);\n };\n Chart.prototype.getSeriesRect = function () {\n return this.seriesRect;\n };\n // x/y are local canvas coordinates in CSS pixels, not actual pixels\n Chart.prototype.pickSeriesNode = function (x, y) {\n if (!(this.seriesRect && this.seriesRect.containsPoint(x, y))) {\n return undefined;\n }\n var allSeries = this.series;\n var node = undefined;\n for (var i = allSeries.length - 1; i >= 0; i--) {\n var series = allSeries[i];\n if (!series.visible) {\n continue;\n }\n node = series.pickGroup.pickNode(x, y);\n if (node) {\n return {\n series: series,\n node: node\n };\n }\n }\n };\n // Provided x/y are in canvas coordinates.\n Chart.prototype.pickClosestSeriesNodeDatum = function (x, y) {\n if (!this.seriesRect || !this.seriesRect.containsPoint(x, y)) {\n return undefined;\n }\n var allSeries = this.series;\n function getDistance(p1, p2) {\n return Math.sqrt(Math.pow((p1.x - p2.x), 2) + Math.pow((p1.y - p2.y), 2));\n }\n var minDistance = Infinity;\n var closestDatum;\n var _loop_1 = function (i) {\n var series = allSeries[i];\n if (!series.visible) {\n return \"continue\";\n }\n var hitPoint = series.group.transformPoint(x, y);\n series.getNodeData().forEach(function (datum) {\n var _a, _b;\n if (!datum.point) {\n return;\n }\n // Ignore off-screen points when finding the closest series node datum in tracking mode.\n var xAxis = series.xAxis, yAxis = series.yAxis;\n var isInRange = ((_a = xAxis) === null || _a === void 0 ? void 0 : _a.inRange(datum.point.x)) && ((_b = yAxis) === null || _b === void 0 ? void 0 : _b.inRange(datum.point.y));\n if (!isInRange) {\n return;\n }\n var distance = getDistance(hitPoint, datum.point);\n if (distance < minDistance) {\n minDistance = distance;\n closestDatum = datum;\n }\n });\n };\n for (var i = allSeries.length - 1; i >= 0; i--) {\n _loop_1(i);\n }\n return closestDatum;\n };\n Chart.prototype.onMouseMove = function (event) {\n this.handleLegendMouseMove(event);\n if (this.tooltip.enabled) {\n if (this.tooltip.delay > 0) {\n this.tooltip.toggle(false);\n }\n this.handleTooltip(event);\n }\n };\n Chart.prototype.handleTooltip = function (event) {\n var _a = this, lastPick = _a.lastPick, tooltipTracking = _a.tooltip.tracking;\n var offsetX = event.offsetX, offsetY = event.offsetY;\n var pick = this.pickSeriesNode(offsetX, offsetY);\n var nodeDatum;\n if (pick && pick.node instanceof Shape) {\n var node = pick.node;\n nodeDatum = node.datum;\n if (lastPick && lastPick.datum === nodeDatum) {\n lastPick.node = node;\n lastPick.event = event;\n }\n // Marker nodes will have the `point` info in their datums.\n // Highlight if not a marker node or, if not in the tracking mode, highlight markers too.\n if ((!node.datum.point || !tooltipTracking)) {\n if (!lastPick // cursor moved from empty space to a node\n || lastPick.node !== node) { // cursor moved from one node to another\n this.onSeriesDatumPick(event, node.datum, node, event);\n }\n else if (pick.series.tooltip.enabled) { // cursor moved within the same node\n this.tooltip.show(event);\n }\n // A non-marker node (takes precedence over marker nodes) was highlighted.\n // Or we are not in the tracking mode.\n // Either way, we are done at this point.\n return;\n }\n }\n var hideTooltip = false;\n // In tracking mode a tooltip is shown for the closest rendered datum.\n // This makes it easier to show tooltips when markers are small and/or plentiful\n // and also gives the ability to show tooltips even when the series were configured\n // to not render markers.\n if (tooltipTracking) {\n var closestDatum = this.pickClosestSeriesNodeDatum(offsetX, offsetY);\n if (closestDatum && closestDatum.point) {\n var _b = closestDatum.point, x = _b.x, y = _b.y;\n var canvas = this.scene.canvas;\n var point = closestDatum.series.group.inverseTransformPoint(x, y);\n var canvasRect = canvas.element.getBoundingClientRect();\n this.onSeriesDatumPick({\n pageX: Math.round(canvasRect.left + window.pageXOffset + point.x),\n pageY: Math.round(canvasRect.top + window.pageYOffset + point.y)\n }, closestDatum, nodeDatum === closestDatum && pick ? pick.node : undefined, event);\n }\n else {\n hideTooltip = true;\n }\n }\n if (lastPick && (hideTooltip || !tooltipTracking)) {\n // Cursor moved from a non-marker node to empty space.\n this.dehighlightDatum();\n this.tooltip.toggle(false);\n this.lastPick = undefined;\n }\n };\n Chart.prototype.onMouseDown = function (event) { };\n Chart.prototype.onMouseUp = function (event) { };\n Chart.prototype.onMouseOut = function (event) {\n this.tooltip.toggle(false);\n };\n Chart.prototype.onClick = function (event) {\n if (this.checkSeriesNodeClick()) {\n return;\n }\n if (this.checkLegendClick(event)) {\n return;\n }\n this.fireEvent({\n type: 'click',\n event: event\n });\n };\n Chart.prototype.checkSeriesNodeClick = function () {\n var lastPick = this.lastPick;\n if (lastPick && lastPick.event && lastPick.node) {\n var event_1 = lastPick.event, datum = lastPick.datum;\n datum.series.fireNodeClickEvent(event_1, datum);\n return true;\n }\n return false;\n };\n Chart.prototype.onSeriesNodeClick = function (event) {\n this.fireEvent(__assign(__assign({}, event), { type: 'seriesNodeClick' }));\n };\n Chart.prototype.checkLegendClick = function (event) {\n var datum = this.legend.getDatumForPoint(event.offsetX, event.offsetY);\n if (datum) {\n var id_1 = datum.id, itemId = datum.itemId, enabled = datum.enabled;\n var series = find(this.series, function (series) { return series.id === id_1; });\n if (series) {\n series.toggleSeriesItem(itemId, !enabled);\n if (enabled) {\n this.tooltip.toggle(false);\n }\n this.legend.fireEvent({\n type: 'click',\n event: event,\n itemId: itemId,\n enabled: !enabled\n });\n return true;\n }\n }\n return false;\n };\n Chart.prototype.handleLegendMouseMove = function (event) {\n if (!this.legend.enabled) {\n return;\n }\n var offsetX = event.offsetX, offsetY = event.offsetY;\n var datum = this.legend.getDatumForPoint(offsetX, offsetY);\n var pointerInsideLegend = this.legendBBox.containsPoint(offsetX, offsetY);\n if (pointerInsideLegend) {\n if (!this.pointerInsideLegend) {\n this.pointerInsideLegend = true;\n }\n }\n else if (this.pointerInsideLegend) {\n this.pointerInsideLegend = false;\n // Dehighlight if the pointer was inside the legend and is now leaving it.\n if (this.highlightedDatum) {\n this.highlightedDatum = undefined;\n this.series.forEach(function (s) { return s.updatePending = true; });\n }\n return;\n }\n var oldHighlightedDatum = this.highlightedDatum;\n if (datum) {\n var id_2 = datum.id, itemId = datum.itemId, enabled = datum.enabled;\n if (enabled) {\n var series = find(this.series, function (series) { return series.id === id_2; });\n if (series) {\n this.highlightedDatum = {\n series: series,\n itemId: itemId,\n datum: undefined\n };\n }\n }\n }\n // Careful to only schedule updates when necessary.\n if ((this.highlightedDatum && !oldHighlightedDatum) ||\n (this.highlightedDatum && oldHighlightedDatum &&\n (this.highlightedDatum.series !== oldHighlightedDatum.series ||\n this.highlightedDatum.itemId !== oldHighlightedDatum.itemId))) {\n this.series.forEach(function (s) { return s.updatePending = true; });\n }\n };\n Chart.prototype.onSeriesDatumPick = function (meta, datum, node, event) {\n var lastPick = this.lastPick;\n if (lastPick) {\n if (lastPick.datum === datum) {\n return;\n }\n this.dehighlightDatum();\n }\n this.lastPick = {\n datum: datum,\n node: node,\n event: event\n };\n this.highlightDatum(datum);\n var html = datum.series.tooltip.enabled && datum.series.getTooltipHtml(datum);\n if (html) {\n this.tooltip.show(meta, html);\n }\n };\n Chart.prototype.highlightDatum = function (datum) {\n this.scene.canvas.element.style.cursor = datum.series.cursor;\n this.highlightedDatum = datum;\n this.series.forEach(function (s) { return s.updatePending = true; });\n };\n Chart.prototype.dehighlightDatum = function () {\n this.scene.canvas.element.style.cursor = 'default';\n this.highlightedDatum = undefined;\n this.series.forEach(function (s) { return s.updatePending = true; });\n };\n Chart.defaultTooltipClass = 'ag-chart-tooltip';\n Chart.tooltipDocuments = [];\n __decorate([\n reactive('layoutChange')\n ], Chart.prototype, \"title\", void 0);\n __decorate([\n reactive('layoutChange')\n ], Chart.prototype, \"subtitle\", void 0);\n return Chart;\n}(Observable));\nexport { Chart };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Node } from \"./node\";\nimport { Path2D } from \"./path2D\";\nimport { BBox } from \"./bbox\";\n/**\n * Acts as `Group` node but with specified bounds that form a rectangle.\n * Any parts of the child nodes outside that rectangle will not be visible.\n * Unlike the `Group` node, the `ClipRect` node cannot be transformed.\n */\nvar ClipRect = /** @class */ (function (_super) {\n __extends(ClipRect, _super);\n function ClipRect() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.isContainerNode = true;\n _this.path = new Path2D();\n _this._enabled = true;\n _this._dirtyPath = true;\n _this._x = 0;\n _this._y = 0;\n _this._width = 10;\n _this._height = 10;\n return _this;\n }\n ClipRect.prototype.containsPoint = function (x, y) {\n var point = this.transformPoint(x, y);\n return point.x >= this.x && point.x <= this.x + this.width\n && point.y >= this.y && point.y <= this.y + this.height;\n };\n Object.defineProperty(ClipRect.prototype, \"enabled\", {\n get: function () {\n return this._enabled;\n },\n set: function (value) {\n if (this._enabled !== value) {\n this._enabled = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ClipRect.prototype, \"dirtyPath\", {\n get: function () {\n return this._dirtyPath;\n },\n set: function (value) {\n if (this._dirtyPath !== value) {\n this._dirtyPath = value;\n if (value) {\n this.dirty = true;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ClipRect.prototype, \"x\", {\n get: function () {\n return this._x;\n },\n set: function (value) {\n if (this._x !== value) {\n this._x = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ClipRect.prototype, \"y\", {\n get: function () {\n return this._y;\n },\n set: function (value) {\n if (this._y !== value) {\n this._y = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ClipRect.prototype, \"width\", {\n get: function () {\n return this._width;\n },\n set: function (value) {\n if (this._width !== value) {\n this._width = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ClipRect.prototype, \"height\", {\n get: function () {\n return this._height;\n },\n set: function (value) {\n if (this._height !== value) {\n this._height = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n ClipRect.prototype.updatePath = function () {\n var path = this.path;\n path.clear();\n path.rect(this.x, this.y, this.width, this.height);\n this.dirtyPath = false;\n };\n ClipRect.prototype.computeBBox = function () {\n var _a = this, x = _a.x, y = _a.y, width = _a.width, height = _a.height;\n return new BBox(x, y, width, height);\n };\n ClipRect.prototype.render = function (ctx) {\n if (this.enabled) {\n if (this.dirtyPath) {\n this.updatePath();\n }\n this.path.draw(ctx);\n ctx.clip();\n }\n var children = this.children;\n var n = children.length;\n for (var i = 0; i < n; i++) {\n ctx.save();\n var child = children[i];\n if (child.visible) {\n child.render(ctx);\n }\n ctx.restore();\n }\n // debug\n // this.computeBBox().render(ctx, {\n // label: this.id,\n // resetTransform: true,\n // fillStyle: 'rgba(0, 0, 0, 0.5)'\n // });\n };\n ClipRect.className = 'ClipRect';\n return ClipRect;\n}(Node));\nexport { ClipRect };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Path } from \"../../scene/shape/path\";\nimport { BBox } from \"../../scene/bbox\";\nvar RangeHandle = /** @class */ (function (_super) {\n __extends(RangeHandle, _super);\n function RangeHandle() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._fill = '#f2f2f2';\n _this._stroke = '#999999';\n _this._strokeWidth = 1;\n _this._lineCap = 'square';\n _this._centerX = 0;\n _this._centerY = 0;\n // Use an even number for better looking results.\n _this._width = 8;\n // Use an even number for better looking results.\n _this._gripLineGap = 2;\n // Use an even number for better looking results.\n _this._gripLineLength = 8;\n _this._height = 16;\n return _this;\n }\n Object.defineProperty(RangeHandle.prototype, \"centerX\", {\n get: function () {\n return this._centerX;\n },\n set: function (value) {\n if (this._centerX !== value) {\n this._centerX = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RangeHandle.prototype, \"centerY\", {\n get: function () {\n return this._centerY;\n },\n set: function (value) {\n if (this._centerY !== value) {\n this._centerY = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RangeHandle.prototype, \"width\", {\n get: function () {\n return this._width;\n },\n set: function (value) {\n if (this._width !== value) {\n this._width = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RangeHandle.prototype, \"gripLineGap\", {\n get: function () {\n return this._gripLineGap;\n },\n set: function (value) {\n if (this._gripLineGap !== value) {\n this._gripLineGap = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RangeHandle.prototype, \"gripLineLength\", {\n get: function () {\n return this._gripLineLength;\n },\n set: function (value) {\n if (this._gripLineLength !== value) {\n this._gripLineLength = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RangeHandle.prototype, \"height\", {\n get: function () {\n return this._height;\n },\n set: function (value) {\n if (this._height !== value) {\n this._height = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n RangeHandle.prototype.computeBBox = function () {\n var _a = this, centerX = _a.centerX, centerY = _a.centerY, width = _a.width, height = _a.height;\n var x = centerX - width / 2;\n var y = centerY - height / 2;\n return new BBox(x, y, width, height);\n };\n RangeHandle.prototype.isPointInPath = function (x, y) {\n var point = this.transformPoint(x, y);\n var bbox = this.computeBBox();\n return bbox.containsPoint(point.x, point.y);\n };\n RangeHandle.prototype.updatePath = function () {\n var _a = this, path = _a.path, centerX = _a.centerX, centerY = _a.centerY, width = _a.width, height = _a.height;\n var _b = this, a = _b.alignment, al = _b.align;\n path.clear();\n var x = centerX - width / 2;\n var y = centerY - height / 2;\n var ax = al(a, x);\n var ay = al(a, y);\n var axw = ax + al(a, x, width);\n var ayh = ay + al(a, y, height);\n // Handle.\n path.moveTo(ax, ay);\n path.lineTo(axw, ay);\n path.lineTo(axw, ayh);\n path.lineTo(ax, ayh);\n path.lineTo(ax, ay);\n // Grip lines.\n var dx = this.gripLineGap / 2;\n var dy = this.gripLineLength / 2;\n path.moveTo(al(a, centerX - dx), al(a, centerY - dy));\n path.lineTo(al(a, centerX - dx), al(a, centerY + dy));\n path.moveTo(al(a, centerX + dx), al(a, centerY - dy));\n path.lineTo(al(a, centerX + dx), al(a, centerY + dy));\n };\n RangeHandle.className = 'RangeHandle';\n return RangeHandle;\n}(Path));\nexport { RangeHandle };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Path } from \"../../scene/shape/path\";\nimport { BBox } from \"../../scene/bbox\";\nvar RangeMask = /** @class */ (function (_super) {\n __extends(RangeMask, _super);\n function RangeMask() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._stroke = '#999999';\n _this._strokeWidth = 1;\n _this._fill = '#999999';\n _this._fillOpacity = 0.2;\n _this._lineCap = 'square';\n _this._x = 0;\n _this._y = 0;\n _this._width = 200;\n _this._height = 30;\n _this.minRange = 0.05;\n _this._min = 0;\n _this._max = 1;\n return _this;\n }\n Object.defineProperty(RangeMask.prototype, \"x\", {\n get: function () {\n return this._x;\n },\n set: function (value) {\n if (this._x !== value) {\n this._x = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RangeMask.prototype, \"y\", {\n get: function () {\n return this._y;\n },\n set: function (value) {\n if (this._y !== value) {\n this._y = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RangeMask.prototype, \"width\", {\n get: function () {\n return this._width;\n },\n set: function (value) {\n if (this._width !== value) {\n this._width = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RangeMask.prototype, \"height\", {\n get: function () {\n return this._height;\n },\n set: function (value) {\n if (this._height !== value) {\n this._height = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RangeMask.prototype, \"min\", {\n get: function () {\n return this._min;\n },\n set: function (value) {\n value = Math.min(Math.max(value, 0), this.max - this.minRange);\n if (isNaN(value)) {\n return;\n }\n if (this._min !== value) {\n this._min = value;\n this.dirtyPath = true;\n this.onRangeChange && this.onRangeChange(value, this.max);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RangeMask.prototype, \"max\", {\n get: function () {\n return this._max;\n },\n set: function (value) {\n value = Math.max(Math.min(value, 1), this.min + this.minRange);\n if (isNaN(value)) {\n return;\n }\n if (this._max !== value) {\n this._max = value;\n this.dirtyPath = true;\n this.onRangeChange && this.onRangeChange(this.min, value);\n }\n },\n enumerable: true,\n configurable: true\n });\n RangeMask.prototype.computeBBox = function () {\n var _a = this, x = _a.x, y = _a.y, width = _a.width, height = _a.height;\n return new BBox(x, y, width, height);\n };\n RangeMask.prototype.computeVisibleRangeBBox = function () {\n var _a = this, x = _a.x, y = _a.y, width = _a.width, height = _a.height, min = _a.min, max = _a.max;\n var minX = x + width * min;\n var maxX = x + width * max;\n return new BBox(minX, y, maxX - minX, height);\n };\n RangeMask.prototype.updatePath = function () {\n var _a = this, path = _a.path, x = _a.x, y = _a.y, width = _a.width, height = _a.height, min = _a.min, max = _a.max;\n var _b = this, a = _b.alignment, al = _b.align;\n path.clear();\n var ax = al(a, x);\n var ay = al(a, y);\n var axw = ax + al(a, x, width);\n var ayh = ay + al(a, y, height);\n // Whole range.\n path.moveTo(ax, ay);\n path.lineTo(axw, ay);\n path.lineTo(axw, ayh);\n path.lineTo(ax, ayh);\n path.lineTo(ax, ay);\n var minX = al(a, x + width * min);\n var maxX = al(a, x + width * max);\n // Visible range.\n path.moveTo(minX, ay);\n path.lineTo(minX, ayh);\n path.lineTo(maxX, ayh);\n path.lineTo(maxX, ay);\n path.lineTo(minX, ay);\n };\n RangeMask.className = 'RangeMask';\n return RangeMask;\n}(Path));\nexport { RangeMask };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Group } from \"../../scene/group\";\nimport { RangeHandle } from \"./rangeHandle\";\nimport { RangeMask } from \"./rangeMask\";\nvar RangeSelector = /** @class */ (function (_super) {\n __extends(RangeSelector, _super);\n function RangeSelector() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.isContainerNode = true;\n _this.minHandle = new RangeHandle();\n _this.maxHandle = new RangeHandle();\n _this.mask = (function () {\n var _a = RangeSelector.defaults, x = _a.x, y = _a.y, width = _a.width, height = _a.height, min = _a.min, max = _a.max;\n var mask = new RangeMask();\n mask.x = x;\n mask.y = y;\n mask.width = width;\n mask.height = height;\n mask.min = min;\n mask.max = max;\n var _b = _this, minHandle = _b.minHandle, maxHandle = _b.maxHandle;\n minHandle.centerX = x;\n maxHandle.centerX = x + width;\n minHandle.centerY = maxHandle.centerY = y + height / 2;\n _this.append([mask, minHandle, maxHandle]);\n mask.onRangeChange = function (min, max) {\n _this.updateHandles();\n _this.onRangeChange && _this.onRangeChange(min, max);\n };\n return mask;\n })();\n _this._x = RangeSelector.defaults.x;\n _this._y = RangeSelector.defaults.y;\n _this._width = RangeSelector.defaults.width;\n _this._height = RangeSelector.defaults.height;\n _this._min = RangeSelector.defaults.min;\n _this._max = RangeSelector.defaults.max;\n return _this;\n }\n Object.defineProperty(RangeSelector.prototype, \"x\", {\n get: function () {\n return this.mask.x;\n },\n set: function (value) {\n this.mask.x = value;\n this.updateHandles();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RangeSelector.prototype, \"y\", {\n get: function () {\n return this.mask.y;\n },\n set: function (value) {\n this.mask.y = value;\n this.updateHandles();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RangeSelector.prototype, \"width\", {\n get: function () {\n return this.mask.width;\n },\n set: function (value) {\n this.mask.width = value;\n this.updateHandles();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RangeSelector.prototype, \"height\", {\n get: function () {\n return this.mask.height;\n },\n set: function (value) {\n this.mask.height = value;\n this.updateHandles();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RangeSelector.prototype, \"min\", {\n get: function () {\n return this.mask.min;\n },\n set: function (value) {\n this.mask.min = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RangeSelector.prototype, \"max\", {\n get: function () {\n return this.mask.max;\n },\n set: function (value) {\n this.mask.max = value;\n },\n enumerable: true,\n configurable: true\n });\n RangeSelector.prototype.updateHandles = function () {\n var _a = this, minHandle = _a.minHandle, maxHandle = _a.maxHandle, x = _a.x, y = _a.y, width = _a.width, height = _a.height, mask = _a.mask;\n minHandle.centerX = x + width * mask.min;\n maxHandle.centerX = x + width * mask.max;\n minHandle.centerY = maxHandle.centerY = y + height / 2;\n };\n RangeSelector.prototype.computeBBox = function () {\n return this.mask.computeBBox();\n };\n RangeSelector.prototype.computeVisibleRangeBBox = function () {\n return this.mask.computeVisibleRangeBBox();\n };\n RangeSelector.prototype.render = function (ctx) {\n if (this.dirtyTransform) {\n this.computeTransformMatrix();\n }\n this.matrix.toContext(ctx);\n var _a = this, mask = _a.mask, minHandle = _a.minHandle, maxHandle = _a.maxHandle;\n [mask, minHandle, maxHandle].forEach(function (child) {\n ctx.save();\n if (child.visible) {\n child.render(ctx);\n }\n ctx.restore();\n });\n };\n RangeSelector.className = 'Range';\n RangeSelector.defaults = {\n x: 0,\n y: 0,\n width: 200,\n height: 30,\n min: 0,\n max: 1\n };\n return RangeSelector;\n}(Group));\nexport { RangeSelector };\n","var NavigatorMask = /** @class */ (function () {\n function NavigatorMask(rangeMask) {\n this.rm = rangeMask;\n }\n Object.defineProperty(NavigatorMask.prototype, \"fill\", {\n get: function () {\n return this.rm.fill;\n },\n set: function (value) {\n this.rm.fill = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NavigatorMask.prototype, \"stroke\", {\n get: function () {\n return this.rm.stroke;\n },\n set: function (value) {\n this.rm.stroke = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NavigatorMask.prototype, \"strokeWidth\", {\n get: function () {\n return this.rm.strokeWidth;\n },\n set: function (value) {\n this.rm.strokeWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NavigatorMask.prototype, \"fillOpacity\", {\n get: function () {\n return this.rm.fillOpacity;\n },\n set: function (value) {\n this.rm.fillOpacity = value;\n },\n enumerable: true,\n configurable: true\n });\n return NavigatorMask;\n}());\nexport { NavigatorMask };\n","var NavigatorHandle = /** @class */ (function () {\n function NavigatorHandle(rangeHandle) {\n this.rh = rangeHandle;\n }\n Object.defineProperty(NavigatorHandle.prototype, \"fill\", {\n get: function () {\n return this.rh.fill;\n },\n set: function (value) {\n this.rh.fill = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NavigatorHandle.prototype, \"stroke\", {\n get: function () {\n return this.rh.stroke;\n },\n set: function (value) {\n this.rh.stroke = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NavigatorHandle.prototype, \"strokeWidth\", {\n get: function () {\n return this.rh.strokeWidth;\n },\n set: function (value) {\n this.rh.strokeWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NavigatorHandle.prototype, \"width\", {\n get: function () {\n return this.rh.width;\n },\n set: function (value) {\n this.rh.width = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NavigatorHandle.prototype, \"height\", {\n get: function () {\n return this.rh.height;\n },\n set: function (value) {\n this.rh.height = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NavigatorHandle.prototype, \"gripLineGap\", {\n get: function () {\n return this.rh.gripLineGap;\n },\n set: function (value) {\n this.rh.gripLineGap = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NavigatorHandle.prototype, \"gripLineLength\", {\n get: function () {\n return this.rh.gripLineLength;\n },\n set: function (value) {\n this.rh.gripLineLength = value;\n },\n enumerable: true,\n configurable: true\n });\n return NavigatorHandle;\n}());\nexport { NavigatorHandle };\n","import { RangeSelector } from \"../shapes/rangeSelector\";\nimport { ChartAxisDirection } from \"../chartAxis\";\nimport { BBox } from \"../../scene/bbox\";\nimport { NavigatorMask } from \"./navigatorMask\";\nimport { NavigatorHandle } from \"./navigatorHandle\";\nvar Navigator = /** @class */ (function () {\n function Navigator(chart) {\n var _this = this;\n this.rs = new RangeSelector();\n this.mask = new NavigatorMask(this.rs.mask);\n this.minHandle = new NavigatorHandle(this.rs.minHandle);\n this.maxHandle = new NavigatorHandle(this.rs.maxHandle);\n this.minHandleDragging = false;\n this.maxHandleDragging = false;\n this.panHandleOffset = NaN;\n this._margin = 10;\n this.chart = chart;\n chart.scene.root.append(this.rs);\n this.rs.onRangeChange = function (min, max) { return _this.updateAxes(min, max); };\n }\n Object.defineProperty(Navigator.prototype, \"enabled\", {\n get: function () {\n return this.rs.visible;\n },\n set: function (value) {\n this.rs.visible = value;\n this.chart.layoutPending = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Navigator.prototype, \"x\", {\n get: function () {\n return this.rs.x;\n },\n set: function (value) {\n this.rs.x = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Navigator.prototype, \"y\", {\n get: function () {\n return this.rs.y;\n },\n set: function (value) {\n this.rs.y = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Navigator.prototype, \"width\", {\n get: function () {\n return this.rs.width;\n },\n set: function (value) {\n this.rs.width = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Navigator.prototype, \"height\", {\n get: function () {\n return this.rs.height;\n },\n set: function (value) {\n this.rs.height = value;\n this.chart.layoutPending = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Navigator.prototype, \"margin\", {\n get: function () {\n return this._margin;\n },\n set: function (value) {\n this._margin = value;\n this.chart.layoutPending = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Navigator.prototype, \"min\", {\n get: function () {\n return this.rs.min;\n },\n set: function (value) {\n this.rs.min = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Navigator.prototype, \"max\", {\n get: function () {\n return this.rs.max;\n },\n set: function (value) {\n this.rs.max = value;\n },\n enumerable: true,\n configurable: true\n });\n Navigator.prototype.updateAxes = function (min, max) {\n var chart = this.chart;\n var clipSeries = false;\n chart.axes.forEach(function (axis) {\n if (axis.direction === ChartAxisDirection.X) {\n if (!clipSeries && (min > 0 || max < 1)) {\n clipSeries = true;\n }\n axis.visibleRange = [min, max];\n axis.update();\n }\n });\n chart.seriesRoot.enabled = clipSeries;\n chart.series.forEach(function (s) { return s.nodeDataPending = true; });\n };\n Navigator.prototype.onDragStart = function (offset) {\n if (!this.enabled) {\n return;\n }\n var offsetX = offset.offsetX, offsetY = offset.offsetY;\n var rs = this.rs;\n var minHandle = rs.minHandle, maxHandle = rs.maxHandle, x = rs.x, width = rs.width, min = rs.min;\n var visibleRange = rs.computeVisibleRangeBBox();\n if (!(this.minHandleDragging || this.maxHandleDragging)) {\n if (minHandle.containsPoint(offsetX, offsetY)) {\n this.minHandleDragging = true;\n }\n else if (maxHandle.containsPoint(offsetX, offsetY)) {\n this.maxHandleDragging = true;\n }\n else if (visibleRange.containsPoint(offsetX, offsetY)) {\n this.panHandleOffset = (offsetX - x) / width - min;\n }\n }\n };\n Navigator.prototype.onDrag = function (offset) {\n if (!this.enabled) {\n return;\n }\n var _a = this, rs = _a.rs, panHandleOffset = _a.panHandleOffset;\n var x = rs.x, y = rs.y, width = rs.width, height = rs.height, minHandle = rs.minHandle, maxHandle = rs.maxHandle;\n var style = this.chart.element.style;\n var offsetX = offset.offsetX, offsetY = offset.offsetY;\n var minX = x + width * rs.min;\n var maxX = x + width * rs.max;\n var visibleRange = new BBox(minX, y, maxX - minX, height);\n function getRatio() {\n return Math.min(Math.max((offsetX - x) / width, 0), 1);\n }\n if (minHandle.containsPoint(offsetX, offsetY)) {\n style.cursor = 'ew-resize';\n }\n else if (maxHandle.containsPoint(offsetX, offsetY)) {\n style.cursor = 'ew-resize';\n }\n else if (visibleRange.containsPoint(offsetX, offsetY)) {\n style.cursor = 'grab';\n }\n else {\n style.cursor = 'default';\n }\n if (this.minHandleDragging) {\n rs.min = getRatio();\n }\n else if (this.maxHandleDragging) {\n rs.max = getRatio();\n }\n else if (!isNaN(panHandleOffset)) {\n var span = rs.max - rs.min;\n var min = Math.min(getRatio() - panHandleOffset, 1 - span);\n if (min <= rs.min) { // pan left\n rs.min = min;\n rs.max = rs.min + span;\n }\n else { // pan right\n rs.max = min + span;\n rs.min = rs.max - span;\n }\n }\n };\n Navigator.prototype.onDragStop = function () {\n this.stopHandleDragging();\n };\n Navigator.prototype.stopHandleDragging = function () {\n this.minHandleDragging = this.maxHandleDragging = false;\n this.panHandleOffset = NaN;\n };\n return Navigator;\n}());\nexport { Navigator };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nimport { Chart } from \"./chart\";\nimport { CategoryAxis } from \"./axis/categoryAxis\";\nimport { GroupedCategoryAxis } from \"./axis/groupedCategoryAxis\";\nimport { ChartAxisPosition, ChartAxisDirection } from \"./chartAxis\";\nimport { BBox } from \"../scene/bbox\";\nimport { ClipRect } from \"../scene/clipRect\";\nimport { Navigator } from \"./navigator/navigator\";\nimport { NumberAxis } from \"./axis/numberAxis\";\nvar CartesianChart = /** @class */ (function (_super) {\n __extends(CartesianChart, _super);\n function CartesianChart(document) {\n if (document === void 0) { document = window.document; }\n var _this = _super.call(this, document) || this;\n _this._seriesRoot = new ClipRect();\n _this.navigator = new Navigator(_this);\n // Prevent the scene from rendering chart components in an invalid state\n // (before first layout is performed).\n _this.scene.root.visible = false;\n var root = _this.scene.root;\n root.append(_this.seriesRoot);\n root.append(_this.legend.group);\n _this.navigator.enabled = false;\n return _this;\n }\n Object.defineProperty(CartesianChart.prototype, \"seriesRoot\", {\n get: function () {\n return this._seriesRoot;\n },\n enumerable: true,\n configurable: true\n });\n CartesianChart.prototype.performLayout = function () {\n if (this.dataPending) {\n return;\n }\n this.scene.root.visible = true;\n var _a = this, width = _a.width, height = _a.height, axes = _a.axes, legend = _a.legend, navigator = _a.navigator;\n var shrinkRect = new BBox(0, 0, width, height);\n this.positionCaptions();\n this.positionLegend();\n if (legend.enabled && legend.data.length) {\n var legendAutoPadding = this.legendAutoPadding;\n var legendPadding = this.legend.spacing;\n shrinkRect.x += legendAutoPadding.left;\n shrinkRect.y += legendAutoPadding.top;\n shrinkRect.width -= legendAutoPadding.left + legendAutoPadding.right;\n shrinkRect.height -= legendAutoPadding.top + legendAutoPadding.bottom;\n switch (this.legend.position) {\n case 'right':\n shrinkRect.width -= legendPadding;\n break;\n case 'bottom':\n shrinkRect.height -= legendPadding;\n break;\n case 'left':\n shrinkRect.x += legendPadding;\n shrinkRect.width -= legendPadding;\n break;\n case 'top':\n shrinkRect.y += legendPadding;\n shrinkRect.height -= legendPadding;\n break;\n }\n }\n var _b = this, captionAutoPadding = _b.captionAutoPadding, padding = _b.padding;\n this.updateAxes();\n shrinkRect.x += padding.left;\n shrinkRect.width -= padding.left + padding.right;\n shrinkRect.y += padding.top + captionAutoPadding;\n shrinkRect.height -= padding.top + captionAutoPadding + padding.bottom;\n if (navigator.enabled) {\n shrinkRect.height -= navigator.height + navigator.margin;\n }\n var bottomAxesHeight = 0;\n var axisPositionVisited = {\n top: false,\n right: false,\n bottom: false,\n left: false,\n angle: false,\n radius: false\n };\n axes.forEach(function (axis) {\n axis.group.visible = true;\n var axisThickness = Math.floor(axis.thickness || axis.computeBBox().width);\n // for multiple axes in the same direction and position, apply padding at the top of each inner axis (i.e. between axes).\n var axisPadding = axis.title && axis.title.padding.top || 15;\n if (axisPositionVisited[axis.position]) {\n axisThickness += axisPadding;\n }\n switch (axis.position) {\n case ChartAxisPosition.Top:\n axisPositionVisited[ChartAxisPosition.Top] = true;\n shrinkRect.y += axisThickness;\n shrinkRect.height -= axisThickness;\n axis.translation.y = Math.floor(shrinkRect.y + 1);\n axis.label.mirrored = true;\n break;\n case ChartAxisPosition.Right:\n axisPositionVisited[ChartAxisPosition.Right] = true;\n shrinkRect.width -= axisThickness;\n axis.translation.x = Math.max(Math.floor(shrinkRect.x), Math.floor(shrinkRect.x + shrinkRect.width));\n axis.label.mirrored = true;\n break;\n case ChartAxisPosition.Bottom:\n axisPositionVisited[ChartAxisPosition.Bottom] = true;\n shrinkRect.height -= axisThickness;\n bottomAxesHeight += axisThickness;\n axis.translation.y = Math.max(Math.floor(shrinkRect.y), Math.floor(shrinkRect.y + shrinkRect.height + 1));\n break;\n case ChartAxisPosition.Left:\n axisPositionVisited[ChartAxisPosition.Left] = true;\n shrinkRect.x += axisThickness;\n shrinkRect.width -= axisThickness;\n axis.translation.x = Math.floor(shrinkRect.x);\n break;\n }\n });\n // width and height should not be negative\n shrinkRect.width = Math.max(0, shrinkRect.width);\n shrinkRect.height = Math.max(0, shrinkRect.height);\n axes.forEach(function (axis) {\n switch (axis.position) {\n case ChartAxisPosition.Top:\n case ChartAxisPosition.Bottom:\n axis.translation.x = Math.floor(shrinkRect.x);\n axis.range = [0, shrinkRect.width];\n axis.gridLength = shrinkRect.height;\n break;\n case ChartAxisPosition.Left:\n case ChartAxisPosition.Right:\n axis.translation.y = Math.floor(shrinkRect.y);\n if (axis instanceof CategoryAxis || axis instanceof GroupedCategoryAxis) {\n axis.range = [0, shrinkRect.height];\n }\n else {\n axis.range = [shrinkRect.height, 0];\n }\n axis.gridLength = shrinkRect.width;\n break;\n }\n });\n this.createNodeData();\n this.seriesRect = shrinkRect;\n this.series.forEach(function (series) {\n series.group.translationX = Math.floor(shrinkRect.x);\n series.group.translationY = Math.floor(shrinkRect.y);\n series.update(); // this has to happen after the `updateAxes` call\n });\n var seriesRoot = this.seriesRoot;\n seriesRoot.x = shrinkRect.x;\n seriesRoot.y = shrinkRect.y;\n seriesRoot.width = shrinkRect.width;\n seriesRoot.height = shrinkRect.height;\n if (navigator.enabled) {\n navigator.x = shrinkRect.x;\n navigator.y = shrinkRect.y + shrinkRect.height + bottomAxesHeight + navigator.margin;\n navigator.width = shrinkRect.width;\n }\n this.axes.forEach(function (axis) { return axis.update(); });\n };\n CartesianChart.prototype.initSeries = function (series) {\n _super.prototype.initSeries.call(this, series);\n };\n CartesianChart.prototype.freeSeries = function (series) {\n _super.prototype.freeSeries.call(this, series);\n };\n CartesianChart.prototype.setupDomListeners = function (chartElement) {\n _super.prototype.setupDomListeners.call(this, chartElement);\n this._onTouchStart = this.onTouchStart.bind(this);\n this._onTouchMove = this.onTouchMove.bind(this);\n this._onTouchEnd = this.onTouchEnd.bind(this);\n this._onTouchCancel = this.onTouchCancel.bind(this);\n chartElement.addEventListener('touchstart', this._onTouchStart, { passive: true });\n chartElement.addEventListener('touchmove', this._onTouchMove, { passive: true });\n chartElement.addEventListener('touchend', this._onTouchEnd, { passive: true });\n chartElement.addEventListener('touchcancel', this._onTouchCancel, { passive: true });\n };\n CartesianChart.prototype.cleanupDomListeners = function (chartElement) {\n _super.prototype.cleanupDomListeners.call(this, chartElement);\n chartElement.removeEventListener('touchstart', this._onTouchStart);\n chartElement.removeEventListener('touchmove', this._onTouchMove);\n chartElement.removeEventListener('touchend', this._onTouchEnd);\n chartElement.removeEventListener('touchcancel', this._onTouchCancel);\n };\n CartesianChart.prototype.getTouchOffset = function (event) {\n var rect = this.scene.canvas.element.getBoundingClientRect();\n var touch = event.touches[0];\n return touch ? {\n offsetX: touch.clientX - rect.left,\n offsetY: touch.clientY - rect.top\n } : undefined;\n };\n CartesianChart.prototype.onTouchStart = function (event) {\n var offset = this.getTouchOffset(event);\n if (offset) {\n this.navigator.onDragStart(offset);\n }\n };\n CartesianChart.prototype.onTouchMove = function (event) {\n var offset = this.getTouchOffset(event);\n if (offset) {\n this.navigator.onDrag(offset);\n }\n };\n CartesianChart.prototype.onTouchEnd = function (event) {\n this.navigator.onDragStop();\n };\n CartesianChart.prototype.onTouchCancel = function (event) {\n this.navigator.onDragStop();\n };\n CartesianChart.prototype.onMouseDown = function (event) {\n _super.prototype.onMouseDown.call(this, event);\n this.navigator.onDragStart(event);\n };\n CartesianChart.prototype.onMouseMove = function (event) {\n _super.prototype.onMouseMove.call(this, event);\n this.navigator.onDrag(event);\n };\n CartesianChart.prototype.onMouseUp = function (event) {\n _super.prototype.onMouseUp.call(this, event);\n this.navigator.onDragStop();\n };\n CartesianChart.prototype.onMouseOut = function (event) {\n _super.prototype.onMouseOut.call(this, event);\n this.navigator.onDragStop();\n };\n CartesianChart.prototype.assignAxesToSeries = function (force) {\n if (force === void 0) { force = false; }\n _super.prototype.assignAxesToSeries.call(this, force);\n this.series.forEach(function (series) {\n if (!series.xAxis) {\n console.warn(\"Could not find a matching xAxis for the \" + series.id + \" series.\");\n }\n if (!series.yAxis) {\n console.warn(\"Could not find a matching yAxis for the \" + series.id + \" series.\");\n }\n });\n };\n CartesianChart.prototype.updateAxes = function () {\n var _this = this;\n var navigator = this.navigator;\n var clipSeries = false;\n var primaryTickCount;\n this.axes.forEach(function (axis) {\n var _a;\n var direction = axis.direction, boundSeries = axis.boundSeries;\n if (boundSeries.length === 0 && _this._series.length > 0) {\n console.warn('AG Charts - chart series not initialised; check series and axes configuration.');\n }\n if (axis.linkedTo) {\n axis.domain = axis.linkedTo.domain;\n }\n else {\n var domains_1 = [];\n boundSeries.filter(function (s) { return s.visible; }).forEach(function (series) {\n domains_1.push(series.getDomain(direction));\n });\n var domain = (_a = new Array()).concat.apply(_a, __spread(domains_1));\n var isYAxis = axis.direction === 'y';\n if (axis instanceof NumberAxis && isYAxis) {\n // the `primaryTickCount` is used to align the secondary axis tick count with the primary\n axis.setDomain(domain, primaryTickCount);\n primaryTickCount = primaryTickCount || axis.scale.ticks(axis.tick.count).length;\n }\n else {\n axis.domain = domain;\n }\n }\n if (axis.direction === ChartAxisDirection.X) {\n axis.visibleRange = [navigator.min, navigator.max];\n }\n if (!clipSeries && (axis.visibleRange[0] > 0 || axis.visibleRange[1] < 1)) {\n clipSeries = true;\n }\n axis.update();\n });\n this.seriesRoot.enabled = clipSeries;\n };\n CartesianChart.className = 'CartesianChart';\n CartesianChart.type = 'cartesian';\n return CartesianChart;\n}(Chart));\nexport { CartesianChart };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { BBox } from \"../scene/bbox\";\nimport { ClipRect } from \"../scene/clipRect\";\nimport { Chart } from \"./chart\";\nvar HierarchyChart = /** @class */ (function (_super) {\n __extends(HierarchyChart, _super);\n function HierarchyChart(document) {\n if (document === void 0) { document = window.document; }\n var _this = _super.call(this, document) || this;\n _this._data = {};\n _this._seriesRoot = new ClipRect();\n // Prevent the scene from rendering chart components in an invalid state\n // (before first layout is performed).\n _this.scene.root.visible = false;\n var root = _this.scene.root;\n root.append(_this.seriesRoot);\n root.append(_this.legend.group);\n return _this;\n }\n Object.defineProperty(HierarchyChart.prototype, \"seriesRoot\", {\n get: function () {\n return this._seriesRoot;\n },\n enumerable: true,\n configurable: true\n });\n HierarchyChart.prototype.performLayout = function () {\n if (this.dataPending) {\n return;\n }\n this.scene.root.visible = true;\n var _a = this, width = _a.width, height = _a.height, legend = _a.legend;\n var shrinkRect = new BBox(0, 0, width, height);\n this.positionCaptions();\n this.positionLegend();\n if (legend.enabled && legend.data.length) {\n var legendAutoPadding = this.legendAutoPadding;\n var legendPadding = this.legend.spacing;\n shrinkRect.x += legendAutoPadding.left;\n shrinkRect.y += legendAutoPadding.top;\n shrinkRect.width -= legendAutoPadding.left + legendAutoPadding.right;\n shrinkRect.height -= legendAutoPadding.top + legendAutoPadding.bottom;\n switch (this.legend.position) {\n case 'right':\n shrinkRect.width -= legendPadding;\n break;\n case 'bottom':\n shrinkRect.height -= legendPadding;\n break;\n case 'left':\n shrinkRect.x += legendPadding;\n shrinkRect.width -= legendPadding;\n break;\n case 'top':\n shrinkRect.y += legendPadding;\n shrinkRect.height -= legendPadding;\n break;\n }\n }\n var _b = this, captionAutoPadding = _b.captionAutoPadding, padding = _b.padding;\n shrinkRect.x += padding.left;\n shrinkRect.width -= padding.left + padding.right;\n shrinkRect.y += padding.top + captionAutoPadding;\n shrinkRect.height -= padding.top + captionAutoPadding + padding.bottom;\n this.seriesRect = shrinkRect;\n this.series.forEach(function (series) {\n series.group.translationX = Math.floor(shrinkRect.x);\n series.group.translationY = Math.floor(shrinkRect.y);\n series.update(); // this has to happen after the `updateAxes` call\n });\n var seriesRoot = this.seriesRoot;\n seriesRoot.x = shrinkRect.x;\n seriesRoot.y = shrinkRect.y;\n seriesRoot.width = shrinkRect.width;\n seriesRoot.height = shrinkRect.height;\n };\n HierarchyChart.className = 'HierarchyChart';\n HierarchyChart.type = 'hierarchy';\n return HierarchyChart;\n}(Chart));\nexport { HierarchyChart };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nimport { CartesianChart } from \"./cartesianChart\";\nimport { extent } from \"../util/array\";\nimport { ChartAxisDirection } from \"./chartAxis\";\nimport { isContinuous } from \"../util/value\";\nvar GroupedCategoryChart = /** @class */ (function (_super) {\n __extends(GroupedCategoryChart, _super);\n function GroupedCategoryChart() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n GroupedCategoryChart.prototype.updateAxes = function () {\n this.axes.forEach(function (axis) {\n var _a;\n var direction = axis.direction, boundSeries = axis.boundSeries;\n var domains = [];\n var isNumericX = undefined;\n boundSeries.filter(function (s) { return s.visible; }).forEach(function (series) {\n if (direction === ChartAxisDirection.X) {\n if (isNumericX === undefined) {\n // always add first X domain\n var domain_1 = series.getDomain(direction);\n domains.push(domain_1);\n isNumericX = typeof domain_1[0] === 'number';\n }\n else if (isNumericX) {\n // only add further X domains if the axis is numeric\n domains.push(series.getDomain(direction));\n }\n }\n else {\n domains.push(series.getDomain(direction));\n }\n });\n var domain = (_a = new Array()).concat.apply(_a, __spread(domains));\n axis.domain = extent(domain, isContinuous) || domain;\n axis.update();\n });\n };\n GroupedCategoryChart.className = 'GroupedCategoryChart';\n GroupedCategoryChart.type = 'groupedCategory';\n return GroupedCategoryChart;\n}(CartesianChart));\nexport { GroupedCategoryChart };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { getFont } from \"../scene/shape/text\";\nimport { Observable, reactive } from \"../util/observable\";\nvar Label = /** @class */ (function (_super) {\n __extends(Label, _super);\n function Label() {\n var _this = _super.call(this) || this;\n _this.enabled = true;\n _this.fontSize = 12;\n _this.fontFamily = 'Verdana, sans-serif';\n _this.color = 'rgba(70, 70, 70, 1)';\n return _this;\n }\n Label.prototype.getFont = function () {\n return getFont(this.fontSize, this.fontFamily, this.fontStyle, this.fontWeight);\n };\n __decorate([\n reactive('change', 'dataChange')\n ], Label.prototype, \"enabled\", void 0);\n __decorate([\n reactive('change')\n ], Label.prototype, \"fontSize\", void 0);\n __decorate([\n reactive('change')\n ], Label.prototype, \"fontFamily\", void 0);\n __decorate([\n reactive('change')\n ], Label.prototype, \"fontStyle\", void 0);\n __decorate([\n reactive('change')\n ], Label.prototype, \"fontWeight\", void 0);\n __decorate([\n reactive('change')\n ], Label.prototype, \"color\", void 0);\n return Label;\n}(Observable));\nexport { Label };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nimport { Group } from \"../../scene/group\";\nimport { Observable, reactive } from \"../../util/observable\";\nimport { ChartAxisDirection } from \"../chartAxis\";\nimport { createId } from \"../../util/id\";\nimport { Label } from \"../label\";\nimport { isNumber } from \"../../util/value\";\nimport { TimeAxis } from \"../axis/timeAxis\";\nvar SeriesItemHighlightStyle = /** @class */ (function () {\n function SeriesItemHighlightStyle() {\n this.fill = 'yellow';\n this.stroke = undefined;\n this.strokeWidth = undefined;\n }\n return SeriesItemHighlightStyle;\n}());\nexport { SeriesItemHighlightStyle };\nvar SeriesHighlightStyle = /** @class */ (function () {\n function SeriesHighlightStyle() {\n this.strokeWidth = undefined;\n this.dimOpacity = undefined;\n }\n return SeriesHighlightStyle;\n}());\nexport { SeriesHighlightStyle };\nvar HighlightStyle = /** @class */ (function () {\n function HighlightStyle() {\n /**\n * @deprecated Use item.fill instead.\n */\n this.fill = undefined;\n /**\n * @deprecated Use item.stroke instead.\n */\n this.stroke = undefined;\n /**\n * @deprecated Use item.strokeWidth instead.\n */\n this.strokeWidth = undefined;\n this.item = new SeriesItemHighlightStyle();\n this.series = new SeriesHighlightStyle();\n }\n return HighlightStyle;\n}());\nexport { HighlightStyle };\nvar SeriesTooltip = /** @class */ (function (_super) {\n __extends(SeriesTooltip, _super);\n function SeriesTooltip() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.enabled = true;\n return _this;\n }\n __decorate([\n reactive('change')\n ], SeriesTooltip.prototype, \"enabled\", void 0);\n return SeriesTooltip;\n}(Observable));\nexport { SeriesTooltip };\nvar Series = /** @class */ (function (_super) {\n __extends(Series, _super);\n function Series() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.id = createId(_this);\n // The group node that contains all the nodes used to render this series.\n _this.group = new Group();\n // The group node that contains all the nodes that can be \"picked\" (react to hover, tap, click).\n _this.pickGroup = _this.group.appendChild(new Group());\n _this.directions = [ChartAxisDirection.X, ChartAxisDirection.Y];\n _this.directionKeys = {};\n _this.label = new Label();\n _this.data = undefined;\n _this.visible = true;\n _this.showInLegend = true;\n _this.cursor = 'default';\n _this._nodeDataPending = true;\n _this._updatePending = false;\n _this.highlightStyle = new HighlightStyle();\n _this.scheduleLayout = function () {\n _this.fireEvent({ type: 'layoutChange' });\n };\n _this.scheduleData = function () {\n _this.fireEvent({ type: 'dataChange' });\n };\n return _this;\n }\n Object.defineProperty(Series.prototype, \"type\", {\n get: function () {\n return this.constructor.type || '';\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Series.prototype, \"grouped\", {\n set: function (g) {\n if (g === true) {\n throw new Error(\"AG Charts - grouped: true is unsupported for series of type: \" + this.type);\n }\n },\n enumerable: true,\n configurable: true\n });\n Series.prototype.setColors = function (fills, strokes) { };\n // Returns the actual keys used (to fetch the values from `data` items) for the given direction.\n Series.prototype.getKeys = function (direction) {\n var _this = this;\n var directionKeys = this.directionKeys;\n var keys = directionKeys && directionKeys[direction];\n var values = [];\n if (keys) {\n keys.forEach(function (key) {\n var value = _this[key];\n if (value) {\n if (Array.isArray(value)) {\n values.push.apply(values, __spread(value));\n }\n else {\n values.push(value);\n }\n }\n });\n }\n return values;\n };\n // Using processed data, create data that backs visible nodes.\n Series.prototype.createNodeData = function () { return []; };\n // Returns persisted node data associated with the rendered portion of the series' data.\n Series.prototype.getNodeData = function () { return []; };\n Series.prototype.getLabelData = function () { return []; };\n Object.defineProperty(Series.prototype, \"nodeDataPending\", {\n get: function () {\n return this._nodeDataPending;\n },\n set: function (value) {\n if (this._nodeDataPending !== value) {\n this._nodeDataPending = value;\n this.updatePending = true;\n if (value && this.chart) {\n this.chart.updatePending = value;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Series.prototype.scheduleNodeDate = function () {\n this.nodeDataPending = true;\n };\n Object.defineProperty(Series.prototype, \"updatePending\", {\n get: function () {\n return this._updatePending;\n },\n set: function (value) {\n if (this._updatePending !== value) {\n this._updatePending = value;\n if (value && this.chart) {\n this.chart.updatePending = value;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Series.prototype.scheduleUpdate = function () {\n this.updatePending = true;\n };\n Series.prototype.getOpacity = function (datum) {\n var _a = this, chart = _a.chart, _b = _a.highlightStyle.series.dimOpacity, dimOpacity = _b === void 0 ? 1 : _b;\n return !chart || !chart.highlightedDatum ||\n chart.highlightedDatum.series === this &&\n (!datum || chart.highlightedDatum.itemId === datum.itemId) ? 1 : dimOpacity;\n };\n Series.prototype.getStrokeWidth = function (defaultStrokeWidth, datum) {\n var _a = this, chart = _a.chart, strokeWidth = _a.highlightStyle.series.strokeWidth;\n return chart && chart.highlightedDatum &&\n chart.highlightedDatum.series === this &&\n (!datum || chart.highlightedDatum.itemId === datum.itemId) &&\n strokeWidth !== undefined ? strokeWidth : defaultStrokeWidth;\n };\n Series.prototype.fireNodeClickEvent = function (event, datum) { };\n Series.prototype.toggleSeriesItem = function (itemId, enabled) {\n this.visible = enabled;\n };\n // Each series is expected to have its own logic to efficiently update its nodes\n // on hightlight changes.\n Series.prototype.onHighlightChange = function () { };\n Series.prototype.fixNumericExtent = function (extent, type, axis) {\n if (!extent) {\n return [0, 1];\n }\n var _a = __read(extent, 2), min = _a[0], max = _a[1];\n min = +min;\n max = +max;\n if (min === 0 && max === 0) {\n // domain has zero length and the single valid value is 0. Use the default of [0, 1].\n return [0, 1];\n }\n if (min === max) {\n // domain has zero length, there is only a single valid value in data\n if (axis instanceof TimeAxis) { // numbers in domain correspond to Unix timestamps\n // automatically expand domain by 1 in each direction\n min -= 1;\n max += 1;\n }\n else {\n var padding = Math.abs(min * 0.01);\n min -= padding;\n max += padding;\n }\n }\n if (!(isNumber(min) && isNumber(max))) {\n return [0, 1];\n }\n return [min, max];\n };\n Series.highlightedZIndex = 1000000000000;\n __decorate([\n reactive('dataChange')\n ], Series.prototype, \"data\", void 0);\n __decorate([\n reactive('dataChange')\n ], Series.prototype, \"visible\", void 0);\n __decorate([\n reactive('layoutChange')\n ], Series.prototype, \"showInLegend\", void 0);\n return Series;\n}(Observable));\nexport { Series };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Observable, reactive } from \"../../util/observable\";\nimport { Circle } from \"../marker/circle\";\nvar SeriesMarker = /** @class */ (function (_super) {\n __extends(SeriesMarker, _super);\n function SeriesMarker() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.enabled = true;\n /**\n * One of the predefined marker names, or a marker constructor function (for user-defined markers).\n * A series will create one marker instance per data point.\n */\n _this.shape = Circle;\n _this.size = 6;\n /**\n * In case a series has the `sizeKey` set, the `sizeKey` values along with the `size` and `maxSize` configs\n * will be used to determine the size of the marker. All values will be mapped to a marker size\n * within the `[size, maxSize]` range, where the largest values will correspond to the `maxSize`\n * and the lowest to the `size`.\n */\n _this.maxSize = 30;\n _this.strokeWidth = 1;\n return _this;\n }\n __decorate([\n reactive('change')\n ], SeriesMarker.prototype, \"enabled\", void 0);\n __decorate([\n reactive('change')\n ], SeriesMarker.prototype, \"shape\", void 0);\n __decorate([\n reactive('change')\n ], SeriesMarker.prototype, \"size\", void 0);\n __decorate([\n reactive('change')\n ], SeriesMarker.prototype, \"maxSize\", void 0);\n __decorate([\n reactive('change')\n ], SeriesMarker.prototype, \"domain\", void 0);\n __decorate([\n reactive('change')\n ], SeriesMarker.prototype, \"fill\", void 0);\n __decorate([\n reactive('change')\n ], SeriesMarker.prototype, \"stroke\", void 0);\n __decorate([\n reactive('change')\n ], SeriesMarker.prototype, \"strokeWidth\", void 0);\n __decorate([\n reactive('change')\n ], SeriesMarker.prototype, \"fillOpacity\", void 0);\n __decorate([\n reactive('change')\n ], SeriesMarker.prototype, \"strokeOpacity\", void 0);\n return SeriesMarker;\n}(Observable));\nexport { SeriesMarker };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Series } from \"../series\";\nimport { ChartAxisDirection } from \"../../chartAxis\";\nimport { SeriesMarker } from \"../seriesMarker\";\nvar PolarSeries = /** @class */ (function (_super) {\n __extends(PolarSeries, _super);\n function PolarSeries() {\n var _a;\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.directionKeys = (_a = {},\n _a[ChartAxisDirection.X] = ['angleKey'],\n _a[ChartAxisDirection.Y] = ['radiusKey'],\n _a);\n /**\n * The center of the polar series (for example, the center of a pie).\n * If the polar chart has multiple series, all of them will have their\n * center set to the same value as a result of the polar chart layout.\n * The center coordinates are not supposed to be set by the user.\n */\n _this.centerX = 0;\n _this.centerY = 0;\n /**\n * The maximum radius the series can use.\n * This value is set automatically as a result of the polar chart layout\n * and is not supposed to be set by the user.\n */\n _this.radius = 0;\n return _this;\n }\n return PolarSeries;\n}(Series));\nexport { PolarSeries };\nvar PolarSeriesMarker = /** @class */ (function (_super) {\n __extends(PolarSeriesMarker, _super);\n function PolarSeriesMarker() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return PolarSeriesMarker;\n}(SeriesMarker));\nexport { PolarSeriesMarker };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Chart } from \"./chart\";\nimport { PolarSeries } from \"./series/polar/polarSeries\";\nimport { Padding } from \"../util/padding\";\nimport { BBox } from \"../scene/bbox\";\nvar PolarChart = /** @class */ (function (_super) {\n __extends(PolarChart, _super);\n function PolarChart(document) {\n if (document === void 0) { document = window.document; }\n var _this = _super.call(this, document) || this;\n _this.padding = new Padding(40);\n _this.scene.root.append(_this.legend.group);\n _this.padding.addEventListener('layoutChange', _this.scheduleLayout, _this);\n return _this;\n }\n Object.defineProperty(PolarChart.prototype, \"seriesRoot\", {\n get: function () {\n return this.scene.root;\n },\n enumerable: true,\n configurable: true\n });\n PolarChart.prototype.performLayout = function () {\n var shrinkRect = new BBox(0, 0, this.width, this.height);\n this.positionCaptions();\n this.positionLegend();\n var captionAutoPadding = this.captionAutoPadding;\n shrinkRect.y += captionAutoPadding;\n shrinkRect.height -= captionAutoPadding;\n if (this.legend.enabled && this.legend.data.length) {\n var legendAutoPadding = this.legendAutoPadding;\n shrinkRect.x += legendAutoPadding.left;\n shrinkRect.y += legendAutoPadding.top;\n shrinkRect.width -= legendAutoPadding.left + legendAutoPadding.right;\n shrinkRect.height -= legendAutoPadding.top + legendAutoPadding.bottom;\n var legendPadding = this.legend.spacing;\n switch (this.legend.position) {\n case 'right':\n shrinkRect.width -= legendPadding;\n break;\n case 'bottom':\n shrinkRect.height -= legendPadding;\n break;\n case 'left':\n shrinkRect.x += legendPadding;\n shrinkRect.width -= legendPadding;\n break;\n case 'top':\n shrinkRect.y += legendPadding;\n shrinkRect.height -= legendPadding;\n break;\n }\n }\n var padding = this.padding;\n shrinkRect.x += padding.left;\n shrinkRect.y += padding.top;\n shrinkRect.width -= padding.left + padding.right;\n shrinkRect.height -= padding.top + padding.bottom;\n this.seriesRect = shrinkRect;\n var centerX = shrinkRect.x + shrinkRect.width / 2;\n var centerY = shrinkRect.y + shrinkRect.height / 2;\n var radius = Math.max(0, Math.min(shrinkRect.width, shrinkRect.height) / 2); // radius shouldn't be negative\n this.series.forEach(function (series) {\n if (series instanceof PolarSeries) {\n series.centerX = centerX;\n series.centerY = centerY;\n series.radius = radius;\n series.update();\n }\n });\n };\n PolarChart.className = 'PolarChart';\n PolarChart.type = 'polar';\n return PolarChart;\n}(Chart));\nexport { PolarChart };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Series } from \"../series\";\nimport { ChartAxisDirection } from \"../../chartAxis\";\nimport { SeriesMarker } from \"../seriesMarker\";\nimport { isContinuous, isDiscrete } from \"../../../util/value\";\nvar CartesianSeries = /** @class */ (function (_super) {\n __extends(CartesianSeries, _super);\n function CartesianSeries() {\n var _a;\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.directionKeys = (_a = {},\n _a[ChartAxisDirection.X] = ['xKey'],\n _a[ChartAxisDirection.Y] = ['yKey'],\n _a);\n return _this;\n }\n /**\n * Note: we are passing `isContinuousX` and `isContinuousY` into this method because it will\n * typically be called inside a loop and this check only needs to happen once.\n * @param x A domain value to be plotted along the x-axis.\n * @param y A domain value to be plotted along the y-axis.\n * @param isContinuousX Typically this will be the value of `xAxis.scale instanceof ContinuousScale`.\n * @param isContinuousY Typically this will be the value of `yAxis.scale instanceof ContinuousScale`.\n * @returns `[x, y]`, if both x and y are valid domain values for their respective axes/scales, or `undefined`.\n */\n CartesianSeries.prototype.checkDomainXY = function (x, y, isContinuousX, isContinuousY) {\n var isValidDatum = (isContinuousX && isContinuous(x) || isDiscrete(x)) &&\n (isContinuousY && isContinuous(y) || isDiscrete(y));\n return isValidDatum ? [x, y] : undefined;\n };\n /**\n * Note: we are passing the xAxis and yAxis because the calling code is supposed to make sure\n * that series has both of them defined, and also to avoid one level of indirection,\n * e.g. `this.xAxis!.inRange(x)`, both of which are suboptimal in tight loops where this method is used.\n * @param x A range value to be plotted along the x-axis.\n * @param y A range value to be plotted along the y-axis.\n * @param xAxis The series' x-axis.\n * @param yAxis The series' y-axis.\n * @returns\n */\n CartesianSeries.prototype.checkRangeXY = function (x, y, xAxis, yAxis) {\n return !isNaN(x) && !isNaN(y) && xAxis.inRange(x) && yAxis.inRange(y);\n };\n return CartesianSeries;\n}(Series));\nexport { CartesianSeries };\nvar CartesianSeriesMarker = /** @class */ (function (_super) {\n __extends(CartesianSeriesMarker, _super);\n function CartesianSeriesMarker() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.formatter = undefined;\n return _this;\n }\n return CartesianSeriesMarker;\n}(SeriesMarker));\nexport { CartesianSeriesMarker };\n","export function equal(a, b) {\n if (a === b)\n return true;\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor)\n return false;\n var length_1, i = void 0;\n if (Array.isArray(a)) {\n length_1 = a.length;\n if (length_1 != b.length)\n return false;\n for (i = length_1; i-- !== 0;)\n if (!equal(a[i], b[i]))\n return false;\n return true;\n }\n // if ((a instanceof Map) && (b instanceof Map)) {\n // if (a.size !== b.size) return false;\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // for (i of a.entries())\n // if (!equal(i[1], b.get(i[0]))) return false;\n // return true;\n // }\n //\n // if ((a instanceof Set) && (b instanceof Set)) {\n // if (a.size !== b.size) return false;\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // return true;\n // }\n //\n // if (ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n // length = a.length;\n // if (length != b.length) return false;\n // for (i = length; i-- !== 0;)\n // if (a[i] !== b[i]) return false;\n // return true;\n // }\n if (a.constructor === RegExp)\n return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf)\n return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString)\n return a.toString() === b.toString();\n var keys = Object.keys(a);\n length_1 = keys.length;\n if (length_1 !== Object.keys(b).length)\n return false;\n for (i = length_1; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i]))\n return false;\n for (i = length_1; i-- !== 0;) {\n var key = keys[i];\n if (!equal(a[key], b[key]))\n return false;\n }\n return true;\n }\n // true if both NaN, false otherwise\n return a !== a && b !== b;\n}\n","var __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nimport { locale } from \"./time/format/defaultLocale\";\nvar interpolatePattern = /(#\\{(.*?)\\})/g;\nexport function interpolate(input, values, formats) {\n return input.replace(interpolatePattern, function () {\n var name = arguments[2];\n var _a = __read(name.split(':'), 2), valueName = _a[0], formatName = _a[1];\n var value = values[valueName];\n if (typeof value === 'number') {\n var format = formatName && formats && formats[formatName];\n if (format) {\n var _b = format, locales = _b.locales, options = _b.options;\n return value.toLocaleString(locales, options);\n }\n return String(value);\n }\n if (value instanceof Date) {\n var format = formatName && formats && formats[formatName];\n if (typeof format === 'string') {\n var formatter = locale.format(format);\n return formatter(value);\n }\n return value.toDateString();\n }\n if (typeof value === 'string' || (value && value.toString)) {\n return String(value);\n }\n return '';\n });\n}\n","var element = null;\nexport function sanitizeHtml(text) {\n element = element || document.createElement('div');\n if (!text) {\n return '';\n }\n element.innerText = text;\n return element.innerHTML;\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nimport { Group } from \"../../../scene/group\";\nimport { Selection } from \"../../../scene/selection\";\nimport { SeriesTooltip } from \"../series\";\nimport { PointerEvents } from \"../../../scene/node\";\nimport { Path } from \"../../../scene/shape/path\";\nimport { CartesianSeries, CartesianSeriesMarker } from \"./cartesianSeries\";\nimport { ChartAxisDirection } from \"../../chartAxis\";\nimport { getMarker } from \"../../marker/util\";\nimport { toTooltipHtml } from \"../../chart\";\nimport { extent } from \"../../../util/array\";\nimport { equal } from \"../../../util/equal\";\nimport { reactive } from \"../../../util/observable\";\nimport { interpolate } from \"../../../util/string\";\nimport { Text } from \"../../../scene/shape/text\";\nimport { Label } from \"../../label\";\nimport { sanitizeHtml } from \"../../../util/sanitize\";\nimport { isContinuous, isDiscrete, isNumber } from \"../../../util/value\";\nimport { clamper, ContinuousScale } from \"../../../scale/continuousScale\";\nvar AreaSeriesLabel = /** @class */ (function (_super) {\n __extends(AreaSeriesLabel, _super);\n function AreaSeriesLabel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n reactive('change')\n ], AreaSeriesLabel.prototype, \"formatter\", void 0);\n return AreaSeriesLabel;\n}(Label));\nvar AreaSeriesTooltip = /** @class */ (function (_super) {\n __extends(AreaSeriesTooltip, _super);\n function AreaSeriesTooltip() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n reactive('change')\n ], AreaSeriesTooltip.prototype, \"renderer\", void 0);\n __decorate([\n reactive('change')\n ], AreaSeriesTooltip.prototype, \"format\", void 0);\n return AreaSeriesTooltip;\n}(SeriesTooltip));\nexport { AreaSeriesTooltip };\nvar AreaSeries = /** @class */ (function (_super) {\n __extends(AreaSeries, _super);\n function AreaSeries() {\n var _this = _super.call(this) || this;\n _this.tooltip = new AreaSeriesTooltip();\n _this.areaGroup = _this.group.insertBefore(new Group, _this.pickGroup);\n _this.strokeGroup = _this.group.insertBefore(new Group, _this.pickGroup);\n _this.markerGroup = _this.pickGroup.appendChild(new Group);\n _this.labelGroup = _this.group.appendChild(new Group);\n _this.fillSelection = Selection.select(_this.areaGroup).selectAll();\n _this.strokeSelection = Selection.select(_this.strokeGroup).selectAll();\n _this.markerSelection = Selection.select(_this.markerGroup).selectAll();\n _this.labelSelection = Selection.select(_this.labelGroup).selectAll();\n /**\n * The assumption is that the values will be reset (to `true`)\n * in the {@link yKeys} setter.\n */\n _this.seriesItemEnabled = new Map();\n _this.xData = [];\n _this.yData = [];\n _this.fillSelectionData = [];\n _this.strokeSelectionData = [];\n _this.markerSelectionData = [];\n _this.labelSelectionData = [];\n _this.yDomain = [];\n _this.xDomain = [];\n _this.directionKeys = {\n x: ['xKey'],\n y: ['yKeys']\n };\n _this.marker = new CartesianSeriesMarker();\n _this.label = new AreaSeriesLabel();\n _this.fills = [\n '#c16068',\n '#a2bf8a',\n '#ebcc87',\n '#80a0c3',\n '#b58dae',\n '#85c0d1'\n ];\n _this.strokes = [\n '#874349',\n '#718661',\n '#a48f5f',\n '#5a7088',\n '#7f637a',\n '#5d8692'\n ];\n _this.fillOpacity = 1;\n _this.strokeOpacity = 1;\n _this.lineDash = [0];\n _this.lineDashOffset = 0;\n _this._xKey = '';\n _this.xName = '';\n _this._yKeys = [];\n _this.yNames = [];\n _this.strokeWidth = 2;\n _this.addEventListener('update', _this.scheduleUpdate);\n var _a = _this, marker = _a.marker, label = _a.label;\n marker.enabled = false;\n marker.addPropertyListener('shape', _this.onMarkerShapeChange, _this);\n marker.addEventListener('change', _this.scheduleUpdate, _this);\n label.enabled = false;\n label.addEventListener('change', _this.scheduleUpdate, _this);\n return _this;\n }\n AreaSeries.prototype.onMarkerShapeChange = function () {\n this.markerSelection = this.markerSelection.setData([]);\n this.markerSelection.exit.remove();\n this.fireEvent({ type: 'legendChange' });\n };\n Object.defineProperty(AreaSeries.prototype, \"xKey\", {\n get: function () {\n return this._xKey;\n },\n set: function (value) {\n if (this._xKey !== value) {\n this._xKey = value;\n this.xData = [];\n this.scheduleData();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AreaSeries.prototype, \"yKeys\", {\n get: function () {\n return this._yKeys;\n },\n set: function (values) {\n if (!equal(this._yKeys, values)) {\n this._yKeys = values;\n this.yData = [];\n var seriesItemEnabled_1 = this.seriesItemEnabled;\n seriesItemEnabled_1.clear();\n values.forEach(function (key) { return seriesItemEnabled_1.set(key, true); });\n this.scheduleData();\n }\n },\n enumerable: true,\n configurable: true\n });\n AreaSeries.prototype.setColors = function (fills, strokes) {\n this.fills = fills;\n this.strokes = strokes;\n };\n Object.defineProperty(AreaSeries.prototype, \"normalizedTo\", {\n get: function () {\n return this._normalizedTo;\n },\n set: function (value) {\n var absValue = value ? Math.abs(value) : undefined;\n if (this._normalizedTo !== absValue) {\n this._normalizedTo = absValue;\n this.scheduleData();\n }\n },\n enumerable: true,\n configurable: true\n });\n AreaSeries.prototype.processData = function () {\n var e_1, _a;\n var _b = this, xKey = _b.xKey, yKeys = _b.yKeys, seriesItemEnabled = _b.seriesItemEnabled, xAxis = _b.xAxis, yAxis = _b.yAxis, normalizedTo = _b.normalizedTo;\n var data = xKey && yKeys.length && this.data ? this.data : [];\n if (!xAxis || !yAxis) {\n return false;\n }\n // If the data is an array of rows like so:\n //\n // [{\n // xKy: 'Jan',\n // yKey1: 5,\n // yKey2: 7,\n // yKey3: -9,\n // }, {\n // xKey: 'Feb',\n // yKey1: 10,\n // yKey2: -15,\n // yKey3: 20\n // }]\n //\n var isContinuousX = xAxis.scale instanceof ContinuousScale;\n var isContinuousY = yAxis.scale instanceof ContinuousScale;\n var normalized = normalizedTo && isFinite(normalizedTo);\n var keysFound = true; // only warn once\n this.xData = data.map(function (datum) {\n if (keysFound && !(xKey in datum)) {\n keysFound = false;\n console.warn(\"The key '\" + xKey + \"' was not found in the data: \", datum);\n }\n if (isContinuousX) {\n return isContinuous(datum[xKey]) ? datum[xKey] : undefined;\n }\n else {\n // i.e. category axis\n return isDiscrete(datum[xKey]) ? datum[xKey] : String(datum[xKey]);\n }\n });\n this.yData = data.map(function (datum) { return yKeys.map(function (yKey) {\n if (keysFound && !(yKey in datum)) {\n keysFound = false;\n console.warn(\"The key '\" + yKey + \"' was not found in the data: \", datum);\n }\n var value = datum[yKey];\n if (!seriesItemEnabled.get(yKey)) {\n return 0;\n }\n if (isContinuousY) {\n return isContinuous(value) ? value : normalized ? 0 : undefined;\n }\n else {\n return isDiscrete(value) ? value : String(value);\n }\n }); });\n this.xDomain = isContinuousX ? this.fixNumericExtent(extent(this.xData, isContinuous), 'x', xAxis) : this.xData;\n // xData: ['Jan', 'Feb']\n //\n // yData: [\n // [5, 7, -9],\n // [10, -15, 20]\n // ]\n var yData = this.yData;\n var processedYData = [];\n var yMin = 0;\n var yMax = 0;\n try {\n for (var yData_1 = __values(yData), yData_1_1 = yData_1.next(); !yData_1_1.done; yData_1_1 = yData_1.next()) {\n var stack = yData_1_1.value;\n // find the sum of y values in the stack, used for normalization of stacked areas and determining yDomain of data\n var total = { sum: 0, absSum: 0 };\n for (var i = 0; i < stack.length; i++) {\n var y = +stack[i]; // convert to number as the value could be a Date object\n total.absSum += Math.abs(y);\n total.sum += y;\n if (total.sum > yMax) {\n yMax = total.sum;\n }\n else if (total.sum < yMin) {\n yMin = total.sum;\n }\n }\n var normalizedTotal = 0;\n for (var i = 0; i < stack.length; i++) {\n if (normalized && normalizedTo) {\n // normalize y values using the absolute sum of y values in the stack\n var normalizedY = +stack[i] / total.absSum * normalizedTo;\n stack[i] = normalizedY;\n // sum normalized values to get updated yMin and yMax of normalized area\n normalizedTotal += normalizedY;\n if (normalizedTotal > yMax) {\n yMax = normalizedTotal;\n }\n else if (normalizedTotal < yMin) {\n yMin = normalizedTotal;\n }\n }\n // TODO: test performance to see impact of this\n // process data to be in the format required for creating node data and rendering area paths\n (processedYData[i] || (processedYData[i] = [])).push(stack[i]);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (yData_1_1 && !yData_1_1.done && (_a = yData_1.return)) _a.call(yData_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n if (normalized && normalizedTo) {\n // Multiplier to control the unused whitespace in the y domain, value selected by subjective visual 'niceness'.\n var domainWhitespaceAdjustment = 0.5;\n // set the yMin and yMax based on cumulative sum of normalized values\n yMin = yMin < (-normalizedTo * domainWhitespaceAdjustment) ? -normalizedTo : yMin;\n yMax = yMax > (normalizedTo * domainWhitespaceAdjustment) ? normalizedTo : yMax;\n }\n this.yData = processedYData;\n this.yDomain = this.fixNumericExtent([yMin, yMax], 'y', yAxis);\n this.fireEvent({ type: 'dataProcessed' });\n return true;\n };\n AreaSeries.prototype.findLargestMinMax = function (totals) {\n var e_2, _a;\n var min = 0;\n var max = 0;\n try {\n for (var totals_1 = __values(totals), totals_1_1 = totals_1.next(); !totals_1_1.done; totals_1_1 = totals_1.next()) {\n var total = totals_1_1.value;\n if (total.min < min) {\n min = total.min;\n }\n if (total.max > max) {\n max = total.max;\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (totals_1_1 && !totals_1_1.done && (_a = totals_1.return)) _a.call(totals_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n return { min: min, max: max };\n };\n AreaSeries.prototype.getDomain = function (direction) {\n if (direction === ChartAxisDirection.X) {\n return this.xDomain;\n }\n else {\n return this.yDomain;\n }\n };\n AreaSeries.prototype.update = function () {\n this.updatePending = false;\n this.updateSelections();\n this.updateNodes();\n };\n AreaSeries.prototype.updateSelections = function () {\n if (!this.nodeDataPending) {\n return;\n }\n this.nodeDataPending = false;\n this.createSelectionData();\n this.updateFillSelection();\n this.updateStrokeSelection();\n this.updateMarkerSelection();\n this.updateLabelSelection();\n };\n AreaSeries.prototype.updateNodes = function () {\n this.group.visible = this.visible && this.xData.length > 0 && this.yData.length > 0;\n this.updateFillNodes();\n this.updateStrokeNodes();\n this.updateMarkerNodes();\n this.updateLabelNodes();\n };\n AreaSeries.prototype.createSelectionData = function () {\n var _this = this;\n var _a = this, data = _a.data, xAxis = _a.xAxis, yAxis = _a.yAxis, xData = _a.xData, yData = _a.yData, labelSelectionData = _a.labelSelectionData, markerSelectionData = _a.markerSelectionData, strokeSelectionData = _a.strokeSelectionData, fillSelectionData = _a.fillSelectionData, xKey = _a.xKey;\n if (!data || !xAxis || !yAxis || !xData.length || !yData.length) {\n return;\n }\n var _b = this, yKeys = _b.yKeys, marker = _b.marker, label = _b.label, fills = _b.fills, strokes = _b.strokes;\n var xScale = xAxis.scale;\n var yScale = yAxis.scale;\n var continuousY = yScale instanceof ContinuousScale;\n var xOffset = (xScale.bandwidth || 0) / 2;\n markerSelectionData.length = 0;\n labelSelectionData.length = 0;\n strokeSelectionData.length = 0;\n fillSelectionData.length = 0;\n var cumulativePathValues = new Array(xData.length).fill(null).map(function () { return ({ left: 0, right: 0 }); });\n var cumulativeMarkerValues = new Array(xData.length).fill(0);\n var createPathCoordinates = function (xDatum, yDatum, idx, side) {\n var x = xScale.convert(xDatum) + xOffset;\n var prevY = cumulativePathValues[idx][side];\n var currY = cumulativePathValues[idx][side] + yDatum;\n var prevYCoordinate = yScale.convert(prevY, continuousY ? clamper : undefined);\n var currYCoordinate = yScale.convert(currY, continuousY ? clamper : undefined);\n cumulativePathValues[idx][side] = currY;\n return [\n { x: x, y: currYCoordinate },\n { x: x, y: prevYCoordinate },\n ];\n };\n var createMarkerCoordinate = function (xDatum, yDatum, idx, rawYDatum) {\n var currY;\n // if not normalized, the invalid data points will be processed as `undefined` in processData()\n // if normalized, the invalid data points will be processed as 0 rather than `undefined`\n // check if unprocessed datum is valid as we only want to show markers for valid points\n var normalized = _this.normalizedTo && isFinite(_this.normalizedTo);\n var normalizedAndValid = normalized && continuousY && isContinuous(rawYDatum);\n if (!normalized || normalizedAndValid) {\n currY = cumulativeMarkerValues[idx] += yDatum;\n }\n var x = xScale.convert(xDatum) + xOffset;\n var y = yScale.convert(currY, continuousY ? clamper : undefined);\n return { x: x, y: y };\n };\n yData.forEach(function (seriesYs, seriesIdx) {\n var yKey = yKeys[seriesIdx];\n var fillSelectionForSeries = fillSelectionData[seriesIdx] || (fillSelectionData[seriesIdx] = { itemId: yKey, points: [] });\n var fillPoints = fillSelectionForSeries.points;\n var fillPhantomPoints = [];\n var strokeDatum = strokeSelectionData[seriesIdx] || (strokeSelectionData[seriesIdx] = { itemId: yKey, points: [], yValues: [] });\n var strokePoints = strokeDatum.points;\n var yValues = strokeDatum.yValues;\n seriesYs.forEach(function (yDatum, datumIdx) {\n var xDatum = xData[datumIdx];\n var nextXDatum = xData[datumIdx + 1];\n var nextYDatum = seriesYs[datumIdx + 1];\n // marker data\n var seriesDatum = data[datumIdx];\n var point = createMarkerCoordinate(xDatum, +yDatum, datumIdx, seriesDatum[yKey]);\n if (marker) {\n markerSelectionData.push({\n index: datumIdx,\n series: _this,\n itemId: yKey,\n datum: seriesDatum,\n yValue: yDatum,\n yKey: yKey,\n point: point,\n fill: fills[seriesIdx % fills.length],\n stroke: strokes[seriesIdx % strokes.length]\n });\n }\n // label data\n var labelText;\n if (label.formatter) {\n labelText = label.formatter({ value: yDatum });\n }\n else {\n labelText = isNumber(yDatum) ? Number(yDatum).toFixed(2) : String(yDatum);\n }\n if (label) {\n labelSelectionData.push({\n index: datumIdx,\n itemId: yKey,\n point: point,\n label: _this.seriesItemEnabled.get(yKey) && labelText ? {\n text: labelText,\n fontStyle: label.fontStyle,\n fontWeight: label.fontWeight,\n fontSize: label.fontSize,\n fontFamily: label.fontFamily,\n textAlign: 'center',\n textBaseline: 'bottom',\n fill: label.color\n } : undefined\n });\n }\n // fill data\n // Handle data in pairs of current and next x and y values\n var windowX = [xDatum, nextXDatum];\n var windowY = [yDatum, nextYDatum];\n if (windowX.some(function (v) { return v == undefined; })) {\n return;\n }\n if (windowY.some(function (v) { return v == undefined; })) {\n windowY[0] = 0;\n windowY[1] = 0;\n }\n var currCoordinates = createPathCoordinates(windowX[0], +windowY[0], datumIdx, 'right');\n fillPoints.push(currCoordinates[0]);\n fillPhantomPoints.push(currCoordinates[1]);\n var nextCoordinates = createPathCoordinates(windowX[1], +windowY[1], datumIdx, 'left');\n fillPoints.push(nextCoordinates[0]);\n fillPhantomPoints.push(nextCoordinates[1]);\n // stroke data\n strokePoints.push({ x: NaN, y: NaN }); // moveTo\n yValues.push(undefined);\n strokePoints.push(currCoordinates[0]);\n yValues.push(yDatum);\n if (nextYDatum !== undefined) {\n strokePoints.push(nextCoordinates[0]);\n yValues.push(yDatum);\n }\n });\n fillPoints.push.apply(fillPoints, __spread(fillPhantomPoints.slice().reverse()));\n });\n };\n AreaSeries.prototype.updateFillSelection = function () {\n var updateFills = this.fillSelection.setData(this.fillSelectionData);\n updateFills.exit.remove();\n var enterFills = updateFills.enter.append(Path)\n .each(function (path) {\n path.lineJoin = 'round';\n path.stroke = undefined;\n path.pointerEvents = PointerEvents.None;\n });\n this.fillSelection = updateFills.merge(enterFills);\n };\n AreaSeries.prototype.updateFillNodes = function () {\n var _this = this;\n var _a = this, fills = _a.fills, fillOpacity = _a.fillOpacity, strokeOpacity = _a.strokeOpacity, strokeWidth = _a.strokeWidth, shadow = _a.shadow, seriesItemEnabled = _a.seriesItemEnabled;\n this.fillSelection.each(function (shape, datum, index) {\n shape.fill = fills[index % fills.length];\n shape.fillOpacity = fillOpacity;\n shape.strokeOpacity = strokeOpacity;\n shape.strokeWidth = strokeWidth;\n shape.lineDash = _this.lineDash;\n shape.lineDashOffset = _this.lineDashOffset;\n shape.fillShadow = shadow;\n shape.visible = !!seriesItemEnabled.get(datum.itemId);\n shape.opacity = _this.getOpacity(datum);\n var points = datum.points;\n var path = shape.path;\n path.clear();\n points.forEach(function (_a, i) {\n var x = _a.x, y = _a.y;\n if (i > 0) {\n path.lineTo(x, y);\n }\n else {\n path.moveTo(x, y);\n }\n });\n path.closePath();\n });\n };\n AreaSeries.prototype.updateStrokeSelection = function () {\n var updateStrokes = this.strokeSelection.setData(this.strokeSelectionData);\n updateStrokes.exit.remove();\n var enterStrokes = updateStrokes.enter.append(Path)\n .each(function (path) {\n path.fill = undefined;\n path.lineJoin = path.lineCap = 'round';\n path.pointerEvents = PointerEvents.None;\n });\n this.strokeSelection = updateStrokes.merge(enterStrokes);\n };\n AreaSeries.prototype.updateStrokeNodes = function () {\n var _this = this;\n if (!this.data) {\n return;\n }\n var _a = this, strokes = _a.strokes, strokeOpacity = _a.strokeOpacity, seriesItemEnabled = _a.seriesItemEnabled;\n var moveTo = true;\n this.strokeSelection.each(function (shape, datum, index) {\n shape.visible = !!seriesItemEnabled.get(datum.itemId);\n shape.opacity = _this.getOpacity(datum);\n shape.stroke = strokes[index % strokes.length];\n shape.strokeWidth = _this.getStrokeWidth(_this.strokeWidth, datum);\n shape.strokeOpacity = strokeOpacity;\n shape.lineDash = _this.lineDash;\n shape.lineDashOffset = _this.lineDashOffset;\n var points = datum.points, yValues = datum.yValues;\n var path = shape.path;\n path.clear();\n for (var i = 0; i < points.length; i++) {\n var _a = points[i], x = _a.x, y = _a.y;\n if (yValues[i] === undefined) {\n moveTo = true;\n }\n else {\n if (moveTo) {\n path.moveTo(x, y);\n moveTo = false;\n }\n else {\n path.lineTo(x, y);\n }\n }\n }\n });\n };\n AreaSeries.prototype.updateMarkerSelection = function () {\n var MarkerShape = getMarker(this.marker.shape);\n var data = MarkerShape ? this.markerSelectionData : [];\n var updateMarkers = this.markerSelection.setData(data);\n updateMarkers.exit.remove();\n var enterMarkers = updateMarkers.enter.append(MarkerShape);\n this.markerSelection = updateMarkers.merge(enterMarkers);\n };\n AreaSeries.prototype.updateMarkerNodes = function () {\n var _this = this;\n if (!this.chart) {\n return;\n }\n var _a = this, xKey = _a.xKey, marker = _a.marker, seriesItemEnabled = _a.seriesItemEnabled, yKeys = _a.yKeys, fills = _a.fills, strokes = _a.strokes, highlightedDatum = _a.chart.highlightedDatum, _b = _a.highlightStyle, deprecatedFill = _b.fill, deprecatedStroke = _b.stroke, deprecatedStrokeWidth = _b.strokeWidth, _c = _b.item, _d = _c.fill, highlightedFill = _d === void 0 ? deprecatedFill : _d, _e = _c.stroke, highlightedStroke = _e === void 0 ? deprecatedStroke : _e, _f = _c.strokeWidth, highlightedDatumStrokeWidth = _f === void 0 ? deprecatedStrokeWidth : _f;\n var size = marker.size, formatter = marker.formatter;\n var markerStrokeWidth = marker.strokeWidth !== undefined ? marker.strokeWidth : this.strokeWidth;\n this.markerSelection.each(function (node, datum) {\n var yKeyIndex = yKeys.indexOf(datum.yKey);\n var isDatumHighlighted = datum === highlightedDatum;\n var fill = isDatumHighlighted && highlightedFill !== undefined ? highlightedFill : marker.fill || fills[yKeyIndex % fills.length];\n var stroke = isDatumHighlighted && highlightedStroke !== undefined ? highlightedStroke : marker.stroke || strokes[yKeyIndex % fills.length];\n var strokeWidth = isDatumHighlighted && highlightedDatumStrokeWidth !== undefined\n ? highlightedDatumStrokeWidth\n : markerStrokeWidth;\n var format = undefined;\n if (formatter) {\n format = formatter({\n datum: datum.datum,\n xKey: xKey,\n yKey: datum.yKey,\n fill: fill,\n stroke: stroke,\n strokeWidth: strokeWidth,\n size: size,\n highlighted: isDatumHighlighted\n });\n }\n node.fill = format && format.fill || fill;\n node.stroke = format && format.stroke || stroke;\n node.strokeWidth = format && format.strokeWidth !== undefined\n ? format.strokeWidth\n : strokeWidth;\n node.size = format && format.size !== undefined\n ? format.size\n : size;\n node.translationX = datum.point.x;\n node.translationY = datum.point.y;\n node.visible = marker.enabled && node.size > 0 && !!seriesItemEnabled.get(datum.yKey) && !isNaN(datum.point.x) && !isNaN(datum.point.y);\n node.opacity = _this.getOpacity(datum);\n });\n };\n AreaSeries.prototype.updateLabelSelection = function () {\n var updateLabels = this.labelSelection.setData(this.labelSelectionData);\n updateLabels.exit.remove();\n var enterLabels = updateLabels.enter.append(Text);\n this.labelSelection = updateLabels.merge(enterLabels);\n };\n AreaSeries.prototype.updateLabelNodes = function () {\n var _this = this;\n if (!this.chart) {\n return;\n }\n var _a = this.label, labelEnabled = _a.enabled, fontStyle = _a.fontStyle, fontWeight = _a.fontWeight, fontSize = _a.fontSize, fontFamily = _a.fontFamily, color = _a.color;\n this.labelSelection.each(function (text, datum) {\n var point = datum.point, label = datum.label;\n if (label && labelEnabled) {\n text.fontStyle = fontStyle;\n text.fontWeight = fontWeight;\n text.fontSize = fontSize;\n text.fontFamily = fontFamily;\n text.textAlign = label.textAlign;\n text.textBaseline = label.textBaseline;\n text.text = label.text;\n text.x = point.x;\n text.y = point.y - 10;\n text.fill = color;\n text.visible = true;\n text.opacity = _this.getOpacity(datum);\n }\n else {\n text.visible = false;\n }\n });\n };\n AreaSeries.prototype.getNodeData = function () {\n return this.markerSelectionData;\n };\n AreaSeries.prototype.fireNodeClickEvent = function (event, datum) {\n this.fireEvent({\n type: 'nodeClick',\n event: event,\n series: this,\n datum: datum.datum,\n xKey: this.xKey,\n yKey: datum.yKey\n });\n };\n AreaSeries.prototype.getTooltipHtml = function (nodeDatum) {\n var xKey = this.xKey;\n var yKey = nodeDatum.yKey;\n if (!(xKey && yKey)) {\n return '';\n }\n var datum = nodeDatum.datum;\n var xValue = datum[xKey];\n var yValue = datum[yKey];\n var _a = this, xAxis = _a.xAxis, yAxis = _a.yAxis;\n if (!(xAxis && yAxis && isNumber(yValue))) {\n return '';\n }\n var _b = this, xName = _b.xName, yKeys = _b.yKeys, yNames = _b.yNames, yData = _b.yData, fills = _b.fills, strokes = _b.strokes, tooltip = _b.tooltip, marker = _b.marker;\n var size = marker.size, markerFormatter = marker.formatter, markerStrokeWidth = marker.strokeWidth, markerFill = marker.fill, markerStroke = marker.stroke;\n var xString = xAxis.formatDatum(xValue);\n var yString = yAxis.formatDatum(yValue);\n var yKeyIndex = yKeys.indexOf(yKey);\n var seriesYs = yData[yKeyIndex];\n var processedYValue = seriesYs[nodeDatum.index];\n var yName = yNames[yKeyIndex];\n var title = sanitizeHtml(yName);\n var content = sanitizeHtml(xString + ': ' + yString);\n var strokeWidth = markerStrokeWidth !== undefined ? markerStrokeWidth : this.strokeWidth;\n var fill = markerFill || fills[yKeyIndex % fills.length];\n var stroke = markerStroke || strokes[yKeyIndex % fills.length];\n var format = undefined;\n if (markerFormatter) {\n format = markerFormatter({\n datum: datum,\n xKey: xKey,\n yKey: yKey,\n fill: fill,\n stroke: stroke,\n strokeWidth: strokeWidth,\n size: size,\n highlighted: false\n });\n }\n var color = format && format.fill || fill;\n var defaults = {\n title: title,\n backgroundColor: color,\n content: content\n };\n var tooltipRenderer = tooltip.renderer, tooltipFormat = tooltip.format;\n if (tooltipFormat || tooltipRenderer) {\n var params = {\n datum: datum,\n xKey: xKey,\n xName: xName,\n xValue: xValue,\n yKey: yKey,\n yValue: yValue,\n processedYValue: processedYValue,\n yName: yName,\n color: color\n };\n if (tooltipFormat) {\n return toTooltipHtml({\n content: interpolate(tooltipFormat, params)\n }, defaults);\n }\n if (tooltipRenderer) {\n return toTooltipHtml(tooltipRenderer(params), defaults);\n }\n }\n return toTooltipHtml(defaults);\n };\n AreaSeries.prototype.listSeriesItems = function (legendData) {\n var _a = this, data = _a.data, id = _a.id, xKey = _a.xKey, yKeys = _a.yKeys, yNames = _a.yNames, seriesItemEnabled = _a.seriesItemEnabled, marker = _a.marker, fills = _a.fills, strokes = _a.strokes, fillOpacity = _a.fillOpacity, strokeOpacity = _a.strokeOpacity;\n if (data && data.length && xKey && yKeys.length) {\n yKeys.forEach(function (yKey, index) {\n legendData.push({\n id: id,\n itemId: yKey,\n enabled: seriesItemEnabled.get(yKey) || false,\n label: {\n text: yNames[index] || yKeys[index]\n },\n marker: {\n shape: marker.shape,\n fill: marker.fill || fills[index % fills.length],\n stroke: marker.stroke || strokes[index % strokes.length],\n fillOpacity: fillOpacity,\n strokeOpacity: strokeOpacity\n }\n });\n });\n }\n };\n AreaSeries.prototype.toggleSeriesItem = function (itemId, enabled) {\n this.seriesItemEnabled.set(itemId, enabled);\n this.scheduleData();\n };\n AreaSeries.className = 'AreaSeries';\n AreaSeries.type = 'area';\n __decorate([\n reactive('dataChange')\n ], AreaSeries.prototype, \"fills\", void 0);\n __decorate([\n reactive('dataChange')\n ], AreaSeries.prototype, \"strokes\", void 0);\n __decorate([\n reactive('update')\n ], AreaSeries.prototype, \"fillOpacity\", void 0);\n __decorate([\n reactive('update')\n ], AreaSeries.prototype, \"strokeOpacity\", void 0);\n __decorate([\n reactive('update')\n ], AreaSeries.prototype, \"lineDash\", void 0);\n __decorate([\n reactive('update')\n ], AreaSeries.prototype, \"lineDashOffset\", void 0);\n __decorate([\n reactive('update')\n ], AreaSeries.prototype, \"xName\", void 0);\n __decorate([\n reactive('update')\n ], AreaSeries.prototype, \"yNames\", void 0);\n __decorate([\n reactive('update')\n ], AreaSeries.prototype, \"strokeWidth\", void 0);\n __decorate([\n reactive('update')\n ], AreaSeries.prototype, \"shadow\", void 0);\n return AreaSeries;\n}(CartesianSeries));\nexport { AreaSeries };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nimport { Group } from \"../../../scene/group\";\nimport { Selection } from \"../../../scene/selection\";\nimport { Rect } from \"../../../scene/shape/rect\";\nimport { Text } from \"../../../scene/shape/text\";\nimport { BandScale } from \"../../../scale/bandScale\";\nimport { SeriesTooltip, Series } from \"../series\";\nimport { Label } from \"../../label\";\nimport { PointerEvents } from \"../../../scene/node\";\nimport { CartesianSeries } from \"./cartesianSeries\";\nimport { ChartAxisDirection, flipChartAxisDirection } from \"../../chartAxis\";\nimport { toTooltipHtml } from \"../../chart\";\nimport { findMinMax } from \"../../../util/array\";\nimport { equal } from \"../../../util/equal\";\nimport { reactive } from \"../../../util/observable\";\nimport { sanitizeHtml } from \"../../../util/sanitize\";\nimport { isDiscrete, isNumber } from \"../../../util/value\";\nimport { clamper, ContinuousScale } from \"../../../scale/continuousScale\";\nvar BarSeriesNodeTag;\n(function (BarSeriesNodeTag) {\n BarSeriesNodeTag[BarSeriesNodeTag[\"Bar\"] = 0] = \"Bar\";\n BarSeriesNodeTag[BarSeriesNodeTag[\"Label\"] = 1] = \"Label\";\n})(BarSeriesNodeTag || (BarSeriesNodeTag = {}));\nexport var BarLabelPlacement;\n(function (BarLabelPlacement) {\n BarLabelPlacement[\"Inside\"] = \"inside\";\n BarLabelPlacement[\"Outside\"] = \"outside\";\n})(BarLabelPlacement || (BarLabelPlacement = {}));\nvar BarSeriesLabel = /** @class */ (function (_super) {\n __extends(BarSeriesLabel, _super);\n function BarSeriesLabel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.placement = BarLabelPlacement.Inside;\n return _this;\n }\n __decorate([\n reactive('change')\n ], BarSeriesLabel.prototype, \"formatter\", void 0);\n __decorate([\n reactive('change')\n ], BarSeriesLabel.prototype, \"placement\", void 0);\n return BarSeriesLabel;\n}(Label));\nexport { BarSeriesLabel };\nvar BarSeriesTooltip = /** @class */ (function (_super) {\n __extends(BarSeriesTooltip, _super);\n function BarSeriesTooltip() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n reactive('change')\n ], BarSeriesTooltip.prototype, \"renderer\", void 0);\n return BarSeriesTooltip;\n}(SeriesTooltip));\nexport { BarSeriesTooltip };\nfunction flat(arr, target) {\n if (target === void 0) { target = []; }\n arr.forEach(function (v) {\n if (Array.isArray(v)) {\n flat(v, target);\n }\n else {\n target.push(v);\n }\n });\n return target;\n}\nfunction is2dArray(array) {\n return array.length > 0 && Array.isArray(array[0]);\n}\nvar BarSeries = /** @class */ (function (_super) {\n __extends(BarSeries, _super);\n function BarSeries() {\n var _a;\n var _this = _super.call(this) || this;\n // Need to put bar and label nodes into separate groups, because even though label nodes are\n // created after the bar nodes, this only guarantees that labels will always be on top of bars\n // on the first run. If on the next run more bars are added, they might clip the labels\n // rendered during the previous run.\n _this.rectGroup = _this.pickGroup.appendChild(new Group);\n _this.labelGroup = _this.group.appendChild(new Group);\n _this.rectSelection = Selection.select(_this.rectGroup).selectAll();\n _this.labelSelection = Selection.select(_this.labelGroup).selectAll();\n _this.nodeData = [];\n _this.xData = [];\n _this.yData = [];\n _this.yDomain = [];\n _this.label = new BarSeriesLabel();\n /**\n * The assumption is that the values will be reset (to `true`)\n * in the {@link yKeys} setter.\n */\n _this.seriesItemEnabled = new Map();\n _this.tooltip = new BarSeriesTooltip();\n _this.flipXY = false;\n _this.fills = [\n '#c16068',\n '#a2bf8a',\n '#ebcc87',\n '#80a0c3',\n '#b58dae',\n '#85c0d1'\n ];\n _this.strokes = [\n '#874349',\n '#718661',\n '#a48f5f',\n '#5a7088',\n '#7f637a',\n '#5d8692'\n ];\n _this.fillOpacity = 1;\n _this.strokeOpacity = 1;\n _this.lineDash = [0];\n _this.lineDashOffset = 0;\n /**\n * Used to get the position of bars within each group.\n */\n _this.groupScale = new BandScale();\n _this.directionKeys = (_a = {},\n _a[ChartAxisDirection.X] = ['xKey'],\n _a[ChartAxisDirection.Y] = ['yKeys'],\n _a);\n _this._xKey = '';\n _this._xName = '';\n _this.cumYKeyCount = [];\n _this.flatYKeys = undefined; // only set when a user used a flat array for yKeys\n _this.hideInLegend = [];\n /**\n * yKeys: [['coffee']] - regular bars, each category has a single bar that shows a value for coffee\n * yKeys: [['coffee'], ['tea'], ['milk']] - each category has three bars that show values for coffee, tea and milk\n * yKeys: [['coffee', 'tea', 'milk']] - each category has a single bar with three stacks that show values for coffee, tea and milk\n * yKeys: [['coffee', 'tea', 'milk'], ['paper', 'ink']] - each category has 2 stacked bars,\n * first showing values for coffee, tea and milk and second values for paper and ink\n */\n _this._yKeys = [];\n _this._grouped = false;\n /**\n * A map of `yKeys` to their names (used in legends and tooltips).\n * For example, if a key is `product_name` it's name can be a more presentable `Product Name`.\n */\n _this._yNames = {};\n _this._strokeWidth = 1;\n _this.addEventListener('update', _this.scheduleUpdate);\n _this.label.enabled = false;\n _this.label.addEventListener('change', _this.scheduleUpdate, _this);\n return _this;\n }\n BarSeries.prototype.getKeys = function (direction) {\n var _this = this;\n var directionKeys = this.directionKeys;\n var keys = directionKeys && directionKeys[this.flipXY ? flipChartAxisDirection(direction) : direction];\n var values = [];\n if (keys) {\n keys.forEach(function (key) {\n var value = _this[key];\n if (value) {\n if (Array.isArray(value)) {\n values = values.concat(flat(value));\n }\n else {\n values.push(value);\n }\n }\n });\n }\n return values;\n };\n Object.defineProperty(BarSeries.prototype, \"xKey\", {\n get: function () {\n return this._xKey;\n },\n set: function (value) {\n if (this._xKey !== value) {\n this._xKey = value;\n this.xData = [];\n this.scheduleData();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BarSeries.prototype, \"xName\", {\n get: function () {\n return this._xName;\n },\n set: function (value) {\n if (this._xName !== value) {\n this._xName = value;\n this.scheduleUpdate();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BarSeries.prototype, \"yKeys\", {\n get: function () {\n return this._yKeys;\n },\n set: function (yKeys) {\n var _this = this;\n var flatYKeys = undefined;\n // Convert from flat y-keys to grouped y-keys.\n if (!is2dArray(yKeys)) {\n flatYKeys = yKeys;\n yKeys = this.grouped ? flatYKeys.map(function (k) { return [k]; }) : [flatYKeys];\n }\n if (!equal(this._yKeys, yKeys)) {\n this.flatYKeys = flatYKeys ? flatYKeys : undefined;\n this._yKeys = yKeys;\n var prevYKeyCount_1 = 0;\n this.cumYKeyCount = [];\n var visibleStacks_1 = [];\n yKeys.forEach(function (stack, index) {\n if (stack.length > 0) {\n visibleStacks_1.push(String(index));\n }\n _this.cumYKeyCount.push(prevYKeyCount_1);\n prevYKeyCount_1 += stack.length;\n });\n this.yData = [];\n var seriesItemEnabled_1 = this.seriesItemEnabled;\n seriesItemEnabled_1.clear();\n yKeys.forEach(function (stack) {\n stack.forEach(function (yKey) { return seriesItemEnabled_1.set(yKey, true); });\n });\n var groupScale = this.groupScale;\n groupScale.domain = visibleStacks_1;\n groupScale.padding = 0.1;\n groupScale.round = true;\n this.scheduleData();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BarSeries.prototype, \"grouped\", {\n get: function () {\n return this._grouped;\n },\n set: function (value) {\n if (this._grouped !== value) {\n this._grouped = value;\n if (this.flatYKeys) {\n this.yKeys = this.flatYKeys;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BarSeries.prototype, \"yNames\", {\n get: function () {\n return this._yNames;\n },\n set: function (values) {\n if (Array.isArray(values) && this.flatYKeys) {\n var map_1 = {};\n this.flatYKeys.forEach(function (k, i) {\n map_1[k] = values[i];\n });\n values = map_1;\n }\n this._yNames = values;\n this.scheduleData();\n },\n enumerable: true,\n configurable: true\n });\n BarSeries.prototype.setColors = function (fills, strokes) {\n this.fills = fills;\n this.strokes = strokes;\n };\n Object.defineProperty(BarSeries.prototype, \"normalizedTo\", {\n get: function () {\n return this._normalizedTo;\n },\n set: function (value) {\n var absValue = value ? Math.abs(value) : undefined;\n if (this._normalizedTo !== absValue) {\n this._normalizedTo = absValue;\n this.scheduleData();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BarSeries.prototype, \"strokeWidth\", {\n get: function () {\n return this._strokeWidth;\n },\n set: function (value) {\n if (this._strokeWidth !== value) {\n this._strokeWidth = value;\n this.scheduleUpdate();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BarSeries.prototype, \"shadow\", {\n get: function () {\n return this._shadow;\n },\n set: function (value) {\n if (this._shadow !== value) {\n this._shadow = value;\n this.scheduleUpdate();\n }\n },\n enumerable: true,\n configurable: true\n });\n BarSeries.prototype.onHighlightChange = function () {\n this.updateRectNodes();\n };\n BarSeries.prototype.processData = function () {\n var _a = this, xKey = _a.xKey, yKeys = _a.yKeys, seriesItemEnabled = _a.seriesItemEnabled, xAxis = _a.xAxis;\n var data = xKey && yKeys.length && this.data ? this.data : [];\n if (!xAxis) {\n return false;\n }\n var keysFound = true; // only warn once\n this.xData = data.map(function (datum) {\n if (keysFound && !(xKey in datum)) {\n keysFound = false;\n console.warn(\"The key '\" + xKey + \"' was not found in the data: \", datum);\n }\n return isDiscrete(datum[xKey]) ? datum[xKey] : String(datum[xKey]);\n });\n this.yData = data.map(function (datum) { return yKeys.map(function (stack) {\n return stack.map(function (yKey) {\n if (keysFound && !(yKey in datum)) {\n keysFound = false;\n console.warn(\"The key '\" + yKey + \"' was not found in the data: \", datum);\n }\n var value = datum[yKey];\n return isFinite(value) && seriesItemEnabled.get(yKey) ? value : 0;\n });\n }); });\n // Contains min/max values for each stack in each group,\n // where min is zero and max is a positive total of all values in the stack\n // or min is a negative total of all values in the stack and max is zero.\n var yMinMax = this.yData.map(function (group) { return group.map(function (stack) { return findMinMax(stack); }); });\n var _b = this, yData = _b.yData, normalizedTo = _b.normalizedTo;\n // Calculate the sum of the absolute values of all items in each stack in each group. Used for normalization of stacked bars.\n var yAbsTotal = this.yData.map(function (group) { return group.map(function (stack) { return stack.reduce(function (acc, stack) {\n acc += Math.abs(stack);\n return acc;\n }, 0); }); });\n var yLargestMinMax = this.findLargestMinMax(yMinMax);\n var yMin;\n var yMax;\n if (normalizedTo && isFinite(normalizedTo)) {\n yMin = yLargestMinMax.min < 0 ? -normalizedTo : 0;\n yMax = yLargestMinMax.max > 0 ? normalizedTo : 0;\n yData.forEach(function (group, i) {\n group.forEach(function (stack, j) {\n stack.forEach(function (y, k) {\n stack[k] = y / yAbsTotal[i][j] * normalizedTo;\n });\n });\n });\n }\n else {\n yMin = yLargestMinMax.min;\n yMax = yLargestMinMax.max;\n }\n this.yDomain = this.fixNumericExtent([yMin, yMax], 'y', this.yAxis);\n this.fireEvent({ type: 'dataProcessed' });\n return true;\n };\n BarSeries.prototype.findLargestMinMax = function (groups) {\n var e_1, _a, e_2, _b;\n var tallestStackMin = 0;\n var tallestStackMax = 0;\n try {\n for (var groups_1 = __values(groups), groups_1_1 = groups_1.next(); !groups_1_1.done; groups_1_1 = groups_1.next()) {\n var group = groups_1_1.value;\n try {\n for (var group_1 = (e_2 = void 0, __values(group)), group_1_1 = group_1.next(); !group_1_1.done; group_1_1 = group_1.next()) {\n var stack = group_1_1.value;\n if (stack.min < tallestStackMin) {\n tallestStackMin = stack.min;\n }\n if (stack.max > tallestStackMax) {\n tallestStackMax = stack.max;\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (group_1_1 && !group_1_1.done && (_b = group_1.return)) _b.call(group_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (groups_1_1 && !groups_1_1.done && (_a = groups_1.return)) _a.call(groups_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return { min: tallestStackMin, max: tallestStackMax };\n };\n BarSeries.prototype.getDomain = function (direction) {\n if (this.flipXY) {\n direction = flipChartAxisDirection(direction);\n }\n if (direction === ChartAxisDirection.X) {\n return this.xData;\n }\n else {\n return this.yDomain;\n }\n };\n BarSeries.prototype.fireNodeClickEvent = function (event, datum) {\n this.fireEvent({\n type: 'nodeClick',\n event: event,\n series: this,\n datum: datum.datum,\n xKey: this.xKey,\n yKey: datum.yKey\n });\n };\n BarSeries.prototype.getCategoryAxis = function () {\n return this.flipXY ? this.yAxis : this.xAxis;\n };\n BarSeries.prototype.getValueAxis = function () {\n return this.flipXY ? this.xAxis : this.yAxis;\n };\n BarSeries.prototype.createNodeData = function () {\n var _this = this;\n var _a = this, chart = _a.chart, data = _a.data, visible = _a.visible;\n var xAxis = this.getCategoryAxis();\n var yAxis = this.getValueAxis();\n if (!(chart && data && visible && xAxis && yAxis) || chart.layoutPending || chart.dataPending) {\n return [];\n }\n var flipXY = this.flipXY;\n var xScale = xAxis.scale;\n var yScale = yAxis.scale;\n var _b = this, groupScale = _b.groupScale, yKeys = _b.yKeys, cumYKeyCount = _b.cumYKeyCount, fills = _b.fills, strokes = _b.strokes, strokeWidth = _b.strokeWidth, seriesItemEnabled = _b.seriesItemEnabled, xData = _b.xData, yData = _b.yData, label = _b.label;\n var labelFontStyle = label.fontStyle, labelFontWeight = label.fontWeight, labelFontSize = label.fontSize, labelFontFamily = label.fontFamily, labelColor = label.color, labelFormatter = label.formatter, labelPlacement = label.placement;\n groupScale.range = [0, xScale.bandwidth];\n var grouped = true;\n var barWidth = grouped ? groupScale.bandwidth : xScale.bandwidth;\n var nodeData = [];\n xData.forEach(function (group, groupIndex) {\n var seriesDatum = data[groupIndex];\n var x = xScale.convert(group);\n var groupYs = yData[groupIndex]; // y-data for groups of stacks\n for (var stackIndex = 0; stackIndex < groupYs.length; stackIndex++) {\n var stackYs = groupYs[stackIndex]; // y-data for a stack within a group\n var prevMinY = 0;\n var prevMaxY = 0;\n for (var levelIndex = 0; levelIndex < stackYs.length; levelIndex++) {\n var currY = +stackYs[levelIndex];\n var yKey = yKeys[stackIndex][levelIndex];\n var barX = grouped ? x + groupScale.convert(String(stackIndex)) : x;\n // Bars outside of visible range are not rendered, so we create node data\n // only for the visible subset of user data.\n if (!xAxis.inRange(barX, barWidth)) {\n continue;\n }\n var prevY = currY < 0 ? prevMinY : prevMaxY;\n var continuousY = yScale instanceof ContinuousScale;\n var y = yScale.convert(prevY + currY, continuousY ? clamper : undefined);\n var bottomY = yScale.convert(prevY, continuousY ? clamper : undefined);\n var yValue = seriesDatum[yKey]; // unprocessed y-value\n var labelText = void 0;\n if (labelFormatter) {\n labelText = labelFormatter({ value: isNumber(yValue) ? yValue : undefined });\n }\n else {\n labelText = isNumber(yValue) ? yValue.toFixed(2) : '';\n }\n var labelX = void 0;\n var labelY = void 0;\n if (flipXY) {\n labelY = barX + barWidth / 2;\n if (labelPlacement === BarLabelPlacement.Inside) {\n labelX = y + (yValue >= 0 ? -1 : 1) * Math.abs(bottomY - y) / 2;\n }\n else {\n labelX = y + (yValue >= 0 ? 1 : -1) * 4;\n }\n }\n else {\n labelX = barX + barWidth / 2;\n if (labelPlacement === BarLabelPlacement.Inside) {\n labelY = y + (yValue >= 0 ? 1 : -1) * Math.abs(bottomY - y) / 2;\n }\n else {\n labelY = y + (yValue >= 0 ? -3 : 4);\n }\n }\n var labelTextAlign = void 0;\n var labelTextBaseline = void 0;\n if (labelPlacement === BarLabelPlacement.Inside) {\n labelTextAlign = 'center';\n labelTextBaseline = 'middle';\n }\n else {\n labelTextAlign = flipXY ? (yValue >= 0 ? 'start' : 'end') : 'center';\n labelTextBaseline = flipXY ? 'middle' : (yValue >= 0 ? 'bottom' : 'top');\n }\n var colorIndex = cumYKeyCount[stackIndex] + levelIndex;\n nodeData.push({\n index: groupIndex,\n series: _this,\n itemId: yKey,\n datum: seriesDatum,\n yValue: yValue,\n yKey: yKey,\n x: flipXY ? Math.min(y, bottomY) : barX,\n y: flipXY ? barX : Math.min(y, bottomY),\n width: flipXY ? Math.abs(bottomY - y) : barWidth,\n height: flipXY ? barWidth : Math.abs(bottomY - y),\n fill: fills[colorIndex % fills.length],\n stroke: strokes[colorIndex % strokes.length],\n strokeWidth: strokeWidth,\n label: seriesItemEnabled.get(yKey) && labelText ? {\n text: labelText,\n fontStyle: labelFontStyle,\n fontWeight: labelFontWeight,\n fontSize: labelFontSize,\n fontFamily: labelFontFamily,\n textAlign: labelTextAlign,\n textBaseline: labelTextBaseline,\n fill: labelColor,\n x: labelX,\n y: labelY\n } : undefined\n });\n if (currY < 0) {\n prevMinY += currY;\n }\n else {\n prevMaxY += currY;\n }\n }\n }\n });\n return this.nodeData = nodeData;\n };\n BarSeries.prototype.update = function () {\n this.updatePending = false;\n this.updateSelections();\n this.updateNodes();\n };\n BarSeries.prototype.updateSelections = function () {\n if (!this.nodeDataPending) {\n return;\n }\n this.nodeDataPending = false;\n this.createNodeData();\n this.updateRectSelection();\n this.updateLabelSelection();\n };\n BarSeries.prototype.updateNodes = function () {\n this.group.visible = this.visible;\n this.updateRectNodes();\n this.updateLabelNodes();\n };\n BarSeries.prototype.updateRectSelection = function () {\n var updateRects = this.rectSelection.setData(this.nodeData);\n updateRects.exit.remove();\n var enterRects = updateRects.enter.append(Rect).each(function (rect) {\n rect.tag = BarSeriesNodeTag.Bar;\n rect.crisp = true;\n });\n this.rectSelection = updateRects.merge(enterRects);\n };\n BarSeries.prototype.updateRectNodes = function () {\n var _this = this;\n if (!this.chart) {\n return;\n }\n var _a = this, fills = _a.fills, strokes = _a.strokes, fillOpacity = _a.fillOpacity, strokeOpacity = _a.strokeOpacity, shadow = _a.shadow, formatter = _a.formatter, xKey = _a.xKey, flipXY = _a.flipXY, yKeys = _a.yKeys, highlightedDatum = _a.chart.highlightedDatum, _b = _a.highlightStyle, deprecatedFill = _b.fill, deprecatedStroke = _b.stroke, deprecatedStrokeWidth = _b.strokeWidth, _c = _b.item, _d = _c.fill, highlightedFill = _d === void 0 ? deprecatedFill : _d, _e = _c.stroke, highlightedStroke = _e === void 0 ? deprecatedStroke : _e, _f = _c.strokeWidth, highlightedDatumStrokeWidth = _f === void 0 ? deprecatedStrokeWidth : _f;\n this.rectSelection.each(function (rect, datum, index) {\n var colorIndex = 0;\n var i = 0;\n for (var j = 0; j < yKeys.length; j++) {\n var stack = yKeys[j];\n i = stack.indexOf(datum.yKey);\n if (i >= 0) {\n colorIndex += i;\n break;\n }\n colorIndex += stack.length;\n }\n var isDatumHighlighted = datum === highlightedDatum;\n var fill = isDatumHighlighted && highlightedFill !== undefined ? highlightedFill : fills[colorIndex % fills.length];\n var stroke = isDatumHighlighted && highlightedStroke !== undefined ? highlightedStroke : strokes[colorIndex % fills.length];\n var strokeWidth = isDatumHighlighted && highlightedDatumStrokeWidth !== undefined\n ? highlightedDatumStrokeWidth\n : _this.getStrokeWidth(_this.strokeWidth, datum);\n var format = undefined;\n if (formatter) {\n format = formatter({\n datum: datum.datum,\n fill: fill,\n stroke: stroke,\n strokeWidth: strokeWidth,\n highlighted: isDatumHighlighted,\n xKey: xKey,\n yKey: datum.yKey\n });\n }\n rect.x = datum.x;\n rect.y = datum.y;\n rect.width = datum.width;\n rect.height = datum.height;\n rect.fill = format && format.fill || fill;\n rect.stroke = format && format.stroke || stroke;\n rect.strokeWidth = format && format.strokeWidth !== undefined ? format.strokeWidth : strokeWidth;\n rect.fillOpacity = fillOpacity;\n rect.strokeOpacity = strokeOpacity;\n rect.lineDash = _this.lineDash;\n rect.lineDashOffset = _this.lineDashOffset;\n rect.fillShadow = shadow;\n // Prevent stroke from rendering for zero height columns and zero width bars.\n rect.visible = flipXY ? datum.width > 0 : datum.height > 0;\n rect.zIndex = isDatumHighlighted ? Series.highlightedZIndex : index;\n rect.opacity = _this.getOpacity(datum);\n });\n };\n BarSeries.prototype.updateLabelSelection = function () {\n var updateLabels = this.labelSelection.setData(this.nodeData);\n updateLabels.exit.remove();\n var enterLabels = updateLabels.enter.append(Text).each(function (text) {\n text.tag = BarSeriesNodeTag.Label;\n text.pointerEvents = PointerEvents.None;\n });\n this.labelSelection = updateLabels.merge(enterLabels);\n };\n BarSeries.prototype.updateLabelNodes = function () {\n var _this = this;\n if (!this.chart) {\n return;\n }\n var _a = this, highlightedDatum = _a.chart.highlightedDatum, _b = _a.label, labelEnabled = _b.enabled, fontStyle = _b.fontStyle, fontWeight = _b.fontWeight, fontSize = _b.fontSize, fontFamily = _b.fontFamily, color = _b.color;\n this.labelSelection.each(function (text, datum, index) {\n var label = datum.label;\n if (label && labelEnabled) {\n text.fontStyle = fontStyle;\n text.fontWeight = fontWeight;\n text.fontSize = fontSize;\n text.fontFamily = fontFamily;\n text.textAlign = label.textAlign;\n text.textBaseline = label.textBaseline;\n text.text = label.text;\n text.x = label.x;\n text.y = label.y;\n text.fill = color;\n text.visible = true;\n text.opacity = _this.getOpacity(datum);\n }\n else {\n text.visible = false;\n }\n });\n };\n BarSeries.prototype.getTooltipHtml = function (nodeDatum) {\n var _a = this, xKey = _a.xKey, yKeys = _a.yKeys, yData = _a.yData;\n var xAxis = this.getCategoryAxis();\n var yAxis = this.getValueAxis();\n var yKey = nodeDatum.yKey;\n if (!yData.length || !xKey || !yKey || !xAxis || !yAxis) {\n return '';\n }\n var yGroup = yData[nodeDatum.index];\n var fillIndex = 0;\n var i = 0;\n var j = 0;\n for (; j < yKeys.length; j++) {\n var stack = yKeys[j];\n i = stack.indexOf(yKey);\n if (i >= 0) {\n fillIndex += i;\n break;\n }\n fillIndex += stack.length;\n }\n var _b = this, xName = _b.xName, yNames = _b.yNames, fills = _b.fills, strokes = _b.strokes, tooltip = _b.tooltip, formatter = _b.formatter;\n var tooltipRenderer = tooltip.renderer;\n var datum = nodeDatum.datum;\n var yName = yNames[yKey];\n var fill = fills[fillIndex % fills.length];\n var stroke = strokes[fillIndex % fills.length];\n var strokeWidth = this.getStrokeWidth(this.strokeWidth, datum);\n var xValue = datum[xKey];\n var yValue = datum[yKey];\n var processedYValue = yGroup[j][i];\n var xString = sanitizeHtml(xAxis.formatDatum(xValue));\n var yString = sanitizeHtml(yAxis.formatDatum(yValue));\n var title = sanitizeHtml(yName);\n var content = xString + ': ' + yString;\n var format = undefined;\n if (formatter) {\n format = formatter({\n datum: datum,\n fill: fill,\n stroke: stroke,\n strokeWidth: strokeWidth,\n highlighted: false,\n xKey: xKey,\n yKey: yKey\n });\n }\n var color = format && format.fill || fill;\n var defaults = {\n title: title,\n backgroundColor: color,\n content: content\n };\n if (tooltipRenderer) {\n return toTooltipHtml(tooltipRenderer({\n datum: datum,\n xKey: xKey,\n xValue: xValue,\n xName: xName,\n yKey: yKey,\n yValue: yValue,\n processedYValue: processedYValue,\n yName: yName,\n color: color\n }), defaults);\n }\n return toTooltipHtml(defaults);\n };\n BarSeries.prototype.listSeriesItems = function (legendData) {\n var _a = this, id = _a.id, data = _a.data, xKey = _a.xKey, yKeys = _a.yKeys, yNames = _a.yNames, cumYKeyCount = _a.cumYKeyCount, seriesItemEnabled = _a.seriesItemEnabled, hideInLegend = _a.hideInLegend, fills = _a.fills, strokes = _a.strokes, fillOpacity = _a.fillOpacity, strokeOpacity = _a.strokeOpacity;\n if (data && data.length && xKey && yKeys.length) {\n this.yKeys.forEach(function (stack, stackIndex) {\n stack.forEach(function (yKey, levelIndex) {\n if (hideInLegend.indexOf(yKey) < 0) {\n var colorIndex = cumYKeyCount[stackIndex] + levelIndex;\n legendData.push({\n id: id,\n itemId: yKey,\n enabled: seriesItemEnabled.get(yKey) || false,\n label: {\n text: yNames[yKey] || yKey\n },\n marker: {\n fill: fills[colorIndex % fills.length],\n stroke: strokes[colorIndex % strokes.length],\n fillOpacity: fillOpacity,\n strokeOpacity: strokeOpacity\n }\n });\n }\n });\n });\n }\n };\n BarSeries.prototype.toggleSeriesItem = function (itemId, enabled) {\n var seriesItemEnabled = this.seriesItemEnabled;\n seriesItemEnabled.set(itemId, enabled);\n var yKeys = this.yKeys.map(function (stack) { return stack.slice(); }); // deep clone\n seriesItemEnabled.forEach(function (enabled, yKey) {\n if (!enabled) {\n yKeys.forEach(function (stack) {\n var index = stack.indexOf(yKey);\n if (index >= 0) {\n stack.splice(index, 1);\n }\n });\n }\n });\n var visibleStacks = [];\n yKeys.forEach(function (stack, index) {\n if (stack.length > 0) {\n visibleStacks.push(String(index));\n }\n });\n this.groupScale.domain = visibleStacks;\n this.scheduleData();\n };\n BarSeries.className = 'BarSeries';\n BarSeries.type = 'bar';\n __decorate([\n reactive('dataChange')\n ], BarSeries.prototype, \"flipXY\", void 0);\n __decorate([\n reactive('dataChange')\n ], BarSeries.prototype, \"fills\", void 0);\n __decorate([\n reactive('dataChange')\n ], BarSeries.prototype, \"strokes\", void 0);\n __decorate([\n reactive('update')\n ], BarSeries.prototype, \"fillOpacity\", void 0);\n __decorate([\n reactive('update')\n ], BarSeries.prototype, \"strokeOpacity\", void 0);\n __decorate([\n reactive('update')\n ], BarSeries.prototype, \"lineDash\", void 0);\n __decorate([\n reactive('update')\n ], BarSeries.prototype, \"lineDashOffset\", void 0);\n __decorate([\n reactive('update')\n ], BarSeries.prototype, \"formatter\", void 0);\n __decorate([\n reactive('layoutChange')\n ], BarSeries.prototype, \"hideInLegend\", void 0);\n return BarSeries;\n}(CartesianSeries));\nexport { BarSeries };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nimport { Path } from \"../../../scene/shape/path\";\nimport { ContinuousScale } from \"../../../scale/continuousScale\";\nimport { Selection } from \"../../../scene/selection\";\nimport { Group } from \"../../../scene/group\";\nimport { SeriesTooltip } from \"../series\";\nimport { extent } from \"../../../util/array\";\nimport { PointerEvents } from \"../../../scene/node\";\nimport { Text } from \"../../../scene/shape/text\";\nimport { CartesianSeries, CartesianSeriesMarker } from \"./cartesianSeries\";\nimport { ChartAxisDirection } from \"../../chartAxis\";\nimport { getMarker } from \"../../marker/util\";\nimport { reactive } from \"../../../util/observable\";\nimport { toTooltipHtml } from \"../../chart\";\nimport { interpolate } from \"../../../util/string\";\nimport { Label } from \"../../label\";\nimport { sanitizeHtml } from \"../../../util/sanitize\";\nimport { isContinuous, isDiscrete } from \"../../../util/value\";\nvar LineSeriesLabel = /** @class */ (function (_super) {\n __extends(LineSeriesLabel, _super);\n function LineSeriesLabel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n reactive('change')\n ], LineSeriesLabel.prototype, \"formatter\", void 0);\n return LineSeriesLabel;\n}(Label));\nvar LineSeriesTooltip = /** @class */ (function (_super) {\n __extends(LineSeriesTooltip, _super);\n function LineSeriesTooltip() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n reactive('change')\n ], LineSeriesTooltip.prototype, \"renderer\", void 0);\n __decorate([\n reactive('change')\n ], LineSeriesTooltip.prototype, \"format\", void 0);\n return LineSeriesTooltip;\n}(SeriesTooltip));\nexport { LineSeriesTooltip };\nvar LineSeries = /** @class */ (function (_super) {\n __extends(LineSeries, _super);\n function LineSeries() {\n var _this = _super.call(this) || this;\n _this.xDomain = [];\n _this.yDomain = [];\n _this.xData = [];\n _this.yData = [];\n _this.lineNode = new Path();\n // We use groups for this selection even though each group only contains a marker ATM\n // because in the future we might want to add label support as well.\n _this.nodeSelection = Selection.select(_this.pickGroup).selectAll();\n _this.nodeData = [];\n _this.marker = new CartesianSeriesMarker();\n _this.label = new LineSeriesLabel();\n _this.stroke = '#874349';\n _this.lineDash = [0];\n _this.lineDashOffset = 0;\n _this.strokeWidth = 2;\n _this.strokeOpacity = 1;\n _this.tooltip = new LineSeriesTooltip();\n _this._xKey = '';\n _this.xName = '';\n _this._yKey = '';\n _this.yName = '';\n var lineNode = _this.lineNode;\n lineNode.fill = undefined;\n lineNode.lineJoin = 'round';\n lineNode.pointerEvents = PointerEvents.None;\n // Make line render before markers in the pick group.\n _this.group.insertBefore(lineNode, _this.pickGroup);\n _this.addEventListener('update', _this.scheduleUpdate);\n var _a = _this, marker = _a.marker, label = _a.label;\n marker.fill = '#c16068';\n marker.stroke = '#874349';\n marker.addPropertyListener('shape', _this.onMarkerShapeChange, _this);\n marker.addEventListener('change', _this.scheduleUpdate, _this);\n label.enabled = false;\n label.addEventListener('change', _this.scheduleUpdate, _this);\n return _this;\n }\n LineSeries.prototype.onMarkerShapeChange = function () {\n this.nodeSelection = this.nodeSelection.setData([]);\n this.nodeSelection.exit.remove();\n this.fireEvent({ type: 'legendChange' });\n };\n LineSeries.prototype.setColors = function (fills, strokes) {\n this.stroke = fills[0];\n this.marker.stroke = strokes[0];\n this.marker.fill = fills[0];\n };\n Object.defineProperty(LineSeries.prototype, \"xKey\", {\n get: function () {\n return this._xKey;\n },\n set: function (value) {\n if (this._xKey !== value) {\n this._xKey = value;\n this.xData = [];\n this.scheduleData();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(LineSeries.prototype, \"yKey\", {\n get: function () {\n return this._yKey;\n },\n set: function (value) {\n if (this._yKey !== value) {\n this._yKey = value;\n this.yData = [];\n this.scheduleData();\n }\n },\n enumerable: true,\n configurable: true\n });\n LineSeries.prototype.processData = function () {\n var _a = this, xAxis = _a.xAxis, yAxis = _a.yAxis, xKey = _a.xKey, yKey = _a.yKey, xData = _a.xData, yData = _a.yData;\n var data = xKey && yKey && this.data ? this.data : [];\n if (!xAxis || !yAxis) {\n return false;\n }\n var isContinuousX = xAxis.scale instanceof ContinuousScale;\n var isContinuousY = yAxis.scale instanceof ContinuousScale;\n xData.length = 0;\n yData.length = 0;\n for (var i = 0, n = data.length; i < n; i++) {\n var datum = data[i];\n var x = datum[xKey];\n var y = datum[yKey];\n if (isContinuousX) {\n xData.push(x);\n }\n else {\n // i.e. category axis\n xData.push(isDiscrete(x) ? x : String(x));\n }\n if (isContinuousY) {\n yData.push(y);\n }\n else {\n yData.push(isDiscrete(y) ? y : String(y));\n }\n }\n this.xDomain = isContinuousX ? this.fixNumericExtent(extent(xData, isContinuous), 'x', xAxis) : xData;\n this.yDomain = isContinuousY ? this.fixNumericExtent(extent(yData, isContinuous), 'y', yAxis) : yData;\n return true;\n };\n LineSeries.prototype.getDomain = function (direction) {\n if (direction === ChartAxisDirection.X) {\n return this.xDomain;\n }\n return this.yDomain;\n };\n LineSeries.prototype.onHighlightChange = function () {\n this.updateNodes();\n };\n LineSeries.prototype.resetHighlight = function () {\n this.lineNode.strokeWidth = this.strokeWidth;\n };\n LineSeries.prototype.update = function () {\n this.updatePending = false;\n this.updateSelections();\n this.updateNodes();\n };\n LineSeries.prototype.updateSelections = function () {\n if (!this.nodeDataPending) {\n return;\n }\n this.nodeDataPending = false;\n this.updateLinePath(); // this will create node data too\n this.updateNodeSelection();\n };\n LineSeries.prototype.updateLinePath = function () {\n var _a = this, data = _a.data, xAxis = _a.xAxis, yAxis = _a.yAxis;\n if (!data || !xAxis || !yAxis) {\n return;\n }\n var _b = this, xData = _b.xData, yData = _b.yData, lineNode = _b.lineNode, label = _b.label;\n var xScale = xAxis.scale;\n var yScale = yAxis.scale;\n var isContinuousX = xScale instanceof ContinuousScale;\n var isContinuousY = yScale instanceof ContinuousScale;\n var xOffset = (xScale.bandwidth || 0) / 2;\n var yOffset = (yScale.bandwidth || 0) / 2;\n var linePath = lineNode.path;\n var nodeData = [];\n linePath.clear();\n var moveTo = true;\n var prevXInRange = undefined;\n var nextXYDatums = undefined;\n for (var i = 0; i < xData.length; i++) {\n var xyDatums = nextXYDatums || this.checkDomainXY(xData[i], yData[i], isContinuousX, isContinuousY);\n if (!xyDatums) {\n prevXInRange = undefined;\n moveTo = true;\n }\n else {\n var _c = __read(xyDatums, 2), xDatum = _c[0], yDatum = _c[1];\n var x = xScale.convert(xDatum) + xOffset;\n if (isNaN(x)) {\n prevXInRange = undefined;\n moveTo = true;\n continue;\n }\n var tolerance = (xScale.bandwidth || (this.marker.size * 0.5 + (this.marker.strokeWidth || 0))) + 1;\n nextXYDatums = this.checkDomainXY(xData[i + 1], yData[i + 1], isContinuousX, isContinuousY);\n var xInRange = xAxis.inRangeEx(x, 0, tolerance);\n var nextXInRange = nextXYDatums && xAxis.inRangeEx(xScale.convert(nextXYDatums[0]) + xOffset, 0, tolerance);\n if (xInRange === -1 && nextXInRange === -1) {\n moveTo = true;\n continue;\n }\n if (xInRange === 1 && prevXInRange === 1) {\n moveTo = true;\n continue;\n }\n prevXInRange = xInRange;\n var y = yScale.convert(yDatum) + yOffset;\n if (moveTo) {\n linePath.moveTo(x, y);\n moveTo = false;\n }\n else {\n linePath.lineTo(x, y);\n }\n var labelText = void 0;\n if (label.formatter) {\n labelText = label.formatter({ value: yDatum });\n }\n else {\n labelText = typeof yDatum === 'number' && isFinite(yDatum) ? yDatum.toFixed(2) : yDatum ? String(yDatum) : '';\n }\n nodeData.push({\n series: this,\n datum: data[i],\n point: { x: x, y: y },\n label: labelText ? {\n text: labelText,\n fontStyle: label.fontStyle,\n fontWeight: label.fontWeight,\n fontSize: label.fontSize,\n fontFamily: label.fontFamily,\n textAlign: 'center',\n textBaseline: 'bottom',\n fill: label.color\n } : undefined\n });\n }\n }\n // Used by marker nodes and for hit-testing even when not using markers\n // when `chart.tooltip.tracking` is true.\n this.nodeData = nodeData;\n };\n LineSeries.prototype.updateNodeSelection = function () {\n var marker = this.marker;\n var nodeData = marker.shape ? this.nodeData : [];\n var MarkerShape = getMarker(marker.shape);\n var updateSelection = this.nodeSelection.setData(nodeData);\n updateSelection.exit.remove();\n var enterSelection = updateSelection.enter.append(Group);\n enterSelection.append(MarkerShape);\n enterSelection.append(Text);\n this.nodeSelection = updateSelection.merge(enterSelection);\n };\n LineSeries.prototype.updateNodes = function () {\n this.group.visible = this.visible;\n this.updateLineNode();\n this.updateMarkerNodes();\n this.updateTextNodes();\n };\n LineSeries.prototype.updateLineNode = function () {\n var lineNode = this.lineNode;\n lineNode.stroke = this.stroke;\n lineNode.strokeWidth = this.getStrokeWidth(this.strokeWidth);\n lineNode.strokeOpacity = this.strokeOpacity;\n lineNode.lineDash = this.lineDash;\n lineNode.lineDashOffset = this.lineDashOffset;\n lineNode.opacity = this.getOpacity();\n };\n LineSeries.prototype.updateMarkerNodes = function () {\n var _this = this;\n if (!this.chart) {\n return;\n }\n var _a = this, marker = _a.marker, xKey = _a.xKey, yKey = _a.yKey, lineStroke = _a.stroke, highlightedDatum = _a.chart.highlightedDatum, _b = _a.highlightStyle, deprecatedFill = _b.fill, deprecatedStroke = _b.stroke, deprecatedStrokeWidth = _b.strokeWidth, _c = _b.item, _d = _c.fill, highlightedFill = _d === void 0 ? deprecatedFill : _d, _e = _c.stroke, highlightedStroke = _e === void 0 ? deprecatedStroke : _e, _f = _c.strokeWidth, highlightedDatumStrokeWidth = _f === void 0 ? deprecatedStrokeWidth : _f;\n var size = marker.size, formatter = marker.formatter;\n var markerStrokeWidth = marker.strokeWidth !== undefined ? marker.strokeWidth : this.strokeWidth;\n var MarkerShape = getMarker(marker.shape);\n this.nodeSelection.selectByClass(MarkerShape)\n .each(function (node, datum) {\n var isDatumHighlighted = datum === highlightedDatum;\n var fill = isDatumHighlighted && highlightedFill !== undefined ? highlightedFill : marker.fill;\n var stroke = isDatumHighlighted && highlightedStroke !== undefined ? highlightedStroke : marker.stroke || lineStroke;\n var strokeWidth = isDatumHighlighted && highlightedDatumStrokeWidth !== undefined\n ? highlightedDatumStrokeWidth\n : markerStrokeWidth;\n var format = undefined;\n if (formatter) {\n format = formatter({\n datum: datum.datum,\n xKey: xKey,\n yKey: yKey,\n fill: fill,\n stroke: stroke,\n strokeWidth: strokeWidth,\n size: size,\n highlighted: isDatumHighlighted\n });\n }\n node.fill = format && format.fill || fill;\n node.stroke = format && format.stroke || stroke;\n node.strokeWidth = format && format.strokeWidth !== undefined\n ? format.strokeWidth\n : strokeWidth;\n node.size = format && format.size !== undefined\n ? format.size\n : size;\n node.translationX = datum.point.x;\n node.translationY = datum.point.y;\n node.opacity = _this.getOpacity(datum);\n node.visible = marker.enabled && node.size > 0;\n });\n };\n LineSeries.prototype.updateTextNodes = function () {\n var _this = this;\n this.nodeSelection.selectByClass(Text)\n .each(function (text, datum) {\n var point = datum.point, label = datum.label;\n var _a = _this.label, labelEnabled = _a.enabled, fontStyle = _a.fontStyle, fontWeight = _a.fontWeight, fontSize = _a.fontSize, fontFamily = _a.fontFamily, color = _a.color;\n if (label && labelEnabled) {\n text.fontStyle = fontStyle;\n text.fontWeight = fontWeight;\n text.fontSize = fontSize;\n text.fontFamily = fontFamily;\n text.textAlign = label.textAlign;\n text.textBaseline = label.textBaseline;\n text.text = label.text;\n text.x = point.x;\n text.y = point.y - 10;\n text.fill = color;\n text.visible = true;\n }\n else {\n text.visible = false;\n }\n });\n };\n LineSeries.prototype.getNodeData = function () {\n return this.nodeData;\n };\n LineSeries.prototype.fireNodeClickEvent = function (event, datum) {\n this.fireEvent({\n type: 'nodeClick',\n event: event,\n series: this,\n datum: datum.datum,\n xKey: this.xKey,\n yKey: this.yKey\n });\n };\n LineSeries.prototype.getTooltipHtml = function (nodeDatum) {\n var _a = this, xKey = _a.xKey, yKey = _a.yKey, xAxis = _a.xAxis, yAxis = _a.yAxis;\n if (!xKey || !yKey || !xAxis || !yAxis) {\n return '';\n }\n var _b = this, xName = _b.xName, yName = _b.yName, tooltip = _b.tooltip, marker = _b.marker;\n var tooltipRenderer = tooltip.renderer, tooltipFormat = tooltip.format;\n var datum = nodeDatum.datum;\n var xValue = datum[xKey];\n var yValue = datum[yKey];\n var xString = xAxis.formatDatum(xValue);\n var yString = yAxis.formatDatum(yValue);\n var title = sanitizeHtml(this.title || yName);\n var content = sanitizeHtml(xString + ': ' + yString);\n var markerFormatter = marker.formatter, fill = marker.fill, stroke = marker.stroke, markerStrokeWidth = marker.strokeWidth, size = marker.size;\n var strokeWidth = markerStrokeWidth !== undefined ? markerStrokeWidth : this.strokeWidth;\n var format = undefined;\n if (markerFormatter) {\n format = markerFormatter({\n datum: datum,\n xKey: xKey,\n yKey: yKey,\n fill: fill,\n stroke: stroke,\n strokeWidth: strokeWidth,\n size: size,\n highlighted: false\n });\n }\n var color = format && format.fill || fill;\n var defaults = {\n title: title,\n backgroundColor: color,\n content: content\n };\n if (tooltipFormat || tooltipRenderer) {\n var params = {\n datum: datum,\n xKey: xKey,\n xValue: xValue,\n xName: xName,\n yKey: yKey,\n yValue: yValue,\n yName: yName,\n title: title,\n color: color\n };\n if (tooltipFormat) {\n return toTooltipHtml({\n content: interpolate(tooltipFormat, params)\n }, defaults);\n }\n if (tooltipRenderer) {\n return toTooltipHtml(tooltipRenderer(params), defaults);\n }\n }\n return toTooltipHtml(defaults);\n };\n LineSeries.prototype.listSeriesItems = function (legendData) {\n var _a = this, id = _a.id, data = _a.data, xKey = _a.xKey, yKey = _a.yKey, yName = _a.yName, visible = _a.visible, title = _a.title, marker = _a.marker, stroke = _a.stroke, strokeOpacity = _a.strokeOpacity;\n if (data && data.length && xKey && yKey) {\n legendData.push({\n id: id,\n itemId: undefined,\n enabled: visible,\n label: {\n text: title || yName || yKey\n },\n marker: {\n shape: marker.shape,\n fill: marker.fill || 'rgba(0, 0, 0, 0)',\n stroke: marker.stroke || stroke || 'rgba(0, 0, 0, 0)',\n fillOpacity: 1,\n strokeOpacity: strokeOpacity\n }\n });\n }\n };\n LineSeries.className = 'LineSeries';\n LineSeries.type = 'line';\n __decorate([\n reactive('layoutChange')\n ], LineSeries.prototype, \"title\", void 0);\n __decorate([\n reactive('update')\n ], LineSeries.prototype, \"stroke\", void 0);\n __decorate([\n reactive('update')\n ], LineSeries.prototype, \"lineDash\", void 0);\n __decorate([\n reactive('update')\n ], LineSeries.prototype, \"lineDashOffset\", void 0);\n __decorate([\n reactive('update')\n ], LineSeries.prototype, \"strokeWidth\", void 0);\n __decorate([\n reactive('update')\n ], LineSeries.prototype, \"strokeOpacity\", void 0);\n __decorate([\n reactive('update')\n ], LineSeries.prototype, \"xName\", void 0);\n __decorate([\n reactive('update')\n ], LineSeries.prototype, \"yName\", void 0);\n return LineSeries;\n}(CartesianSeries));\nexport { LineSeries };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __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};\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Selection } from \"../../../scene/selection\";\nimport { SeriesTooltip, Series } from \"../series\";\nimport { extent } from \"../../../util/array\";\nimport { LinearScale } from \"../../../scale/linearScale\";\nimport { reactive } from \"../../../util/observable\";\nimport { CartesianSeries, CartesianSeriesMarker } from \"./cartesianSeries\";\nimport { ChartAxisDirection } from \"../../chartAxis\";\nimport { getMarker } from \"../../marker/util\";\nimport { toTooltipHtml } from \"../../chart\";\nimport { ContinuousScale } from \"../../../scale/continuousScale\";\nimport { sanitizeHtml } from \"../../../util/sanitize\";\nimport { Label } from \"../../label\";\nimport { Text } from \"../../../scene/shape/text\";\nimport { HdpiCanvas } from \"../../../canvas/hdpiCanvas\";\nimport { isContinuous } from \"../../../util/value\";\nvar ScatterSeriesTooltip = /** @class */ (function (_super) {\n __extends(ScatterSeriesTooltip, _super);\n function ScatterSeriesTooltip() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n reactive('change')\n ], ScatterSeriesTooltip.prototype, \"renderer\", void 0);\n return ScatterSeriesTooltip;\n}(SeriesTooltip));\nexport { ScatterSeriesTooltip };\nvar ScatterSeries = /** @class */ (function (_super) {\n __extends(ScatterSeries, _super);\n function ScatterSeries() {\n var _this = _super.call(this) || this;\n _this.xDomain = [];\n _this.yDomain = [];\n _this.xData = [];\n _this.yData = [];\n _this.sizeData = [];\n _this.sizeScale = new LinearScale();\n _this.nodeData = [];\n _this.markerSelection = Selection.select(_this.pickGroup).selectAll();\n _this.labelData = [];\n _this.labelSelection = Selection.select(_this.group).selectAll();\n _this.marker = new CartesianSeriesMarker();\n _this.label = new Label();\n _this._fill = '#c16068';\n _this._stroke = '#874349';\n _this._strokeWidth = 2;\n _this._fillOpacity = 1;\n _this._strokeOpacity = 1;\n _this.xKey = '';\n _this.yKey = '';\n _this.xName = '';\n _this.yName = '';\n _this.sizeName = 'Size';\n _this.labelName = 'Label';\n _this.tooltip = new ScatterSeriesTooltip();\n var _a = _this, marker = _a.marker, label = _a.label;\n marker.addPropertyListener('shape', _this.onMarkerShapeChange, _this);\n marker.addEventListener('change', _this.scheduleUpdate, _this);\n _this.addPropertyListener('xKey', function () { return _this.xData = []; });\n _this.addPropertyListener('yKey', function () { return _this.yData = []; });\n _this.addPropertyListener('sizeKey', function () { return _this.sizeData = []; });\n label.enabled = false;\n label.addEventListener('change', _this.scheduleUpdate, _this);\n label.addEventListener('dataChange', _this.scheduleData, _this);\n return _this;\n }\n Object.defineProperty(ScatterSeries.prototype, \"fill\", {\n get: function () {\n return this._fill;\n },\n /**\n * @deprecated Use {@link marker.fill} instead.\n */\n set: function (value) {\n if (this._fill !== value) {\n this._fill = value;\n this.scheduleUpdate();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ScatterSeries.prototype, \"stroke\", {\n get: function () {\n return this._stroke;\n },\n /**\n * @deprecated Use {@link marker.stroke} instead.\n */\n set: function (value) {\n if (this._stroke !== value) {\n this._stroke = value;\n this.scheduleUpdate();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ScatterSeries.prototype, \"strokeWidth\", {\n get: function () {\n return this._strokeWidth;\n },\n /**\n * @deprecated Use {@link marker.strokeWidth} instead.\n */\n set: function (value) {\n if (this._strokeWidth !== value) {\n this._strokeWidth = value;\n this.scheduleUpdate();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ScatterSeries.prototype, \"fillOpacity\", {\n get: function () {\n return this._fillOpacity;\n },\n /**\n * @deprecated Use {@link marker.fillOpacity} instead.\n */\n set: function (value) {\n if (this._fillOpacity !== value) {\n this._fillOpacity = value;\n this.scheduleUpdate();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ScatterSeries.prototype, \"strokeOpacity\", {\n get: function () {\n return this._strokeOpacity;\n },\n /**\n * @deprecated Use {@link marker.strokeOpacity} instead.\n */\n set: function (value) {\n if (this._strokeOpacity !== value) {\n this._strokeOpacity = value;\n this.scheduleUpdate();\n }\n },\n enumerable: true,\n configurable: true\n });\n ScatterSeries.prototype.onHighlightChange = function () {\n this.updateMarkerNodes();\n };\n ScatterSeries.prototype.onMarkerShapeChange = function () {\n this.markerSelection = this.markerSelection.setData([]);\n this.markerSelection.exit.remove();\n this.fireEvent({ type: 'legendChange' });\n };\n ScatterSeries.prototype.setColors = function (fills, strokes) {\n this.fill = fills[0];\n this.stroke = strokes[0];\n this.marker.fill = fills[0];\n this.marker.stroke = strokes[0];\n };\n ScatterSeries.prototype.processData = function () {\n var _a = this, xKey = _a.xKey, yKey = _a.yKey, sizeKey = _a.sizeKey, labelKey = _a.labelKey, xAxis = _a.xAxis, yAxis = _a.yAxis, marker = _a.marker, label = _a.label;\n if (!xAxis || !yAxis) {\n return false;\n }\n var data = xKey && yKey && this.data ? this.data : [];\n this.xData = data.map(function (d) { return d[xKey]; });\n this.yData = data.map(function (d) { return d[yKey]; });\n this.sizeData = sizeKey ? data.map(function (d) { return d[sizeKey]; }) : [];\n var font = label.getFont();\n this.labelData = labelKey ? data.map(function (d) {\n var text = String(d[labelKey]);\n var size = HdpiCanvas.getTextSize(text, font);\n return __assign({ text: text }, size);\n }) : [];\n this.sizeScale.domain = marker.domain ? marker.domain : extent(this.sizeData, isContinuous) || [1, 1];\n if (xAxis.scale instanceof ContinuousScale) {\n this.xDomain = this.fixNumericExtent(extent(this.xData, isContinuous), 'x', xAxis);\n }\n else {\n this.xDomain = this.xData;\n }\n if (yAxis.scale instanceof ContinuousScale) {\n this.yDomain = this.fixNumericExtent(extent(this.yData, isContinuous), 'y', yAxis);\n }\n else {\n this.yDomain = this.yData;\n }\n return true;\n };\n ScatterSeries.prototype.getDomain = function (direction) {\n if (direction === ChartAxisDirection.X) {\n return this.xDomain;\n }\n else {\n return this.yDomain;\n }\n };\n ScatterSeries.prototype.getNodeData = function () {\n return this.nodeData;\n };\n ScatterSeries.prototype.getLabelData = function () {\n return this.nodeData;\n };\n ScatterSeries.prototype.fireNodeClickEvent = function (event, datum) {\n this.fireEvent({\n type: 'nodeClick',\n event: event,\n series: this,\n datum: datum.datum,\n xKey: this.xKey,\n yKey: this.yKey,\n sizeKey: this.sizeKey\n });\n };\n ScatterSeries.prototype.createNodeData = function () {\n var _a = this, chart = _a.chart, data = _a.data, visible = _a.visible, xAxis = _a.xAxis, yAxis = _a.yAxis;\n if (!(chart && data && visible && xAxis && yAxis) || chart.layoutPending || chart.dataPending) {\n return [];\n }\n var xScale = xAxis.scale;\n var yScale = yAxis.scale;\n var isContinuousX = xScale instanceof ContinuousScale;\n var isContinuousY = yScale instanceof ContinuousScale;\n var xOffset = (xScale.bandwidth || 0) / 2;\n var yOffset = (yScale.bandwidth || 0) / 2;\n var _b = this, xData = _b.xData, yData = _b.yData, sizeData = _b.sizeData, sizeScale = _b.sizeScale, marker = _b.marker;\n var nodeData = [];\n sizeScale.range = [marker.size, marker.maxSize];\n for (var i = 0; i < xData.length; i++) {\n var xy = this.checkDomainXY(xData[i], yData[i], isContinuousX, isContinuousY);\n if (!xy) {\n continue;\n }\n var x = xScale.convert(xy[0]) + xOffset;\n var y = yScale.convert(xy[1]) + yOffset;\n if (!this.checkRangeXY(x, y, xAxis, yAxis)) {\n continue;\n }\n nodeData.push({\n series: this,\n datum: data[i],\n point: { x: x, y: y },\n size: sizeData.length ? sizeScale.convert(sizeData[i]) : marker.size,\n label: this.labelData[i]\n });\n }\n return this.nodeData = nodeData;\n };\n ScatterSeries.prototype.update = function () {\n this.updatePending = false;\n this.updateSelections();\n this.updateNodes();\n };\n ScatterSeries.prototype.updateSelections = function () {\n if (!this.nodeDataPending) {\n return;\n }\n this.nodeDataPending = false;\n this.createNodeData();\n this.updateMarkerSelection();\n this.updateLabelSelection();\n };\n ScatterSeries.prototype.updateNodes = function () {\n this.group.visible = this.visible;\n this.updateMarkerNodes();\n this.updateLabelNodes();\n };\n ScatterSeries.prototype.updateLabelSelection = function () {\n var placedLabels = this.chart && this.chart.placeLabels().get(this) || [];\n var updateLabels = this.labelSelection.setData(placedLabels);\n updateLabels.exit.remove();\n var enterLabels = updateLabels.enter.append(Text);\n this.labelSelection = updateLabels.merge(enterLabels);\n };\n ScatterSeries.prototype.updateMarkerSelection = function () {\n var MarkerShape = getMarker(this.marker.shape);\n var updateMarkers = this.markerSelection.setData(this.nodeData);\n updateMarkers.exit.remove();\n var enterMarkers = updateMarkers.enter.append(MarkerShape);\n this.markerSelection = updateMarkers.merge(enterMarkers);\n };\n ScatterSeries.prototype.updateLabelNodes = function () {\n var label = this.label;\n this.labelSelection.each(function (text, datum) {\n text.text = datum.text;\n text.fill = label.color;\n text.x = datum.x;\n text.y = datum.y;\n text.fontStyle = label.fontStyle;\n text.fontWeight = label.fontWeight;\n text.fontSize = label.fontSize;\n text.fontFamily = label.fontFamily;\n text.textAlign = 'left';\n text.textBaseline = 'top';\n });\n };\n ScatterSeries.prototype.updateMarkerNodes = function () {\n var _this = this;\n if (!this.chart) {\n return;\n }\n var _a = this, marker = _a.marker, xKey = _a.xKey, yKey = _a.yKey, strokeWidth = _a.strokeWidth, fillOpacity = _a.fillOpacity, strokeOpacity = _a.strokeOpacity, seriesFill = _a.fill, seriesStroke = _a.stroke, highlightedDatum = _a.chart.highlightedDatum, sizeScale = _a.sizeScale, sizeData = _a.sizeData, _b = _a.highlightStyle, deprecatedFill = _b.fill, deprecatedStroke = _b.stroke, deprecatedStrokeWidth = _b.strokeWidth, _c = _b.item, _d = _c.fill, highlightedFill = _d === void 0 ? deprecatedFill : _d, _e = _c.stroke, highlightedStroke = _e === void 0 ? deprecatedStroke : _e, _f = _c.strokeWidth, highlightedDatumStrokeWidth = _f === void 0 ? deprecatedStrokeWidth : _f;\n var markerStrokeWidth = marker.strokeWidth !== undefined ? marker.strokeWidth : strokeWidth;\n var formatter = marker.formatter;\n sizeScale.range = [marker.size, marker.maxSize];\n this.markerSelection.each(function (node, datum, index) {\n var isDatumHighlighted = datum === highlightedDatum;\n var fill = isDatumHighlighted && highlightedFill !== undefined ? highlightedFill : marker.fill || seriesFill;\n var stroke = isDatumHighlighted && highlightedStroke !== undefined ? highlightedStroke : marker.stroke || seriesStroke;\n var strokeWidth = isDatumHighlighted && highlightedDatumStrokeWidth !== undefined\n ? highlightedDatumStrokeWidth\n : _this.getStrokeWidth(markerStrokeWidth, datum);\n var size = sizeData.length ? sizeScale.convert(sizeData[index]) : marker.size;\n var format = undefined;\n if (formatter) {\n format = formatter({\n datum: datum.datum,\n xKey: xKey,\n yKey: yKey,\n fill: fill,\n stroke: stroke,\n strokeWidth: strokeWidth,\n size: size,\n highlighted: isDatumHighlighted\n });\n }\n node.fill = format && format.fill || fill;\n node.stroke = format && format.stroke || stroke;\n node.strokeWidth = format && format.strokeWidth !== undefined\n ? format.strokeWidth\n : strokeWidth;\n node.size = format && format.size !== undefined\n ? format.size\n : size;\n node.fillOpacity = marker.fillOpacity !== undefined ? marker.fillOpacity : fillOpacity;\n node.strokeOpacity = marker.strokeOpacity !== undefined ? marker.strokeOpacity : strokeOpacity;\n node.translationX = datum.point.x;\n node.translationY = datum.point.y;\n node.opacity = _this.getOpacity(datum);\n node.zIndex = isDatumHighlighted ? Series.highlightedZIndex : index;\n node.visible = marker.enabled && node.size > 0;\n });\n };\n ScatterSeries.prototype.getTooltipHtml = function (nodeDatum) {\n var _a = this, xKey = _a.xKey, yKey = _a.yKey, xAxis = _a.xAxis, yAxis = _a.yAxis;\n if (!xKey || !yKey || !xAxis || !yAxis) {\n return '';\n }\n var _b = this, seriesFill = _b.fill, seriesStroke = _b.stroke, marker = _b.marker, tooltip = _b.tooltip, xName = _b.xName, yName = _b.yName, sizeKey = _b.sizeKey, sizeName = _b.sizeName, labelKey = _b.labelKey, labelName = _b.labelName;\n var fill = marker.fill || seriesFill;\n var stroke = marker.stroke || seriesStroke;\n var strokeWidth = this.getStrokeWidth(marker.strokeWidth || this.strokeWidth, nodeDatum);\n var formatter = this.marker.formatter;\n var format = undefined;\n if (formatter) {\n format = formatter({\n datum: nodeDatum,\n xKey: xKey,\n yKey: yKey,\n fill: fill,\n stroke: stroke,\n strokeWidth: strokeWidth,\n size: nodeDatum.size,\n highlighted: false\n });\n }\n var color = format && format.fill || fill || 'gray';\n var title = this.title || yName;\n var datum = nodeDatum.datum;\n var xValue = datum[xKey];\n var yValue = datum[yKey];\n var xString = sanitizeHtml(xAxis.formatDatum(xValue));\n var yString = sanitizeHtml(yAxis.formatDatum(yValue));\n var content = \"\" + sanitizeHtml(xName || xKey) + \": \" + xString + \"
    \" +\n (\"\" + sanitizeHtml(yName || yKey) + \": \" + yString);\n if (sizeKey) {\n content += \"
    \" + sanitizeHtml(sizeName || sizeKey) + \": \" + sanitizeHtml(datum[sizeKey]);\n }\n if (labelKey) {\n content = \"\" + sanitizeHtml(labelName || labelKey) + \": \" + sanitizeHtml(datum[labelKey]) + \"
    \" + content;\n }\n var defaults = {\n title: title,\n backgroundColor: color,\n content: content\n };\n var tooltipRenderer = tooltip.renderer;\n if (tooltipRenderer) {\n return toTooltipHtml(tooltipRenderer({\n datum: datum,\n xKey: xKey,\n xValue: xValue,\n xName: xName,\n yKey: yKey,\n yValue: yValue,\n yName: yName,\n sizeKey: sizeKey,\n sizeName: sizeName,\n labelKey: labelKey,\n labelName: labelName,\n title: title,\n color: color\n }), defaults);\n }\n return toTooltipHtml(defaults);\n };\n ScatterSeries.prototype.listSeriesItems = function (legendData) {\n var _a = this, id = _a.id, data = _a.data, xKey = _a.xKey, yKey = _a.yKey, yName = _a.yName, title = _a.title, visible = _a.visible, marker = _a.marker, fill = _a.fill, stroke = _a.stroke, fillOpacity = _a.fillOpacity, strokeOpacity = _a.strokeOpacity;\n if (data && data.length && xKey && yKey) {\n legendData.push({\n id: id,\n itemId: undefined,\n enabled: visible,\n label: {\n text: title || yName || yKey\n },\n marker: {\n shape: marker.shape,\n fill: marker.fill || fill || 'rgba(0, 0, 0, 0)',\n stroke: marker.stroke || stroke || 'rgba(0, 0, 0, 0)',\n fillOpacity: marker.fillOpacity !== undefined ? marker.fillOpacity : fillOpacity,\n strokeOpacity: marker.strokeOpacity !== undefined ? marker.strokeOpacity : strokeOpacity\n }\n });\n }\n };\n ScatterSeries.className = 'ScatterSeries';\n ScatterSeries.type = 'scatter';\n __decorate([\n reactive('layoutChange')\n ], ScatterSeries.prototype, \"title\", void 0);\n __decorate([\n reactive('dataChange')\n ], ScatterSeries.prototype, \"xKey\", void 0);\n __decorate([\n reactive('dataChange')\n ], ScatterSeries.prototype, \"yKey\", void 0);\n __decorate([\n reactive('dataChange')\n ], ScatterSeries.prototype, \"sizeKey\", void 0);\n __decorate([\n reactive('dataChange')\n ], ScatterSeries.prototype, \"labelKey\", void 0);\n return ScatterSeries;\n}(CartesianSeries));\nexport { ScatterSeries };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nimport { Group } from \"../../../scene/group\";\nimport { Selection } from \"../../../scene/selection\";\nimport { Rect } from \"../../../scene/shape/rect\";\nimport { Text } from \"../../../scene/shape/text\";\nimport { SeriesTooltip, Series } from \"../series\";\nimport { Label } from \"../../label\";\nimport { PointerEvents } from \"../../../scene/node\";\nimport { CartesianSeries } from \"./cartesianSeries\";\nimport { ChartAxisDirection } from \"../../chartAxis\";\nimport { toTooltipHtml } from \"../../chart\";\nimport { extent } from \"../../../util/array\";\nimport { reactive } from \"../../../util/observable\";\nimport ticks, { tickStep } from \"../../../util/ticks\";\nimport { sanitizeHtml } from \"../../../util/sanitize\";\nimport { isContinuous } from \"../../../util/value\";\nvar HistogramSeriesNodeTag;\n(function (HistogramSeriesNodeTag) {\n HistogramSeriesNodeTag[HistogramSeriesNodeTag[\"Bin\"] = 0] = \"Bin\";\n HistogramSeriesNodeTag[HistogramSeriesNodeTag[\"Label\"] = 1] = \"Label\";\n})(HistogramSeriesNodeTag || (HistogramSeriesNodeTag = {}));\nvar HistogramSeriesLabel = /** @class */ (function (_super) {\n __extends(HistogramSeriesLabel, _super);\n function HistogramSeriesLabel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n reactive('change')\n ], HistogramSeriesLabel.prototype, \"formatter\", void 0);\n return HistogramSeriesLabel;\n}(Label));\nvar defaultBinCount = 10;\nvar aggregationFunctions = {\n count: function (bin) { return bin.data.length; },\n sum: function (bin, yKey) { return bin.data.reduce(function (acc, datum) { return acc + datum[yKey]; }, 0); },\n mean: function (bin, yKey) { return aggregationFunctions.sum(bin, yKey) / aggregationFunctions.count(bin, yKey); }\n};\nvar HistogramBin = /** @class */ (function () {\n function HistogramBin(_a) {\n var _b = __read(_a, 2), domainMin = _b[0], domainMax = _b[1];\n this.data = [];\n this.aggregatedValue = 0;\n this.frequency = 0;\n this.domain = [domainMin, domainMax];\n }\n ;\n HistogramBin.prototype.addDatum = function (datum) {\n this.data.push(datum);\n this.frequency++;\n };\n Object.defineProperty(HistogramBin.prototype, \"domainWidth\", {\n get: function () {\n var _a = __read(this.domain, 2), domainMin = _a[0], domainMax = _a[1];\n return domainMax - domainMin;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(HistogramBin.prototype, \"relativeHeight\", {\n get: function () {\n return this.aggregatedValue / this.domainWidth;\n },\n enumerable: true,\n configurable: true\n });\n HistogramBin.prototype.calculateAggregatedValue = function (aggregationName, yKey) {\n if (!yKey) {\n // not having a yKey forces us into a frequency plot\n aggregationName = 'count';\n }\n var aggregationFunction = aggregationFunctions[aggregationName];\n this.aggregatedValue = aggregationFunction(this, yKey);\n };\n HistogramBin.prototype.getY = function (areaPlot) {\n return areaPlot ? this.relativeHeight : this.aggregatedValue;\n };\n return HistogramBin;\n}());\nexport { HistogramBin };\nvar HistogramSeriesTooltip = /** @class */ (function (_super) {\n __extends(HistogramSeriesTooltip, _super);\n function HistogramSeriesTooltip() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n reactive('change')\n ], HistogramSeriesTooltip.prototype, \"renderer\", void 0);\n return HistogramSeriesTooltip;\n}(SeriesTooltip));\nexport { HistogramSeriesTooltip };\nvar HistogramSeries = /** @class */ (function (_super) {\n __extends(HistogramSeries, _super);\n function HistogramSeries() {\n var _a;\n var _this = _super.call(this) || this;\n // Need to put column and label nodes into separate groups, because even though label nodes are\n // created after the column nodes, this only guarantees that labels will always be on top of columns\n // on the first run. If on the next run more columns are added, they might clip the labels\n // rendered during the previous run.\n _this.rectGroup = _this.pickGroup.appendChild(new Group());\n _this.textGroup = _this.group.appendChild(new Group());\n _this.rectSelection = Selection.select(_this.rectGroup).selectAll();\n _this.textSelection = Selection.select(_this.textGroup).selectAll();\n _this.binnedData = [];\n _this.xDomain = [];\n _this.yDomain = [];\n _this.label = new HistogramSeriesLabel();\n _this.seriesItemEnabled = true;\n _this.tooltip = new HistogramSeriesTooltip();\n _this.fill = undefined;\n _this.stroke = undefined;\n _this.fillOpacity = 1;\n _this.strokeOpacity = 1;\n _this.lineDash = [0];\n _this.lineDashOffset = 0;\n _this.directionKeys = (_a = {},\n _a[ChartAxisDirection.X] = ['xKey'],\n _a[ChartAxisDirection.Y] = ['yKey'],\n _a);\n _this._xKey = '';\n _this._areaPlot = false;\n _this._bins = undefined;\n _this._aggregation = 'count';\n _this._binCount = undefined;\n _this._xName = '';\n _this._yKey = '';\n _this._yName = '';\n _this._strokeWidth = 1;\n _this.label.enabled = false;\n _this.label.addEventListener('change', _this.scheduleUpdate, _this);\n return _this;\n }\n HistogramSeries.prototype.getKeys = function (direction) {\n var _this = this;\n var directionKeys = this.directionKeys;\n var keys = directionKeys && directionKeys[direction];\n var values = [];\n if (keys) {\n keys.forEach(function (key) {\n var value = _this[key];\n if (value) {\n if (Array.isArray(value)) {\n values.push.apply(values, __spread(value));\n }\n else {\n values.push(value);\n }\n }\n });\n }\n return values;\n };\n Object.defineProperty(HistogramSeries.prototype, \"xKey\", {\n get: function () {\n return this._xKey;\n },\n set: function (value) {\n if (this._xKey !== value) {\n this._xKey = value;\n this.scheduleData();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(HistogramSeries.prototype, \"areaPlot\", {\n get: function () {\n return this._areaPlot;\n },\n set: function (c) {\n this._areaPlot = c;\n this.scheduleData();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(HistogramSeries.prototype, \"bins\", {\n get: function () {\n return this._bins;\n },\n set: function (bins) {\n this._bins = bins;\n this.scheduleData();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(HistogramSeries.prototype, \"aggregation\", {\n get: function () {\n return this._aggregation;\n },\n set: function (aggregation) {\n this._aggregation = aggregation;\n this.scheduleData();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(HistogramSeries.prototype, \"binCount\", {\n get: function () {\n return this._binCount;\n },\n set: function (binCount) {\n this._binCount = binCount;\n this.scheduleData();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(HistogramSeries.prototype, \"xName\", {\n get: function () {\n return this._xName;\n },\n set: function (value) {\n if (this._xName !== value) {\n this._xName = value;\n this.scheduleUpdate();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(HistogramSeries.prototype, \"yKey\", {\n get: function () {\n return this._yKey;\n },\n set: function (yKey) {\n this._yKey = yKey;\n this.seriesItemEnabled = true;\n this.scheduleData();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(HistogramSeries.prototype, \"yName\", {\n get: function () {\n return this._yName;\n },\n set: function (values) {\n this._yName = values;\n this.scheduleData();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(HistogramSeries.prototype, \"strokeWidth\", {\n get: function () {\n return this._strokeWidth;\n },\n set: function (value) {\n if (this._strokeWidth !== value) {\n this._strokeWidth = value;\n this.scheduleUpdate();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(HistogramSeries.prototype, \"shadow\", {\n get: function () {\n return this._shadow;\n },\n set: function (value) {\n if (this._shadow !== value) {\n this._shadow = value;\n this.scheduleUpdate();\n }\n },\n enumerable: true,\n configurable: true\n });\n HistogramSeries.prototype.onHighlightChange = function () {\n this.updateRectNodes();\n };\n HistogramSeries.prototype.setColors = function (fills, strokes) {\n this.fill = fills[0];\n this.stroke = strokes[0];\n };\n // During processData phase, used to unify different ways of the user specifying\n // the bins. Returns bins in format[[min1, max1], [min2, max2], ... ].\n HistogramSeries.prototype.deriveBins = function () {\n var _this = this;\n var _a = this, bins = _a.bins, binCount = _a.binCount;\n if (!this.data) {\n return [];\n }\n if (bins) {\n return bins;\n }\n var xData = this.data.map(function (datum) { return datum[_this.xKey]; });\n var xDomain = this.fixNumericExtent(extent(xData, isContinuous), 'x');\n var binStarts = ticks(xDomain[0], xDomain[1], this.binCount || defaultBinCount);\n var binSize = tickStep(xDomain[0], xDomain[1], this.binCount || defaultBinCount);\n var firstBinEnd = binStarts[0];\n var expandStartToBin = function (n) { return [n, n + binSize]; };\n return __spread([\n [firstBinEnd - binSize, firstBinEnd]\n ], binStarts.map(expandStartToBin));\n };\n HistogramSeries.prototype.placeDataInBins = function (data) {\n var _this = this;\n var xKey = this.xKey;\n var derivedBins = this.deriveBins();\n // creating a sorted copy allows binning in O(n) rather than O(n²)\n // but at the expense of more temporary memory\n var sortedData = data.slice().sort(function (a, b) {\n if (a[xKey] < b[xKey]) {\n return -1;\n }\n if (a[xKey] > b[xKey]) {\n return 1;\n }\n return 0;\n });\n var currentBin = 0;\n var bins = [new HistogramBin(derivedBins[0])];\n loop: for (var i = 0, ln = sortedData.length; i < ln; i++) {\n var datum = sortedData[i];\n while (datum[xKey] > derivedBins[currentBin][1]) {\n currentBin++;\n var bin = derivedBins[currentBin];\n if (!bin) {\n break loop;\n }\n bins.push(new HistogramBin(bin));\n }\n bins[currentBin].addDatum(datum);\n }\n bins.forEach(function (b) { return b.calculateAggregatedValue(_this._aggregation, _this.yKey); });\n return bins;\n };\n Object.defineProperty(HistogramSeries.prototype, \"xMax\", {\n get: function () {\n var _this = this;\n return this.data && this.data.reduce(function (acc, datum) {\n return Math.max(acc, datum[_this.xKey]);\n }, Number.NEGATIVE_INFINITY);\n },\n enumerable: true,\n configurable: true\n });\n HistogramSeries.prototype.processData = function () {\n var _this = this;\n var _a = this, xKey = _a.xKey, data = _a.data;\n this.binnedData = this.placeDataInBins(xKey && data ? data : []);\n var yData = this.binnedData.map(function (b) { return b.getY(_this.areaPlot); });\n var yMinMax = extent(yData, isContinuous);\n this.yDomain = this.fixNumericExtent([0, yMinMax ? yMinMax[1] : 1], 'y');\n var firstBin = this.binnedData[0];\n var lastBin = this.binnedData[this.binnedData.length - 1];\n var xMin = firstBin.domain[0];\n var xMax = lastBin.domain[1];\n this.xDomain = [xMin, xMax];\n this.fireEvent({ type: 'dataProcessed' });\n return true;\n };\n HistogramSeries.prototype.getDomain = function (direction) {\n if (direction === ChartAxisDirection.X) {\n return this.xDomain;\n }\n else {\n return this.yDomain;\n }\n };\n HistogramSeries.prototype.fireNodeClickEvent = function (event, datum) {\n this.fireEvent({\n type: 'nodeClick',\n event: event,\n series: this,\n datum: datum.datum,\n xKey: this.xKey\n });\n };\n HistogramSeries.prototype.update = function () {\n this.updatePending = false;\n this.updateSelections();\n this.updateNodes();\n };\n HistogramSeries.prototype.updateSelections = function () {\n if (!this.nodeDataPending) {\n return;\n }\n this.nodeDataPending = false;\n var nodeData = this.createNodeData();\n this.updateRectSelection(nodeData);\n this.updateTextSelection(nodeData);\n };\n HistogramSeries.prototype.updateNodes = function () {\n this.group.visible = this.visible;\n this.updateRectNodes();\n this.updateTextNodes();\n };\n HistogramSeries.prototype.createNodeData = function () {\n var _this = this;\n var _a = this, xAxis = _a.xAxis, yAxis = _a.yAxis;\n if (!this.seriesItemEnabled || !xAxis || !yAxis) {\n return [];\n }\n var xScale = xAxis.scale;\n var yScale = yAxis.scale;\n var _b = this, fill = _b.fill, stroke = _b.stroke, strokeWidth = _b.strokeWidth;\n var nodeData = [];\n var defaultLabelFormatter = function (params) { return String(params.value); };\n var _c = this.label, _d = _c.formatter, labelFormatter = _d === void 0 ? defaultLabelFormatter : _d, labelFontStyle = _c.fontStyle, labelFontWeight = _c.fontWeight, labelFontSize = _c.fontSize, labelFontFamily = _c.fontFamily, labelColor = _c.color;\n this.binnedData.forEach(function (binOfData) {\n var total = binOfData.aggregatedValue, frequency = binOfData.frequency, _a = __read(binOfData.domain, 2), xDomainMin = _a[0], xDomainMax = _a[1], relativeHeight = binOfData.relativeHeight;\n var xMinPx = xScale.convert(xDomainMin), xMaxPx = xScale.convert(xDomainMax), \n // note: assuming can't be negative:\n y = _this.areaPlot ? relativeHeight : (_this.yKey ? total : frequency), yZeroPx = yScale.convert(0), yMaxPx = yScale.convert(y), w = xMaxPx - xMinPx, h = Math.abs(yMaxPx - yZeroPx);\n var selectionDatumLabel = y !== 0 ? {\n text: labelFormatter({ value: binOfData.aggregatedValue }),\n fontStyle: labelFontStyle,\n fontWeight: labelFontWeight,\n fontSize: labelFontSize,\n fontFamily: labelFontFamily,\n fill: labelColor,\n x: xMinPx + w / 2,\n y: yMaxPx + h / 2\n } : undefined;\n nodeData.push({\n series: _this,\n datum: binOfData,\n // since each selection is an aggregation of multiple data.\n x: xMinPx,\n y: yMaxPx,\n width: w,\n height: h,\n fill: fill,\n stroke: stroke,\n strokeWidth: strokeWidth,\n label: selectionDatumLabel,\n });\n });\n return nodeData;\n };\n HistogramSeries.prototype.updateRectSelection = function (nodeData) {\n var updateRects = this.rectSelection.setData(nodeData);\n updateRects.exit.remove();\n var enterRects = updateRects.enter.append(Rect).each(function (rect) {\n rect.tag = HistogramSeriesNodeTag.Bin;\n rect.crisp = true;\n });\n this.rectSelection = updateRects.merge(enterRects);\n };\n HistogramSeries.prototype.updateRectNodes = function () {\n var _this = this;\n if (!this.chart) {\n return;\n }\n var _a = this, fillOpacity = _a.fillOpacity, strokeOpacity = _a.strokeOpacity, shadow = _a.shadow, highlightedDatum = _a.chart.highlightedDatum, _b = _a.highlightStyle, deprecatedFill = _b.fill, deprecatedStroke = _b.stroke, deprecatedStrokeWidth = _b.strokeWidth, _c = _b.item, _d = _c.fill, highlightedFill = _d === void 0 ? deprecatedFill : _d, _e = _c.stroke, highlightedStroke = _e === void 0 ? deprecatedStroke : _e, _f = _c.strokeWidth, highlightedDatumStrokeWidth = _f === void 0 ? deprecatedStrokeWidth : _f;\n this.rectSelection.each(function (rect, datum, index) {\n var isDatumHighlighted = datum === highlightedDatum;\n var strokeWidth = isDatumHighlighted && highlightedDatumStrokeWidth !== undefined\n ? highlightedDatumStrokeWidth\n : _this.getStrokeWidth(datum.strokeWidth, datum);\n rect.x = datum.x;\n rect.y = datum.y;\n rect.width = datum.width;\n rect.height = datum.height;\n rect.fill = isDatumHighlighted && highlightedFill !== undefined ? highlightedFill : datum.fill;\n rect.stroke = isDatumHighlighted && highlightedStroke !== undefined ? highlightedStroke : datum.stroke;\n rect.fillOpacity = fillOpacity;\n rect.strokeOpacity = strokeOpacity;\n rect.strokeWidth = strokeWidth;\n rect.lineDash = _this.lineDash;\n rect.lineDashOffset = _this.lineDashOffset;\n rect.fillShadow = shadow;\n rect.zIndex = isDatumHighlighted ? Series.highlightedZIndex : index;\n rect.visible = datum.height > 0; // prevent stroke from rendering for zero height columns\n rect.opacity = _this.getOpacity(datum);\n });\n };\n HistogramSeries.prototype.updateTextSelection = function (nodeData) {\n var updateTexts = this.textSelection.setData(nodeData);\n updateTexts.exit.remove();\n var enterTexts = updateTexts.enter.append(Text).each(function (text) {\n text.tag = HistogramSeriesNodeTag.Label;\n text.pointerEvents = PointerEvents.None;\n text.textAlign = 'center';\n text.textBaseline = 'middle';\n });\n this.textSelection = updateTexts.merge(enterTexts);\n };\n HistogramSeries.prototype.updateTextNodes = function () {\n var labelEnabled = this.label.enabled;\n this.textSelection.each(function (text, datum) {\n var label = datum.label;\n if (label && labelEnabled) {\n text.text = label.text;\n text.x = label.x;\n text.y = label.y;\n text.fontStyle = label.fontStyle;\n text.fontWeight = label.fontWeight;\n text.fontSize = label.fontSize;\n text.fontFamily = label.fontFamily;\n text.fill = label.fill;\n text.visible = true;\n }\n else {\n text.visible = false;\n }\n });\n };\n HistogramSeries.prototype.getTooltipHtml = function (nodeDatum) {\n var _a = this, xKey = _a.xKey, yKey = _a.yKey, xAxis = _a.xAxis, yAxis = _a.yAxis;\n if (!xKey || !xAxis || !yAxis) {\n return '';\n }\n var _b = this, xName = _b.xName, yName = _b.yName, color = _b.fill, tooltip = _b.tooltip, aggregation = _b.aggregation;\n var tooltipRenderer = tooltip.renderer;\n var bin = nodeDatum.datum;\n var aggregatedValue = bin.aggregatedValue, frequency = bin.frequency, _c = __read(bin.domain, 2), rangeMin = _c[0], rangeMax = _c[1];\n var title = sanitizeHtml(xName || xKey) + \": \" + xAxis.formatDatum(rangeMin) + \" - \" + xAxis.formatDatum(rangeMax);\n var content = yKey ?\n \"\" + sanitizeHtml(yName || yKey) + \" (\" + aggregation + \"): \" + yAxis.formatDatum(aggregatedValue) + \"
    \" :\n '';\n content += \"Frequency: \" + frequency;\n var defaults = {\n title: title,\n backgroundColor: color,\n content: content\n };\n if (tooltipRenderer) {\n return toTooltipHtml(tooltipRenderer({\n datum: bin,\n xKey: xKey,\n xValue: bin.domain,\n xName: xName,\n yKey: yKey,\n yValue: bin.aggregatedValue,\n yName: yName,\n color: color\n }), defaults);\n }\n return toTooltipHtml(defaults);\n };\n HistogramSeries.prototype.listSeriesItems = function (legendData) {\n var _a = this, id = _a.id, data = _a.data, yKey = _a.yKey, yName = _a.yName, seriesItemEnabled = _a.seriesItemEnabled, fill = _a.fill, stroke = _a.stroke, fillOpacity = _a.fillOpacity, strokeOpacity = _a.strokeOpacity;\n if (data && data.length) {\n legendData.push({\n id: id,\n itemId: yKey,\n enabled: seriesItemEnabled,\n label: {\n text: yName || yKey || 'Frequency'\n },\n marker: {\n fill: fill || 'rgba(0, 0, 0, 0)',\n stroke: stroke || 'rgba(0, 0, 0, 0)',\n fillOpacity: fillOpacity,\n strokeOpacity: strokeOpacity\n }\n });\n }\n };\n HistogramSeries.prototype.toggleSeriesItem = function (itemId, enabled) {\n if (itemId === this.yKey) {\n this.seriesItemEnabled = enabled;\n }\n this.scheduleData();\n };\n HistogramSeries.className = 'HistogramSeries';\n HistogramSeries.type = 'histogram';\n __decorate([\n reactive('dataChange')\n ], HistogramSeries.prototype, \"fill\", void 0);\n __decorate([\n reactive('dataChange')\n ], HistogramSeries.prototype, \"stroke\", void 0);\n __decorate([\n reactive('layoutChange')\n ], HistogramSeries.prototype, \"fillOpacity\", void 0);\n __decorate([\n reactive('layoutChange')\n ], HistogramSeries.prototype, \"strokeOpacity\", void 0);\n __decorate([\n reactive('update')\n ], HistogramSeries.prototype, \"lineDash\", void 0);\n __decorate([\n reactive('update')\n ], HistogramSeries.prototype, \"lineDashOffset\", void 0);\n return HistogramSeries;\n}(CartesianSeries));\nexport { HistogramSeries };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Series } from \"../series\";\nimport { reactive } from \"../../../util/observable\";\nvar HierarchySeries = /** @class */ (function (_super) {\n __extends(HierarchySeries, _super);\n function HierarchySeries() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.data = undefined;\n return _this;\n }\n __decorate([\n reactive('dataChange')\n ], HierarchySeries.prototype, \"data\", void 0);\n return HierarchySeries;\n}(Series));\nexport { HierarchySeries };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Observable, reactive } from \"../util/observable\";\nvar DropShadow = /** @class */ (function (_super) {\n __extends(DropShadow, _super);\n function DropShadow() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.enabled = true;\n _this.color = 'rgba(0, 0, 0, 0.5)';\n _this.xOffset = 0;\n _this.yOffset = 0;\n _this.blur = 5;\n return _this;\n }\n __decorate([\n reactive('change')\n ], DropShadow.prototype, \"enabled\", void 0);\n __decorate([\n reactive('change')\n ], DropShadow.prototype, \"color\", void 0);\n __decorate([\n reactive('change')\n ], DropShadow.prototype, \"xOffset\", void 0);\n __decorate([\n reactive('change')\n ], DropShadow.prototype, \"yOffset\", void 0);\n __decorate([\n reactive('change')\n ], DropShadow.prototype, \"blur\", void 0);\n return DropShadow;\n}(Observable));\nexport { DropShadow };\n","function slice(parent, x0, y0, x1, y1) {\n var nodes = parent.children;\n var k = parent.value && (y1 - y0) / parent.value;\n nodes.forEach(function (node) {\n node.x0 = x0;\n node.x1 = x1;\n node.y0 = y0;\n node.y1 = y0 += node.value * k;\n });\n}\nfunction dice(parent, x0, y0, x1, y1) {\n var nodes = parent.children;\n var k = parent.value && (x1 - x0) / parent.value;\n nodes.forEach(function (node) {\n node.x0 = x0;\n node.x1 = x0 += node.value * k;\n node.y0 = y0;\n node.y1 = y1;\n });\n}\nfunction roundNode(node) {\n node.x0 = Math.round(node.x0);\n node.y0 = Math.round(node.y0);\n node.x1 = Math.round(node.x1);\n node.y1 = Math.round(node.y1);\n}\nexport function squarifyRatio(ratio, parent, x0, y0, x1, y1) {\n var rows = [];\n var nodes = parent.children;\n var n = nodes.length;\n var value = parent.value;\n var i0 = 0;\n var i1 = 0;\n var dx;\n var dy;\n var nodeValue;\n var sumValue;\n var minValue;\n var maxValue;\n var newRatio;\n var minRatio;\n var alpha;\n var beta;\n while (i0 < n) {\n dx = x1 - x0;\n dy = y1 - y0;\n // Find the next non-empty node.\n do {\n sumValue = nodes[i1++].value;\n } while (!sumValue && i1 < n);\n minValue = maxValue = sumValue;\n alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n beta = sumValue * sumValue * alpha;\n minRatio = Math.max(maxValue / beta, beta / minValue);\n // Keep adding nodes while the aspect ratio maintains or improves.\n for (; i1 < n; ++i1) {\n nodeValue = nodes[i1].value;\n sumValue += nodeValue;\n if (nodeValue < minValue) {\n minValue = nodeValue;\n }\n if (nodeValue > maxValue) {\n maxValue = nodeValue;\n }\n beta = sumValue * sumValue * alpha;\n newRatio = Math.max(maxValue / beta, beta / minValue);\n if (newRatio > minRatio) {\n sumValue -= nodeValue;\n break;\n }\n minRatio = newRatio;\n }\n // Position and record the row orientation.\n var row = {\n value: sumValue,\n dice: dx < dy,\n children: nodes.slice(i0, i1)\n };\n rows.push(row);\n if (row.dice) {\n dice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);\n }\n else {\n slice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);\n }\n value -= sumValue;\n i0 = i1;\n }\n return rows;\n}\nvar phi = (1 + Math.sqrt(5)) / 2;\nvar squarify = (function custom(ratio) {\n function squarify(parent, x0, y0, x1, y1) {\n squarifyRatio(ratio, parent, x0, y0, x1, y1);\n }\n squarify.ratio = function (x) { return custom((x = +x) > 1 ? x : 1); };\n return squarify;\n})(phi);\nvar Treemap = /** @class */ (function () {\n function Treemap() {\n this.paddingStack = [0];\n this.dx = 1;\n this.dy = 1;\n this.round = true;\n this.tile = squarify;\n this.paddingInner = function (_) { return 0; };\n this.paddingTop = function (_) { return 0; };\n this.paddingRight = function (_) { return 0; };\n this.paddingBottom = function (_) { return 0; };\n this.paddingLeft = function (_) { return 0; };\n }\n Object.defineProperty(Treemap.prototype, \"size\", {\n get: function () {\n return [this.dx, this.dy];\n },\n set: function (size) {\n this.dx = size[0];\n this.dy = size[1];\n },\n enumerable: true,\n configurable: true\n });\n Treemap.prototype.processData = function (root) {\n root.x0 = 0;\n root.y0 = 0;\n root.x1 = this.dx;\n root.y1 = this.dy;\n root.eachBefore(this.positionNode.bind(this));\n this.paddingStack = [0];\n if (this.round) {\n root.eachBefore(roundNode);\n }\n return root;\n };\n Treemap.prototype.positionNode = function (node) {\n var p = this.paddingStack[node.depth];\n var x0 = node.x0 + p;\n var y0 = node.y0 + p;\n var x1 = node.x1 - p;\n var y1 = node.y1 - p;\n if (x1 < x0) {\n x0 = x1 = (x0 + x1) / 2;\n }\n if (y1 < y0) {\n y0 = y1 = (y0 + y1) / 2;\n }\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n if (node.children) {\n p = this.paddingStack[node.depth + 1] = this.paddingInner(node) / 2;\n x0 += this.paddingLeft(node) - p;\n y0 += this.paddingTop(node) - p;\n x1 -= this.paddingRight(node) - p;\n y1 -= this.paddingBottom(node) - p;\n if (x1 < x0) {\n x0 = x1 = (x0 + x1) / 2;\n }\n if (y1 < y0) {\n y0 = y1 = (y0 + y1) / 2;\n }\n this.tile(node, x0, y0, x1, y1);\n }\n };\n return Treemap;\n}());\nexport { Treemap };\n","var HierarchyNode = /** @class */ (function () {\n function HierarchyNode(datum) {\n this.value = 0;\n this.depth = 0;\n this.height = 0;\n this.parent = undefined;\n this.children = undefined;\n this.datum = datum;\n }\n HierarchyNode.prototype.countFn = function (node) {\n var sum = 0, children = node.children;\n if (!children || !children.length) {\n sum = 1;\n }\n else {\n var i = children.length;\n while (--i >= 0) {\n sum += children[i].value;\n }\n }\n node.value = sum;\n };\n HierarchyNode.prototype.count = function () {\n return this.eachAfter(this.countFn);\n };\n HierarchyNode.prototype.each = function (callback, scope) {\n var _this = this;\n var index = -1;\n this.iterator(function (node) {\n callback.call(scope, node, ++index, _this);\n });\n return this;\n };\n /**\n * Invokes the given callback for each node in post-order traversal.\n * @param callback\n * @param scope\n */\n HierarchyNode.prototype.eachAfter = function (callback, scope) {\n var node = this;\n var nodes = [node];\n var next = [];\n while (node = nodes.pop()) {\n next.push(node);\n var children = node.children;\n if (children) {\n for (var i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n }\n var index = -1;\n while (node = next.pop()) {\n callback.call(scope, node, ++index, this);\n }\n return this;\n };\n /**\n * Invokes the given callback for each node in pre-order traversal.\n * @param callback\n * @param scope\n */\n HierarchyNode.prototype.eachBefore = function (callback, scope) {\n var node = this;\n var nodes = [node];\n var index = -1;\n while (node = nodes.pop()) {\n callback.call(scope, node, ++index, this);\n var children = node.children;\n if (children) {\n for (var i = children.length - 1; i >= 0; --i) {\n var child = children[i];\n nodes.push(child);\n }\n }\n }\n return this;\n };\n HierarchyNode.prototype.find = function (callback, scope) {\n var _this = this;\n var index = -1;\n var result;\n this.iterator(function (node) {\n if (callback.call(scope, node, ++index, _this)) {\n result = node;\n return false;\n }\n });\n return result;\n };\n HierarchyNode.prototype.sum = function (value) {\n return this.eachAfter(function (node) {\n var sum = +value(node.datum) || 0;\n var children = node.children;\n if (children) {\n var i = children.length;\n while (--i >= 0) {\n sum += children[i].value;\n }\n }\n node.value = sum;\n });\n };\n HierarchyNode.prototype.sort = function (compare) {\n return this.eachBefore(function (node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n };\n HierarchyNode.prototype.path = function (end) {\n var start = this;\n var ancestor = leastCommonAncestor(start, end);\n var nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n // const otherBranch = [];\n // while (end !== ancestor) {\n // otherBranch.push(end);\n // end = end.parent;\n // }\n // nodes.concat(otherBranch.reverse());\n return nodes;\n };\n HierarchyNode.prototype.ancestors = function () {\n var node = this;\n var nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n };\n HierarchyNode.prototype.descendants = function () {\n var nodes = [];\n this.iterator(function (node) { return nodes.push(node); });\n return nodes;\n };\n HierarchyNode.prototype.leaves = function () {\n var leaves = [];\n this.eachBefore(function (node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n };\n HierarchyNode.prototype.links = function () {\n var root = this;\n var links = [];\n root.each(function (node) {\n if (node !== root) { // Don’t include the root’s parent, if any.\n links.push({ source: node.parent, target: node });\n }\n });\n return links;\n };\n HierarchyNode.prototype.copy = function () {\n // TODO\n };\n HierarchyNode.prototype.iterator = function (callback) {\n var node = this;\n var next = [node];\n var current;\n doLoop: do {\n current = next.reverse();\n next = [];\n while (node = current.pop()) {\n if (callback(node) === false) {\n break doLoop;\n }\n var children = node.children;\n if (children) {\n for (var i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n }\n } while (next.length);\n };\n return HierarchyNode;\n}());\nexport { HierarchyNode };\nexport function hierarchy(data, children) {\n if (data instanceof Map) {\n data = [undefined, data];\n if (children === undefined) {\n children = mapChildren;\n }\n }\n else if (children === undefined) {\n children = objectChildren;\n }\n var root = new HierarchyNode(data);\n var nodes = [root];\n var node;\n var child, childs, i, n;\n while (node = nodes.pop()) {\n if ((childs = children(node.datum)) && (n = (childs = Array.from(childs)).length)) {\n node.children = childs;\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = childs[i] = new HierarchyNode(childs[i]));\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n return root.eachBefore(computeHeight);\n}\nfunction computeHeight(node) {\n var height = 0;\n do {\n node.height = height;\n } while ((node = node.parent) && (node.height < ++height));\n}\nfunction mapChildren(d) {\n return Array.isArray(d) ? d[1] : undefined;\n}\nfunction objectChildren(d) {\n return d.children;\n}\nfunction leastCommonAncestor(a, b) {\n if (!(a && b)) {\n return undefined;\n }\n if (a === b) {\n return a;\n }\n var aNodes = a.ancestors();\n var bNodes = b.ancestors();\n var c = undefined;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Selection } from \"../../../scene/selection\";\nimport { HdpiCanvas } from \"../../../canvas/hdpiCanvas\";\nimport { reactive } from \"../../../util/observable\";\nimport { Label } from \"../../label\";\nimport { SeriesTooltip } from \"../series\";\nimport { HierarchySeries } from \"./hierarchySeries\";\nimport { toTooltipHtml } from \"../../chart\";\nimport { Group } from \"../../../scene/group\";\nimport { Text } from \"../../../scene/shape/text\";\nimport { Rect } from \"../../../scene/shape/rect\";\nimport { DropShadow } from \"../../../scene/dropShadow\";\nimport { LinearScale } from \"../../../scale/linearScale\";\nimport { Treemap } from \"../../../layout/treemap\";\nimport { hierarchy } from \"../../../layout/hierarchy\";\nimport { toFixed } from \"../../../util/number\";\nvar TreemapSeriesTooltip = /** @class */ (function (_super) {\n __extends(TreemapSeriesTooltip, _super);\n function TreemapSeriesTooltip() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n reactive('change')\n ], TreemapSeriesTooltip.prototype, \"renderer\", void 0);\n return TreemapSeriesTooltip;\n}(SeriesTooltip));\nexport { TreemapSeriesTooltip };\nvar TreemapSeriesLabel = /** @class */ (function (_super) {\n __extends(TreemapSeriesLabel, _super);\n function TreemapSeriesLabel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.padding = 10;\n return _this;\n }\n __decorate([\n reactive('change')\n ], TreemapSeriesLabel.prototype, \"padding\", void 0);\n return TreemapSeriesLabel;\n}(Label));\nexport { TreemapSeriesLabel };\nvar TextNodeTag;\n(function (TextNodeTag) {\n TextNodeTag[TextNodeTag[\"Name\"] = 0] = \"Name\";\n TextNodeTag[TextNodeTag[\"Value\"] = 1] = \"Value\";\n})(TextNodeTag || (TextNodeTag = {}));\nvar TreemapSeries = /** @class */ (function (_super) {\n __extends(TreemapSeries, _super);\n function TreemapSeries() {\n var _this = _super.call(this) || this;\n _this.groupSelection = Selection.select(_this.pickGroup).selectAll();\n _this.labelMap = new Map();\n _this.layout = new Treemap();\n _this.title = (function () {\n var label = new TreemapSeriesLabel();\n label.color = 'white';\n label.fontWeight = 'bold';\n label.fontSize = 12;\n label.fontFamily = 'Verdana, sans-serif';\n label.padding = 15;\n return label;\n })();\n _this.subtitle = (function () {\n var label = new TreemapSeriesLabel();\n label.color = 'white';\n label.fontSize = 9;\n label.fontFamily = 'Verdana, sans-serif';\n label.padding = 13;\n return label;\n })();\n _this.labels = {\n large: (function () {\n var label = new Label();\n label.color = 'white';\n label.fontWeight = 'bold';\n label.fontSize = 18;\n return label;\n })(),\n medium: (function () {\n var label = new Label();\n label.color = 'white';\n label.fontWeight = 'bold';\n label.fontSize = 14;\n return label;\n })(),\n small: (function () {\n var label = new Label();\n label.color = 'white';\n label.fontWeight = 'bold';\n label.fontSize = 10;\n return label;\n })(),\n color: (function () {\n var label = new Label();\n label.color = 'white';\n return label;\n })()\n };\n _this._nodePadding = 2;\n _this.labelKey = 'label';\n _this.sizeKey = 'size';\n _this.colorKey = 'color';\n _this.colorDomain = [-5, 5];\n _this.colorRange = ['#cb4b3f', '#6acb64'];\n _this.colorParents = false;\n _this.gradient = true;\n _this.colorName = 'Change';\n _this.rootName = 'Root';\n _this._shadow = (function () {\n var shadow = new DropShadow();\n shadow.color = 'rgba(0, 0, 0, 0.4)';\n shadow.xOffset = 1.5;\n shadow.yOffset = 1.5;\n return shadow;\n })();\n _this.tooltip = new TreemapSeriesTooltip();\n _this.shadow.addEventListener('change', _this.scheduleUpdate, _this);\n _this.title.addEventListener('change', _this.scheduleUpdate, _this);\n _this.subtitle.addEventListener('change', _this.scheduleUpdate, _this);\n _this.labels.small.addEventListener('change', _this.scheduleUpdate, _this);\n _this.labels.medium.addEventListener('change', _this.scheduleUpdate, _this);\n _this.labels.large.addEventListener('change', _this.scheduleUpdate, _this);\n _this.labels.color.addEventListener('change', _this.scheduleUpdate, _this);\n return _this;\n }\n Object.defineProperty(TreemapSeries.prototype, \"nodePadding\", {\n get: function () {\n return this._nodePadding;\n },\n set: function (value) {\n if (this._nodePadding !== value) {\n this._nodePadding = value;\n this.updateLayoutPadding();\n this.scheduleUpdate();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TreemapSeries.prototype, \"shadow\", {\n get: function () {\n return this._shadow;\n },\n set: function (value) {\n if (this._shadow !== value) {\n this._shadow = value;\n this.scheduleUpdate();\n }\n },\n enumerable: true,\n configurable: true\n });\n TreemapSeries.prototype.onHighlightChange = function () {\n this.updateNodes();\n };\n TreemapSeries.prototype.updateLayoutPadding = function () {\n var _a = this, title = _a.title, subtitle = _a.subtitle, nodePadding = _a.nodePadding, labelKey = _a.labelKey;\n this.layout.paddingRight = function (_) { return nodePadding; };\n this.layout.paddingBottom = function (_) { return nodePadding; };\n this.layout.paddingLeft = function (_) { return nodePadding; };\n this.layout.paddingTop = function (node) {\n var name = node.datum[labelKey] || '';\n if (node.children) {\n name = name.toUpperCase();\n }\n var font = node.depth > 1 ? subtitle : title;\n var textSize = HdpiCanvas.getTextSize(name, [font.fontWeight, font.fontSize + 'px', font.fontFamily].join(' ').trim());\n var innerNodeWidth = node.x1 - node.x0 - nodePadding * 2;\n var hasTitle = node.depth > 0 && node.children && textSize.width <= innerNodeWidth;\n node.hasTitle = !!hasTitle;\n return hasTitle ? textSize.height + nodePadding * 2 : nodePadding;\n };\n };\n TreemapSeries.prototype.processData = function () {\n if (!this.data) {\n return false;\n }\n var _a = this, data = _a.data, sizeKey = _a.sizeKey, labelKey = _a.labelKey, colorKey = _a.colorKey, colorDomain = _a.colorDomain, colorRange = _a.colorRange, colorParents = _a.colorParents;\n var dataRoot;\n if (sizeKey) {\n dataRoot = hierarchy(data).sum(function (datum) { return datum.children ? 1 : datum[sizeKey]; });\n }\n else {\n dataRoot = hierarchy(data).sum(function (datum) { return datum.children ? 0 : 1; });\n }\n this.dataRoot = dataRoot;\n var colorScale = new LinearScale();\n colorScale.domain = colorDomain;\n colorScale.range = colorRange;\n var series = this;\n function traverse(root, depth) {\n if (depth === void 0) { depth = 0; }\n var children = root.children, datum = root.datum;\n var label = datum[labelKey];\n var colorValue = colorKey ? datum[colorKey] : depth;\n root.series = series;\n root.fill = !children || colorParents ? colorScale.convert(colorValue) : '#272931';\n root.colorValue = colorValue;\n if (label) {\n root.label = children ? label.toUpperCase() : label;\n }\n else {\n root.label = '';\n }\n if (children) {\n children.forEach(function (child) { return traverse(child, depth + 1); });\n }\n }\n traverse(this.dataRoot);\n return true;\n };\n TreemapSeries.prototype.getLabelCenterX = function (datum) {\n return (datum.x0 + datum.x1) / 2;\n };\n TreemapSeries.prototype.getLabelCenterY = function (datum) {\n return (datum.y0 + datum.y1) / 2 + 2;\n };\n TreemapSeries.prototype.update = function () {\n this.updatePending = false;\n this.updateSelections();\n this.updateNodes();\n };\n TreemapSeries.prototype.updateSelections = function () {\n if (!this.nodeDataPending) {\n return;\n }\n this.nodeDataPending = false;\n var _a = this, chart = _a.chart, dataRoot = _a.dataRoot;\n if (!chart || !dataRoot) {\n return;\n }\n var seriesRect = chart.getSeriesRect();\n if (!seriesRect) {\n return;\n }\n this.layout.size = [seriesRect.width, seriesRect.height];\n this.updateLayoutPadding();\n var descendants = this.layout.processData(dataRoot).descendants();\n var updateGroups = this.groupSelection.setData(descendants);\n updateGroups.exit.remove();\n var enterGroups = updateGroups.enter.append(Group);\n enterGroups.append(Rect);\n enterGroups.append(Text).each(function (node) { return node.tag = TextNodeTag.Name; });\n enterGroups.append(Text).each(function (node) { return node.tag = TextNodeTag.Value; });\n this.groupSelection = updateGroups.merge(enterGroups);\n };\n TreemapSeries.prototype.updateNodes = function () {\n var _this = this;\n if (!this.chart) {\n return;\n }\n var _a = this, colorKey = _a.colorKey, labelMap = _a.labelMap, nodePadding = _a.nodePadding, title = _a.title, subtitle = _a.subtitle, labels = _a.labels, shadow = _a.shadow, gradient = _a.gradient, highlightedDatum = _a.chart.highlightedDatum, _b = _a.highlightStyle, deprecatedFill = _b.fill, deprecatedStroke = _b.stroke, deprecatedStrokeWidth = _b.strokeWidth, _c = _b.item, _d = _c.fill, highlightedFill = _d === void 0 ? deprecatedFill : _d, _e = _c.stroke, highlightedStroke = _e === void 0 ? deprecatedStroke : _e, _f = _c.strokeWidth, highlightedDatumStrokeWidth = _f === void 0 ? deprecatedStrokeWidth : _f;\n this.groupSelection.selectByClass(Rect).each(function (rect, datum) {\n var isDatumHighlighted = datum === highlightedDatum;\n var fill = isDatumHighlighted && highlightedFill !== undefined ? highlightedFill : datum.fill;\n var stroke = isDatumHighlighted && highlightedStroke !== undefined ? highlightedStroke : datum.depth < 2 ? undefined : 'black';\n var strokeWidth = isDatumHighlighted && highlightedDatumStrokeWidth !== undefined\n ? highlightedDatumStrokeWidth\n : _this.getStrokeWidth(1, datum);\n rect.fill = fill;\n rect.stroke = stroke;\n rect.strokeWidth = strokeWidth;\n rect.crisp = true;\n rect.gradient = gradient;\n rect.x = datum.x0;\n rect.y = datum.y0;\n rect.width = datum.x1 - datum.x0;\n rect.height = datum.y1 - datum.y0;\n });\n this.groupSelection.selectByTag(TextNodeTag.Name).each(function (text, datum, index) {\n var isLeaf = !datum.children;\n var innerNodeWidth = datum.x1 - datum.x0 - nodePadding * 2;\n var innerNodeHeight = datum.y1 - datum.y0 - nodePadding * 2;\n var hasTitle = datum.hasTitle;\n var highlighted = datum === highlightedDatum;\n var label;\n if (isLeaf) {\n if (innerNodeWidth > 40 && innerNodeHeight > 40) {\n label = labels.large;\n }\n else if (innerNodeWidth > 20 && innerNodeHeight > 20) {\n label = labels.medium;\n }\n else {\n label = labels.small;\n }\n }\n else {\n if (datum.depth > 1) {\n label = subtitle;\n }\n else {\n label = title;\n }\n }\n text.fontWeight = label.fontWeight;\n text.fontSize = label.fontSize;\n text.fontFamily = label.fontFamily;\n text.textBaseline = isLeaf ? 'bottom' : (hasTitle ? 'top' : 'middle');\n text.textAlign = hasTitle ? 'left' : 'center';\n text.text = datum.label;\n var textBBox = text.computeBBox();\n var hasLabel = isLeaf && !!textBBox\n && textBBox.width <= innerNodeWidth\n && textBBox.height * 2 + 8 <= innerNodeHeight;\n labelMap.set(index, text);\n text.fill = highlighted ? 'black' : label.color;\n text.fillShadow = hasLabel && !highlighted ? shadow : undefined;\n text.visible = hasTitle || hasLabel;\n if (hasTitle) {\n text.x = datum.x0 + nodePadding;\n text.y = datum.y0 + nodePadding;\n }\n else {\n text.x = _this.getLabelCenterX(datum);\n text.y = _this.getLabelCenterY(datum);\n }\n });\n this.groupSelection.selectByTag(TextNodeTag.Value).each(function (text, datum, index) {\n var isLeaf = !datum.children;\n var innerNodeWidth = datum.x1 - datum.x0 - nodePadding * 2;\n var highlighted = datum === highlightedDatum;\n var value = datum.colorValue;\n var label = labels.color;\n text.fontSize = label.fontSize;\n text.fontFamily = label.fontFamily;\n text.fontStyle = label.fontStyle;\n text.fontWeight = label.fontWeight;\n text.textBaseline = 'top';\n text.textAlign = 'center';\n text.text = typeof value === 'number' && isFinite(value)\n ? String(toFixed(datum.colorValue)) + '%'\n : '';\n var textBBox = text.computeBBox();\n var nameNode = labelMap.get(index);\n var hasLabel = !!nameNode && nameNode.visible;\n var isVisible = isLeaf && !!colorKey && hasLabel && !!textBBox && textBBox.width < innerNodeWidth;\n text.fill = highlighted ? 'black' : label.color;\n text.fillShadow = highlighted ? undefined : shadow;\n text.visible = isVisible;\n if (isVisible) {\n text.x = _this.getLabelCenterX(datum);\n text.y = _this.getLabelCenterY(datum);\n }\n else {\n if (nameNode && !(datum.children && datum.children.length)) {\n nameNode.textBaseline = 'middle';\n nameNode.y = _this.getLabelCenterY(datum);\n }\n }\n });\n };\n TreemapSeries.prototype.getDomain = function (direction) {\n return [0, 1];\n };\n TreemapSeries.prototype.fireNodeClickEvent = function (event, datum) {\n this.fireEvent({\n type: 'nodeClick',\n event: event,\n series: this,\n datum: datum.datum,\n labelKey: this.labelKey,\n sizeKey: this.sizeKey,\n colorKey: this.colorKey\n });\n };\n TreemapSeries.prototype.getTooltipHtml = function (nodeDatum) {\n var _a = this, tooltip = _a.tooltip, sizeKey = _a.sizeKey, labelKey = _a.labelKey, colorKey = _a.colorKey, colorName = _a.colorName, rootName = _a.rootName;\n var datum = nodeDatum.datum;\n var tooltipRenderer = tooltip.renderer;\n var title = nodeDatum.depth ? datum[labelKey] : (rootName || datum[labelKey]);\n var content = undefined;\n var color = nodeDatum.fill || 'gray';\n if (colorKey && colorName) {\n var colorValue = datum[colorKey];\n if (typeof colorValue === 'number' && isFinite(colorValue)) {\n content = \"\" + colorName + \": \" + toFixed(datum[colorKey]);\n }\n }\n var defaults = {\n title: title,\n backgroundColor: color,\n content: content\n };\n if (tooltipRenderer) {\n return toTooltipHtml(tooltipRenderer({\n datum: nodeDatum,\n sizeKey: sizeKey,\n labelKey: labelKey,\n colorKey: colorKey,\n title: title,\n color: color\n }), defaults);\n }\n return toTooltipHtml(defaults);\n };\n TreemapSeries.prototype.listSeriesItems = function (legendData) {\n };\n TreemapSeries.className = 'TreemapSeries';\n TreemapSeries.type = 'treemap';\n __decorate([\n reactive('dataChange')\n ], TreemapSeries.prototype, \"labelKey\", void 0);\n __decorate([\n reactive('dataChange')\n ], TreemapSeries.prototype, \"sizeKey\", void 0);\n __decorate([\n reactive('dataChange')\n ], TreemapSeries.prototype, \"colorKey\", void 0);\n __decorate([\n reactive('dataChange')\n ], TreemapSeries.prototype, \"colorDomain\", void 0);\n __decorate([\n reactive('dataChange')\n ], TreemapSeries.prototype, \"colorRange\", void 0);\n __decorate([\n reactive('dataChange')\n ], TreemapSeries.prototype, \"colorParents\", void 0);\n __decorate([\n reactive('update')\n ], TreemapSeries.prototype, \"gradient\", void 0);\n return TreemapSeries;\n}(HierarchySeries));\nexport { TreemapSeries };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Path } from \"./path\";\nimport { normalizeAngle360 } from \"../../util/angle\";\nimport { isEqual } from \"../../util/number\";\nimport { BBox } from \"../bbox\";\nvar Sector = /** @class */ (function (_super) {\n __extends(Sector, _super);\n function Sector() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._centerX = 0;\n _this._centerY = 0;\n _this._centerOffset = 0;\n _this._innerRadius = 10;\n _this._outerRadius = 20;\n _this._startAngle = 0;\n _this._endAngle = Math.PI * 2;\n _this._angleOffset = 0;\n return _this;\n }\n Object.defineProperty(Sector.prototype, \"centerX\", {\n get: function () {\n return this._centerX;\n },\n set: function (value) {\n if (this._centerX !== value) {\n this._centerX = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sector.prototype, \"centerY\", {\n get: function () {\n return this._centerY;\n },\n set: function (value) {\n if (this._centerY !== value) {\n this._centerY = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sector.prototype, \"centerOffset\", {\n get: function () {\n return this._centerOffset;\n },\n set: function (value) {\n if (this._centerOffset !== value) {\n this._centerOffset = Math.max(0, value);\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sector.prototype, \"innerRadius\", {\n get: function () {\n return this._innerRadius;\n },\n set: function (value) {\n if (this._innerRadius !== value) {\n this._innerRadius = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sector.prototype, \"outerRadius\", {\n get: function () {\n return this._outerRadius;\n },\n set: function (value) {\n if (this._outerRadius !== value) {\n this._outerRadius = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sector.prototype, \"startAngle\", {\n get: function () {\n return this._startAngle;\n },\n set: function (value) {\n if (this._startAngle !== value) {\n this._startAngle = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sector.prototype, \"endAngle\", {\n get: function () {\n return this._endAngle;\n },\n set: function (value) {\n if (this._endAngle !== value) {\n this._endAngle = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sector.prototype, \"angleOffset\", {\n get: function () {\n return this._angleOffset;\n },\n set: function (value) {\n if (this._angleOffset !== value) {\n this._angleOffset = value;\n this.dirtyPath = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Sector.prototype.computeBBox = function () {\n var radius = this.outerRadius;\n return new BBox(this.centerX - radius, this.centerY - radius, radius * 2, radius * 2);\n };\n Sector.prototype.isFullPie = function () {\n return isEqual(normalizeAngle360(this.startAngle), normalizeAngle360(this.endAngle));\n };\n Sector.prototype.updatePath = function () {\n var path = this.path;\n var angleOffset = this.angleOffset;\n var startAngle = Math.min(this.startAngle, this.endAngle) + angleOffset;\n var endAngle = Math.max(this.startAngle, this.endAngle) + angleOffset;\n var midAngle = (startAngle + endAngle) * 0.5;\n var innerRadius = Math.min(this.innerRadius, this.outerRadius);\n var outerRadius = Math.max(this.innerRadius, this.outerRadius);\n var centerOffset = this.centerOffset;\n var fullPie = this.isFullPie();\n var centerX = this.centerX;\n var centerY = this.centerY;\n path.clear();\n if (centerOffset) {\n centerX += centerOffset * Math.cos(midAngle);\n centerY += centerOffset * Math.sin(midAngle);\n }\n if (!fullPie) {\n path.moveTo(centerX + innerRadius * Math.cos(startAngle), centerY + innerRadius * Math.sin(startAngle));\n // if (showTip) {\n // path.lineTo(\n // centerX + 0.5 * (innerRadius + outerRadius) * Math.cos(startAngle) + tipOffset * Math.cos(startAngle + Math.PI / 2),\n // centerY + 0.5 * (innerRadius + outerRadius) * Math.sin(startAngle) + tipOffset * Math.sin(startAngle + Math.PI / 2)\n // );\n // }\n path.lineTo(centerX + outerRadius * Math.cos(startAngle), centerY + outerRadius * Math.sin(startAngle));\n }\n path.cubicArc(centerX, centerY, outerRadius, outerRadius, 0, startAngle, endAngle, 0);\n // path[fullPie ? 'moveTo' : 'lineTo'](\n // centerX + innerRadius * Math.cos(endAngle),\n // centerY + innerRadius * Math.sin(endAngle)\n // );\n if (fullPie) {\n path.moveTo(centerX + innerRadius * Math.cos(endAngle), centerY + innerRadius * Math.sin(endAngle));\n }\n else {\n // if (showTip) {\n // path.lineTo(\n // centerX + 0.5 * (innerRadius + outerRadius) * Math.cos(endAngle) + tipOffset * Math.cos(endAngle + Math.PI / 2),\n // centerY + 0.5 * (innerRadius + outerRadius) * Math.sin(endAngle) + tipOffset * Math.sin(endAngle + Math.PI / 2)\n // );\n // }\n // Temp workaround for https://bugs.chromium.org/p/chromium/issues/detail?id=993330\n // Revert this commit when fixed ^^.\n var x = centerX + innerRadius * Math.cos(endAngle);\n path.lineTo(Math.abs(x) < 1e-8 ? 0 : x, centerY + innerRadius * Math.sin(endAngle));\n }\n path.cubicArc(centerX, centerY, innerRadius, innerRadius, 0, endAngle, startAngle, 1);\n path.closePath();\n this.dirtyPath = false;\n };\n Sector.className = 'Sector';\n return Sector;\n}(Path));\nexport { Sector };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nimport { Group } from \"../../../scene/group\";\nimport { Line } from \"../../../scene/shape/line\";\nimport { Text } from \"../../../scene/shape/text\";\nimport { Selection } from \"../../../scene/selection\";\nimport { LinearScale } from \"../../../scale/linearScale\";\nimport { Sector } from \"../../../scene/shape/sector\";\nimport { HighlightStyle, SeriesTooltip } from \"./../series\";\nimport { Label } from \"../../label\";\nimport { PointerEvents } from \"../../../scene/node\";\nimport { normalizeAngle180, toRadians } from \"../../../util/angle\";\nimport { toFixed } from \"../../../util/number\";\nimport { Caption } from \"../../../caption\";\nimport { reactive, Observable } from \"../../../util/observable\";\nimport { PolarSeries } from \"./polarSeries\";\nimport { ChartAxisDirection } from \"../../chartAxis\";\nimport { toTooltipHtml } from \"../../chart\";\nvar PieHighlightStyle = /** @class */ (function (_super) {\n __extends(PieHighlightStyle, _super);\n function PieHighlightStyle() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return PieHighlightStyle;\n}(HighlightStyle));\nvar PieNodeTag;\n(function (PieNodeTag) {\n PieNodeTag[PieNodeTag[\"Sector\"] = 0] = \"Sector\";\n PieNodeTag[PieNodeTag[\"Callout\"] = 1] = \"Callout\";\n PieNodeTag[PieNodeTag[\"Label\"] = 2] = \"Label\";\n})(PieNodeTag || (PieNodeTag = {}));\nvar PieSeriesLabel = /** @class */ (function (_super) {\n __extends(PieSeriesLabel, _super);\n function PieSeriesLabel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.offset = 3; // from the callout line\n _this.minAngle = 20; // in degrees\n return _this;\n }\n __decorate([\n reactive('change')\n ], PieSeriesLabel.prototype, \"offset\", void 0);\n __decorate([\n reactive('dataChange')\n ], PieSeriesLabel.prototype, \"minAngle\", void 0);\n __decorate([\n reactive('dataChange')\n ], PieSeriesLabel.prototype, \"formatter\", void 0);\n return PieSeriesLabel;\n}(Label));\nvar PieSeriesCallout = /** @class */ (function (_super) {\n __extends(PieSeriesCallout, _super);\n function PieSeriesCallout() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.colors = [\n '#874349',\n '#718661',\n '#a48f5f',\n '#5a7088',\n '#7f637a',\n '#5d8692'\n ];\n _this.length = 10;\n _this.strokeWidth = 1;\n return _this;\n }\n __decorate([\n reactive('change')\n ], PieSeriesCallout.prototype, \"colors\", void 0);\n __decorate([\n reactive('change')\n ], PieSeriesCallout.prototype, \"length\", void 0);\n __decorate([\n reactive('change')\n ], PieSeriesCallout.prototype, \"strokeWidth\", void 0);\n return PieSeriesCallout;\n}(Observable));\nvar PieSeriesTooltip = /** @class */ (function (_super) {\n __extends(PieSeriesTooltip, _super);\n function PieSeriesTooltip() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n reactive('change')\n ], PieSeriesTooltip.prototype, \"renderer\", void 0);\n return PieSeriesTooltip;\n}(SeriesTooltip));\nexport { PieSeriesTooltip };\nvar PieTitle = /** @class */ (function (_super) {\n __extends(PieTitle, _super);\n function PieTitle() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.showInLegend = false;\n return _this;\n }\n __decorate([\n reactive()\n ], PieTitle.prototype, \"showInLegend\", void 0);\n return PieTitle;\n}(Caption));\nexport { PieTitle };\nvar PieSeries = /** @class */ (function (_super) {\n __extends(PieSeries, _super);\n function PieSeries() {\n var _this = _super.call(this) || this;\n _this.radiusScale = new LinearScale();\n _this.groupSelection = Selection.select(_this.pickGroup).selectAll();\n /**\n * The processed data that gets visualized.\n */\n _this.groupSelectionData = [];\n _this.angleScale = (function () {\n var scale = new LinearScale();\n // Each slice is a ratio of the whole, where all ratios add up to 1.\n scale.domain = [0, 1];\n // Add 90 deg to start the first pie at 12 o'clock.\n scale.range = [-Math.PI, Math.PI].map(function (angle) { return angle + Math.PI / 2; });\n return scale;\n })();\n // When a user toggles a series item (e.g. from the legend), its boolean state is recorded here.\n _this.seriesItemEnabled = [];\n _this.label = new PieSeriesLabel();\n _this.callout = new PieSeriesCallout();\n _this.tooltip = new PieSeriesTooltip();\n /**\n * The key of the numeric field to use to determine the angle (for example,\n * a pie slice angle).\n */\n _this.angleKey = '';\n _this.angleName = '';\n _this._fills = [\n '#c16068',\n '#a2bf8a',\n '#ebcc87',\n '#80a0c3',\n '#b58dae',\n '#85c0d1'\n ];\n _this._strokes = [\n '#874349',\n '#718661',\n '#a48f5f',\n '#5a7088',\n '#7f637a',\n '#5d8692'\n ];\n _this.fillOpacity = 1;\n _this.strokeOpacity = 1;\n _this.lineDash = [0];\n _this.lineDashOffset = 0;\n /**\n * The series rotation in degrees.\n */\n _this.rotation = 0;\n _this.outerRadiusOffset = 0;\n _this.innerRadiusOffset = 0;\n _this.strokeWidth = 1;\n _this.highlightStyle = new PieHighlightStyle();\n _this.addEventListener('update', _this.scheduleUpdate, _this);\n _this.label.addEventListener('change', _this.scheduleUpdate, _this);\n _this.label.addEventListener('dataChange', _this.scheduleData, _this);\n _this.callout.addEventListener('change', _this.scheduleLayout, _this);\n _this.addPropertyListener('data', function (event) {\n if (event.value) {\n event.source.seriesItemEnabled = event.value.map(function () { return true; });\n }\n });\n return _this;\n }\n Object.defineProperty(PieSeries.prototype, \"title\", {\n get: function () {\n return this._title;\n },\n set: function (value) {\n var oldTitle = this._title;\n function updateLegend() {\n this.fireEvent({ type: 'legendChange' });\n }\n if (oldTitle !== value) {\n if (oldTitle) {\n oldTitle.removeEventListener('change', this.scheduleUpdate, this);\n oldTitle.removePropertyListener('showInLegend', updateLegend, this);\n this.group.removeChild(oldTitle.node);\n }\n if (value) {\n value.node.textBaseline = 'bottom';\n value.addEventListener('change', this.scheduleUpdate, this);\n value.addPropertyListener('showInLegend', updateLegend, this);\n this.group.appendChild(value.node);\n }\n this._title = value;\n this.scheduleUpdate();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PieSeries.prototype, \"fills\", {\n get: function () {\n return this._fills;\n },\n set: function (values) {\n this._fills = values;\n this.scheduleUpdate();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PieSeries.prototype, \"strokes\", {\n get: function () {\n return this._strokes;\n },\n set: function (values) {\n this._strokes = values;\n this.scheduleUpdate();\n },\n enumerable: true,\n configurable: true\n });\n PieSeries.prototype.onHighlightChange = function () {\n this.updateNodes();\n };\n PieSeries.prototype.setColors = function (fills, strokes) {\n this.fills = fills;\n this.strokes = strokes;\n this.callout.colors = strokes;\n };\n PieSeries.prototype.getDomain = function (direction) {\n if (direction === ChartAxisDirection.X) {\n return this.angleScale.domain;\n }\n else {\n return this.radiusScale.domain;\n }\n };\n PieSeries.prototype.processData = function () {\n var _this = this;\n var _a = this, angleKey = _a.angleKey, radiusKey = _a.radiusKey, seriesItemEnabled = _a.seriesItemEnabled, angleScale = _a.angleScale, groupSelectionData = _a.groupSelectionData, label = _a.label;\n var data = angleKey && this.data ? this.data : [];\n var angleData = data.map(function (datum, index) { return seriesItemEnabled[index] && Math.abs(+datum[angleKey]) || 0; });\n var angleDataTotal = angleData.reduce(function (a, b) { return a + b; }, 0);\n // The ratios (in [0, 1] interval) used to calculate the end angle value for every pie slice.\n // Each slice starts where the previous one ends, so we only keep the ratios for end angles.\n var angleDataRatios = (function () {\n var sum = 0;\n return angleData.map(function (datum) { return sum += datum / angleDataTotal; });\n })();\n var labelFormatter = label.formatter;\n var labelKey = label.enabled && this.labelKey;\n var labelData = [];\n var radiusData = [];\n if (labelKey) {\n if (labelFormatter) {\n labelData = data.map(function (datum) { return labelFormatter({ value: datum[labelKey] }); });\n }\n else {\n labelData = data.map(function (datum) { return String(datum[labelKey]); });\n }\n }\n if (radiusKey) {\n var _b = this, radiusMin = _b.radiusMin, radiusMax = _b.radiusMax;\n var radii = data.map(function (datum) { return Math.abs(datum[radiusKey]); });\n var min_1 = radiusMin !== undefined ? radiusMin : Math.min.apply(Math, __spread(radii));\n var max = radiusMax !== undefined ? radiusMax : Math.max.apply(Math, __spread(radii));\n var delta_1 = max - min_1;\n radiusData = radii.map(function (value) { return delta_1 ? (value - min_1) / delta_1 : 1; });\n }\n groupSelectionData.length = 0;\n var rotation = toRadians(this.rotation);\n var halfPi = Math.PI / 2;\n var datumIndex = 0;\n // Simply use reduce here to pair up adjacent ratios.\n angleDataRatios.reduce(function (start, end) {\n var radius = radiusKey ? radiusData[datumIndex] : 1;\n var startAngle = angleScale.convert(start) + rotation;\n var endAngle = angleScale.convert(end) + rotation;\n var midAngle = (startAngle + endAngle) / 2;\n var span = Math.abs(endAngle - startAngle);\n var midCos = Math.cos(midAngle);\n var midSin = Math.sin(midAngle);\n var labelMinAngle = toRadians(label.minAngle);\n var labelVisible = labelKey && span > labelMinAngle;\n var midAngle180 = normalizeAngle180(midAngle);\n // Split the circle into quadrants like so: ⊗\n var quadrantStart = -3 * Math.PI / 4; // same as `normalizeAngle180(toRadians(-135))`\n var textAlign;\n var textBaseline;\n if (midAngle180 >= quadrantStart && midAngle180 < (quadrantStart += halfPi)) {\n textAlign = 'center';\n textBaseline = 'bottom';\n }\n else if (midAngle180 >= quadrantStart && midAngle180 < (quadrantStart += halfPi)) {\n textAlign = 'left';\n textBaseline = 'middle';\n }\n else if (midAngle180 >= quadrantStart && midAngle180 < (quadrantStart += halfPi)) {\n textAlign = 'center';\n textBaseline = 'hanging';\n }\n else {\n textAlign = 'right';\n textBaseline = 'middle';\n }\n groupSelectionData.push({\n series: _this,\n datum: data[datumIndex],\n itemId: datumIndex,\n index: datumIndex,\n radius: radius,\n startAngle: startAngle,\n endAngle: endAngle,\n midAngle: midAngle,\n midCos: midCos,\n midSin: midSin,\n label: labelVisible ? {\n text: labelData[datumIndex],\n textAlign: textAlign,\n textBaseline: textBaseline\n } : undefined\n });\n datumIndex++;\n return end;\n }, 0);\n return true;\n };\n PieSeries.prototype.update = function () {\n this.updatePending = false;\n var _a = this, radius = _a.radius, innerRadiusOffset = _a.innerRadiusOffset, outerRadiusOffset = _a.outerRadiusOffset, title = _a.title;\n this.radiusScale.range = [\n innerRadiusOffset ? radius + innerRadiusOffset : 0,\n radius + (outerRadiusOffset || 0)\n ];\n this.group.translationX = this.centerX;\n this.group.translationY = this.centerY;\n if (title) {\n var outerRadius = Math.max(0, this.radiusScale.range[1]);\n if (outerRadius === 0) {\n title.node.visible = false;\n }\n else {\n title.node.translationY = -radius - outerRadiusOffset - 2;\n title.node.visible = title.enabled;\n }\n }\n this.updateSelections();\n this.updateNodes();\n };\n PieSeries.prototype.updateSelections = function () {\n if (!this.nodeDataPending) {\n return;\n }\n this.nodeDataPending = false;\n this.updateGroupSelection();\n };\n PieSeries.prototype.updateGroupSelection = function () {\n var updateGroups = this.groupSelection.setData(this.groupSelectionData);\n updateGroups.exit.remove();\n var enterGroups = updateGroups.enter.append(Group);\n enterGroups.append(Sector).each(function (node) { return node.tag = PieNodeTag.Sector; });\n enterGroups.append(Line).each(function (node) {\n node.tag = PieNodeTag.Callout;\n node.pointerEvents = PointerEvents.None;\n });\n enterGroups.append(Text).each(function (node) {\n node.tag = PieNodeTag.Label;\n node.pointerEvents = PointerEvents.None;\n });\n this.groupSelection = updateGroups.merge(enterGroups);\n };\n PieSeries.prototype.updateNodes = function () {\n var _this = this;\n if (!this.chart) {\n return;\n }\n this.group.visible = this.visible && this.seriesItemEnabled.indexOf(true) >= 0;\n var _a = this, fills = _a.fills, strokes = _a.strokes, fillOpacity = _a.fillOpacity, strokeOpacity = _a.strokeOpacity, radiusScale = _a.radiusScale, callout = _a.callout, shadow = _a.shadow, highlightedDatum = _a.chart.highlightedDatum, _b = _a.highlightStyle, deprecatedFill = _b.fill, deprecatedStroke = _b.stroke, deprecatedStrokeWidth = _b.strokeWidth, _c = _b.item, _d = _c.fill, highlightedFill = _d === void 0 ? deprecatedFill : _d, _e = _c.stroke, highlightedStroke = _e === void 0 ? deprecatedStroke : _e, _f = _c.strokeWidth, highlightedDatumStrokeWidth = _f === void 0 ? deprecatedStrokeWidth : _f, angleKey = _a.angleKey, radiusKey = _a.radiusKey, formatter = _a.formatter;\n var centerOffsets = [];\n var innerRadius = radiusScale.convert(0);\n this.groupSelection.selectByTag(PieNodeTag.Sector).each(function (sector, datum, index) {\n var radius = radiusScale.convert(datum.radius);\n var isDatumHighlighted = !!highlightedDatum && highlightedDatum.series === _this && datum.itemId === highlightedDatum.itemId;\n var fill = isDatumHighlighted && highlightedFill !== undefined ? highlightedFill : fills[index % fills.length];\n var stroke = isDatumHighlighted && highlightedStroke !== undefined ? highlightedStroke : strokes[index % strokes.length];\n var strokeWidth = isDatumHighlighted && highlightedDatumStrokeWidth !== undefined\n ? highlightedDatumStrokeWidth\n : _this.getStrokeWidth(_this.strokeWidth);\n var format = undefined;\n if (formatter) {\n format = formatter({\n datum: datum.datum,\n angleKey: angleKey,\n radiusKey: radiusKey,\n fill: fill,\n stroke: stroke,\n strokeWidth: strokeWidth,\n highlighted: isDatumHighlighted\n });\n }\n // Bring highlighted slice's parent group to front.\n var parent = sector.parent && sector.parent.parent;\n if (isDatumHighlighted && parent) {\n parent.removeChild(sector.parent);\n parent.appendChild(sector.parent);\n }\n sector.innerRadius = Math.max(0, innerRadius);\n sector.outerRadius = Math.max(0, radius);\n sector.startAngle = datum.startAngle;\n sector.endAngle = datum.endAngle;\n sector.fill = format && format.fill || fill;\n sector.stroke = format && format.stroke || stroke;\n sector.strokeWidth = format && format.strokeWidth !== undefined ? format.strokeWidth : strokeWidth;\n sector.fillOpacity = fillOpacity;\n sector.strokeOpacity = strokeOpacity;\n sector.lineDash = _this.lineDash;\n sector.lineDashOffset = _this.lineDashOffset;\n sector.fillShadow = shadow;\n sector.lineJoin = 'round';\n sector.opacity = _this.getOpacity();\n centerOffsets.push(sector.centerOffset);\n });\n var calloutColors = callout.colors, calloutLength = callout.length, calloutStrokeWidth = callout.strokeWidth;\n this.groupSelection.selectByTag(PieNodeTag.Callout).each(function (line, datum, index) {\n var radius = radiusScale.convert(datum.radius);\n var outerRadius = Math.max(0, radius);\n if (datum.label && outerRadius !== 0) {\n line.strokeWidth = calloutStrokeWidth;\n line.stroke = calloutColors[index % calloutColors.length];\n line.x1 = datum.midCos * outerRadius;\n line.y1 = datum.midSin * outerRadius;\n line.x2 = datum.midCos * (outerRadius + calloutLength);\n line.y2 = datum.midSin * (outerRadius + calloutLength);\n }\n else {\n line.stroke = undefined;\n }\n });\n {\n var _g = this.label, offset_1 = _g.offset, fontStyle_1 = _g.fontStyle, fontWeight_1 = _g.fontWeight, fontSize_1 = _g.fontSize, fontFamily_1 = _g.fontFamily, color_1 = _g.color;\n this.groupSelection.selectByTag(PieNodeTag.Label).each(function (text, datum, index) {\n var label = datum.label;\n var radius = radiusScale.convert(datum.radius);\n var outerRadius = Math.max(0, radius);\n if (label && outerRadius !== 0) {\n var labelRadius = centerOffsets[index] + outerRadius + calloutLength + offset_1;\n text.fontStyle = fontStyle_1;\n text.fontWeight = fontWeight_1;\n text.fontSize = fontSize_1;\n text.fontFamily = fontFamily_1;\n text.text = label.text;\n text.x = datum.midCos * labelRadius;\n text.y = datum.midSin * labelRadius;\n text.fill = color_1;\n text.textAlign = label.textAlign;\n text.textBaseline = label.textBaseline;\n }\n else {\n text.fill = undefined;\n }\n });\n }\n };\n PieSeries.prototype.fireNodeClickEvent = function (event, datum) {\n this.fireEvent({\n type: 'nodeClick',\n event: event,\n series: this,\n datum: datum.datum,\n angleKey: this.angleKey,\n labelKey: this.labelKey,\n radiusKey: this.radiusKey\n });\n };\n PieSeries.prototype.getTooltipHtml = function (nodeDatum) {\n var angleKey = this.angleKey;\n if (!angleKey) {\n return '';\n }\n var _a = this, fills = _a.fills, tooltip = _a.tooltip, angleName = _a.angleName, radiusKey = _a.radiusKey, radiusName = _a.radiusName, labelKey = _a.labelKey, labelName = _a.labelName;\n var tooltipRenderer = tooltip.renderer;\n var color = fills[nodeDatum.index % fills.length];\n var datum = nodeDatum.datum;\n var label = labelKey ? datum[labelKey] + \": \" : '';\n var angleValue = datum[angleKey];\n var formattedAngleValue = typeof angleValue === 'number' ? toFixed(angleValue) : angleValue.toString();\n var title = this.title ? this.title.text : undefined;\n var content = label + formattedAngleValue;\n var defaults = {\n title: title,\n backgroundColor: color,\n content: content\n };\n if (tooltipRenderer) {\n return toTooltipHtml(tooltipRenderer({\n datum: datum,\n angleKey: angleKey,\n angleValue: angleValue,\n angleName: angleName,\n radiusKey: radiusKey,\n radiusValue: radiusKey ? datum[radiusKey] : undefined,\n radiusName: radiusName,\n labelKey: labelKey,\n labelName: labelName,\n title: title,\n color: color,\n }), defaults);\n }\n return toTooltipHtml(defaults);\n };\n PieSeries.prototype.listSeriesItems = function (legendData) {\n var _this = this;\n var _a = this, labelKey = _a.labelKey, data = _a.data;\n if (data && data.length && labelKey) {\n var _b = this, fills_1 = _b.fills, strokes_1 = _b.strokes, id_1 = _b.id;\n var titleText_1 = this.title && this.title.showInLegend && this.title.text;\n data.forEach(function (datum, index) {\n var labelParts = [];\n titleText_1 && labelParts.push(titleText_1);\n labelParts.push(String(datum[labelKey]));\n legendData.push({\n id: id_1,\n itemId: index,\n enabled: _this.seriesItemEnabled[index],\n label: {\n text: labelParts.join(' - ')\n },\n marker: {\n fill: fills_1[index % fills_1.length],\n stroke: strokes_1[index % strokes_1.length],\n fillOpacity: _this.fillOpacity,\n strokeOpacity: _this.strokeOpacity\n }\n });\n });\n }\n };\n PieSeries.prototype.toggleSeriesItem = function (itemId, enabled) {\n this.seriesItemEnabled[itemId] = enabled;\n this.scheduleData();\n };\n PieSeries.className = 'PieSeries';\n PieSeries.type = 'pie';\n __decorate([\n reactive('dataChange')\n ], PieSeries.prototype, \"angleKey\", void 0);\n __decorate([\n reactive('update')\n ], PieSeries.prototype, \"angleName\", void 0);\n __decorate([\n reactive('dataChange')\n ], PieSeries.prototype, \"radiusKey\", void 0);\n __decorate([\n reactive('update')\n ], PieSeries.prototype, \"radiusName\", void 0);\n __decorate([\n reactive('dataChange')\n ], PieSeries.prototype, \"radiusMin\", void 0);\n __decorate([\n reactive('dataChange')\n ], PieSeries.prototype, \"radiusMax\", void 0);\n __decorate([\n reactive('dataChange')\n ], PieSeries.prototype, \"labelKey\", void 0);\n __decorate([\n reactive('update')\n ], PieSeries.prototype, \"labelName\", void 0);\n __decorate([\n reactive('layoutChange')\n ], PieSeries.prototype, \"fillOpacity\", void 0);\n __decorate([\n reactive('layoutChange')\n ], PieSeries.prototype, \"strokeOpacity\", void 0);\n __decorate([\n reactive('update')\n ], PieSeries.prototype, \"lineDash\", void 0);\n __decorate([\n reactive('update')\n ], PieSeries.prototype, \"lineDashOffset\", void 0);\n __decorate([\n reactive('update')\n ], PieSeries.prototype, \"formatter\", void 0);\n __decorate([\n reactive('dataChange')\n ], PieSeries.prototype, \"rotation\", void 0);\n __decorate([\n reactive('layoutChange')\n ], PieSeries.prototype, \"outerRadiusOffset\", void 0);\n __decorate([\n reactive('dataChange')\n ], PieSeries.prototype, \"innerRadiusOffset\", void 0);\n __decorate([\n reactive('layoutChange')\n ], PieSeries.prototype, \"strokeWidth\", void 0);\n __decorate([\n reactive('layoutChange')\n ], PieSeries.prototype, \"shadow\", void 0);\n return PieSeries;\n}(PolarSeries));\nexport { PieSeries };\n","import { CountableTimeInterval } from \"./interval\";\nimport { durationMinute } from \"./duration\";\nfunction floor(date) {\n date.setUTCSeconds(0, 0);\n}\nfunction offset(date, minutes) {\n date.setTime(date.getTime() + minutes * durationMinute);\n}\nfunction count(start, end) {\n return (end.getTime() - start.getTime()) / durationMinute;\n}\nfunction field(date) {\n return date.getUTCMinutes();\n}\nexport var utcMinute = new CountableTimeInterval(floor, offset, count, field);\nexport default utcMinute;\n","import { CountableTimeInterval } from \"./interval\";\nimport { durationHour } from \"./duration\";\nfunction floor(date) {\n date.setUTCMinutes(0, 0, 0);\n}\nfunction offset(date, hours) {\n date.setTime(date.getTime() + hours * durationHour);\n}\nfunction count(start, end) {\n return (end.getTime() - start.getTime()) / durationHour;\n}\nfunction field(date) {\n return date.getUTCHours();\n}\nexport var utcHour = new CountableTimeInterval(floor, offset, count, field);\nexport default utcHour;\n","import { CountableTimeInterval } from \"./interval\";\nfunction floor(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}\nfunction offset(date, months) {\n date.setUTCMonth(date.getUTCMonth() + months);\n}\nfunction count(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}\nfunction field(date) {\n return date.getUTCMonth();\n}\nexport var utcMonth = new CountableTimeInterval(floor, offset, count, field);\nexport default utcMonth;\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};\nimport { deepMerge, defaultIsMergeableObject, getValue, isObject } from \"../../util/object\";\nimport { copy } from \"../../util/array\";\nimport { Padding } from \"../../util/padding\";\nimport { Chart } from \"../chart\";\nimport { TimeInterval } from \"../../util/time/interval\";\nvar palette = {\n fills: [\n '#f3622d',\n '#fba71b',\n '#57b757',\n '#41a9c9',\n '#4258c9',\n '#9a42c8',\n '#c84164',\n '#888888'\n ],\n strokes: [\n '#aa4520',\n '#b07513',\n '#3d803d',\n '#2d768d',\n '#2e3e8d',\n '#6c2e8c',\n '#8c2d46',\n '#5f5f5f'\n ]\n};\nfunction arrayMerge(target, source, options) {\n return source;\n}\nfunction isMergeableObject(value) {\n return defaultIsMergeableObject(value) && !(value instanceof TimeInterval);\n}\nexport var mergeOptions = { arrayMerge: arrayMerge, isMergeableObject: isMergeableObject };\nvar ChartTheme = /** @class */ (function () {\n function ChartTheme(options) {\n var defaults = this.createChartConfigPerSeries(this.getDefaults());\n if (isObject(options)) {\n options = deepMerge({}, options, mergeOptions);\n var overrides_1 = options.overrides;\n if (overrides_1) {\n if (isObject(overrides_1.common)) {\n ChartTheme.seriesTypes.concat(['cartesian', 'polar', 'hierarchy']).forEach(function (seriesType) {\n defaults[seriesType] = deepMerge(defaults[seriesType], overrides_1.common, mergeOptions);\n });\n }\n if (overrides_1.cartesian) {\n defaults.cartesian = deepMerge(defaults.cartesian, overrides_1.cartesian, mergeOptions);\n ChartTheme.cartesianSeriesTypes.forEach(function (seriesType) {\n defaults[seriesType] = deepMerge(defaults[seriesType], overrides_1.cartesian, mergeOptions);\n });\n }\n if (overrides_1.polar) {\n defaults.polar = deepMerge(defaults.polar, overrides_1.polar, mergeOptions);\n ChartTheme.polarSeriesTypes.forEach(function (seriesType) {\n defaults[seriesType] = deepMerge(defaults[seriesType], overrides_1.polar, mergeOptions);\n });\n }\n if (overrides_1.hierarchy) {\n defaults.hierarchy = deepMerge(defaults.hierarchy, overrides_1.hierarchy, mergeOptions);\n ChartTheme.hierarchySeriesTypes.forEach(function (seriesType) {\n defaults[seriesType] = deepMerge(defaults[seriesType], overrides_1.hierarchy, mergeOptions);\n });\n }\n var seriesOverridesMap_1 = {};\n ChartTheme.seriesTypes.forEach(function (seriesType) {\n var chartConfig = overrides_1[seriesType];\n if (chartConfig) {\n if (chartConfig.series) {\n seriesOverridesMap_1[seriesType] = chartConfig.series;\n chartConfig.series = seriesOverridesMap_1;\n }\n defaults[seriesType] = deepMerge(defaults[seriesType], chartConfig, mergeOptions);\n }\n });\n }\n }\n this.palette = options && options.palette ? options.palette : this.getPalette();\n this.config = Object.freeze(defaults);\n }\n ChartTheme.prototype.getPalette = function () {\n return palette;\n };\n ChartTheme.getAxisDefaults = function () {\n return {\n top: {},\n right: {},\n bottom: {},\n left: {},\n thickness: 0,\n title: {\n padding: {\n top: 10,\n right: 10,\n bottom: 10,\n left: 10\n },\n text: 'Axis Title',\n fontStyle: undefined,\n fontWeight: 'bold',\n fontSize: 12,\n fontFamily: this.fontFamily,\n color: 'rgb(70, 70, 70)'\n },\n label: {\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 12,\n fontFamily: this.fontFamily,\n padding: 5,\n rotation: 0,\n color: 'rgb(87, 87, 87)',\n formatter: undefined\n },\n line: {\n width: 1,\n color: 'rgb(195, 195, 195)'\n },\n tick: {\n width: 1,\n size: 6,\n color: 'rgb(195, 195, 195)',\n count: 10\n },\n gridStyle: [{\n stroke: 'rgb(219, 219, 219)',\n lineDash: [4, 2]\n }]\n };\n };\n ChartTheme.getSeriesDefaults = function () {\n return {\n tooltip: {\n enabled: true,\n renderer: undefined\n },\n visible: true,\n showInLegend: true,\n cursor: 'default',\n highlightStyle: {\n item: {\n fill: 'yellow'\n },\n series: {\n dimOpacity: 1\n }\n }\n };\n };\n ChartTheme.getBarSeriesDefaults = function () {\n return __assign(__assign({}, this.getSeriesDefaults()), { flipXY: false, fillOpacity: 1, strokeOpacity: 1, xKey: '', xName: '', yKeys: [], yNames: [], grouped: false, normalizedTo: undefined, strokeWidth: 1, lineDash: [0], lineDashOffset: 0, label: {\n enabled: false,\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 12,\n fontFamily: this.fontFamily,\n color: 'rgb(70, 70, 70)',\n formatter: undefined,\n placement: 'inside'\n }, shadow: {\n enabled: false,\n color: 'rgba(0, 0, 0, 0.5)',\n xOffset: 3,\n yOffset: 3,\n blur: 5\n } });\n };\n ChartTheme.getCartesianSeriesMarkerDefaults = function () {\n return {\n enabled: true,\n shape: 'circle',\n size: 6,\n maxSize: 30,\n strokeWidth: 1,\n formatter: undefined\n };\n };\n ChartTheme.getChartDefaults = function () {\n return {\n width: 600,\n height: 300,\n autoSize: true,\n background: {\n visible: true,\n fill: 'white'\n },\n padding: {\n top: 20,\n right: 20,\n bottom: 20,\n left: 20\n },\n title: {\n enabled: false,\n padding: {\n top: 10,\n right: 10,\n bottom: 10,\n left: 10\n },\n text: 'Title',\n fontStyle: undefined,\n fontWeight: 'bold',\n fontSize: 16,\n fontFamily: this.fontFamily,\n color: 'rgb(70, 70, 70)'\n },\n subtitle: {\n enabled: false,\n padding: {\n top: 10,\n right: 10,\n bottom: 10,\n left: 10\n },\n text: 'Subtitle',\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 12,\n fontFamily: this.fontFamily,\n color: 'rgb(140, 140, 140)'\n },\n legend: {\n enabled: true,\n position: 'right',\n spacing: 20,\n item: {\n paddingX: 16,\n paddingY: 8,\n marker: {\n shape: undefined,\n size: 15,\n strokeWidth: 1,\n padding: 8\n },\n label: {\n color: 'black',\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 12,\n fontFamily: this.fontFamily,\n formatter: undefined\n }\n }\n },\n tooltip: {\n enabled: true,\n tracking: true,\n delay: 0,\n class: Chart.defaultTooltipClass\n }\n };\n };\n ChartTheme.prototype.createChartConfigPerSeries = function (config) {\n var typeToAliases = {\n cartesian: ChartTheme.cartesianSeriesTypes,\n polar: ChartTheme.polarSeriesTypes\n };\n var _loop_1 = function (type) {\n typeToAliases[type].forEach(function (alias) {\n if (!config[alias]) {\n config[alias] = deepMerge({}, config[type], mergeOptions);\n }\n });\n };\n for (var type in typeToAliases) {\n _loop_1(type);\n }\n return config;\n };\n ChartTheme.prototype.getConfig = function (path, defaultValue) {\n var value = getValue(this.config, path, defaultValue);\n if (Array.isArray(value)) {\n return deepMerge([], value, mergeOptions);\n }\n if (isObject(value)) {\n return deepMerge({}, value, mergeOptions);\n }\n return value;\n };\n /**\n * Meant to be overridden in subclasses. For example:\n * ```\n * getDefaults() {\n * const subclassDefaults = { ... };\n * return this.mergeWithParentDefaults(subclassDefaults);\n * }\n * ```\n */\n ChartTheme.prototype.getDefaults = function () {\n return deepMerge({}, ChartTheme.defaults, mergeOptions);\n };\n ChartTheme.prototype.mergeWithParentDefaults = function (defaults) {\n var proto = Object.getPrototypeOf(Object.getPrototypeOf(this));\n if (proto === Object.prototype) {\n var config = deepMerge({}, ChartTheme.defaults, mergeOptions);\n config = deepMerge(config, defaults, mergeOptions);\n return config;\n }\n var parentDefaults = proto.getDefaults();\n return deepMerge(parentDefaults, defaults, mergeOptions);\n };\n ChartTheme.prototype.setSeriesColors = function (series, seriesOptions, firstColorIndex) {\n var palette = this.palette;\n var colorCount = this.getSeriesColorCount(seriesOptions);\n if (colorCount === Infinity || colorCount === 0) {\n series.setColors(palette.fills, palette.strokes);\n }\n else {\n var fills = copy(palette.fills, firstColorIndex, colorCount);\n var strokes = copy(palette.strokes, firstColorIndex, colorCount);\n series.setColors(fills, strokes);\n firstColorIndex += colorCount;\n }\n return firstColorIndex;\n };\n ChartTheme.prototype.getYKeyCount = function (yKeys) {\n if (!Array.isArray(yKeys)) {\n return 0;\n }\n var count = 0;\n yKeys.forEach(function (key) {\n if (Array.isArray(key)) {\n count += key.length;\n }\n else {\n count += 1;\n }\n });\n return count;\n };\n /**\n * This would typically correspond to the number of dependent variables the series plots.\n * If the color count is not fixed, for example it's data-dependent with one color per data point,\n * return Infinity to fetch all unique colors and manage them in the series.\n */\n ChartTheme.prototype.getSeriesColorCount = function (seriesOptions) {\n var type = seriesOptions.type;\n switch (type) {\n case 'bar':\n case 'column':\n case 'area':\n return this.getYKeyCount(seriesOptions.yKeys);\n case 'pie':\n return Infinity;\n default:\n return 1;\n }\n };\n ChartTheme.fontFamily = 'Verdana, sans-serif';\n ChartTheme.cartesianDefaults = __assign(__assign({}, ChartTheme.getChartDefaults()), { axes: {\n number: __assign({}, ChartTheme.getAxisDefaults()),\n log: __assign(__assign({}, ChartTheme.getAxisDefaults()), { base: 10 }),\n category: __assign({}, ChartTheme.getAxisDefaults()),\n groupedCategory: __assign({}, ChartTheme.getAxisDefaults()),\n time: __assign({}, ChartTheme.getAxisDefaults())\n }, series: {\n column: __assign(__assign({}, ChartTheme.getBarSeriesDefaults()), { flipXY: false }),\n bar: __assign(__assign({}, ChartTheme.getBarSeriesDefaults()), { flipXY: true }),\n line: __assign(__assign({}, ChartTheme.getSeriesDefaults()), { title: undefined, xKey: '', xName: '', yKey: '', yName: '', strokeWidth: 2, strokeOpacity: 1, lineDash: [0], lineDashOffset: 0, marker: __assign({}, ChartTheme.getCartesianSeriesMarkerDefaults()), label: {\n enabled: false,\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 12,\n fontFamily: ChartTheme.fontFamily,\n color: 'rgb(70, 70, 70)',\n formatter: undefined\n } }),\n scatter: __assign(__assign({}, ChartTheme.getSeriesDefaults()), { title: undefined, xKey: '', yKey: '', sizeKey: undefined, labelKey: undefined, xName: '', yName: '', sizeName: 'Size', labelName: 'Label', strokeWidth: 2, fillOpacity: 1, strokeOpacity: 1, marker: __assign({}, ChartTheme.getCartesianSeriesMarkerDefaults()), label: {\n enabled: false,\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 12,\n fontFamily: ChartTheme.fontFamily,\n color: 'rgb(70, 70, 70)'\n } }),\n area: __assign(__assign({}, ChartTheme.getSeriesDefaults()), { xKey: '', xName: '', yKeys: [], yNames: [], normalizedTo: undefined, fillOpacity: 0.8, strokeOpacity: 1, strokeWidth: 2, lineDash: [0], lineDashOffset: 0, shadow: {\n enabled: false,\n color: 'rgba(0, 0, 0, 0.5)',\n xOffset: 3,\n yOffset: 3,\n blur: 5\n }, marker: __assign(__assign({}, ChartTheme.getCartesianSeriesMarkerDefaults()), { enabled: false }), label: {\n enabled: false,\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 12,\n fontFamily: ChartTheme.fontFamily,\n color: 'rgb(70, 70, 70)',\n formatter: undefined\n } }),\n histogram: __assign(__assign({}, ChartTheme.getSeriesDefaults()), { xKey: '', yKey: '', xName: '', yName: '', strokeWidth: 1, fillOpacity: 1, strokeOpacity: 1, lineDash: [0], lineDashOffset: 0, areaPlot: false, binCount: 10, bins: undefined, aggregation: 'sum', label: {\n enabled: false,\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 12,\n fontFamily: ChartTheme.fontFamily,\n color: 'rgb(70, 70, 70)',\n formatter: undefined\n } })\n }, navigator: {\n enabled: false,\n height: 30,\n mask: {\n fill: '#999999',\n stroke: '#999999',\n strokeWidth: 1,\n fillOpacity: 0.2\n },\n minHandle: {\n fill: '#f2f2f2',\n stroke: '#999999',\n strokeWidth: 1,\n width: 8,\n height: 16,\n gripLineGap: 2,\n gripLineLength: 8\n },\n maxHandle: {\n fill: '#f2f2f2',\n stroke: '#999999',\n strokeWidth: 1,\n width: 8,\n height: 16,\n gripLineGap: 2,\n gripLineLength: 8\n }\n } });\n ChartTheme.defaults = {\n cartesian: ChartTheme.cartesianDefaults,\n groupedCategory: ChartTheme.cartesianDefaults,\n polar: __assign(__assign({}, ChartTheme.getChartDefaults()), { series: {\n pie: __assign(__assign({}, ChartTheme.getSeriesDefaults()), { title: {\n enabled: true,\n padding: new Padding(0),\n text: '',\n fontStyle: undefined,\n fontWeight: 'bold',\n fontSize: 14,\n fontFamily: ChartTheme.fontFamily,\n color: 'rgb(70, 70, 70)'\n }, angleKey: '', angleName: '', radiusKey: undefined, radiusName: undefined, labelKey: undefined, labelName: undefined, label: {\n enabled: true,\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 12,\n fontFamily: ChartTheme.fontFamily,\n color: 'rgb(70, 70, 70)',\n offset: 3,\n minAngle: 20\n }, callout: {\n length: 10,\n strokeWidth: 2\n }, fillOpacity: 1, strokeOpacity: 1, strokeWidth: 1, lineDash: [0], lineDashOffset: 0, rotation: 0, outerRadiusOffset: 0, innerRadiusOffset: 0, shadow: {\n enabled: false,\n color: 'rgba(0, 0, 0, 0.5)',\n xOffset: 3,\n yOffset: 3,\n blur: 5\n } })\n } }),\n hierarchy: __assign(__assign({}, ChartTheme.getChartDefaults()), { series: {\n treemap: __assign(__assign({}, ChartTheme.getSeriesDefaults()), { showInLegend: false, labelKey: 'label', sizeKey: 'size', colorKey: 'color', colorDomain: [-5, 5], colorRange: ['#cb4b3f', '#6acb64'], colorParents: false, gradient: true, nodePadding: 2, title: {\n enabled: true,\n color: 'white',\n fontStyle: undefined,\n fontWeight: 'bold',\n fontSize: 12,\n fontFamily: 'Verdana, sans-serif',\n padding: 15\n }, subtitle: {\n enabled: true,\n color: 'white',\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 9,\n fontFamily: 'Verdana, sans-serif',\n padding: 13\n }, labels: {\n large: {\n enabled: true,\n fontStyle: undefined,\n fontWeight: 'bold',\n fontSize: 18,\n fontFamily: 'Verdana, sans-serif',\n color: 'white'\n },\n medium: {\n enabled: true,\n fontStyle: undefined,\n fontWeight: 'bold',\n fontSize: 14,\n fontFamily: 'Verdana, sans-serif',\n color: 'white'\n },\n small: {\n enabled: true,\n fontStyle: undefined,\n fontWeight: 'bold',\n fontSize: 10,\n fontFamily: 'Verdana, sans-serif',\n color: 'white'\n },\n color: {\n enabled: true,\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 12,\n fontFamily: 'Verdana, sans-serif',\n color: 'white'\n }\n } })\n } })\n };\n ChartTheme.cartesianSeriesTypes = ['line', 'area', 'bar', 'column', 'scatter', 'histogram'];\n ChartTheme.polarSeriesTypes = ['pie'];\n ChartTheme.hierarchySeriesTypes = ['treemap'];\n ChartTheme.seriesTypes = ChartTheme.cartesianSeriesTypes.concat(ChartTheme.polarSeriesTypes);\n return ChartTheme;\n}());\nexport { ChartTheme };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __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};\nimport { ChartTheme } from \"./chartTheme\";\nvar DarkTheme = /** @class */ (function (_super) {\n __extends(DarkTheme, _super);\n function DarkTheme(options) {\n return _super.call(this, options) || this;\n }\n DarkTheme.prototype.getDefaults = function () {\n var fontColor = 'rgb(200, 200, 200)';\n var mutedFontColor = 'rgb(150, 150, 150)';\n var axisDefaults = {\n title: {\n color: fontColor\n },\n label: {\n color: fontColor\n },\n gridStyle: [{\n stroke: 'rgb(88, 88, 88)',\n lineDash: [4, 2]\n }]\n };\n var seriesLabelDefaults = {\n label: {\n color: fontColor\n }\n };\n var chartDefaults = {\n background: {\n fill: 'rgb(34, 38, 41)'\n },\n title: {\n color: fontColor\n },\n subtitle: {\n color: mutedFontColor\n },\n axes: {\n number: __assign({}, axisDefaults),\n category: __assign({}, axisDefaults),\n time: __assign({}, axisDefaults)\n },\n legend: {\n item: {\n label: {\n color: fontColor\n }\n }\n }\n };\n return this.mergeWithParentDefaults({\n cartesian: __assign(__assign({}, chartDefaults), { series: {\n bar: __assign({}, seriesLabelDefaults),\n column: __assign({}, seriesLabelDefaults),\n histogram: __assign({}, seriesLabelDefaults)\n } }),\n polar: __assign(__assign({}, chartDefaults), { series: {\n pie: __assign(__assign({}, seriesLabelDefaults), { title: {\n color: fontColor\n } })\n } })\n });\n };\n return DarkTheme;\n}(ChartTheme));\nexport { DarkTheme };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { ChartTheme } from \"./chartTheme\";\nvar palette = {\n fills: [\n '#f44336',\n '#e91e63',\n '#9c27b0',\n '#673ab7',\n '#3f51b5',\n '#2196f3',\n '#03a9f4',\n '#00bcd4',\n '#009688',\n '#4caf50',\n '#8bc34a',\n '#cddc39',\n '#ffeb3b',\n '#ffc107',\n '#ff9800',\n '#ff5722'\n ],\n strokes: [\n '#ab2f26',\n '#a31545',\n '#6d1b7b',\n '#482980',\n '#2c397f',\n '#1769aa',\n '#0276ab',\n '#008494',\n '#00695f',\n '#357a38',\n '#618834',\n '#909a28',\n '#b3a429',\n '#b38705',\n '#b36a00',\n '#b33d18'\n ]\n};\nvar MaterialLight = /** @class */ (function (_super) {\n __extends(MaterialLight, _super);\n function MaterialLight() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MaterialLight.prototype.getPalette = function () {\n return palette;\n };\n return MaterialLight;\n}(ChartTheme));\nexport { MaterialLight };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { DarkTheme } from \"./darkTheme\";\nvar palette = {\n fills: [\n '#f44336',\n '#e91e63',\n '#9c27b0',\n '#673ab7',\n '#3f51b5',\n '#2196f3',\n '#03a9f4',\n '#00bcd4',\n '#009688',\n '#4caf50',\n '#8bc34a',\n '#cddc39',\n '#ffeb3b',\n '#ffc107',\n '#ff9800',\n '#ff5722'\n ],\n strokes: [\n '#ab2f26',\n '#a31545',\n '#6d1b7b',\n '#482980',\n '#2c397f',\n '#1769aa',\n '#0276ab',\n '#008494',\n '#00695f',\n '#357a38',\n '#618834',\n '#909a28',\n '#b3a429',\n '#b38705',\n '#b36a00',\n '#b33d18'\n ]\n};\nvar MaterialDark = /** @class */ (function (_super) {\n __extends(MaterialDark, _super);\n function MaterialDark() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MaterialDark.prototype.getPalette = function () {\n return palette;\n };\n return MaterialDark;\n}(DarkTheme));\nexport { MaterialDark };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { ChartTheme } from \"./chartTheme\";\nvar palette = {\n fills: [\n '#c16068',\n '#a2bf8a',\n '#ebcc87',\n '#80a0c3',\n '#b58dae',\n '#85c0d1'\n ],\n strokes: [\n '#874349',\n '#718661',\n '#a48f5f',\n '#5a7088',\n '#7f637a',\n '#5d8692'\n ]\n};\nvar PastelLight = /** @class */ (function (_super) {\n __extends(PastelLight, _super);\n function PastelLight() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PastelLight.prototype.getPalette = function () {\n return palette;\n };\n return PastelLight;\n}(ChartTheme));\nexport { PastelLight };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { DarkTheme } from \"./darkTheme\";\nvar palette = {\n fills: [\n '#c16068',\n '#a2bf8a',\n '#ebcc87',\n '#80a0c3',\n '#b58dae',\n '#85c0d1'\n ],\n strokes: [\n '#874349',\n '#718661',\n '#a48f5f',\n '#5a7088',\n '#7f637a',\n '#5d8692'\n ]\n};\nvar PastelDark = /** @class */ (function (_super) {\n __extends(PastelDark, _super);\n function PastelDark() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PastelDark.prototype.getPalette = function () {\n return palette;\n };\n return PastelDark;\n}(DarkTheme));\nexport { PastelDark };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { ChartTheme } from \"./chartTheme\";\nvar palette = {\n fills: [\n '#febe76',\n '#ff7979',\n '#badc58',\n '#f9ca23',\n '#f0932b',\n '#eb4c4b',\n '#6ab04c',\n '#7ed6df',\n '#e056fd',\n '#686de0'\n ],\n strokes: [\n '#b28553',\n '#b35555',\n '#829a3e',\n '#ae8d19',\n '#a8671e',\n '#a43535',\n '#4a7b35',\n '#58969c',\n '#9d3cb1',\n '#494c9d'\n ]\n};\nvar SolarLight = /** @class */ (function (_super) {\n __extends(SolarLight, _super);\n function SolarLight() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SolarLight.prototype.getPalette = function () {\n return palette;\n };\n return SolarLight;\n}(ChartTheme));\nexport { SolarLight };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { DarkTheme } from \"./darkTheme\";\nvar palette = {\n fills: [\n '#febe76',\n '#ff7979',\n '#badc58',\n '#f9ca23',\n '#f0932b',\n '#eb4c4b',\n '#6ab04c',\n '#7ed6df',\n '#e056fd',\n '#686de0'\n ],\n strokes: [\n '#b28553',\n '#b35555',\n '#829a3e',\n '#ae8d19',\n '#a8671e',\n '#a43535',\n '#4a7b35',\n '#58969c',\n '#9d3cb1',\n '#494c9d'\n ]\n};\nvar SolarDark = /** @class */ (function (_super) {\n __extends(SolarDark, _super);\n function SolarDark() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SolarDark.prototype.getPalette = function () {\n return palette;\n };\n return SolarDark;\n}(DarkTheme));\nexport { SolarDark };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { ChartTheme } from \"./chartTheme\";\nvar palette = {\n fills: [\n '#5BC0EB',\n '#FDE74C',\n '#9BC53D',\n '#E55934',\n '#FA7921',\n '#fa3081'\n ],\n strokes: [\n '#4086a4',\n '#b1a235',\n '#6c8a2b',\n '#a03e24',\n '#af5517',\n '#af225a'\n ]\n};\nvar VividLight = /** @class */ (function (_super) {\n __extends(VividLight, _super);\n function VividLight() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n VividLight.prototype.getPalette = function () {\n return palette;\n };\n return VividLight;\n}(ChartTheme));\nexport { VividLight };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { DarkTheme } from \"./darkTheme\";\nvar palette = {\n fills: [\n '#5BC0EB',\n '#FDE74C',\n '#9BC53D',\n '#E55934',\n '#FA7921',\n '#fa3081'\n ],\n strokes: [\n '#4086a4',\n '#b1a235',\n '#6c8a2b',\n '#a03e24',\n '#af5517',\n '#af225a'\n ]\n};\nvar VividDark = /** @class */ (function (_super) {\n __extends(VividDark, _super);\n function VividDark() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n VividDark.prototype.getPalette = function () {\n return palette;\n };\n return VividDark;\n}(DarkTheme));\nexport { VividDark };\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};\nimport { ChartTheme } from \"../themes/chartTheme\";\nimport { DarkTheme } from '../themes/darkTheme';\nimport { MaterialLight } from \"../themes/materialLight\";\nimport { MaterialDark } from \"../themes/materialDark\";\nimport { PastelLight } from \"../themes/pastelLight\";\nimport { PastelDark } from \"../themes/pastelDark\";\nimport { SolarLight } from \"../themes/solarLight\";\nimport { SolarDark } from \"../themes/solarDark\";\nimport { VividLight } from \"../themes/vividLight\";\nimport { VividDark } from \"../themes/vividDark\";\nvar lightTheme = new ChartTheme();\nvar darkTheme = new DarkTheme();\nexport var lightThemes = {\n 'undefined': lightTheme,\n 'null': lightTheme,\n 'ag-default': lightTheme,\n 'ag-material': new MaterialLight(),\n 'ag-pastel': new PastelLight(),\n 'ag-solar': new SolarLight(),\n 'ag-vivid': new VividLight(),\n};\nexport var darkThemes = {\n 'undefined': darkTheme,\n 'null': darkTheme,\n 'ag-default-dark': darkTheme,\n 'ag-material-dark': new MaterialDark(),\n 'ag-pastel-dark': new PastelDark(),\n 'ag-solar-dark': new SolarDark(),\n 'ag-vivid-dark': new VividDark(),\n};\nexport var themes = __assign(__assign({}, darkThemes), lightThemes);\nexport function getChartTheme(value) {\n if (value instanceof ChartTheme) {\n return value;\n }\n var stockTheme = themes[value];\n if (stockTheme) {\n return stockTheme;\n }\n value = value;\n if (value.baseTheme || value.overrides || value.palette) {\n var baseTheme = getChartTheme(value.baseTheme);\n return new baseTheme.constructor(value);\n }\n return lightTheme;\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nimport { ContinuousScale } from \"./continuousScale\";\nimport ticks from \"../util/ticks\";\nimport { format } from \"../util/numberFormat\";\nvar identity = function (x) { return x; };\nvar LogScale = /** @class */ (function (_super) {\n __extends(LogScale, _super);\n function LogScale() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'log';\n _this._domain = [1, 10];\n _this.baseLog = identity; // takes a log with base `base` of `x`\n _this.basePow = identity; // raises `base` to the power of `x`\n _this._base = 10;\n return _this;\n }\n LogScale.prototype.setDomain = function (values) {\n var df = values[0];\n var dl = values[values.length - 1];\n if (df === 0 || dl === 0 || df < 0 && dl > 0 || df > 0 && dl < 0) {\n console.warn('Log scale domain should not start at, end at or cross zero.');\n if (df === 0 && dl > 0) {\n df = Number.EPSILON;\n }\n else if (dl === 0 && df < 0) {\n dl = -Number.EPSILON;\n }\n else if (df < 0 && dl > 0) {\n if (Math.abs(dl) >= Math.abs(df)) {\n df = Number.EPSILON;\n }\n else {\n dl = -Number.EPSILON;\n }\n }\n else if (df > 0 && dl < 0) {\n if (Math.abs(dl) >= Math.abs(df)) {\n df = -Number.EPSILON;\n }\n else {\n dl = Number.EPSILON;\n }\n }\n values = values.slice();\n values[0] = df;\n values[values.length - 1] = dl;\n }\n _super.prototype.setDomain.call(this, values);\n };\n LogScale.prototype.getDomain = function () {\n return _super.prototype.getDomain.call(this);\n };\n Object.defineProperty(LogScale.prototype, \"base\", {\n get: function () {\n return this._base;\n },\n set: function (value) {\n if (this._base !== value) {\n this._base = value;\n this.rescale();\n }\n },\n enumerable: true,\n configurable: true\n });\n LogScale.prototype.rescale = function () {\n var base = this.base;\n var baseLog = LogScale.makeLogFn(base);\n var basePow = LogScale.makePowFn(base);\n if (this.domain[0] < 0) {\n baseLog = this.reflect(baseLog);\n basePow = this.reflect(basePow);\n this.transform = function (x) { return -Math.log(-x); };\n this.untransform = function (x) { return -Math.exp(-x); };\n }\n else {\n this.transform = function (x) { return Math.log(x); };\n this.untransform = function (x) { return Math.exp(x); };\n }\n this.baseLog = baseLog;\n this.basePow = basePow;\n _super.prototype.rescale.call(this);\n };\n /**\n * For example, if `f` is `Math.log10`, we have\n *\n * f(100) == 2\n * f(-100) == NaN\n * rf = reflect(f)\n * rf(-100) == -2\n *\n * @param f\n */\n LogScale.prototype.reflect = function (f) {\n return function (x) { return -f(-x); };\n };\n LogScale.prototype.nice = function () {\n var _a, _b;\n var domain = this.domain;\n var i0 = 0;\n var i1 = domain.length - 1;\n var x0 = domain[i0];\n var x1 = domain[i1];\n if (x1 < x0) {\n _a = __read([i1, i0], 2), i0 = _a[0], i1 = _a[1];\n _b = __read([x1, x0], 2), x0 = _b[0], x1 = _b[1];\n }\n // For example, for base == 10:\n // [ 50, 900] becomes [ 10, 1000 ]\n domain[i0] = this.basePow(Math.floor(this.baseLog(x0)));\n domain[i1] = this.basePow(Math.ceil(this.baseLog(x1)));\n this.domain = domain;\n };\n LogScale.pow10 = function (x) {\n return isFinite(x)\n ? +('1e' + x) // to avoid precision issues, e.g. Math.pow(10, -4) is not 0.0001\n : x < 0\n ? 0\n : x;\n };\n LogScale.makePowFn = function (base) {\n if (base === 10) {\n return LogScale.pow10;\n }\n if (base === Math.E) {\n return Math.exp;\n }\n return function (x) { return Math.pow(base, x); };\n };\n // Make a log function witn an arbitrary base or return a native function if exists.\n LogScale.makeLogFn = function (base) {\n if (base === Math.E) {\n return Math.log;\n }\n if (base === 10) {\n return Math.log10;\n }\n if (base === 2) {\n return Math.log2;\n }\n var logBase = Math.log(base);\n return function (x) { return Math.log(x) / logBase; };\n };\n LogScale.prototype.ticks = function (count) {\n var _a;\n if (count === void 0) { count = 10; }\n var n = count == null ? 10 : +count;\n var base = this.base;\n var domain = this.domain;\n var d0 = domain[0];\n var d1 = domain[domain.length - 1];\n var isReversed = d1 < d0;\n if (isReversed) {\n _a = __read([d1, d0], 2), d0 = _a[0], d1 = _a[1];\n }\n var p0 = this.baseLog(d0);\n var p1 = this.baseLog(d1);\n var z = [];\n // if `base` is an integer and delta in order of magnitudes is less than n\n if (!(base % 1) && p1 - p0 < n) {\n // For example, if n == 10, base == 10 and domain == [10^2, 10^6]\n // then p1 - p0 < n == true.\n p0 = Math.round(p0) - 1;\n p1 = Math.round(p1) + 1;\n if (d0 > 0) {\n for (; p0 < p1; ++p0) {\n for (var k = 1, p = this.basePow(p0); k < base; ++k) {\n var t = p * k;\n // The `t` checks are needed because we expanded the [p0, p1] by 1 in each direction.\n if (t < d0)\n continue;\n if (t > d1)\n break;\n z.push(t);\n }\n }\n }\n else {\n for (; p0 < p1; ++p0) {\n for (var k = base - 1, p = this.basePow(p0); k >= 1; --k) {\n var t = p * k;\n if (t < d0)\n continue;\n if (t > d1)\n break;\n z.push(t);\n }\n }\n }\n if (z.length * 2 < n) {\n z = ticks(d0, d1, n);\n }\n }\n else {\n // For example, if n == 4, base == 10 and domain == [10^2, 10^6]\n // then p1 - p0 < n == false.\n // `ticks` return [2, 3, 4, 5, 6], then mapped to [10^2, 10^3, 10^4, 10^5, 10^6].\n z = ticks(p0, p1, Math.min(p1 - p0, n)).map(this.basePow);\n }\n return isReversed ? z.reverse() : z;\n };\n LogScale.prototype.tickFormat = function (count, specifier) {\n var _this = this;\n var base = this.base;\n if (specifier == null) {\n specifier = (base === 10 ? '.0e' : ',');\n }\n if (typeof specifier !== 'function') {\n specifier = format(specifier);\n }\n if (count === Infinity) {\n return specifier;\n }\n if (count == null) {\n count = 10;\n }\n var k = Math.max(1, base * count / this.ticks().length);\n return function (d) {\n var i = d / _this.basePow(Math.round(_this.baseLog(d)));\n if (i * base < base - 0.5) {\n i *= base;\n }\n return i <= k ? specifier(d) : '';\n };\n };\n return LogScale;\n}(ContinuousScale));\nexport { LogScale };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { LogScale } from \"../../scale/logScale\";\nimport { NumberAxis, clamper } from \"./numberAxis\";\nvar LogAxis = /** @class */ (function (_super) {\n __extends(LogAxis, _super);\n function LogAxis() {\n var _this = _super.call(this) || this;\n _this.scale = new LogScale();\n _this.scale.clamper = clamper;\n return _this;\n }\n Object.defineProperty(LogAxis.prototype, \"base\", {\n get: function () {\n return this.scale.base;\n },\n set: function (value) {\n this.scale.base = value;\n },\n enumerable: true,\n configurable: true\n });\n LogAxis.className = 'LogAxis';\n LogAxis.type = 'log';\n return LogAxis;\n}(NumberAxis));\nexport { LogAxis };\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};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\n/**\n * Performs a JSON-diff between a source and target JSON structure.\n *\n * On a per property basis, takes the target property value where:\n * - types are different.\n * - type is primitive.\n * - type is array and length or content have changed.\n *\n * Recurses for object types.\n *\n * @param source starting point for diff\n * @param target target for diff vs. source\n * @param opts.stringify properties to stringify for comparison purposes\n *\n * @returns `null` if no differences, or an object with the subset of properties that have changed.\n */\nexport function jsonDiff(source, target, opts) {\n var e_1, _a;\n var _b = (opts || {}).stringify, stringify = _b === void 0 ? [] : _b;\n var sourceType = classify(source);\n var targetType = classify(target);\n if (targetType === 'array') {\n if (sourceType !== 'array' || source.length !== target.length) {\n return __spread(target);\n }\n if (target.some(function (targetElement, i) { var _a; return jsonDiff((_a = source) === null || _a === void 0 ? void 0 : _a[i], targetElement) != null; })) {\n return __spread(target);\n }\n return null;\n }\n var lhs = source || {};\n var rhs = target || {};\n var allProps = new Set(__spread(Object.keys(lhs), Object.keys(rhs)));\n var propsChangedCount = 0;\n var result = {};\n var _loop_1 = function (prop) {\n // Cheap-and-easy equality check.\n if (lhs[prop] === rhs[prop]) {\n return \"continue\";\n }\n var take = function (v) {\n result[prop] = v;\n propsChangedCount++;\n };\n if (stringify.includes(prop)) {\n if (JSON.stringify(lhs[prop] !== JSON.stringify(rhs[prop]))) {\n take(rhs[prop]);\n }\n return \"continue\";\n }\n var lhsType = classify(lhs[prop]);\n var rhsType = classify(rhs[prop]);\n if (lhsType !== rhsType) {\n // Types changed, just take RHS.\n take(rhs[prop]);\n return \"continue\";\n }\n if (rhsType === 'primitive' || rhsType === null) {\n take(rhs[prop]);\n return \"continue\";\n }\n if (rhsType === 'array' && lhs[prop].length !== rhs[prop].length) {\n // Arrays are different sizes, so just take target array.\n take(rhs[prop]);\n return \"continue\";\n }\n if (rhsType === 'class-instance') {\n // Don't try to do anything tricky with array diffs!\n take(rhs[prop]);\n return \"continue\";\n }\n if (rhsType === 'function' && lhs[prop] !== rhs[prop]) {\n take(rhs[prop]);\n return \"continue\";\n }\n var diff = jsonDiff(lhs[prop], rhs[prop], { stringify: stringify });\n if (diff !== null) {\n take(diff);\n }\n };\n try {\n for (var allProps_1 = __values(allProps), allProps_1_1 = allProps_1.next(); !allProps_1_1.done; allProps_1_1 = allProps_1.next()) {\n var prop = allProps_1_1.value;\n _loop_1(prop);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (allProps_1_1 && !allProps_1_1.done && (_a = allProps_1.return)) _a.call(allProps_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return propsChangedCount === 0 ? null : result;\n}\n/**\n * Special value used by `jsonMerge` to signal that a property should be removed from the merged\n * output.\n */\nexport var DELETE = Symbol('');\nvar NOT_SPECIFIED = Symbol('');\n/**\n * Merge together the provide JSON object structures, with the precedence of application running\n * from higher indexes to lower indexes.\n *\n * Deep-clones all objects to avoid mutation of the inputs changing the output object. For arrays,\n * just performs a deep-clone of the entire array, no merging of elements attempted.\n *\n * @param json all json objects to merge\n *\n * @returns the combination of all of the json inputs\n */\nexport function jsonMerge() {\n var e_2, _a;\n var json = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n json[_i] = arguments[_i];\n }\n var jsonTypes = json.map(function (v) { return classify(v); });\n if (jsonTypes.some(function (v) { return v === 'array'; })) {\n // Clone final array.\n var finalValue = json[json.length - 1];\n if (finalValue instanceof Array) {\n return finalValue.map(function (v) {\n var type = classify(v);\n return type === 'array' ? jsonMerge([], v) :\n type === 'object' ? jsonMerge({}, v) :\n v;\n });\n }\n return finalValue;\n }\n var result = {};\n var props = new Set(json.map(function (v) { return v != null ? Object.keys(v) : []; })\n .reduce(function (r, n) { return r.concat(n); }, []));\n var _loop_2 = function (nextProp) {\n var values = json.map(function (j) { return j != null && nextProp in j ? j[nextProp] : NOT_SPECIFIED; })\n .filter(function (v) { return v !== NOT_SPECIFIED; });\n if (values.length === 0) {\n return \"continue\";\n }\n var lastValue = values[values.length - 1];\n if (lastValue === DELETE) {\n return \"continue\";\n }\n var types = values.map(function (v) { return classify(v); });\n var type = types[0];\n if (types.some(function (t) { return t !== type && t !== null; })) {\n // Short-circuit if mismatching types.\n result[nextProp] = lastValue;\n return \"continue\";\n }\n if (type === 'array' || type === 'object') {\n result[nextProp] = jsonMerge.apply(void 0, __spread(values));\n }\n else {\n // Just directly assign/overwrite.\n result[nextProp] = lastValue;\n }\n };\n try {\n for (var props_1 = __values(props), props_1_1 = props_1.next(); !props_1_1.done; props_1_1 = props_1.next()) {\n var nextProp = props_1_1.value;\n _loop_2(nextProp);\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (props_1_1 && !props_1_1.done && (_a = props_1.return)) _a.call(props_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n return result;\n}\n/**\n * Recursively apply a JSON object into a class-hierarchy, optionally instantiating certain classes\n * by property name.\n *\n * @param target to apply source JSON properties into\n * @param source to be applied\n * @param params.path path for logging/error purposes, to aid with pinpointing problems\n * @param params.matcherPath path for pattern matching, to lookup allowedTypes override.\n * @param params.skip property names to skip from the source\n * @param params.constructors dictionary of property name to class constructors for properties that\n * require object construction\n * @param params.allowedTypes overrides by path for allowed property types\n */\nexport function jsonApply(target, source, params) {\n if (params === void 0) { params = {}; }\n var _a, _b, _c;\n var _d = params.path, path = _d === void 0 ? undefined : _d, _e = params.matcherPath, matcherPath = _e === void 0 ? path ? path.replace(/(\\[[0-9+]{1,}\\])/i, '[]') : undefined : _e, _f = params.skip, skip = _f === void 0 ? [] : _f, _g = params.constructors, constructors = _g === void 0 ? {} : _g, _h = params.allowedTypes, allowedTypes = _h === void 0 ? {} : _h;\n if (target == null) {\n throw new Error(\"AG Charts - target is uninitialised: \" + (path || ''));\n }\n if (source == null) {\n return target;\n }\n var targetType = classify(target);\n for (var property in source) {\n if (skip.indexOf(property) >= 0) {\n continue;\n }\n var newValue = source[property];\n var propertyPath = \"\" + (path ? path + '.' : '') + property;\n var propertyMatcherPath = \"\" + (matcherPath ? matcherPath + '.' : '') + property;\n var targetAny = target;\n var targetClass = targetAny.constructor;\n var currentValue = targetAny[property];\n var ctr = constructors[property];\n try {\n var currentValueType = classify(currentValue);\n var newValueType = classify(newValue);\n if (targetType === 'class-instance' && !(property in target || targetAny.hasOwnProperty(property))) {\n console.warn(\"AG Charts - unable to set [\" + propertyPath + \"] in \" + ((_a = targetClass) === null || _a === void 0 ? void 0 : _a.name) + \" - property is unknown\");\n continue;\n }\n var allowableTypes = allowedTypes[propertyMatcherPath] || [currentValueType];\n if (currentValueType === 'class-instance' && newValueType === 'object') {\n // Allowed, this is the common case! - do not error.\n }\n else if (currentValueType != null && newValueType != null && !allowableTypes.includes(newValueType)) {\n console.warn(\"AG Charts - unable to set [\" + propertyPath + \"] in \" + ((_b = targetClass) === null || _b === void 0 ? void 0 : _b.name) + \" - can't apply type of [\" + newValueType + \"], allowed types are: [\" + allowableTypes + \"]\");\n continue;\n }\n if (newValueType === 'array') {\n targetAny[property] = newValue;\n }\n else if (newValueType === 'class-instance') {\n targetAny[property] = newValue;\n }\n else if (newValueType === 'object') {\n if (currentValue != null) {\n jsonApply(currentValue, newValue, __assign(__assign({}, params), { path: propertyPath, matcherPath: propertyMatcherPath }));\n }\n else if (ctr != null) {\n targetAny[property] = jsonApply(new ctr(), newValue, __assign(__assign({}, params), { path: propertyPath, matcherPath: propertyMatcherPath }));\n }\n else {\n targetAny[property] = newValue;\n }\n }\n else {\n targetAny[property] = newValue;\n }\n }\n catch (error) {\n console.warn(\"AG Charts - unable to set [\" + propertyPath + \"] in [\" + ((_c = targetClass) === null || _c === void 0 ? void 0 : _c.name) + \"]; nested error is: \" + error.message);\n continue;\n }\n }\n return target;\n}\n/**\n * Walk the given JSON object graphs, invoking the visit() callback for every object encountered.\n * Arrays are descended into without a callback, however their elements will have the visit()\n * callback invoked if they are objects.\n *\n * @param json to traverse\n * @param visit callback for each non-primitive and non-array object found\n * @param opts.skip property names to skip when walking\n * @param jsons to traverse in parallel\n */\nexport function jsonWalk(json, visit, opts) {\n var jsons = [];\n for (var _i = 3; _i < arguments.length; _i++) {\n jsons[_i - 3] = arguments[_i];\n }\n var _a;\n var jsonType = classify(json);\n var skip = opts.skip || [];\n if (jsonType === 'array') {\n json.forEach(function (element, index) {\n var _a;\n jsonWalk.apply(void 0, __spread([element, visit, opts], (_a = jsons) === null || _a === void 0 ? void 0 : _a.map(function (o) { var _a; return (_a = o) === null || _a === void 0 ? void 0 : _a[index]; })));\n });\n return;\n }\n else if (jsonType !== 'object') {\n return;\n }\n visit.apply(void 0, __spread([jsonType, json], jsons));\n var _loop_3 = function (property) {\n if (skip.indexOf(property) >= 0) {\n return \"continue\";\n }\n var value = json[property];\n var otherValues = (_a = jsons) === null || _a === void 0 ? void 0 : _a.map(function (o) { var _a; return (_a = o) === null || _a === void 0 ? void 0 : _a[property]; });\n var valueType = classify(value);\n if (valueType === 'object' || valueType === 'array') {\n jsonWalk.apply(void 0, __spread([value, visit, opts], otherValues));\n }\n };\n for (var property in json) {\n _loop_3(property);\n }\n}\n/**\n * Classify the type of a value to assist with handling for merge purposes.\n */\nexport function classify(value) {\n if (value == null) {\n return null;\n }\n else if (value instanceof HTMLElement) {\n return 'primitive';\n }\n else if (value instanceof Array) {\n return 'array';\n }\n else if (value instanceof Date) {\n return 'primitive';\n }\n else if (typeof value === 'object' && value.constructor === Object) {\n return 'object';\n }\n else if (typeof value === 'function') {\n return 'function';\n }\n else if (typeof value === 'object' && value.constructor != null) {\n return 'class-instance';\n }\n return 'primitive';\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};\nimport { LegendPosition } from \"../legend\";\nimport { Chart } from \"../chart\";\nimport { NumberAxis } from \"../axis/numberAxis\";\nimport { ChartAxisPosition } from \"../chartAxis\";\nimport { CategoryAxis } from \"../axis/categoryAxis\";\nimport { BarLabelPlacement } from \"../series/cartesian/barSeries\";\nvar DEFAULT_BACKGROUND = { visible: true, fill: 'white' };\nvar DEFAULT_PADDING = {\n top: 20,\n right: 20,\n bottom: 20,\n left: 20,\n};\nvar DEFAULT_LEGEND = {\n enabled: true,\n position: LegendPosition.Right,\n spacing: 20,\n item: {\n paddingX: 16,\n paddingY: 8,\n marker: {\n shape: undefined,\n size: 15,\n strokeWidth: 1,\n padding: 8,\n },\n label: {\n color: 'black',\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 12,\n fontFamily: 'Verdana, sans-serif',\n },\n },\n};\nvar DEFAULT_NAVIGATOR = {\n enabled: false,\n height: 30,\n mask: {\n fill: '#999999',\n stroke: '#999999',\n strokeWidth: 1,\n fillOpacity: 0.2,\n },\n minHandle: {\n fill: '#f2f2f2',\n stroke: '#999999',\n strokeWidth: 1,\n width: 8,\n height: 16,\n gripLineGap: 2,\n gripLineLength: 8,\n },\n maxHandle: {\n fill: '#f2f2f2',\n stroke: '#999999',\n strokeWidth: 1,\n width: 8,\n height: 16,\n gripLineGap: 2,\n gripLineLength: 8,\n },\n};\nvar DEFAULT_CHART_TOOLTIP = {\n enabled: true,\n tracking: true,\n delay: 0,\n class: Chart.defaultTooltipClass,\n};\nvar DEFAULT_SERIES_TOOLTIP = {\n enabled: true,\n};\nvar DEFAULT_TITLE = {\n enabled: false,\n text: 'Title',\n fontStyle: undefined,\n fontWeight: 'bold',\n fontSize: 14,\n fontFamily: 'Verdana, sans-serif',\n color: 'rgb(70, 70, 70)',\n padding: {\n top: 10,\n right: 10,\n bottom: 10,\n left: 10,\n },\n};\nvar DEFAULT_SUBTITLE = {\n enabled: false,\n padding: {\n top: 10,\n right: 10,\n bottom: 10,\n left: 10,\n },\n text: 'Subtitle',\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 12,\n fontFamily: 'Verdana, sans-serif',\n color: 'rgb(140, 140, 140)',\n};\nexport var DEFAULT_CARTESIAN_CHART_OPTIONS = {\n type: 'cartesian',\n autoSize: true,\n background: DEFAULT_BACKGROUND,\n height: 300,\n width: 600,\n legend: DEFAULT_LEGEND,\n navigator: DEFAULT_NAVIGATOR,\n padding: DEFAULT_PADDING,\n subtitle: DEFAULT_SUBTITLE,\n title: DEFAULT_TITLE,\n tooltip: DEFAULT_CHART_TOOLTIP,\n series: [],\n axes: [{\n type: NumberAxis.type,\n position: ChartAxisPosition.Left,\n }, {\n type: CategoryAxis.type,\n position: ChartAxisPosition.Bottom,\n }],\n};\nexport var DEFAULT_BAR_CHART_OVERRIDES = {\n axes: [{\n type: 'number',\n position: ChartAxisPosition.Bottom,\n }, {\n type: 'category',\n position: ChartAxisPosition.Left,\n }],\n};\nexport var DEFAULT_SCATTER_HISTOGRAM_CHART_OVERRIDES = {\n axes: [{\n type: 'number',\n position: ChartAxisPosition.Bottom,\n }, {\n type: 'number',\n position: ChartAxisPosition.Left,\n }],\n};\nexport var DEFAULT_POLAR_CHART_OPTIONS = {\n type: 'polar',\n autoSize: true,\n background: DEFAULT_BACKGROUND,\n height: 300,\n width: 600,\n legend: DEFAULT_LEGEND,\n padding: DEFAULT_PADDING,\n subtitle: DEFAULT_SUBTITLE,\n title: DEFAULT_TITLE,\n tooltip: DEFAULT_CHART_TOOLTIP,\n series: [],\n};\nexport var DEFAULT_HIERARCHY_CHART_OPTIONS = {\n type: 'hierarchy',\n autoSize: true,\n background: DEFAULT_BACKGROUND,\n height: 300,\n width: 600,\n legend: DEFAULT_LEGEND,\n padding: DEFAULT_PADDING,\n subtitle: DEFAULT_SUBTITLE,\n title: DEFAULT_TITLE,\n tooltip: DEFAULT_CHART_TOOLTIP,\n series: [],\n};\nvar DEFAULT_DROP_SHADOW = {\n enabled: true,\n color: 'rgba(0, 0, 0, 0.5)',\n xOffset: 0,\n yOffset: 0,\n blur: 5\n};\nvar DEFAULT_MARKER = {\n enabled: true,\n shape: 'circle',\n size: 6,\n maxSize: 30,\n strokeWidth: 1,\n formatter: undefined\n};\nvar DEFAULT_HIGHLIGHT_STYLE = {\n item: { fill: 'yellow' },\n series: { dimOpacity: 1 },\n};\nvar DEFAULT_LABEL = {\n enabled: true,\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 12,\n fontFamily: 'Verdana, sans-serif',\n color: 'rgb(70, 70, 70)'\n};\nvar DEFAULT_AXIS_LABEL = {\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 12,\n fontFamily: 'Verdana, sans-serif',\n padding: 5,\n rotation: 0,\n color: 'rgb(87, 87, 87)',\n formatter: undefined\n};\nvar DEFAULT_CARTESIAN_SERIES_OPTIONS = {\n visible: true,\n showInLegend: true,\n cursor: 'default',\n xKey: '',\n xName: '',\n strokeWidth: 2,\n strokeOpacity: 1,\n lineDash: undefined,\n lineDashOffset: 0,\n highlightStyle: DEFAULT_HIGHLIGHT_STYLE,\n tooltip: DEFAULT_SERIES_TOOLTIP,\n label: DEFAULT_LABEL,\n};\nvar DEFAULT_LINE_SERIES_OPTIONS = __assign(__assign({}, DEFAULT_CARTESIAN_SERIES_OPTIONS), { type: 'line', title: undefined, yKey: '', yName: '', tooltip: __assign(__assign({}, DEFAULT_CARTESIAN_SERIES_OPTIONS.tooltip), { format: undefined }), label: __assign(__assign({}, DEFAULT_CARTESIAN_SERIES_OPTIONS.label), { formatter: undefined }), marker: DEFAULT_MARKER });\nvar DEFAULT_BAR_SERIES_OPTIONS = __assign(__assign({}, DEFAULT_CARTESIAN_SERIES_OPTIONS), { type: 'bar', flipXY: true, fillOpacity: 1, yKeys: [], yNames: [], grouped: false, normalizedTo: undefined, label: __assign(__assign({}, DEFAULT_CARTESIAN_SERIES_OPTIONS.label), { formatter: undefined, placement: BarLabelPlacement.Inside }), shadow: DEFAULT_DROP_SHADOW });\nvar DEFAULT_COLUMN_SERIES_OPTIONS = __assign(__assign({}, DEFAULT_BAR_SERIES_OPTIONS), { type: 'column', flipXY: false });\nvar DEFAULT_AREA_SERIES_OPTIONS = __assign(__assign({}, DEFAULT_CARTESIAN_SERIES_OPTIONS), { type: 'area', \n // flipXY: true,\n // title: undefined,\n yKeys: [], yNames: [], normalizedTo: undefined, fillOpacity: 1, \n // label: {\n // ...DEFAULT_LABEL,\n // formatter: undefined,\n // // placement: BarLabelPlacement.Inside,\n // },\n marker: DEFAULT_MARKER, shadow: DEFAULT_DROP_SHADOW });\nvar DEFAULT_SCATTER_SERIES_OPTIONS = {\n type: 'scatter',\n title: undefined,\n xKey: '',\n yKey: '',\n sizeKey: undefined,\n labelKey: undefined,\n xName: '',\n yName: '',\n sizeName: 'Size',\n labelName: 'Label',\n strokeWidth: 2,\n fillOpacity: 1,\n strokeOpacity: 1,\n highlightStyle: DEFAULT_HIGHLIGHT_STYLE,\n tooltip: DEFAULT_SERIES_TOOLTIP,\n label: DEFAULT_LABEL,\n marker: DEFAULT_MARKER,\n};\nvar DEFAULT_HISTOGRAM_SERIES_OPTIONS = {\n type: 'histogram',\n xKey: '',\n yKey: '',\n xName: '',\n yName: '',\n strokeWidth: 1,\n fillOpacity: 1,\n strokeOpacity: 1,\n lineDash: undefined,\n lineDashOffset: 0,\n areaPlot: false,\n binCount: undefined,\n bins: undefined,\n aggregation: 'sum',\n highlightStyle: DEFAULT_HIGHLIGHT_STYLE,\n tooltip: DEFAULT_SERIES_TOOLTIP,\n label: DEFAULT_LABEL,\n shadow: DEFAULT_DROP_SHADOW,\n};\nvar DEFAULT_PIE_SERIES_OPTIONS = {\n visible: true,\n showInLegend: true,\n cursor: 'default',\n angleKey: '',\n angleName: '',\n radiusKey: undefined,\n radiusName: undefined,\n labelKey: undefined,\n labelName: undefined,\n fillOpacity: 1,\n strokeOpacity: 1,\n rotation: 0,\n outerRadiusOffset: 0,\n innerRadiusOffset: 0,\n strokeWidth: 1,\n lineDash: undefined,\n lineDashOffset: 0,\n tooltip: DEFAULT_SERIES_TOOLTIP,\n highlightStyle: DEFAULT_HIGHLIGHT_STYLE,\n title: {\n enabled: true,\n padding: {\n top: 10,\n right: 10,\n bottom: 10,\n left: 10\n },\n text: 'Series Title',\n fontStyle: undefined,\n fontWeight: 'bold',\n fontSize: 14,\n fontFamily: 'Verdana, sans-serif',\n color: 'black'\n },\n label: __assign(__assign({}, DEFAULT_LABEL), { offset: 3, minAngle: 20 }),\n callout: {\n length: 10,\n strokeWidth: 1\n },\n shadow: DEFAULT_DROP_SHADOW,\n};\nvar DEFAULT_TREEMAP_SERIES_OPTIONS = {\n visible: true,\n cursor: 'default',\n showInLegend: false,\n labelKey: 'label',\n sizeKey: 'size',\n colorKey: 'color',\n colorDomain: [-5, 5],\n colorRange: ['#cb4b3f', '#6acb64'],\n colorParents: false,\n gradient: true,\n nodePadding: 2,\n tooltip: DEFAULT_SERIES_TOOLTIP,\n highlightStyle: DEFAULT_HIGHLIGHT_STYLE,\n title: {\n enabled: true,\n color: 'white',\n fontStyle: undefined,\n fontWeight: 'bold',\n fontSize: 12,\n fontFamily: 'Verdana, sans-serif',\n padding: 15,\n },\n subtitle: {\n enabled: true,\n color: 'white',\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 9,\n fontFamily: 'Verdana, sans-serif',\n padding: 13\n },\n labels: {\n large: {\n enabled: true,\n fontStyle: undefined,\n fontWeight: 'bold',\n fontSize: 18,\n fontFamily: 'Verdana, sans-serif',\n color: 'white'\n },\n medium: {\n enabled: true,\n fontStyle: undefined,\n fontWeight: 'bold',\n fontSize: 14,\n fontFamily: 'Verdana, sans-serif',\n color: 'white'\n },\n small: {\n enabled: true,\n fontStyle: undefined,\n fontWeight: 'bold',\n fontSize: 10,\n fontFamily: 'Verdana, sans-serif',\n color: 'white'\n },\n color: {\n enabled: true,\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 12,\n fontFamily: 'Verdana, sans-serif',\n color: 'white'\n }\n }\n};\nvar DEFAULT_NUMBER_AXIS_OPTIONS = {\n type: 'number',\n // visibleRange: [0, 1],\n // thickness: 0,\n gridStyle: [{\n stroke: 'rgb(219, 219, 219)',\n lineDash: [4, 2]\n }],\n line: {\n width: 1,\n color: 'rgb(195, 195, 195)'\n },\n title: {\n padding: {\n top: 10,\n right: 10,\n bottom: 10,\n left: 10\n },\n text: 'Axis Title',\n fontStyle: undefined,\n fontWeight: 'bold',\n fontSize: 12,\n fontFamily: 'Verdana, sans-serif',\n color: 'rgb(70, 70, 70)'\n },\n label: __assign(__assign({}, DEFAULT_AXIS_LABEL), { formatter: undefined }),\n tick: {\n width: 1,\n size: 6,\n color: 'rgb(195, 195, 195)',\n count: 10\n }\n};\nvar DEFAULT_CATEGORY_AXIS_OPTIONS = __assign(__assign({}, DEFAULT_NUMBER_AXIS_OPTIONS), { type: 'category' });\nvar DEFAULT_LOG_AXIS_OPTIONS = __assign(__assign({}, DEFAULT_NUMBER_AXIS_OPTIONS), { type: 'log', base: 10 });\nvar DEFAULT_GROUPED_CATEGORY_AXIS_OPTIONS = __assign(__assign({}, DEFAULT_NUMBER_AXIS_OPTIONS), { type: 'groupedCategory' });\nvar DEFAULT_TIME_AXIS_OPTIONS = __assign(__assign({}, DEFAULT_NUMBER_AXIS_OPTIONS), { type: 'time' });\nexport var DEFAULT_SERIES_OPTIONS = {\n line: DEFAULT_LINE_SERIES_OPTIONS,\n bar: DEFAULT_BAR_SERIES_OPTIONS,\n area: DEFAULT_AREA_SERIES_OPTIONS,\n column: DEFAULT_COLUMN_SERIES_OPTIONS,\n histogram: DEFAULT_HISTOGRAM_SERIES_OPTIONS,\n scatter: DEFAULT_SCATTER_SERIES_OPTIONS,\n pie: DEFAULT_PIE_SERIES_OPTIONS,\n treemap: DEFAULT_TREEMAP_SERIES_OPTIONS,\n};\nexport var DEFAULT_AXES_OPTIONS = {\n number: DEFAULT_NUMBER_AXIS_OPTIONS,\n category: DEFAULT_CATEGORY_AXIS_OPTIONS,\n groupedCategory: DEFAULT_GROUPED_CATEGORY_AXIS_OPTIONS,\n log: DEFAULT_LOG_AXIS_OPTIONS,\n time: DEFAULT_TIME_AXIS_OPTIONS,\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};\nimport { BarLabelPlacement } from '../series/cartesian/barSeries';\nexport function transform(input, transforms) {\n var result = {};\n for (var p in input) {\n var t = transforms[p] || (function (x) { return x; });\n result[p] = t(input[p], input);\n }\n return result;\n}\nfunction is2dArray(input) {\n return input != null && input instanceof Array && input[0] instanceof Array;\n}\nfunction yNamesMapping(p, src) {\n if (p == null) {\n return {};\n }\n if (!(p instanceof Array)) {\n return p;\n }\n var yKeys = src.yKeys;\n if (yKeys == null || is2dArray(yKeys)) {\n throw new Error('AG Charts - yNames and yKeys mismatching configuration.');\n }\n var result = {};\n yKeys.forEach(function (k, i) {\n result[k] = p[i];\n });\n return result;\n}\nfunction yKeysMapping(p, src) {\n if (p == null) {\n return [[]];\n }\n if (is2dArray(p)) {\n return p;\n }\n return src.grouped ? p.map(function (v) { return [v]; }) : [p];\n}\nfunction labelMapping(p) {\n if (p == null) {\n return undefined;\n }\n var placement = p.placement;\n return __assign(__assign({}, p), { placement: placement === 'inside' ? BarLabelPlacement.Inside :\n placement === 'outside' ? BarLabelPlacement.Outside :\n undefined });\n}\nexport function barSeriesTransform(options) {\n var result = __assign(__assign({}, options), { yKeys: options.yKeys || [options.yKey] });\n delete result['yKey'];\n return transform(result, {\n yNames: yNamesMapping,\n yKeys: yKeysMapping,\n label: labelMapping,\n });\n}\nfunction identityTransform(input) { return input; }\n;\nvar SERIES_TRANSFORMS = {\n area: identityTransform,\n bar: barSeriesTransform,\n column: barSeriesTransform,\n histogram: identityTransform,\n line: identityTransform,\n pie: identityTransform,\n scatter: identityTransform,\n treemap: identityTransform,\n};\nexport function applySeriesTransform(options) {\n var type = options.type;\n var transform = SERIES_TRANSFORMS[type || 'line'];\n return transform(options);\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};\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\n/**\n * Groups the series options objects if they are of type `column` or `bar` and places them in an array at the index where the first instance of this series type was found.\n * Returns an array of arrays containing the ordered and grouped series options objects.\n */\nexport function groupSeriesByType(seriesOptions) {\n var e_1, _a;\n var indexMap = {};\n var result = [];\n try {\n for (var seriesOptions_1 = __values(seriesOptions), seriesOptions_1_1 = seriesOptions_1.next(); !seriesOptions_1_1.done; seriesOptions_1_1 = seriesOptions_1.next()) {\n var s = seriesOptions_1_1.value;\n if (s.type !== 'column' && s.type !== 'bar' && (s.type !== 'area' || s.stacked !== true)) {\n // No need to use index for these cases.\n result.push([s]);\n continue;\n }\n var seriesType = s.type || 'line';\n var groupingKey = s.stacked ? 'stacked' :\n s.grouped ? 'grouped' :\n s.yKeys ? 'stacked' :\n 'grouped';\n var indexKey = seriesType + \"-\" + s.xKey + \"-\" + groupingKey;\n if (indexMap[indexKey] == null) {\n // Add indexed array to result on first addition.\n indexMap[indexKey] = [];\n result.push(indexMap[indexKey]);\n }\n indexMap[indexKey].push(s);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (seriesOptions_1_1 && !seriesOptions_1_1.done && (_a = seriesOptions_1.return)) _a.call(seriesOptions_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return result;\n}\n/**\n * Takes an array of bar or area series options objects and returns a single object with the combined area series options.\n */\nexport function reduceSeries(series, enableBarSeriesSpecialCases) {\n var e_2, _a;\n var options = {};\n var arrayValueProperties = ['yKeys', 'fills', 'strokes', 'yNames', 'hideInChart', 'hideInLegend'];\n var stringValueProperties = ['yKey', 'fill', 'stroke', 'yName'];\n try {\n for (var series_1 = __values(series), series_1_1 = series_1.next(); !series_1_1.done; series_1_1 = series_1.next()) {\n var s = series_1_1.value;\n for (var property in s) {\n var arrayValueProperty = arrayValueProperties.indexOf(property) > -1;\n var stringValueProperty = stringValueProperties.indexOf(property) > -1;\n if (arrayValueProperty && s[property].length > 0) {\n options[property] = __spread((options[property] || []), s[property]);\n }\n else if (stringValueProperty) {\n options[property + \"s\"] = __spread((options[property + \"s\"] || []), [s[property]]);\n }\n else if (enableBarSeriesSpecialCases && property === 'showInLegend') {\n if (s[property] === false) {\n options.hideInLegend = __spread((options.hideInLegend || []), (s.yKey ? [s.yKey] : s.yKeys));\n }\n }\n else if (enableBarSeriesSpecialCases && property === 'grouped') {\n if (s[property] === true) {\n options[property] = s[property];\n }\n }\n else {\n options[property] = s[property];\n }\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (series_1_1 && !series_1_1.done && (_a = series_1.return)) _a.call(series_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n return options;\n}\n/**\n * Transforms provided series options array into an array containing series options which are compatible with standalone charts series options.\n */\nexport function processSeriesOptions(seriesOptions) {\n var e_3, _a;\n var result = [];\n var preprocessed = seriesOptions.map(function (series) {\n // Change the default for bar/columns when yKey is used to be grouped rather than stacked.\n if ((series.type === 'bar' || series.type === 'column') && series.yKey != null && !series.stacked) {\n return __assign(__assign({}, series), { grouped: series.grouped != null ? series.grouped : true });\n }\n return series;\n });\n try {\n for (var _b = __values(groupSeriesByType(preprocessed)), _c = _b.next(); !_c.done; _c = _b.next()) {\n var series = _c.value;\n switch (series[0].type) {\n case 'column':\n case 'bar':\n result.push(reduceSeries(series, true));\n break;\n case 'area':\n result.push(reduceSeries(series, false));\n break;\n case 'line':\n default:\n if (series.length > 1) {\n console.warn('AG Charts - unexpected grouping of series type: ' + series[0].type);\n }\n result.push(series[0]);\n break;\n }\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_3) throw e_3.error; }\n }\n return result;\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};\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nimport { DEFAULT_CARTESIAN_CHART_OPTIONS, DEFAULT_HIERARCHY_CHART_OPTIONS, DEFAULT_POLAR_CHART_OPTIONS, DEFAULT_BAR_CHART_OVERRIDES, DEFAULT_SCATTER_HISTOGRAM_CHART_OVERRIDES, DEFAULT_SERIES_OPTIONS, DEFAULT_AXES_OPTIONS } from \"./defaults\";\nimport { jsonMerge, DELETE, jsonWalk } from \"../../util/json\";\nimport { applySeriesTransform } from \"./transforms\";\nimport { getChartTheme } from \"./themes\";\nimport { processSeriesOptions } from \"./prepareSeries\";\nexport function optionsType(input) {\n var _a, _b;\n return input.type || ((_b = (_a = input.series) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.type) || 'cartesian';\n}\nexport function isAgCartesianChartOptions(input) {\n var specifiedType = optionsType(input);\n if (specifiedType == null) {\n return true;\n }\n switch (specifiedType) {\n case 'cartesian':\n case 'area':\n case 'bar':\n case 'column':\n case 'groupedCategory':\n case 'histogram':\n case 'line':\n case 'scatter':\n return true;\n default:\n return false;\n }\n}\nexport function isAgHierarchyChartOptions(input) {\n var specifiedType = optionsType(input);\n if (specifiedType == null) {\n return false;\n }\n switch (input.type) {\n case 'hierarchy':\n case 'treemap':\n return true;\n default:\n return false;\n }\n}\nexport function isAgPolarChartOptions(input) {\n var specifiedType = optionsType(input);\n if (specifiedType == null) {\n return false;\n }\n switch (input.type) {\n case 'polar':\n case 'pie':\n return true;\n default:\n return false;\n }\n}\nexport function isSeriesOptionType(input) {\n if (input == null) {\n return false;\n }\n return ['line', 'bar', 'column', 'histogram', 'scatter', 'area', 'pie', 'treemap'].indexOf(input) >= 0;\n}\nfunction countArrayElements(input) {\n var e_1, _a;\n var count = 0;\n try {\n for (var input_1 = __values(input), input_1_1 = input_1.next(); !input_1_1.done; input_1_1 = input_1.next()) {\n var next = input_1_1.value;\n if (next instanceof Array) {\n count += countArrayElements(next);\n }\n if (next != null) {\n count++;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (input_1_1 && !input_1_1.done && (_a = input_1.return)) _a.call(input_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return count;\n}\nfunction takeColours(context, colours, maxCount) {\n var result = [];\n for (var count = 0; count < maxCount; count++) {\n result.push(colours[(count + context.colourIndex) % colours.length]);\n }\n return result;\n}\nexport function prepareOptions(newOptions, fallbackOptions) {\n var options = fallbackOptions == null ? newOptions : jsonMerge(fallbackOptions, newOptions);\n sanityCheckOptions(options);\n // Determine type and ensure it's explicit in the options config.\n var userSuppliedOptionsType = options.type;\n var type = optionsType(options);\n options = __assign(__assign({}, options), { type: type });\n var defaultOptions = isAgCartesianChartOptions(options) ? DEFAULT_CARTESIAN_CHART_OPTIONS :\n isAgHierarchyChartOptions(options) ? DEFAULT_HIERARCHY_CHART_OPTIONS :\n isAgPolarChartOptions(options) ? DEFAULT_POLAR_CHART_OPTIONS :\n {};\n var defaultSeriesType = isAgCartesianChartOptions(options) ? 'line' :\n isAgHierarchyChartOptions(options) ? 'treemap' :\n isAgPolarChartOptions(options) ? 'pie' :\n 'line';\n var defaultOverrides = type === 'bar' ? DEFAULT_BAR_CHART_OVERRIDES :\n type === 'scatter' ? DEFAULT_SCATTER_HISTOGRAM_CHART_OVERRIDES :\n type === 'histogram' ? DEFAULT_SCATTER_HISTOGRAM_CHART_OVERRIDES :\n {};\n var _a = prepareMainOptions(defaultOptions, defaultOverrides, options), context = _a.context, mergedOptions = _a.mergedOptions, axesThemes = _a.axesThemes, seriesThemes = _a.seriesThemes;\n // Special cases where we have arrays of elements which need their own defaults.\n mergedOptions.series = processSeriesOptions(mergedOptions.series || [])\n .map(function (s) {\n var type = s.type ? s.type :\n isSeriesOptionType(userSuppliedOptionsType) ? userSuppliedOptionsType :\n defaultSeriesType;\n var series = __assign(__assign({}, s), { type: type });\n return prepareSeries(context, series, DEFAULT_SERIES_OPTIONS[type], seriesThemes[type] || {});\n });\n if (isAgCartesianChartOptions(mergedOptions)) {\n (mergedOptions.axes || []).forEach(function (a, i) {\n var type = a.type || 'number';\n var axis = __assign(__assign({}, a), { type: type });\n var axesTheme = jsonMerge(axesThemes[type], axesThemes[type][a.position || 'unknown'] || {});\n mergedOptions.axes[i] = prepareAxis(axis, DEFAULT_AXES_OPTIONS[type], axesTheme);\n });\n }\n prepareEnabledOptions(options, mergedOptions);\n return mergedOptions;\n}\nfunction sanityCheckOptions(options) {\n var _a, _b;\n if ((_a = options.series) === null || _a === void 0 ? void 0 : _a.some(function (s) { return s.yKeys != null && s.yKey != null; })) {\n console.warn('AG Charts - series options yKeys and yKey are mutually exclusive, please only use yKey for future compatibility.');\n }\n if ((_b = options.series) === null || _b === void 0 ? void 0 : _b.some(function (s) { return s.yNames != null && s.yName != null; })) {\n console.warn('AG Charts - series options yNames and yName are mutually exclusive, please only use yName for future compatibility.');\n }\n}\nfunction prepareMainOptions(defaultOptions, defaultOverrides, options) {\n var _a = prepareTheme(options), theme = _a.theme, cleanedTheme = _a.cleanedTheme, axesThemes = _a.axesThemes, seriesThemes = _a.seriesThemes;\n var context = { colourIndex: 0, palette: theme.palette };\n var mergedOptions = jsonMerge(defaultOptions, defaultOverrides, cleanedTheme, options);\n return { context: context, mergedOptions: mergedOptions, axesThemes: axesThemes, seriesThemes: seriesThemes };\n}\nfunction prepareTheme(options) {\n var theme = getChartTheme(options.theme);\n var themeConfig = theme.getConfig(optionsType(options) || 'cartesian');\n return {\n theme: theme,\n axesThemes: themeConfig['axes'] || {},\n seriesThemes: themeConfig['series'] || {},\n cleanedTheme: jsonMerge(themeConfig, { axes: DELETE, series: DELETE }),\n };\n}\nfunction prepareSeries(context, input) {\n var defaults = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n defaults[_i - 2] = arguments[_i];\n }\n var paletteOptions = calculateSeriesPalette(context, input);\n // Part of the options interface, but not directly consumed by the series implementations.\n var removeOptions = { stacked: DELETE };\n var mergedResult = jsonMerge.apply(void 0, __spread(defaults, [paletteOptions, input, removeOptions]));\n return applySeriesTransform(mergedResult);\n}\nfunction calculateSeriesPalette(context, input) {\n var paletteOptions = {};\n var _a = context.palette, fills = _a.fills, strokes = _a.strokes;\n var inputAny = input;\n var colourCount = countArrayElements(inputAny['yKeys'] || []) || 1; // Defaults to 1 if no yKeys.\n switch (input.type) {\n case 'pie':\n colourCount = Math.max(fills.length, strokes.length);\n case 'area':\n case 'bar':\n case 'column':\n paletteOptions.fills = takeColours(context, fills, colourCount);\n paletteOptions.strokes = takeColours(context, strokes, colourCount);\n break;\n case 'histogram':\n paletteOptions.fill = takeColours(context, fills, 1)[0];\n paletteOptions.stroke = takeColours(context, strokes, 1)[0];\n break;\n case 'scatter':\n paletteOptions.fill = takeColours(context, fills, 1)[0];\n case 'line':\n paletteOptions.stroke = takeColours(context, fills, 1)[0];\n paletteOptions.marker = {\n stroke: takeColours(context, strokes, 1)[0],\n fill: takeColours(context, fills, 1)[0],\n };\n break;\n case 'treemap':\n break;\n default:\n throw new Error('AG Charts - unknown series type: ' + input.type);\n }\n context.colourIndex += colourCount;\n return paletteOptions;\n}\nfunction prepareAxis(input) {\n var defaults = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n defaults[_i - 1] = arguments[_i];\n }\n // Remove redundant theme overload keys.\n var removeOptions = { top: DELETE, bottom: DELETE, left: DELETE, right: DELETE };\n return jsonMerge.apply(void 0, __spread(defaults, [input, removeOptions]));\n}\nfunction prepareEnabledOptions(options, mergedOptions) {\n // Set `enabled: true` for all option objects where the user has provided values.\n jsonWalk(options, function (_, userOpts, mergedOpts) {\n if (!mergedOpts) {\n return;\n }\n if ('enabled' in mergedOpts && userOpts.enabled == null) {\n mergedOpts.enabled = true;\n }\n }, { skip: ['data'] }, mergedOptions);\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};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nimport { CartesianChart } from './cartesianChart';\nimport { PolarChart } from './polarChart';\nimport { HierarchyChart } from './hierarchyChart';\nimport { Caption } from '../caption';\nimport { AreaSeries } from './series/cartesian/areaSeries';\nimport { BarSeries } from './series/cartesian/barSeries';\nimport { HistogramSeries } from './series/cartesian/histogramSeries';\nimport { LineSeries } from './series/cartesian/lineSeries';\nimport { ScatterSeries } from './series/cartesian/scatterSeries';\nimport { PieSeries, PieTitle } from './series/polar/pieSeries';\nimport { TreemapSeries } from './series/hierarchy/treemapSeries';\nimport { LogAxis } from './axis/logAxis';\nimport { NumberAxis } from './axis/numberAxis';\nimport { CategoryAxis } from './axis/categoryAxis';\nimport { GroupedCategoryAxis } from './axis/groupedCategoryAxis';\nimport { TimeAxis } from './axis/timeAxis';\nimport { DropShadow } from '../scene/dropShadow';\nimport { jsonDiff, jsonMerge, jsonApply } from '../util/json';\nimport { GroupedCategoryChart } from './groupedCategoryChart';\nimport { prepareOptions, isAgCartesianChartOptions, isAgHierarchyChartOptions, isAgPolarChartOptions, optionsType } from './mapping/prepare';\nfunction chartType(options) {\n if (isAgCartesianChartOptions(options)) {\n return 'cartesian';\n }\n else if (isAgPolarChartOptions(options)) {\n return 'polar';\n }\n else if (isAgHierarchyChartOptions(options)) {\n return 'hierarchy';\n }\n throw new Error('AG Chart - unknown type of chart for options with type: ' + options.type);\n}\n// Backwards-compatibility layer.\nvar AgChart = /** @class */ (function () {\n function AgChart() {\n }\n /** @deprecated use AgChart.create() or AgChart.update() instead. */\n AgChart.createComponent = function (options, type) {\n // console.warn('AG Charts - createComponent should no longer be used, use AgChart.update() instead.')\n if (type.indexOf('.series') >= 0) {\n var optionsWithType = __assign(__assign({}, options), { type: options.type || type.split('.')[0] });\n return createSeries([optionsWithType])[0];\n }\n return null;\n };\n AgChart.create = function (options, container, data) {\n return AgChartV2.create(options);\n };\n AgChart.update = function (chart, options, container, data) {\n return AgChartV2.update(chart, options);\n };\n return AgChart;\n}());\nexport { AgChart };\nvar AgChartV2 = /** @class */ (function () {\n function AgChartV2() {\n }\n AgChartV2.create = function (userOptions) {\n debug('user options', userOptions);\n var mergedOptions = prepareOptions(userOptions);\n var chart = isAgCartesianChartOptions(mergedOptions) ? (mergedOptions.type === 'groupedCategory' ? new GroupedCategoryChart(document) : new CartesianChart(document)) :\n isAgHierarchyChartOptions(mergedOptions) ? new HierarchyChart(document) :\n isAgPolarChartOptions(mergedOptions) ? new PolarChart(document) :\n undefined;\n if (!chart) {\n throw new Error(\"AG Charts - couldn't apply configuration, check type of options: \" + mergedOptions['type']);\n }\n AgChartV2.updateDelta(chart, mergedOptions, userOptions);\n return chart;\n };\n AgChartV2.update = function (chart, userOptions) {\n debug('user options', userOptions);\n var mergedOptions = prepareOptions(userOptions, chart.userOptions);\n if (chartType(mergedOptions) !== chartType(chart.options)) {\n chart.destroy();\n console.warn('AG Charts - options supplied require a different type of chart, please recreate the chart.');\n return;\n }\n var deltaOptions = jsonDiff(chart.options, mergedOptions, { stringify: ['data'] });\n if (deltaOptions == null) {\n return;\n }\n AgChartV2.updateDelta(chart, deltaOptions, userOptions);\n };\n AgChartV2.updateDelta = function (chart, update, userOptions) {\n if (update.type == null) {\n update = __assign(__assign({}, update), { type: chart.options.type || optionsType(update) });\n }\n debug('delta update', update);\n applyChartOptions(chart, update, userOptions);\n };\n AgChartV2.DEBUG = false;\n return AgChartV2;\n}());\nexport { AgChartV2 };\nfunction debug(message) {\n var optionalParams = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n optionalParams[_i - 1] = arguments[_i];\n }\n if (AgChartV2.DEBUG) {\n console.log.apply(console, __spread([message], optionalParams));\n }\n}\nfunction applyChartOptions(chart, options, userOptions) {\n if (isAgCartesianChartOptions(options)) {\n applyOptionValues(chart, options, { skip: ['type', 'data', 'series', 'axes', 'autoSize', 'listeners', 'theme'] });\n }\n else if (isAgPolarChartOptions(options)) {\n applyOptionValues(chart, options, { skip: ['type', 'data', 'series', 'autoSize', 'listeners', 'theme'] });\n }\n else if (isAgHierarchyChartOptions(options)) {\n applyOptionValues(chart, options, { skip: ['type', 'data', 'series', 'autoSize', 'listeners', 'theme'] });\n }\n else {\n throw new Error(\"AG Charts - couldn't apply configuration, check type of options and chart: \" + options['type']);\n }\n var performProcessData = false;\n if (options.series && options.series.length > 0) {\n applySeries(chart, options);\n }\n if (isAgCartesianChartOptions(options) && options.axes) {\n performProcessData = applyAxes(chart, options);\n }\n if (options.data) {\n chart.data = options.data;\n performProcessData = true;\n }\n // Needs to be done last to avoid overrides by width/height properties.\n if (options.autoSize != null) {\n chart.autoSize = options.autoSize;\n }\n if (options.listeners) {\n registerListeners(chart, options.listeners);\n }\n chart.layoutPending = true;\n if (performProcessData) {\n chart.processData();\n }\n chart.performLayout();\n chart.options = jsonMerge(chart.options || {}, options);\n chart.userOptions = jsonMerge(chart.userOptions || {}, userOptions);\n}\nfunction applySeries(chart, options) {\n var optSeries = options.series;\n if (!optSeries) {\n return;\n }\n var matchingTypes = chart.series.length === optSeries.length &&\n chart.series.every(function (s, i) { var _a; return s.type === ((_a = optSeries[i]) === null || _a === void 0 ? void 0 : _a.type); });\n // Try to optimise series updates if series count and types didn't change.\n if (matchingTypes) {\n chart.series.forEach(function (s, i) {\n var _a, _b;\n var previousOpts = ((_b = (_a = chart.options) === null || _a === void 0 ? void 0 : _a.series) === null || _b === void 0 ? void 0 : _b[i]) || {};\n var seriesDiff = jsonDiff(previousOpts, optSeries[i] || {});\n debug(\"applying series diff idx \" + i, seriesDiff);\n jsonApply(s, seriesDiff);\n });\n return;\n }\n chart.series = createSeries(optSeries);\n}\nfunction applyAxes(chart, options) {\n var optAxes = options.axes;\n if (!optAxes) {\n return false;\n }\n var matchingTypes = chart.axes.length === optAxes.length &&\n chart.axes.every(function (a, i) { return a.type === optAxes[i].type; });\n // Try to optimise series updates if series count and types didn't change.\n if (matchingTypes) {\n var oldOpts_1 = chart.options;\n if (isAgCartesianChartOptions(oldOpts_1)) {\n chart.axes.forEach(function (a, i) {\n var _a;\n var previousOpts = ((_a = oldOpts_1.axes) === null || _a === void 0 ? void 0 : _a[i]) || {};\n var axisDiff = jsonDiff(previousOpts, optAxes[i]);\n debug(\"applying axis diff idx \" + i, axisDiff);\n jsonApply(a, axisDiff);\n });\n return true;\n }\n }\n chart.axes = createAxis(optAxes);\n return true;\n}\nfunction createSeries(options) {\n var e_1, _a;\n var series = [];\n var skip = ['listeners'];\n var index = 0;\n try {\n for (var _b = __values(options || []), _c = _b.next(); !_c.done; _c = _b.next()) {\n var seriesOptions = _c.value;\n var path = \"series[\" + index++ + \"]\";\n switch (seriesOptions.type) {\n case 'area':\n series.push(applySeriesValues(new AreaSeries(), seriesOptions, { path: path, skip: skip }));\n break;\n case 'bar':\n case 'column':\n series.push(applySeriesValues(new BarSeries(), seriesOptions, { path: path, skip: skip }));\n break;\n case 'histogram':\n series.push(applySeriesValues(new HistogramSeries(), seriesOptions, { path: path, skip: skip }));\n break;\n case 'line':\n series.push(applySeriesValues(new LineSeries(), seriesOptions, { path: path, skip: skip }));\n break;\n case 'scatter':\n series.push(applySeriesValues(new ScatterSeries(), seriesOptions, { path: path, skip: skip }));\n break;\n case 'pie':\n series.push(applySeriesValues(new PieSeries(), seriesOptions, { path: path, skip: skip }));\n break;\n case 'treemap':\n series.push(applySeriesValues(new TreemapSeries(), seriesOptions, { path: path, skip: skip }));\n break;\n default:\n throw new Error('AG Charts - unknown series type: ' + seriesOptions.type);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n series.forEach(function (next, index) {\n var _a, _b;\n var listeners = (_b = (_a = options) === null || _a === void 0 ? void 0 : _a[index]) === null || _b === void 0 ? void 0 : _b.listeners;\n if (listeners == null) {\n return;\n }\n registerListeners(next, listeners);\n });\n return series;\n}\nfunction createAxis(options) {\n var e_2, _a;\n var axes = [];\n var index = 0;\n try {\n for (var _b = __values(options || []), _c = _b.next(); !_c.done; _c = _b.next()) {\n var axisOptions = _c.value;\n var path = \"axis[\" + index++ + \"]\";\n switch (axisOptions.type) {\n case 'number':\n axes.push(applyAxisValues(new NumberAxis(), axisOptions, { path: path }));\n break;\n case LogAxis.type:\n axes.push(applyAxisValues(new LogAxis(), axisOptions, { path: path }));\n break;\n case CategoryAxis.type:\n axes.push(applyAxisValues(new CategoryAxis(), axisOptions, { path: path }));\n break;\n case GroupedCategoryAxis.type:\n axes.push(applyAxisValues(new GroupedCategoryAxis(), axisOptions, { path: path }));\n break;\n case TimeAxis.type:\n axes.push(applyAxisValues(new TimeAxis(), axisOptions, { path: path }));\n break;\n default:\n throw new Error('AG Charts - unknown axis type: ' + axisOptions['type']);\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_2) throw e_2.error; }\n }\n return axes;\n}\nfunction registerListeners(source, listeners) {\n for (var property in listeners) {\n source.addEventListener(property, listeners[property]);\n }\n}\nvar JSON_APPLY_OPTIONS = {\n constructors: {\n 'title': Caption,\n 'subtitle': Caption,\n 'shadow': DropShadow,\n },\n allowedTypes: {\n 'series[].marker.shape': ['primitive', 'function'],\n 'axis[].tick.count': ['primitive', 'class-instance'],\n },\n};\nfunction applyOptionValues(target, options, _a) {\n var _b = _a === void 0 ? {} : _a, skip = _b.skip, path = _b.path;\n var applyOpts = __assign(__assign(__assign({}, JSON_APPLY_OPTIONS), { skip: __spread(['type'], (skip || [])) }), (path ? { path: path } : {}));\n return jsonApply(target, options, applyOpts);\n}\nfunction applySeriesValues(target, options, _a) {\n var _b = _a === void 0 ? {} : _a, skip = _b.skip, path = _b.path;\n var _c;\n var ctrs = ((_c = JSON_APPLY_OPTIONS) === null || _c === void 0 ? void 0 : _c.constructors) || {};\n var seriesTypeOverrides = {\n constructors: __assign(__assign({}, ctrs), { 'title': target.type === 'pie' ? PieTitle : ctrs['title'] }),\n };\n var applyOpts = __assign(__assign(__assign(__assign({}, JSON_APPLY_OPTIONS), seriesTypeOverrides), { skip: __spread(['type'], (skip || [])) }), (path ? { path: path } : {}));\n return jsonApply(target, options, applyOpts);\n}\nfunction applyAxisValues(target, options, _a) {\n var _b = _a === void 0 ? {} : _a, skip = _b.skip, path = _b.path;\n var applyOpts = __assign(__assign(__assign({}, JSON_APPLY_OPTIONS), { skip: __spread(['type'], (skip || [])) }), (path ? { path: path } : {}));\n return jsonApply(target, options, applyOpts);\n}\n","export function getSeriesType(chartType) {\n switch (chartType) {\n case 'bar':\n case 'groupedBar':\n case 'stackedBar':\n case 'normalizedBar':\n return 'bar';\n case 'column':\n case 'groupedColumn':\n case 'stackedColumn':\n case 'normalizedColumn':\n return 'column';\n case 'line':\n return 'line';\n case 'area':\n case 'stackedArea':\n case 'normalizedArea':\n return 'area';\n case 'scatter':\n case 'bubble':\n return 'scatter';\n case 'histogram':\n return 'histogram';\n case 'pie':\n case 'doughnut':\n return 'pie';\n default:\n return 'cartesian';\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { _, Autowired, BeanStub, Events, PostConstruct } from \"@ag-grid-community/core\";\nimport { ChartDataModel } from \"./chartDataModel\";\nimport { getChartTheme } from \"ag-charts-community\";\nimport { getSeriesType } from \"./utils/seriesTypeMapper\";\nvar ChartController = /** @class */ (function (_super) {\n __extends(ChartController, _super);\n function ChartController(model) {\n var _this = _super.call(this) || this;\n _this.model = model;\n return _this;\n }\n ChartController.prototype.init = function () {\n var _this = this;\n this.setChartRange();\n this.addManagedListener(this.eventService, Events.EVENT_RANGE_SELECTION_CHANGED, function (event) {\n if (event.id && event.id === _this.model.chartId) {\n _this.updateForRangeChange();\n }\n });\n if (this.model.unlinked) {\n if (this.rangeService) {\n this.rangeService.setCellRanges([]);\n }\n }\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_MOVED, this.updateForGridChange.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PINNED, this.updateForGridChange.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VISIBLE, this.updateForGridChange.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, this.updateForGridChange.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_MODEL_UPDATED, this.updateForGridChange.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_CELL_VALUE_CHANGED, this.updateForDataChange.bind(this));\n };\n ChartController.prototype.updateForGridChange = function () {\n if (this.model.unlinked) {\n return;\n }\n this.model.updateCellRanges();\n this.setChartRange();\n };\n ChartController.prototype.updateForDataChange = function () {\n if (this.model.unlinked) {\n return;\n }\n this.model.updateData();\n this.raiseChartUpdatedEvent();\n };\n ChartController.prototype.updateForRangeChange = function () {\n this.updateForGridChange();\n this.raiseChartRangeSelectionChangedEvent();\n };\n ChartController.prototype.updateForPanelChange = function (updatedCol) {\n this.model.updateCellRanges(updatedCol);\n this.setChartRange();\n this.raiseChartRangeSelectionChangedEvent();\n };\n ChartController.prototype.getChartModel = function () {\n var modelType = this.model.pivotChart ? 'pivot' : 'range';\n var seriesChartTypes = this.isComboChart() ? this.model.seriesChartTypes : undefined;\n return {\n modelType: modelType,\n chartId: this.model.chartId,\n chartType: this.model.chartType,\n chartThemeName: this.model.chartThemeName,\n chartOptions: this.chartProxy.getChartOptions(),\n cellRange: this.getCellRangeParams(),\n suppressChartRanges: this.model.suppressChartRanges,\n aggFunc: this.model.aggFunc,\n unlinkChart: this.model.unlinked,\n seriesChartTypes: seriesChartTypes\n };\n };\n ChartController.prototype.getChartId = function () {\n return this.model.chartId;\n };\n ChartController.prototype.getChartData = function () {\n return this.model.chartData;\n };\n ChartController.prototype.getChartType = function () {\n return this.model.chartType;\n };\n ChartController.prototype.setChartType = function (chartType) {\n this.model.chartType = chartType;\n this.model.updateSeriesChartTypes();\n this.raiseChartUpdatedEvent();\n this.raiseChartOptionsChangedEvent();\n };\n ChartController.prototype.setChartThemeName = function (chartThemeName) {\n this.model.chartThemeName = chartThemeName;\n this.raiseChartUpdatedEvent();\n this.raiseChartOptionsChangedEvent();\n };\n ChartController.prototype.getChartThemeName = function () {\n return this.model.chartThemeName;\n };\n ChartController.prototype.isPivotChart = function () {\n return this.model.pivotChart;\n };\n ChartController.prototype.isPivotMode = function () {\n return this.model.isPivotMode();\n };\n ChartController.prototype.isGrouping = function () {\n return this.model.isGrouping();\n };\n ChartController.prototype.getThemes = function () {\n return this.gridOptionsWrapper.getChartThemes();\n };\n ChartController.prototype.getPalettes = function () {\n var _this = this;\n var themeNames = this.gridOptionsWrapper.getChartThemes();\n return themeNames.map(function (themeName) {\n var stockTheme = _this.chartProxy.isStockTheme(themeName);\n var theme = stockTheme ? themeName : _this.chartProxy.lookupCustomChartTheme(themeName);\n return getChartTheme(theme).palette;\n });\n };\n ChartController.prototype.getValueColState = function () {\n return this.model.valueColState.map(this.displayNameMapper.bind(this));\n };\n ChartController.prototype.getSelectedValueColState = function () {\n return this.getValueColState().filter(function (cs) { return cs.selected; });\n };\n ChartController.prototype.getDimensionColState = function () {\n return this.model.dimensionColState;\n };\n ChartController.prototype.getSelectedDimension = function () {\n return this.model.getSelectedDimension();\n };\n ChartController.prototype.displayNameMapper = function (col) {\n var columnNames = this.model.columnNames[col.colId];\n col.displayName = columnNames ? columnNames.join(' - ') : this.model.getColDisplayName(col.column);\n return col;\n };\n ChartController.prototype.getColStateForMenu = function () {\n return { dimensionCols: this.model.dimensionColState, valueCols: this.getValueColState() };\n };\n ChartController.prototype.isDefaultCategorySelected = function () {\n return this.model.getSelectedDimension().colId === ChartDataModel.DEFAULT_CATEGORY;\n };\n ChartController.prototype.setChartRange = function (silent) {\n if (silent === void 0) { silent = false; }\n if (this.rangeService && !this.model.suppressChartRanges && !this.model.unlinked) {\n this.rangeService.setCellRanges(this.getCellRanges());\n }\n if (!silent) {\n this.raiseChartUpdatedEvent();\n }\n };\n ChartController.prototype.detachChartRange = function () {\n // when chart is detached it won't listen to changes from the grid\n this.model.unlinked = !this.model.unlinked;\n if (this.model.unlinked) {\n // remove range from grid\n if (this.rangeService) {\n this.rangeService.setCellRanges([]);\n }\n }\n else {\n // update chart data may have changed\n this.updateForGridChange();\n }\n };\n ChartController.prototype.setChartProxy = function (chartProxy) {\n this.chartProxy = chartProxy;\n };\n ChartController.prototype.getChartProxy = function () {\n return this.chartProxy;\n };\n ChartController.prototype.isActiveXYChart = function () {\n return _.includes(['scatter', 'bubble'], this.getChartType());\n };\n ChartController.prototype.isChartLinked = function () {\n return !this.model.unlinked;\n };\n ChartController.prototype.customComboExists = function () {\n return this.model.savedCustomSeriesChartTypes && this.model.savedCustomSeriesChartTypes.length > 0;\n };\n ChartController.prototype.getSeriesChartTypes = function () {\n return this.model.seriesChartTypes;\n };\n ChartController.prototype.isComboChart = function () {\n return this.model.isComboChart();\n };\n ChartController.prototype.updateSeriesChartType = function (colId, chartType, secondaryAxis) {\n var seriesChartType = this.model.seriesChartTypes.find(function (s) { return s.colId === colId; });\n if (seriesChartType) {\n // once a combo chart has been modified it is now a 'customCombo' chart\n var updateChartType = this.model.chartType !== 'customCombo';\n if (updateChartType) {\n this.model.chartType = 'customCombo';\n }\n var prevSeriesChartType = seriesChartType.chartType;\n if (chartType != null) {\n seriesChartType.chartType = chartType;\n }\n if (secondaryAxis != null) {\n seriesChartType.secondaryAxis = secondaryAxis;\n }\n // replace existing custom series types with this latest version\n this.model.savedCustomSeriesChartTypes = this.model.seriesChartTypes;\n // series chart types can be modified, i.e. column chart types should be moved to primary axis\n this.model.updateSeriesChartTypes();\n this.updateForDataChange();\n if (updateChartType) {\n // update the settings panel by raising an EVENT_CHART_TYPE_CHANGED event\n this.dispatchEvent(Object.freeze({\n type: ChartController.EVENT_CHART_TYPE_CHANGED\n }));\n }\n if (prevSeriesChartType !== chartType) {\n // update the format panel by raising an EVENT_CHART_SERIES_CHART_TYPE_CHANGED event\n this.dispatchEvent(Object.freeze({\n type: ChartController.EVENT_CHART_SERIES_CHART_TYPE_CHANGED\n }));\n }\n }\n };\n ChartController.prototype.getActiveSeriesChartTypes = function () {\n var selectedColIds = this.getSelectedValueColState().map(function (c) { return c.colId; });\n return this.getSeriesChartTypes().filter(function (s) { return selectedColIds.includes(s.colId); });\n };\n ChartController.prototype.getChartSeriesTypes = function () {\n var supportedComboSeriesTypes = ['line', 'column', 'area'];\n return this.isComboChart() ? supportedComboSeriesTypes : [getSeriesType(this.getChartType())];\n };\n ChartController.prototype.getCellRanges = function () {\n return [this.model.dimensionCellRange, this.model.valueCellRange].filter(function (r) { return r; });\n };\n ChartController.prototype.getCellRangeParams = function () {\n var cellRanges = this.getCellRanges();\n var firstCellRange = cellRanges[0];\n var startRow = (firstCellRange && firstCellRange.startRow) || null;\n var endRow = (firstCellRange && firstCellRange.endRow) || null;\n return {\n rowStartIndex: startRow && startRow.rowIndex,\n rowStartPinned: startRow && startRow.rowPinned,\n rowEndIndex: endRow && endRow.rowIndex,\n rowEndPinned: endRow && endRow.rowPinned,\n columns: cellRanges.reduce(function (columns, value) { return columns.concat(value.columns.map(function (c) { return c.getId(); })); }, [])\n };\n };\n ChartController.prototype.raiseChartUpdatedEvent = function () {\n var event = Object.freeze({\n type: ChartController.EVENT_CHART_UPDATED\n });\n this.dispatchEvent(event);\n };\n ChartController.prototype.raiseChartOptionsChangedEvent = function () {\n var _a = this.getChartModel(), chartId = _a.chartId, chartType = _a.chartType;\n var event = Object.freeze({\n type: Events.EVENT_CHART_OPTIONS_CHANGED,\n chartId: chartId,\n chartType: chartType,\n chartThemeName: this.model.chartThemeName,\n chartOptions: this.chartProxy.getChartOptions(),\n api: this.gridApi,\n columnApi: this.columnApi,\n });\n this.eventService.dispatchEvent(event);\n };\n ChartController.prototype.raiseChartRangeSelectionChangedEvent = function () {\n var event = Object.freeze({\n type: Events.EVENT_CHART_RANGE_SELECTION_CHANGED,\n id: this.model.chartId,\n chartId: this.model.chartId,\n cellRange: this.getCellRangeParams(),\n api: this.gridApi,\n columnApi: this.columnApi,\n });\n this.eventService.dispatchEvent(event);\n };\n ChartController.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.rangeService) {\n this.rangeService.setCellRanges([]);\n }\n };\n ChartController.EVENT_CHART_UPDATED = 'chartUpdated';\n ChartController.EVENT_CHART_TYPE_CHANGED = 'chartTypeChanged';\n ChartController.EVENT_CHART_SERIES_CHART_TYPE_CHANGED = 'chartSeriesChartTypeChanged';\n __decorate([\n Autowired('rangeService')\n ], ChartController.prototype, \"rangeService\", void 0);\n __decorate([\n Autowired('gridApi')\n ], ChartController.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('columnApi')\n ], ChartController.prototype, \"columnApi\", void 0);\n __decorate([\n PostConstruct\n ], ChartController.prototype, \"init\", null);\n return ChartController;\n}(BeanStub));\nexport { ChartController };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nimport { _, AgAbstractField, AgCheckbox, AgGroupComponent, AgRadioButton, AgSelect, AgToggleButton, AutoScrollService, Autowired, Component, DragAndDropService, DragSourceType, PostConstruct } from \"@ag-grid-community/core\";\nimport { ChartController } from \"../../chartController\";\nvar ChartDataPanel = /** @class */ (function (_super) {\n __extends(ChartDataPanel, _super);\n function ChartDataPanel(chartController, chartOptionsService) {\n var _this = _super.call(this, ChartDataPanel.TEMPLATE) || this;\n _this.chartController = chartController;\n _this.chartOptionsService = chartOptionsService;\n _this.columnComps = new Map();\n return _this;\n }\n ChartDataPanel.prototype.init = function () {\n this.updatePanels();\n this.addManagedListener(this.chartController, ChartController.EVENT_CHART_UPDATED, this.updatePanels.bind(this));\n this.createAutoScrollService();\n };\n ChartDataPanel.prototype.destroy = function () {\n this.clearComponents();\n _super.prototype.destroy.call(this);\n };\n ChartDataPanel.prototype.updatePanels = function () {\n var _this = this;\n var currentChartType = this.chartType;\n var _a = this.chartController.getColStateForMenu(), dimensionCols = _a.dimensionCols, valueCols = _a.valueCols;\n var colIds = dimensionCols.map(function (c) { return c.colId; }).concat(valueCols.map(function (c) { return c.colId; }));\n this.chartType = this.chartController.getChartType();\n var groupExpandedState = this.getGroupExpandedState();\n if (_.areEqual(_.keys(this.columnComps), colIds) && this.chartType === currentChartType) {\n // if possible, we just update existing components\n __spread(dimensionCols, valueCols).forEach(function (col) {\n _this.columnComps.get(col.colId).setValue(col.selected, true);\n });\n if (this.chartController.isActiveXYChart()) {\n var getSeriesLabel_1 = this.generateGetSeriesLabel();\n valueCols.forEach(function (col) {\n _this.columnComps.get(col.colId).setLabel(getSeriesLabel_1(col));\n });\n }\n // recreate series chart type group if it exists as series may be added or removed via series group panel\n _.removeFromParent(this.getGui().querySelector('#seriesChartTypeGroup'));\n this.seriesChartTypeGroupComp = this.destroyBean(this.seriesChartTypeGroupComp);\n this.createSeriesChartTypeGroup(valueCols);\n }\n else {\n // otherwise, we re-create everything\n this.clearComponents();\n this.createCategoriesGroup(dimensionCols);\n this.createSeriesGroup(valueCols);\n this.createSeriesChartTypeGroup(valueCols);\n }\n this.restoreGroupExpandedState(groupExpandedState);\n };\n ChartDataPanel.prototype.getGroupExpandedState = function () {\n return [\n this.categoriesGroupComp,\n this.seriesGroupComp,\n this.seriesChartTypeGroupComp\n ].map(function (group) { return !group ? true : group.isExpanded(); });\n };\n ChartDataPanel.prototype.restoreGroupExpandedState = function (groupExpandedState) {\n [\n this.categoriesGroupComp,\n this.seriesGroupComp,\n this.seriesChartTypeGroupComp\n ].forEach(function (group, idx) {\n if (!group) {\n return;\n }\n group.toggleGroupExpand(groupExpandedState[idx]);\n });\n };\n ChartDataPanel.prototype.createAutoScrollService = function () {\n var eGui = this.getGui();\n this.autoScrollService = new AutoScrollService({\n scrollContainer: eGui,\n scrollAxis: 'y',\n getVerticalPosition: function () { return eGui.scrollTop; },\n setVerticalPosition: function (position) { return eGui.scrollTop = position; }\n });\n };\n ChartDataPanel.prototype.addComponent = function (parent, component, id) {\n var eDiv = document.createElement('div');\n eDiv.id = id;\n eDiv.className = 'ag-chart-data-section';\n eDiv.appendChild(component.getGui());\n parent.appendChild(eDiv);\n };\n ChartDataPanel.prototype.addChangeListener = function (component, columnState) {\n var _this = this;\n this.addManagedListener(component, AgAbstractField.EVENT_CHANGED, function () {\n columnState.selected = component.getValue();\n _this.chartController.updateForPanelChange(columnState);\n });\n };\n ChartDataPanel.prototype.createCategoriesGroup = function (columns) {\n var _this = this;\n this.categoriesGroupComp = this.createBean(new AgGroupComponent({\n title: this.getCategoryGroupTitle(),\n enabled: true,\n suppressEnabledCheckbox: true,\n suppressOpenCloseIcons: false,\n cssIdentifier: 'charts-data'\n }));\n var inputName = \"chartDimension\" + this.getCompId();\n columns.forEach(function (col) {\n var comp = _this.categoriesGroupComp.createManagedBean(new AgRadioButton());\n comp.setLabel(_.escapeString(col.displayName));\n comp.setValue(col.selected);\n comp.setInputName(inputName);\n _this.addChangeListener(comp, col);\n _this.categoriesGroupComp.addItem(comp);\n _this.columnComps.set(col.colId, comp);\n });\n this.addComponent(this.getGui(), this.categoriesGroupComp, 'categoriesGroup');\n };\n ChartDataPanel.prototype.createSeriesGroup = function (columns) {\n var _this = this;\n this.seriesGroupComp = this.createManagedBean(new AgGroupComponent({\n title: this.getSeriesGroupTitle(),\n enabled: true,\n suppressEnabledCheckbox: true,\n suppressOpenCloseIcons: false,\n cssIdentifier: 'charts-data'\n }));\n if (this.chartController.isActiveXYChart()) {\n var pairedModeToggle = this.seriesGroupComp.createManagedBean(new AgToggleButton());\n pairedModeToggle\n .setLabel(this.chartTranslationService.translate('paired'))\n .setLabelAlignment('left')\n .setLabelWidth('flex')\n .setInputWidth(45)\n .setValue(this.chartOptionsService.getPairedMode())\n .onValueChange(function (newValue) {\n _this.chartOptionsService.setPairedMode(!!newValue);\n _this.chartController.updateForGridChange();\n });\n this.seriesGroupComp.addItem(pairedModeToggle);\n }\n var getSeriesLabel = this.generateGetSeriesLabel();\n columns.forEach(function (col) {\n var comp = _this.seriesGroupComp.createManagedBean(new AgCheckbox());\n comp.addCssClass('ag-data-select-checkbox');\n var label = getSeriesLabel(col);\n comp.setLabel(label);\n comp.setValue(col.selected);\n _this.addChangeListener(comp, col);\n _this.seriesGroupComp.addItem(comp);\n _this.columnComps.set(col.colId, comp);\n _this.addDragHandle(comp, col);\n });\n this.addComponent(this.getGui(), this.seriesGroupComp, 'seriesGroup');\n var dropTarget = {\n getIconName: function () { return DragAndDropService.ICON_MOVE; },\n getContainer: function () { return _this.seriesGroupComp.getGui(); },\n onDragging: function (params) { return _this.onDragging(params); },\n onDragLeave: function () { return _this.onDragLeave(); },\n isInterestedIn: this.isInterestedIn.bind(this),\n };\n this.dragAndDropService.addDropTarget(dropTarget);\n };\n ChartDataPanel.prototype.createSeriesChartTypeGroup = function (columns) {\n var _this = this;\n if (!this.chartController.isComboChart()) {\n return;\n }\n this.seriesChartTypeGroupComp = this.createManagedBean(new AgGroupComponent({\n title: this.chartTranslationService.translate('seriesChartType'),\n enabled: true,\n suppressEnabledCheckbox: true,\n suppressOpenCloseIcons: false,\n cssIdentifier: 'charts-data'\n }));\n var seriesChartTypes = this.chartController.getSeriesChartTypes();\n columns.forEach(function (col) {\n if (!col.selected) {\n return;\n }\n var seriesChartType = seriesChartTypes.filter(function (s) { return s.colId === col.colId; })[0];\n if (!seriesChartType) {\n return;\n }\n var seriesItemGroup = _this.seriesChartTypeGroupComp.createManagedBean(new AgGroupComponent({\n title: col.displayName,\n enabled: true,\n suppressEnabledCheckbox: true,\n suppressOpenCloseIcons: true,\n cssIdentifier: 'charts-format-sub-level'\n }));\n var secondaryAxisComp = _this.seriesChartTypeGroupComp\n .createManagedBean(new AgCheckbox())\n .setLabel(_this.chartTranslationService.translate('secondaryAxis'))\n .setLabelWidth(\"flex\")\n .setDisabled(['groupedColumn', 'stackedColumn', 'stackedArea'].includes(seriesChartType.chartType))\n .setValue(!!seriesChartType.secondaryAxis)\n .onValueChange(function (enabled) { return _this.chartController.updateSeriesChartType(col.colId, undefined, enabled); });\n seriesItemGroup.addItem(secondaryAxisComp);\n var translate = function (key, defaultText) {\n return _this.chartTranslationService.translate(key, defaultText);\n };\n var availableChartTypes = [\n { value: 'line', text: translate('line', 'Line') },\n { value: 'area', text: translate('area', 'Area') },\n { value: 'stackedArea', text: translate('stackedArea', 'StackedArea') },\n { value: 'groupedColumn', text: translate('groupedColumn', 'Grouped Column') },\n { value: 'stackedColumn', text: translate('stackedColumn', 'Stacked Column') },\n ];\n var chartTypeComp = seriesItemGroup.createManagedBean(new AgSelect());\n chartTypeComp\n .setLabelAlignment('left')\n .setLabelWidth(\"flex\")\n .addOptions(availableChartTypes)\n .setValue(seriesChartType.chartType)\n .onValueChange(function (chartType) { return _this.chartController.updateSeriesChartType(col.colId, chartType); });\n seriesItemGroup.addItem(chartTypeComp);\n _this.seriesChartTypeGroupComp.addItem(seriesItemGroup);\n });\n this.addComponent(this.getGui(), this.seriesChartTypeGroupComp, 'seriesChartTypeGroup');\n };\n ChartDataPanel.prototype.addDragHandle = function (comp, col) {\n var _this = this;\n var eDragHandle = _.createIconNoSpan('columnDrag', this.gridOptionsWrapper);\n eDragHandle.classList.add('ag-drag-handle', 'ag-chart-data-column-drag-handle');\n comp.getGui().insertAdjacentElement('beforeend', eDragHandle);\n var dragSource = {\n type: DragSourceType.ChartPanel,\n eElement: eDragHandle,\n dragItemName: col.displayName,\n getDragItem: function () { return ({ columns: [col.column] }); },\n onDragStopped: function () { return _this.onDragStop(); }\n };\n this.dragAndDropService.addDragSource(dragSource, true);\n this.addDestroyFunc(function () { return _this.dragAndDropService.removeDragSource(dragSource); });\n };\n ChartDataPanel.prototype.generateGetSeriesLabel = function () {\n if (!this.chartController.isActiveXYChart()) {\n return function (col) { return _.escapeString(col.displayName); };\n }\n var isBubble = this.chartType === 'bubble';\n var isInPairedMode = this.isInPairedMode();\n var selectedValuesCount = 0;\n var indexToAxisLabel = new Map();\n indexToAxisLabel.set(0, 'X');\n indexToAxisLabel.set(1, 'Y');\n indexToAxisLabel.set(2, 'size');\n return function (col) {\n var escapedLabel = _.escapeString(col.displayName);\n if (!col.selected) {\n return escapedLabel;\n }\n var axisLabel;\n if (isInPairedMode) {\n axisLabel = indexToAxisLabel.get(selectedValuesCount % (isBubble ? 3 : 2));\n }\n else {\n if (selectedValuesCount === 0) {\n axisLabel = 'X';\n }\n else {\n axisLabel = isBubble && selectedValuesCount % 2 === 0 ? 'size' : 'Y';\n }\n }\n selectedValuesCount++;\n return escapedLabel + \" (\" + axisLabel + \")\";\n };\n };\n ChartDataPanel.prototype.getCategoryGroupTitle = function () {\n return this.chartTranslationService.translate(this.chartController.isActiveXYChart() ? 'labels' : 'categories');\n };\n ChartDataPanel.prototype.getSeriesGroupTitle = function () {\n return this.chartTranslationService.translate(this.chartController.isActiveXYChart() ? 'xyValues' : 'series');\n };\n ChartDataPanel.prototype.isInPairedMode = function () {\n return this.chartController.isActiveXYChart() && this.chartOptionsService.getSeriesOption('paired', 'scatter');\n };\n ChartDataPanel.prototype.clearComponents = function () {\n _.clearElement(this.getGui());\n this.categoriesGroupComp = this.destroyBean(this.categoriesGroupComp);\n this.seriesGroupComp = this.destroyBean(this.seriesGroupComp);\n this.seriesChartTypeGroupComp = this.destroyBean(this.seriesChartTypeGroupComp);\n this.columnComps.clear();\n };\n ChartDataPanel.prototype.onDragging = function (draggingEvent) {\n var itemHovered = this.checkHoveredItem(draggingEvent);\n if (!itemHovered) {\n return;\n }\n this.lastDraggedColumn = draggingEvent.dragItem.columns[0];\n var comp = itemHovered.comp, position = itemHovered.position;\n var _a = this.lastHoveredItem || {}, lastHoveredComp = _a.comp, lastHoveredPosition = _a.position;\n if (comp === lastHoveredComp && position === lastHoveredPosition) {\n return;\n }\n this.autoScrollService.check(draggingEvent.event);\n this.clearHoveredItems();\n this.lastHoveredItem = { comp: comp, position: position };\n var eGui = comp.getGui();\n eGui.classList.add('ag-list-item-hovered', \"ag-item-highlight-\" + position);\n };\n ChartDataPanel.prototype.checkHoveredItem = function (draggingEvent) {\n var e_1, _a;\n if (_.missing(draggingEvent.vDirection)) {\n return null;\n }\n var mouseEvent = draggingEvent.event;\n try {\n for (var _b = __values(this.columnComps.values()), _c = _b.next(); !_c.done; _c = _b.next()) {\n var comp = _c.value;\n var eGui = comp.getGui();\n if (!eGui.querySelector('.ag-chart-data-column-drag-handle')) {\n continue;\n }\n var rect = eGui.getBoundingClientRect();\n var isOverComp = mouseEvent.clientY >= rect.top && mouseEvent.clientY <= rect.bottom;\n if (isOverComp) {\n var height = eGui.clientHeight;\n var position = mouseEvent.clientY > rect.top + (height / 2) ? 'bottom' : 'top';\n return { comp: comp, position: position };\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return null;\n };\n ChartDataPanel.prototype.onDragLeave = function () {\n this.clearHoveredItems();\n };\n ChartDataPanel.prototype.onDragStop = function () {\n var _this = this;\n if (this.lastHoveredItem) {\n var _a = this.chartController.getColStateForMenu(), dimensionCols = _a.dimensionCols, valueCols = _a.valueCols;\n var draggedColumnState = __spread(dimensionCols, valueCols).find(function (state) { return state.column === _this.lastDraggedColumn; });\n if (draggedColumnState) {\n var targetIndex = Array.from(this.columnComps.values()).indexOf(this.lastHoveredItem.comp);\n if (this.lastHoveredItem.position === 'bottom') {\n targetIndex++;\n }\n draggedColumnState.order = targetIndex;\n this.chartController.updateForPanelChange(draggedColumnState);\n }\n }\n this.clearHoveredItems();\n this.lastDraggedColumn = undefined;\n this.autoScrollService.ensureCleared();\n };\n ChartDataPanel.prototype.clearHoveredItems = function () {\n this.columnComps.forEach(function (columnComp) {\n columnComp.getGui().classList.remove('ag-list-item-hovered', 'ag-item-highlight-top', 'ag-item-highlight-bottom');\n });\n this.lastHoveredItem = undefined;\n };\n ChartDataPanel.prototype.isInterestedIn = function (type) {\n return type === DragSourceType.ChartPanel;\n };\n ChartDataPanel.TEMPLATE = \"
    \";\n __decorate([\n Autowired('dragAndDropService')\n ], ChartDataPanel.prototype, \"dragAndDropService\", void 0);\n __decorate([\n Autowired('chartTranslationService')\n ], ChartDataPanel.prototype, \"chartTranslationService\", void 0);\n __decorate([\n PostConstruct\n ], ChartDataPanel.prototype, \"init\", null);\n return ChartDataPanel;\n}(Component));\nexport { ChartDataPanel };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { _, Autowired, Component, PostConstruct, RefSelector } from \"@ag-grid-community/core\";\nvar FontPanel = /** @class */ (function (_super) {\n __extends(FontPanel, _super);\n function FontPanel(params) {\n var _this = _super.call(this) || this;\n _this.activeComps = [];\n _this.params = params;\n return _this;\n }\n FontPanel.prototype.init = function () {\n var groupParams = {\n cssIdentifier: 'charts-format-sub-level',\n direction: 'vertical',\n suppressOpenCloseIcons: true\n };\n this.setTemplate(FontPanel.TEMPLATE, { fontGroup: groupParams });\n this.initGroup();\n this.initFontFamilySelect();\n this.initFontWeightStyleSelect();\n this.initFontSizeSelect();\n this.initFontColorPicker();\n };\n FontPanel.prototype.addCompToPanel = function (comp) {\n this.fontGroup.addItem(comp);\n this.activeComps.push(comp);\n };\n FontPanel.prototype.setEnabled = function (enabled) {\n this.fontGroup.setEnabled(enabled);\n };\n FontPanel.prototype.initGroup = function () {\n var _this = this;\n this.fontGroup\n .setTitle(this.params.name || this.chartTranslationService.translate('font'))\n .setEnabled(this.params.enabled)\n .hideEnabledCheckbox(!!this.params.suppressEnabledCheckbox)\n .hideOpenCloseIcons(true)\n .onEnableChange(function (enabled) {\n if (_this.params.setEnabled) {\n _this.params.setEnabled(enabled);\n }\n });\n };\n FontPanel.prototype.initFontFamilySelect = function () {\n var _this = this;\n var families = [\n 'Arial, sans-serif',\n 'Aria Black, sans-serif',\n 'Book Antiqua, serif',\n 'Charcoal, sans-serif',\n 'Comic Sans MS, cursive',\n 'Courier, monospace',\n 'Courier New, monospace',\n 'Gadget, sans-serif',\n 'Geneva, sans-serif',\n 'Helvetica, sans-serif',\n 'Impact, sans-serif',\n 'Lucida Console, monospace',\n 'Lucida Grande, sans-serif',\n 'Lucida Sans Unicode, sans-serif',\n 'Monaco, monospace',\n 'Palatino Linotype, serif',\n 'Palatino, serif',\n 'Times New Roman, serif',\n 'Times, serif',\n 'Verdana, sans-serif'\n ];\n var family = this.params.initialFont.family;\n var initialValue = families[0];\n if (family) {\n // check for known values using lowercase\n var lowerCaseValues = families.map(function (f) { return f.toLowerCase(); });\n var valueIndex = lowerCaseValues.indexOf(family.toLowerCase());\n if (valueIndex >= 0) {\n initialValue = families[valueIndex];\n }\n else {\n // add user provided value to list\n var capitalisedFontValue = _.capitalise(family);\n families.push(capitalisedFontValue);\n initialValue = capitalisedFontValue;\n }\n }\n var options = families.sort().map(function (value) { return ({ value: value, text: value }); });\n this.familySelect.addOptions(options)\n .setInputWidth('flex')\n .setValue(\"\" + initialValue)\n .onValueChange(function (newValue) { return _this.params.setFont({ family: newValue }); });\n };\n FontPanel.prototype.initFontSizeSelect = function () {\n var _this = this;\n var sizes = [8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36];\n var size = this.params.initialFont.size;\n if (!_.includes(sizes, size)) {\n sizes.push(size);\n }\n var options = sizes.sort(function (a, b) { return a - b; }).map(function (value) { return ({ value: \"\" + value, text: \"\" + value }); });\n this.sizeSelect.addOptions(options)\n .setInputWidth('flex')\n .setValue(\"\" + size)\n .onValueChange(function (newValue) { return _this.params.setFont({ size: parseInt(newValue, 10) }); });\n this.sizeSelect.setLabel(this.chartTranslationService.translate('size'));\n };\n FontPanel.prototype.initFontWeightStyleSelect = function () {\n var _this = this;\n var _a = this.params.initialFont, _b = _a.weight, weight = _b === void 0 ? 'normal' : _b, _c = _a.style, style = _c === void 0 ? 'normal' : _c;\n var weightStyles = [\n { name: 'normal', weight: 'normal', style: 'normal' },\n { name: 'bold', weight: 'bold', style: 'normal' },\n { name: 'italic', weight: 'normal', style: 'italic' },\n { name: 'boldItalic', weight: 'bold', style: 'italic' }\n ];\n var selectedOption = weightStyles.find(function (x) { return x.weight === weight && x.style === style; });\n if (!selectedOption) {\n selectedOption = { name: 'predefined', weight: weight, style: style };\n weightStyles.unshift(selectedOption);\n }\n var options = weightStyles.map(function (ws) { return ({\n value: ws.name,\n text: _this.chartTranslationService.translate(ws.name),\n }); });\n this.weightStyleSelect.addOptions(options)\n .setInputWidth('flex')\n .setValue(selectedOption.name)\n .onValueChange(function (newValue) {\n var selectedWeightStyle = weightStyles.find(function (x) { return x.name === newValue; });\n _this.params.setFont({ weight: selectedWeightStyle.weight, style: selectedWeightStyle.style });\n });\n };\n FontPanel.prototype.initFontColorPicker = function () {\n var _this = this;\n this.colorPicker\n .setLabel(this.chartTranslationService.translate('color'))\n .setInputWidth(45)\n .setValue(\"\" + this.params.initialFont.color)\n .onValueChange(function (newColor) { return _this.params.setFont({ color: newColor }); });\n };\n FontPanel.prototype.destroyActiveComps = function () {\n var _this = this;\n this.activeComps.forEach(function (comp) {\n _.removeFromParent(comp.getGui());\n _this.destroyBean(comp);\n });\n };\n FontPanel.prototype.destroy = function () {\n this.destroyActiveComps();\n _super.prototype.destroy.call(this);\n };\n FontPanel.TEMPLATE = \"
    \\n \\n \\n \\n
    \\n \\n \\n
    \\n
    \\n
    \";\n __decorate([\n RefSelector('fontGroup')\n ], FontPanel.prototype, \"fontGroup\", void 0);\n __decorate([\n RefSelector('familySelect')\n ], FontPanel.prototype, \"familySelect\", void 0);\n __decorate([\n RefSelector('weightStyleSelect')\n ], FontPanel.prototype, \"weightStyleSelect\", void 0);\n __decorate([\n RefSelector('sizeSelect')\n ], FontPanel.prototype, \"sizeSelect\", void 0);\n __decorate([\n RefSelector('colorPicker')\n ], FontPanel.prototype, \"colorPicker\", void 0);\n __decorate([\n Autowired('chartTranslationService')\n ], FontPanel.prototype, \"chartTranslationService\", void 0);\n __decorate([\n PostConstruct\n ], FontPanel.prototype, \"init\", null);\n return FontPanel;\n}(Component));\nexport { FontPanel };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { _, Autowired, Component, PostConstruct, RefSelector, } from \"@ag-grid-community/core\";\nimport { FontPanel } from \"../fontPanel\";\nimport { LegendPosition } from \"ag-charts-community\";\nimport { getMaxValue } from \"../formatPanel\";\nvar LegendPanel = /** @class */ (function (_super) {\n __extends(LegendPanel, _super);\n function LegendPanel(chartOptionsService) {\n var _this = _super.call(this) || this;\n _this.chartOptionsService = chartOptionsService;\n _this.activePanels = [];\n return _this;\n }\n LegendPanel.prototype.init = function () {\n var groupParams = {\n cssIdentifier: 'charts-format-top-level',\n direction: 'vertical'\n };\n this.setTemplate(LegendPanel.TEMPLATE, { legendGroup: groupParams });\n this.initLegendGroup();\n this.initLegendPosition();\n this.initLegendPadding();\n this.initLegendItems();\n this.initLabelPanel();\n };\n LegendPanel.prototype.initLegendGroup = function () {\n var _this = this;\n this.legendGroup\n .setTitle(this.chartTranslationService.translate(\"legend\"))\n .hideEnabledCheckbox(false)\n .setEnabled(this.chartOptionsService.getChartOption(\"legend.enabled\") || false)\n .toggleGroupExpand(false)\n .onEnableChange(function (enabled) {\n _this.chartOptionsService.setChartOption(\"legend.enabled\", enabled);\n _this.legendGroup.toggleGroupExpand(true);\n });\n };\n LegendPanel.prototype.initLegendPosition = function () {\n var _this = this;\n var positions = [LegendPosition.Top, LegendPosition.Right, LegendPosition.Bottom, LegendPosition.Left];\n this.legendPositionSelect\n .setLabel(this.chartTranslationService.translate(\"position\"))\n .setLabelWidth(\"flex\")\n .setInputWidth(80)\n .addOptions(positions.map(function (position) { return ({\n value: position,\n text: _this.chartTranslationService.translate(position)\n }); }))\n .setValue(this.chartOptionsService.getChartOption(\"legend.position\"))\n .onValueChange(function (newValue) { return _this.chartOptionsService.setChartOption(\"legend.position\", newValue); });\n };\n LegendPanel.prototype.initLegendPadding = function () {\n var _this = this;\n var currentValue = this.chartOptionsService.getChartOption(\"legend.spacing\");\n this.legendPaddingSlider\n .setLabel(this.chartTranslationService.translate(\"spacing\"))\n .setMaxValue(getMaxValue(currentValue, 200))\n .setValue(\"\" + currentValue)\n .setTextFieldWidth(45)\n .onValueChange(function (newValue) { return _this.chartOptionsService.setChartOption(\"legend.spacing\", newValue); });\n };\n LegendPanel.prototype.initLegendItems = function () {\n var _this = this;\n var initSlider = function (expression, labelKey, input, defaultMaxValue) {\n var currentValue = _this.chartOptionsService.getChartOption(\"legend.\" + expression);\n input.setLabel(_this.chartTranslationService.translate(labelKey))\n .setMaxValue(getMaxValue(currentValue, defaultMaxValue))\n .setValue(\"\" + currentValue)\n .setTextFieldWidth(45)\n .onValueChange(function (newValue) {\n _this.chartOptionsService.setChartOption(\"legend.\" + expression, newValue);\n });\n };\n initSlider(\"item.marker.size\", \"markerSize\", this.markerSizeSlider, 40);\n initSlider(\"item.marker.strokeWidth\", \"markerStroke\", this.markerStrokeSlider, 10);\n initSlider(\"item.marker.padding\", \"itemSpacing\", this.markerPaddingSlider, 20);\n initSlider(\"item.paddingX\", \"layoutHorizontalSpacing\", this.itemPaddingXSlider, 50);\n initSlider(\"item.paddingY\", \"layoutVerticalSpacing\", this.itemPaddingYSlider, 50);\n };\n LegendPanel.prototype.initLabelPanel = function () {\n var _this = this;\n var chartProxy = this.chartOptionsService;\n var initialFont = {\n family: chartProxy.getChartOption(\"legend.item.label.fontFamily\"),\n style: chartProxy.getChartOption(\"legend.item.label.fontStyle\"),\n weight: chartProxy.getChartOption(\"legend.item.label.fontWeight\"),\n size: chartProxy.getChartOption(\"legend.item.label.fontSize\"),\n color: chartProxy.getChartOption(\"legend.item.label.color\")\n };\n var setFont = function (font) {\n var proxy = _this.chartOptionsService;\n if (font.family) {\n proxy.setChartOption(\"legend.item.label.fontFamily\", font.family);\n }\n if (font.weight) {\n proxy.setChartOption(\"legend.item.label.fontWeight\", font.weight);\n }\n if (font.style) {\n proxy.setChartOption(\"legend.item.label.fontStyle\", font.style);\n }\n if (font.size) {\n proxy.setChartOption(\"legend.item.label.fontSize\", font.size);\n }\n if (font.color) {\n proxy.setChartOption(\"legend.item.label.color\", font.color);\n }\n };\n var params = {\n enabled: true,\n suppressEnabledCheckbox: true,\n initialFont: initialFont,\n setFont: setFont\n };\n var fontPanelComp = this.createBean(new FontPanel(params));\n this.legendGroup.addItem(fontPanelComp);\n this.activePanels.push(fontPanelComp);\n };\n LegendPanel.prototype.destroyActivePanels = function () {\n var _this = this;\n this.activePanels.forEach(function (panel) {\n _.removeFromParent(panel.getGui());\n _this.destroyBean(panel);\n });\n };\n LegendPanel.prototype.destroy = function () {\n this.destroyActivePanels();\n _super.prototype.destroy.call(this);\n };\n LegendPanel.TEMPLATE = \"
    \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
    \";\n __decorate([\n RefSelector('legendGroup')\n ], LegendPanel.prototype, \"legendGroup\", void 0);\n __decorate([\n RefSelector('legendPositionSelect')\n ], LegendPanel.prototype, \"legendPositionSelect\", void 0);\n __decorate([\n RefSelector('legendPaddingSlider')\n ], LegendPanel.prototype, \"legendPaddingSlider\", void 0);\n __decorate([\n RefSelector('markerSizeSlider')\n ], LegendPanel.prototype, \"markerSizeSlider\", void 0);\n __decorate([\n RefSelector('markerStrokeSlider')\n ], LegendPanel.prototype, \"markerStrokeSlider\", void 0);\n __decorate([\n RefSelector('markerPaddingSlider')\n ], LegendPanel.prototype, \"markerPaddingSlider\", void 0);\n __decorate([\n RefSelector('itemPaddingXSlider')\n ], LegendPanel.prototype, \"itemPaddingXSlider\", void 0);\n __decorate([\n RefSelector('itemPaddingYSlider')\n ], LegendPanel.prototype, \"itemPaddingYSlider\", void 0);\n __decorate([\n Autowired('chartTranslationService')\n ], LegendPanel.prototype, \"chartTranslationService\", void 0);\n __decorate([\n PostConstruct\n ], LegendPanel.prototype, \"init\", null);\n return LegendPanel;\n}(Component));\nexport { LegendPanel };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Component, PostConstruct, RefSelector } from \"@ag-grid-community/core\";\nimport { getMaxValue } from \"../formatPanel\";\nvar AxisTicksPanel = /** @class */ (function (_super) {\n __extends(AxisTicksPanel, _super);\n function AxisTicksPanel(chartOptionsService) {\n var _this = _super.call(this) || this;\n _this.chartOptionsService = chartOptionsService;\n return _this;\n }\n AxisTicksPanel.prototype.init = function () {\n var groupParams = {\n cssIdentifier: 'charts-format-sub-level',\n direction: 'vertical',\n suppressOpenCloseIcons: true\n };\n this.setTemplate(AxisTicksPanel.TEMPLATE, { axisTicksGroup: groupParams });\n this.initAxisTicks();\n };\n AxisTicksPanel.prototype.initAxisTicks = function () {\n var _this = this;\n this.axisTicksGroup\n .setTitle(this.chartTranslationService.translate(\"ticks\"))\n .hideOpenCloseIcons(true)\n .hideEnabledCheckbox(true);\n this.axisTicksColorPicker\n .setLabel(this.chartTranslationService.translate(\"color\"))\n .setLabelWidth(\"flex\")\n .setInputWidth(45)\n .setValue(this.chartOptionsService.getAxisProperty(\"tick.color\"))\n .onValueChange(function (newColor) { return _this.chartOptionsService.setAxisProperty(\"tick.color\", newColor); });\n var initInput = function (expression, input, label, defaultMaxValue) {\n var currentValue = _this.chartOptionsService.getAxisProperty(expression);\n input.setLabel(label)\n .setMaxValue(getMaxValue(currentValue, defaultMaxValue))\n .setValue(\"\" + currentValue)\n .setTextFieldWidth(45)\n .onValueChange(function (newValue) { return _this.chartOptionsService.setAxisProperty(expression, newValue); });\n };\n initInput(\"tick.width\", this.axisTicksWidthSlider, this.chartTranslationService.translate(\"width\"), 10);\n initInput(\"tick.size\", this.axisTicksSizeSlider, this.chartTranslationService.translate(\"length\"), 30);\n };\n AxisTicksPanel.TEMPLATE = \"
    \\n \\n \\n \\n \\n \\n
    \";\n __decorate([\n RefSelector('axisTicksGroup')\n ], AxisTicksPanel.prototype, \"axisTicksGroup\", void 0);\n __decorate([\n RefSelector('axisTicksColorPicker')\n ], AxisTicksPanel.prototype, \"axisTicksColorPicker\", void 0);\n __decorate([\n RefSelector('axisTicksWidthSlider')\n ], AxisTicksPanel.prototype, \"axisTicksWidthSlider\", void 0);\n __decorate([\n RefSelector('axisTicksSizeSlider')\n ], AxisTicksPanel.prototype, \"axisTicksSizeSlider\", void 0);\n __decorate([\n Autowired('chartTranslationService')\n ], AxisTicksPanel.prototype, \"chartTranslationService\", void 0);\n __decorate([\n PostConstruct\n ], AxisTicksPanel.prototype, \"init\", null);\n return AxisTicksPanel;\n}(Component));\nexport { AxisTicksPanel };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { _, AgAngleSelect, AgSlider, Autowired, Component, PostConstruct, RefSelector, } from \"@ag-grid-community/core\";\nimport { ChartController } from \"../../../chartController\";\nimport { AxisTicksPanel } from \"./axisTicksPanel\";\nimport { FontPanel } from \"../fontPanel\";\nimport { getMaxValue } from \"../formatPanel\";\nvar AxisPanel = /** @class */ (function (_super) {\n __extends(AxisPanel, _super);\n function AxisPanel(chartController, chartOptionsService) {\n var _this = _super.call(this) || this;\n _this.chartController = chartController;\n _this.chartOptionsService = chartOptionsService;\n _this.activePanels = [];\n _this.axisLabelUpdateFuncs = [];\n return _this;\n }\n AxisPanel.prototype.init = function () {\n var _this = this;\n var groupParams = {\n cssIdentifier: 'charts-format-top-level',\n direction: 'vertical'\n };\n this.setTemplate(AxisPanel.TEMPLATE, { axisGroup: groupParams });\n this.initAxis();\n this.initAxisTicks();\n this.initAxisLabels();\n var updateAxisLabelRotations = function () { return _this.axisLabelUpdateFuncs.forEach(function (func) { return func(); }); };\n this.addManagedListener(this.chartController, ChartController.EVENT_CHART_UPDATED, updateAxisLabelRotations);\n };\n AxisPanel.prototype.initAxis = function () {\n var _this = this;\n var chartTranslationService = this.chartTranslationService;\n this.axisGroup\n .setTitle(chartTranslationService.translate(\"axis\"))\n .toggleGroupExpand(false)\n .hideEnabledCheckbox(true);\n this.axisColorInput\n .setLabel(chartTranslationService.translate(\"color\"))\n .setLabelWidth(\"flex\")\n .setInputWidth(45)\n .setValue(this.chartOptionsService.getAxisProperty(\"line.color\"))\n .onValueChange(function (newColor) { return _this.chartOptionsService.setAxisProperty(\"line.color\", newColor); });\n var currentValue = this.chartOptionsService.getAxisProperty(\"line.width\");\n this.axisLineWidthSlider\n .setMaxValue(getMaxValue(currentValue, 10))\n .setLabel(chartTranslationService.translate(\"thickness\"))\n .setTextFieldWidth(45)\n .setValue(\"\" + currentValue)\n .onValueChange(function (newValue) { return _this.chartOptionsService.setAxisProperty(\"line.width\", newValue); });\n if (_.includes(['line', 'scatter', 'bubble'], this.chartController.getChartType()) && !this.chartController.isGrouping()) {\n var options_1 = [\n { value: '', text: chartTranslationService.translate('automatic') }\n ];\n ['category', 'time', 'number'].forEach(function (type) {\n options_1.push({ value: type, text: chartTranslationService.translate(type) });\n });\n this.xAxisTypeSelect\n .setLabel(chartTranslationService.translate('xType'))\n .setLabelWidth('flex')\n .addOptions(options_1)\n .setValue(this.chartOptionsService.getChartOption('xAxis.type') || '')\n .onValueChange(function (newValue) {\n _this.chartOptionsService.setChartOption('xAxis.type', typeof newValue === 'string' && newValue.length && newValue);\n _this.chartController.updateForDataChange();\n });\n }\n else {\n this.xAxisTypeSelect.setDisplayed(false);\n }\n };\n AxisPanel.prototype.initAxisTicks = function () {\n var axisTicksComp = this.createBean(new AxisTicksPanel(this.chartOptionsService));\n this.axisGroup.addItem(axisTicksComp);\n this.activePanels.push(axisTicksComp);\n };\n AxisPanel.prototype.initAxisLabels = function () {\n var _this = this;\n var initialFont = {\n family: this.chartOptionsService.getAxisProperty(\"label.fontFamily\"),\n style: this.chartOptionsService.getAxisProperty(\"label.fontStyle\"),\n weight: this.chartOptionsService.getAxisProperty(\"label.fontWeight\"),\n size: this.chartOptionsService.getAxisProperty(\"label.fontSize\"),\n color: this.chartOptionsService.getAxisProperty(\"label.color\")\n };\n var setFont = function (font) {\n if (font.family) {\n _this.chartOptionsService.setAxisProperty(\"label.fontFamily\", font.family);\n }\n if (font.weight) {\n _this.chartOptionsService.setAxisProperty(\"label.fontWeight\", font.weight);\n }\n if (font.style) {\n _this.chartOptionsService.setAxisProperty(\"label.fontStyle\", font.style);\n }\n if (font.size) {\n _this.chartOptionsService.setAxisProperty(\"label.fontSize\", font.size);\n }\n if (font.color) {\n _this.chartOptionsService.setAxisProperty(\"label.color\", font.color);\n }\n _this.chartController.getChartProxy().getChart().layoutPending = true;\n };\n var params = {\n enabled: true,\n suppressEnabledCheckbox: true,\n initialFont: initialFont,\n setFont: setFont\n };\n var labelPanelComp = this.createBean(new FontPanel(params));\n this.axisGroup.addItem(labelPanelComp);\n this.activePanels.push(labelPanelComp);\n this.addAdditionalLabelComps(labelPanelComp);\n };\n AxisPanel.prototype.addAdditionalLabelComps = function (labelPanelComp) {\n var _this = this;\n var createAngleComp = function (label, axisType) {\n var value = _this.chartOptionsService.getLabelRotation(axisType);\n var angleSelect = new AgAngleSelect()\n .setLabel(label)\n .setLabelWidth(\"flex\")\n .setValue(value || 0)\n .onValueChange(function (newValue) { return _this.chartOptionsService.setLabelRotation(axisType, newValue); });\n // the axis label rotation needs to be updated when the default category changes in the data panel\n _this.axisLabelUpdateFuncs.push(function () {\n var value = _this.chartOptionsService.getLabelRotation(axisType);\n angleSelect.setValue(value);\n });\n var rotationInput = _this.createBean(angleSelect);\n labelPanelComp.addCompToPanel(rotationInput);\n };\n var degreesSymbol = String.fromCharCode(176);\n var xRotationLabel = this.chartTranslationService.translate(\"xRotation\") + \" \" + degreesSymbol;\n var yRotationLabel = this.chartTranslationService.translate(\"yRotation\") + \" \" + degreesSymbol;\n createAngleComp(xRotationLabel, \"xAxis\");\n createAngleComp(yRotationLabel, \"yAxis\");\n var labelPaddingSlider = this.createBean(new AgSlider());\n var currentValue = this.chartOptionsService.getAxisProperty(\"label.padding\");\n labelPaddingSlider.setLabel(this.chartTranslationService.translate(\"padding\"))\n .setMaxValue(getMaxValue(currentValue, 30))\n .setValue(\"\" + currentValue)\n .setTextFieldWidth(45)\n .onValueChange(function (newValue) { return _this.chartOptionsService.setAxisProperty(\"label.padding\", newValue); });\n labelPanelComp.addCompToPanel(labelPaddingSlider);\n };\n AxisPanel.prototype.destroyActivePanels = function () {\n var _this = this;\n this.activePanels.forEach(function (panel) {\n _.removeFromParent(panel.getGui());\n _this.destroyBean(panel);\n });\n };\n AxisPanel.prototype.destroy = function () {\n this.destroyActivePanels();\n _super.prototype.destroy.call(this);\n };\n AxisPanel.TEMPLATE = \"
    \\n \\n \\n \\n \\n \\n
    \";\n __decorate([\n RefSelector('axisGroup')\n ], AxisPanel.prototype, \"axisGroup\", void 0);\n __decorate([\n RefSelector('axisColorInput')\n ], AxisPanel.prototype, \"axisColorInput\", void 0);\n __decorate([\n RefSelector('axisLineWidthSlider')\n ], AxisPanel.prototype, \"axisLineWidthSlider\", void 0);\n __decorate([\n RefSelector('xAxisTypeSelect')\n ], AxisPanel.prototype, \"xAxisTypeSelect\", void 0);\n __decorate([\n Autowired('chartTranslationService')\n ], AxisPanel.prototype, \"chartTranslationService\", void 0);\n __decorate([\n PostConstruct\n ], AxisPanel.prototype, \"init\", null);\n return AxisPanel;\n}(Component));\nexport { AxisPanel };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Component, PostConstruct, RefSelector } from \"@ag-grid-community/core\";\nimport { getMaxValue } from \"../formatPanel\";\nvar NavigatorPanel = /** @class */ (function (_super) {\n __extends(NavigatorPanel, _super);\n function NavigatorPanel(chartOptionsService) {\n var _this = _super.call(this) || this;\n _this.chartOptionsService = chartOptionsService;\n return _this;\n }\n NavigatorPanel.prototype.init = function () {\n var groupParams = {\n cssIdentifier: 'charts-format-top-level',\n direction: 'vertical'\n };\n this.setTemplate(NavigatorPanel.TEMPLATE, { navigatorGroup: groupParams });\n this.initNavigator();\n };\n NavigatorPanel.prototype.initNavigator = function () {\n var _this = this;\n var chartTranslationService = this.chartTranslationService;\n this.navigatorGroup\n .setTitle(chartTranslationService.translate(\"navigator\"))\n .toggleGroupExpand(false)\n .hideEnabledCheckbox(false)\n .setEnabled(this.chartOptionsService.getChartOption(\"navigator.enabled\") || false)\n .onEnableChange(function (enabled) {\n _this.chartOptionsService.setChartOption(\"navigator.enabled\", enabled);\n _this.navigatorGroup.toggleGroupExpand(true);\n });\n var currentValue = this.chartOptionsService.getChartOption(\"navigator.height\");\n this.navigatorHeightSlider\n .setLabel(chartTranslationService.translate(\"height\"))\n .setMinValue(10)\n .setMaxValue(getMaxValue(currentValue, 60))\n .setTextFieldWidth(45)\n .setValue(\"\" + (currentValue || 30))\n .onValueChange(function (height) { return _this.chartOptionsService.setChartOption(\"navigator.height\", height); });\n };\n NavigatorPanel.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n NavigatorPanel.TEMPLATE = \"
    \\n \\n \\n \\n
    \";\n __decorate([\n RefSelector('navigatorGroup')\n ], NavigatorPanel.prototype, \"navigatorGroup\", void 0);\n __decorate([\n RefSelector('navigatorHeightSlider')\n ], NavigatorPanel.prototype, \"navigatorHeightSlider\", void 0);\n __decorate([\n Autowired('chartTranslationService')\n ], NavigatorPanel.prototype, \"chartTranslationService\", void 0);\n __decorate([\n PostConstruct\n ], NavigatorPanel.prototype, \"init\", null);\n return NavigatorPanel;\n}(Component));\nexport { NavigatorPanel };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Component, PostConstruct, RefSelector } from \"@ag-grid-community/core\";\nimport { getMaxValue } from \"../formatPanel\";\nvar PaddingPanel = /** @class */ (function (_super) {\n __extends(PaddingPanel, _super);\n function PaddingPanel(chartOptionsService) {\n var _this = _super.call(this) || this;\n _this.chartOptionsService = chartOptionsService;\n return _this;\n }\n PaddingPanel.prototype.init = function () {\n var groupParams = {\n cssIdentifier: 'charts-format-sub-level',\n direction: 'vertical',\n suppressOpenCloseIcons: true\n };\n this.setTemplate(PaddingPanel.TEMPLATE, { chartPaddingGroup: groupParams });\n this.initGroup();\n this.initChartPaddingItems();\n };\n PaddingPanel.prototype.initGroup = function () {\n this.chartPaddingGroup\n .setTitle(this.chartTranslationService.translate(\"padding\"))\n .hideOpenCloseIcons(true)\n .hideEnabledCheckbox(true);\n };\n PaddingPanel.prototype.initChartPaddingItems = function () {\n var _this = this;\n var initInput = function (property, input) {\n var currentValue = _this.chartOptionsService.getChartOption('padding.' + property);\n input.setLabel(_this.chartTranslationService.translate(property))\n .setMaxValue(getMaxValue(currentValue, 200))\n .setValue(\"\" + currentValue)\n .setTextFieldWidth(45)\n .onValueChange(function (newValue) { return _this.chartOptionsService.setChartOption('padding.' + property, newValue); });\n };\n initInput('top', this.paddingTopSlider);\n initInput('right', this.paddingRightSlider);\n initInput('bottom', this.paddingBottomSlider);\n initInput('left', this.paddingLeftSlider);\n };\n PaddingPanel.TEMPLATE = \"
    \\n \\n \\n \\n \\n \\n \\n
    \";\n __decorate([\n RefSelector('chartPaddingGroup')\n ], PaddingPanel.prototype, \"chartPaddingGroup\", void 0);\n __decorate([\n RefSelector('paddingTopSlider')\n ], PaddingPanel.prototype, \"paddingTopSlider\", void 0);\n __decorate([\n RefSelector('paddingRightSlider')\n ], PaddingPanel.prototype, \"paddingRightSlider\", void 0);\n __decorate([\n RefSelector('paddingBottomSlider')\n ], PaddingPanel.prototype, \"paddingBottomSlider\", void 0);\n __decorate([\n RefSelector('paddingLeftSlider')\n ], PaddingPanel.prototype, \"paddingLeftSlider\", void 0);\n __decorate([\n Autowired('chartTranslationService')\n ], PaddingPanel.prototype, \"chartTranslationService\", void 0);\n __decorate([\n PostConstruct\n ], PaddingPanel.prototype, \"init\", null);\n return PaddingPanel;\n}(Component));\nexport { PaddingPanel };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Component, PostConstruct, RefSelector } from \"@ag-grid-community/core\";\nvar BackgroundPanel = /** @class */ (function (_super) {\n __extends(BackgroundPanel, _super);\n function BackgroundPanel(chartOptionsService) {\n var _this = _super.call(this) || this;\n _this.chartOptionsService = chartOptionsService;\n return _this;\n }\n BackgroundPanel.prototype.init = function () {\n var groupParams = {\n cssIdentifier: 'charts-format-sub-level',\n direction: 'vertical',\n suppressOpenCloseIcons: true\n };\n this.setTemplate(BackgroundPanel.TEMPLATE, { chartBackgroundGroup: groupParams });\n this.initGroup();\n this.initColorPicker();\n };\n BackgroundPanel.prototype.initGroup = function () {\n var _this = this;\n this.group\n .setTitle(this.chartTranslationService.translate('background'))\n .setEnabled(this.chartOptionsService.getChartOption('background.visible'))\n .hideOpenCloseIcons(true)\n .hideEnabledCheckbox(false)\n .onEnableChange(function (enabled) { return _this.chartOptionsService.setChartOption('background.visible', enabled); });\n };\n BackgroundPanel.prototype.initColorPicker = function () {\n var _this = this;\n this.colorPicker\n .setLabel(this.chartTranslationService.translate('color'))\n .setLabelWidth('flex')\n .setInputWidth(45)\n .setValue(this.chartOptionsService.getChartOption('background.fill'))\n .onValueChange(function (newColor) { return _this.chartOptionsService.setChartOption('background.fill', newColor); });\n };\n BackgroundPanel.TEMPLATE = \"
    \\n \\n \\n \\n
    \";\n __decorate([\n RefSelector('chartBackgroundGroup')\n ], BackgroundPanel.prototype, \"group\", void 0);\n __decorate([\n RefSelector('colorPicker')\n ], BackgroundPanel.prototype, \"colorPicker\", void 0);\n __decorate([\n Autowired('chartTranslationService')\n ], BackgroundPanel.prototype, \"chartTranslationService\", void 0);\n __decorate([\n PostConstruct\n ], BackgroundPanel.prototype, \"init\", null);\n return BackgroundPanel;\n}(Component));\nexport { BackgroundPanel };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { _, Autowired, Component, PostConstruct } from \"@ag-grid-community/core\";\nimport { FontPanel } from \"../fontPanel\";\nvar TitlePanel = /** @class */ (function (_super) {\n __extends(TitlePanel, _super);\n function TitlePanel(chartOptionsService) {\n var _this = _super.call(this, TitlePanel.TEMPLATE) || this;\n _this.chartOptionsService = chartOptionsService;\n _this.activePanels = [];\n return _this;\n }\n TitlePanel.prototype.init = function () {\n this.initFontPanel();\n this.titlePlaceholder = this.chartTranslationService.translate('titlePlaceholder');\n };\n TitlePanel.prototype.hasTitle = function () {\n var title = this.getOption('title');\n return title && title.enabled && title.text && title.text.length > 0;\n };\n TitlePanel.prototype.initFontPanel = function () {\n var _this = this;\n var hasTitle = this.hasTitle;\n var setFont = function (font) {\n if (font.family) {\n _this.setOption('title.fontFamily', font.family);\n }\n if (font.weight) {\n _this.setOption('title.fontWeight', font.weight);\n }\n if (font.style) {\n _this.setOption('title.fontStyle', font.style);\n }\n if (font.size) {\n _this.setOption('title.fontSize', font.size);\n }\n if (font.color) {\n _this.setOption('title.color', font.color);\n }\n };\n var initialFont = {\n family: this.getOption('title.fontFamily'),\n style: this.getOption('title.fontStyle'),\n weight: this.getOption('title.fontWeight'),\n size: this.getOption('title.fontSize'),\n color: this.getOption('title.color')\n };\n if (!hasTitle) {\n setFont(initialFont);\n }\n var fontPanelParams = {\n name: this.chartTranslationService.translate('title'),\n enabled: this.hasTitle(),\n suppressEnabledCheckbox: false,\n initialFont: initialFont,\n setFont: setFont,\n setEnabled: function (enabled) {\n _this.setOption('title.enabled', enabled);\n var currentTitleText = _this.getOption('title.text');\n if (enabled && currentTitleText === 'Title') {\n _this.setOption('title.text', _this.titlePlaceholder);\n }\n }\n };\n var fontPanelComp = this.createBean(new FontPanel(fontPanelParams));\n this.getGui().appendChild(fontPanelComp.getGui());\n this.activePanels.push(fontPanelComp);\n // edits to the title can disable it, so keep the checkbox in sync:\n this.addManagedListener(this.eventService, 'chartTitleEdit', function () {\n fontPanelComp.setEnabled(_this.hasTitle());\n });\n };\n TitlePanel.prototype.getOption = function (expression) {\n return this.chartOptionsService.getChartOption(expression);\n };\n TitlePanel.prototype.setOption = function (property, value) {\n this.chartOptionsService.setChartOption(property, value);\n };\n TitlePanel.prototype.destroyActivePanels = function () {\n var _this = this;\n this.activePanels.forEach(function (panel) {\n _.removeFromParent(panel.getGui());\n _this.destroyBean(panel);\n });\n };\n TitlePanel.prototype.destroy = function () {\n this.destroyActivePanels();\n _super.prototype.destroy.call(this);\n };\n TitlePanel.TEMPLATE = \"
    \";\n __decorate([\n Autowired('chartTranslationService')\n ], TitlePanel.prototype, \"chartTranslationService\", void 0);\n __decorate([\n PostConstruct\n ], TitlePanel.prototype, \"init\", null);\n return TitlePanel;\n}(Component));\nexport default TitlePanel;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { _, Autowired, Component, PostConstruct, RefSelector } from \"@ag-grid-community/core\";\nimport { PaddingPanel } from \"./paddingPanel\";\nimport { BackgroundPanel } from \"./backgroundPanel\";\nimport TitlePanel from \"./titlePanel\";\nvar ChartPanel = /** @class */ (function (_super) {\n __extends(ChartPanel, _super);\n function ChartPanel(chartOptionsService) {\n var _this = _super.call(this) || this;\n _this.chartOptionsService = chartOptionsService;\n _this.activePanels = [];\n return _this;\n }\n ChartPanel.prototype.init = function () {\n var groupParams = {\n cssIdentifier: 'charts-format-top-level',\n direction: 'vertical'\n };\n this.setTemplate(ChartPanel.TEMPLATE, { chartGroup: groupParams });\n this.initGroup();\n this.initTitles();\n this.initPaddingPanel();\n this.initBackgroundPanel();\n };\n ChartPanel.prototype.initGroup = function () {\n this.chartGroup\n .setTitle(this.chartTranslationService.translate('chart'))\n .toggleGroupExpand(false)\n .hideEnabledCheckbox(true);\n };\n ChartPanel.prototype.initTitles = function () {\n var titlePanelComp = this.createBean(new TitlePanel(this.chartOptionsService));\n this.chartGroup.addItem(titlePanelComp);\n this.activePanels.push(titlePanelComp);\n };\n ChartPanel.prototype.initPaddingPanel = function () {\n var paddingPanelComp = this.createBean(new PaddingPanel(this.chartOptionsService));\n this.chartGroup.addItem(paddingPanelComp);\n this.activePanels.push(paddingPanelComp);\n };\n ChartPanel.prototype.initBackgroundPanel = function () {\n var backgroundPanelComp = this.createBean(new BackgroundPanel(this.chartOptionsService));\n this.chartGroup.addItem(backgroundPanelComp);\n this.activePanels.push(backgroundPanelComp);\n };\n ChartPanel.prototype.destroyActivePanels = function () {\n var _this = this;\n this.activePanels.forEach(function (panel) {\n _.removeFromParent(panel.getGui());\n _this.destroyBean(panel);\n });\n };\n ChartPanel.prototype.destroy = function () {\n this.destroyActivePanels();\n _super.prototype.destroy.call(this);\n };\n ChartPanel.TEMPLATE = \"
    \\n \\n
    \";\n __decorate([\n RefSelector('chartGroup')\n ], ChartPanel.prototype, \"chartGroup\", void 0);\n __decorate([\n Autowired('chartTranslationService')\n ], ChartPanel.prototype, \"chartTranslationService\", void 0);\n __decorate([\n PostConstruct\n ], ChartPanel.prototype, \"init\", null);\n return ChartPanel;\n}(Component));\nexport { ChartPanel };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Component, PostConstruct, RefSelector, } from \"@ag-grid-community/core\";\nimport { getMaxValue } from \"../formatPanel\";\nvar ShadowPanel = /** @class */ (function (_super) {\n __extends(ShadowPanel, _super);\n function ShadowPanel(chartOptionsService, getSelectedSeries) {\n var _this = _super.call(this) || this;\n _this.chartOptionsService = chartOptionsService;\n _this.getSelectedSeries = getSelectedSeries;\n return _this;\n }\n ShadowPanel.prototype.init = function () {\n var groupParams = {\n cssIdentifier: 'charts-format-sub-level',\n direction: 'vertical',\n suppressOpenCloseIcons: true\n };\n this.setTemplate(ShadowPanel.TEMPLATE, { shadowGroup: groupParams });\n this.shadowBlurSlider.setTextFieldWidth(45);\n this.shadowXOffsetSlider.setTextFieldWidth(45);\n this.shadowYOffsetSlider.setTextFieldWidth(45);\n this.initSeriesShadow();\n };\n ShadowPanel.prototype.initSeriesShadow = function () {\n var _this = this;\n this.shadowGroup\n .setTitle(this.chartTranslationService.translate(\"shadow\"))\n .setEnabled(this.chartOptionsService.getSeriesOption(\"shadow.enabled\", this.getSelectedSeries()))\n .hideOpenCloseIcons(true)\n .hideEnabledCheckbox(false)\n .onEnableChange(function (newValue) { return _this.chartOptionsService.setSeriesOption(\"shadow.enabled\", newValue, _this.getSelectedSeries()); });\n this.shadowColorPicker\n .setLabel(this.chartTranslationService.translate(\"color\"))\n .setLabelWidth(\"flex\")\n .setInputWidth(45)\n .setValue(this.chartOptionsService.getSeriesOption(\"shadow.color\", this.getSelectedSeries()))\n .onValueChange(function (newValue) { return _this.chartOptionsService.setSeriesOption(\"shadow.color\", newValue, _this.getSelectedSeries()); });\n var initInput = function (input, property, minValue, defaultMaxValue) {\n var currentValue = _this.chartOptionsService.getSeriesOption(\"shadow.\" + property, _this.getSelectedSeries());\n input.setLabel(_this.chartTranslationService.translate(property))\n .setMinValue(minValue)\n .setMaxValue(getMaxValue(currentValue, defaultMaxValue))\n .setValue(\"\" + currentValue)\n .onValueChange(function (newValue) { return _this.chartOptionsService.setSeriesOption(\"shadow.\" + property, newValue, _this.getSelectedSeries()); });\n };\n initInput(this.shadowBlurSlider, \"blur\", 0, 20);\n initInput(this.shadowXOffsetSlider, \"xOffset\", -10, 10);\n initInput(this.shadowYOffsetSlider, \"yOffset\", -10, 10);\n };\n ShadowPanel.TEMPLATE = \"
    \\n \\n \\n \\n \\n \\n \\n
    \";\n __decorate([\n RefSelector('shadowGroup')\n ], ShadowPanel.prototype, \"shadowGroup\", void 0);\n __decorate([\n RefSelector('shadowColorPicker')\n ], ShadowPanel.prototype, \"shadowColorPicker\", void 0);\n __decorate([\n RefSelector('shadowBlurSlider')\n ], ShadowPanel.prototype, \"shadowBlurSlider\", void 0);\n __decorate([\n RefSelector('shadowXOffsetSlider')\n ], ShadowPanel.prototype, \"shadowXOffsetSlider\", void 0);\n __decorate([\n RefSelector('shadowYOffsetSlider')\n ], ShadowPanel.prototype, \"shadowYOffsetSlider\", void 0);\n __decorate([\n Autowired('chartTranslationService')\n ], ShadowPanel.prototype, \"chartTranslationService\", void 0);\n __decorate([\n PostConstruct\n ], ShadowPanel.prototype, \"init\", null);\n return ShadowPanel;\n}(Component));\nexport { ShadowPanel };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { _, Autowired, Component, PostConstruct, RefSelector } from \"@ag-grid-community/core\";\nimport { getMaxValue } from \"../formatPanel\";\nvar MarkersPanel = /** @class */ (function (_super) {\n __extends(MarkersPanel, _super);\n function MarkersPanel(chartOptionsService, getSelectedSeries) {\n var _this = _super.call(this) || this;\n _this.chartOptionsService = chartOptionsService;\n _this.getSelectedSeries = getSelectedSeries;\n return _this;\n }\n MarkersPanel.prototype.init = function () {\n var groupParams = {\n cssIdentifier: 'charts-format-sub-level',\n direction: 'vertical'\n };\n this.setTemplate(MarkersPanel.TEMPLATE, { seriesMarkersGroup: groupParams });\n this.initMarkers();\n };\n MarkersPanel.prototype.initMarkers = function () {\n var _this = this;\n var seriesMarkerShapeOptions = [\n {\n value: 'square',\n text: 'Square'\n },\n {\n value: 'circle',\n text: 'Circle'\n },\n {\n value: 'cross',\n text: 'Cross'\n },\n {\n value: 'diamond',\n text: 'Diamond'\n },\n {\n value: 'plus',\n text: 'Plus'\n },\n {\n value: 'triangle',\n text: 'Triangle'\n },\n {\n value: 'heart',\n text: 'Heart'\n }\n ];\n this.seriesMarkerShapeSelect\n .addOptions(seriesMarkerShapeOptions)\n .setLabel(this.chartTranslationService.translate('shape'))\n .setValue(this.getSeriesOption(\"marker.shape\"))\n .onValueChange(function (value) { return _this.setSeriesOption(\"marker.shape\", value); });\n // scatter charts should always show markers\n var chartType = this.chartOptionsService.getChartType();\n var shouldHideEnabledCheckbox = _.includes(['scatter', 'bubble'], chartType);\n this.seriesMarkersGroup\n .setTitle(this.chartTranslationService.translate(\"markers\"))\n .hideEnabledCheckbox(shouldHideEnabledCheckbox)\n .setEnabled(this.getSeriesOption(\"marker.enabled\") || false)\n .hideOpenCloseIcons(true)\n .onEnableChange(function (newValue) { return _this.setSeriesOption(\"marker.enabled\", newValue); });\n var initInput = function (expression, input, labelKey, defaultMaxValue) {\n var currentValue = _this.getSeriesOption(expression);\n input.setLabel(_this.chartTranslationService.translate(labelKey))\n .setMaxValue(getMaxValue(currentValue, defaultMaxValue))\n .setValue(\"\" + currentValue)\n .setTextFieldWidth(45)\n .onValueChange(function (newValue) { return _this.setSeriesOption(expression, newValue); });\n };\n if (chartType === 'bubble') {\n initInput(\"marker.maxSize\", this.seriesMarkerMinSizeSlider, \"maxSize\", 60);\n initInput(\"marker.size\", this.seriesMarkerSizeSlider, \"minSize\", 60);\n }\n else {\n this.seriesMarkerMinSizeSlider.setDisplayed(false);\n initInput(\"marker.size\", this.seriesMarkerSizeSlider, \"size\", 60);\n }\n initInput(\"marker.strokeWidth\", this.seriesMarkerStrokeWidthSlider, \"strokeWidth\", 10);\n };\n MarkersPanel.prototype.getSeriesOption = function (expression) {\n return this.chartOptionsService.getSeriesOption(expression, this.getSelectedSeries());\n };\n MarkersPanel.prototype.setSeriesOption = function (expression, newValue) {\n this.chartOptionsService.setSeriesOption(expression, newValue, this.getSelectedSeries());\n };\n MarkersPanel.TEMPLATE = \"
    \\n \\n \\n \\n \\n \\n \\n
    \";\n __decorate([\n RefSelector('seriesMarkersGroup')\n ], MarkersPanel.prototype, \"seriesMarkersGroup\", void 0);\n __decorate([\n RefSelector('seriesMarkerShapeSelect')\n ], MarkersPanel.prototype, \"seriesMarkerShapeSelect\", void 0);\n __decorate([\n RefSelector('seriesMarkerSizeSlider')\n ], MarkersPanel.prototype, \"seriesMarkerSizeSlider\", void 0);\n __decorate([\n RefSelector('seriesMarkerMinSizeSlider')\n ], MarkersPanel.prototype, \"seriesMarkerMinSizeSlider\", void 0);\n __decorate([\n RefSelector('seriesMarkerStrokeWidthSlider')\n ], MarkersPanel.prototype, \"seriesMarkerStrokeWidthSlider\", void 0);\n __decorate([\n Autowired('chartTranslationService')\n ], MarkersPanel.prototype, \"chartTranslationService\", void 0);\n __decorate([\n PostConstruct\n ], MarkersPanel.prototype, \"init\", null);\n return MarkersPanel;\n}(Component));\nexport { MarkersPanel };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Component, PostConstruct, RefSelector } from \"@ag-grid-community/core\";\nimport { getMaxValue } from \"../formatPanel\";\nvar CalloutPanel = /** @class */ (function (_super) {\n __extends(CalloutPanel, _super);\n function CalloutPanel(chartOptionsService, getSelectedSeries) {\n var _this = _super.call(this) || this;\n _this.chartOptionsService = chartOptionsService;\n _this.getSelectedSeries = getSelectedSeries;\n return _this;\n }\n CalloutPanel.prototype.init = function () {\n var groupParams = {\n cssIdentifier: 'charts-format-sub-level',\n direction: 'vertical'\n };\n this.setTemplate(CalloutPanel.TEMPLATE, { calloutGroup: groupParams });\n this.initCalloutOptions();\n };\n CalloutPanel.prototype.initCalloutOptions = function () {\n var _this = this;\n this.calloutGroup\n .setTitle(this.chartTranslationService.translate(\"callout\"))\n .setEnabled(true)\n .hideOpenCloseIcons(true)\n .hideEnabledCheckbox(true);\n var initInput = function (expression, input, labelKey, defaultMaxValue) {\n var currentValue = _this.chartOptionsService.getSeriesOption(expression, _this.getSelectedSeries());\n input.setLabel(_this.chartTranslationService.translate(labelKey))\n .setMaxValue(getMaxValue(currentValue, defaultMaxValue))\n .setValue(\"\" + currentValue)\n .setTextFieldWidth(45)\n .onValueChange(function (newValue) { return _this.chartOptionsService.setSeriesOption(expression, newValue, _this.getSelectedSeries()); });\n };\n initInput(\"callout.length\", this.calloutLengthSlider, \"length\", 40);\n initInput(\"callout.strokeWidth\", this.calloutStrokeWidthSlider, \"strokeWidth\", 10);\n initInput(\"label.offset\", this.labelOffsetSlider, \"offset\", 30);\n };\n CalloutPanel.TEMPLATE = \"
    \\n \\n \\n \\n \\n \\n
    \";\n __decorate([\n RefSelector('calloutGroup')\n ], CalloutPanel.prototype, \"calloutGroup\", void 0);\n __decorate([\n RefSelector('calloutLengthSlider')\n ], CalloutPanel.prototype, \"calloutLengthSlider\", void 0);\n __decorate([\n RefSelector('calloutStrokeWidthSlider')\n ], CalloutPanel.prototype, \"calloutStrokeWidthSlider\", void 0);\n __decorate([\n RefSelector('labelOffsetSlider')\n ], CalloutPanel.prototype, \"labelOffsetSlider\", void 0);\n __decorate([\n Autowired('chartTranslationService')\n ], CalloutPanel.prototype, \"chartTranslationService\", void 0);\n __decorate([\n PostConstruct\n ], CalloutPanel.prototype, \"init\", null);\n return CalloutPanel;\n}(Component));\nexport { CalloutPanel };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { _, AgSelect, AgSlider, AgToggleButton, Autowired, Component, PostConstruct, RefSelector } from \"@ag-grid-community/core\";\nimport { ShadowPanel } from \"./shadowPanel\";\nimport { FontPanel } from \"../fontPanel\";\nimport { initFontPanelParams } from \"./fontPanelParams\";\nimport { getMaxValue } from \"../formatPanel\";\nimport { MarkersPanel } from \"./markersPanel\";\nimport { ChartController } from \"../../../chartController\";\nimport { getSeriesType } from \"../../../utils/seriesTypeMapper\";\nimport { CalloutPanel } from \"./calloutPanel\";\nvar SeriesPanel = /** @class */ (function (_super) {\n __extends(SeriesPanel, _super);\n function SeriesPanel(chartController, chartOptionsService, seriesType) {\n var _this = _super.call(this) || this;\n _this.chartController = chartController;\n _this.chartOptionsService = chartOptionsService;\n _this.activePanels = [];\n _this.widgetFuncs = {\n 'lineWidth': function () { return _this.initLineWidth(); },\n 'strokeWidth': function () { return _this.initStrokeWidth(); },\n 'lineDash': function () { return _this.initLineDash(); },\n 'lineOpacity': function () { return _this.initLineOpacity(); },\n 'fillOpacity': function () { return _this.initFillOpacity(); },\n 'markers': function () { return _this.initMarkers(); },\n 'labels': function () { return _this.initLabels(); },\n 'shadow': function () { return _this.initShadow(); },\n 'tooltips': function () { return _this.initTooltips(); },\n 'bins': function () { return _this.initBins(); },\n };\n _this.seriesWidgetMappings = {\n 'area': ['tooltips', 'lineWidth', 'lineDash', 'lineOpacity', 'fillOpacity', 'markers', 'labels', 'shadow'],\n 'bar': ['tooltips', 'strokeWidth', 'lineDash', 'lineOpacity', 'fillOpacity', 'labels', 'shadow'],\n 'column': ['tooltips', 'strokeWidth', 'lineDash', 'lineOpacity', 'fillOpacity', 'labels', 'shadow'],\n 'line': ['tooltips', 'lineWidth', 'lineDash', 'lineOpacity', 'markers', 'labels'],\n 'histogram': ['tooltips', 'bins', 'strokeWidth', 'lineDash', 'lineOpacity', 'fillOpacity', 'labels', 'shadow'],\n 'scatter': ['tooltips', 'markers', 'labels'],\n 'pie': ['tooltips', 'strokeWidth', 'lineOpacity', 'fillOpacity', 'labels', 'shadow'],\n };\n _this.seriesType = seriesType || _this.getChartSeriesType();\n return _this;\n }\n SeriesPanel.prototype.init = function () {\n var groupParams = {\n cssIdentifier: 'charts-format-top-level',\n direction: 'vertical'\n };\n this.setTemplate(SeriesPanel.TEMPLATE, { seriesGroup: groupParams });\n this.seriesGroup\n .setTitle(this.translate(\"series\"))\n .toggleGroupExpand(false)\n .hideEnabledCheckbox(true);\n this.addManagedListener(this.chartController, ChartController.EVENT_CHART_SERIES_CHART_TYPE_CHANGED, this.refreshWidgets.bind(this));\n this.refreshWidgets();\n };\n SeriesPanel.prototype.refreshWidgets = function () {\n var _this = this;\n this.destroyActivePanels();\n if (this.chartController.isComboChart()) {\n this.updateSeriesType();\n this.initSeriesSelect();\n }\n this.seriesWidgetMappings[this.seriesType].forEach(function (w) { return _this.widgetFuncs[w](); });\n };\n SeriesPanel.prototype.initSeriesSelect = function () {\n var _this = this;\n var seriesSelect = this.seriesGroup.createManagedBean(new AgSelect());\n seriesSelect\n .setLabel(this.translate('seriesType'))\n .setLabelAlignment(\"left\")\n .setLabelWidth('flex')\n .setInputWidth(100)\n .addOptions(this.getSeriesSelectOptions())\n .setValue(\"\" + this.seriesType)\n .onValueChange(function (newValue) {\n _this.seriesType = newValue;\n _this.refreshWidgets();\n });\n this.seriesGroup.addItem(seriesSelect);\n this.activePanels.push(seriesSelect);\n };\n SeriesPanel.prototype.initTooltips = function () {\n var _this = this;\n var seriesTooltipsToggle = this.createBean(new AgToggleButton());\n seriesTooltipsToggle\n .setLabel(this.translate(\"tooltips\"))\n .setLabelAlignment(\"left\")\n .setLabelWidth(\"flex\")\n .setInputWidth(45)\n .setValue(this.getSeriesOption(\"tooltip.enabled\") || false)\n .onValueChange(function (newValue) { return _this.setSeriesOption(\"tooltip.enabled\", newValue); });\n this.addWidget(seriesTooltipsToggle);\n };\n SeriesPanel.prototype.initStrokeWidth = function () {\n var _this = this;\n var currentValue = this.getSeriesOption(\"strokeWidth\");\n var seriesStrokeWidthSlider = this.createBean(new AgSlider());\n seriesStrokeWidthSlider\n .setLabel(this.translate(\"strokeWidth\"))\n .setMaxValue(getMaxValue(currentValue, 10))\n .setTextFieldWidth(45)\n .setValue(\"\" + currentValue)\n .onValueChange(function (newValue) { return _this.setSeriesOption(\"strokeWidth\", newValue); });\n this.addWidget(seriesStrokeWidthSlider);\n };\n SeriesPanel.prototype.initLineWidth = function () {\n var _this = this;\n var currentValue = this.getSeriesOption(\"strokeWidth\");\n var seriesLineWidthSlider = this.createBean(new AgSlider());\n seriesLineWidthSlider\n .setLabel(this.translate('lineWidth'))\n .setMaxValue(getMaxValue(currentValue, 10))\n .setTextFieldWidth(45)\n .setValue(\"\" + currentValue)\n .onValueChange(function (newValue) { return _this.setSeriesOption(\"strokeWidth\", newValue); });\n this.addWidget(seriesLineWidthSlider);\n };\n SeriesPanel.prototype.initLineDash = function () {\n var _this = this;\n var lineDash = this.getSeriesOption(\"lineDash\");\n var currentValue = lineDash ? lineDash[0] : 0;\n var seriesLineDashSlider = this.createBean(new AgSlider());\n seriesLineDashSlider\n .setLabel(this.translate('lineDash'))\n .setMaxValue(getMaxValue(currentValue, 30))\n .setTextFieldWidth(45)\n .setValue(\"\" + currentValue)\n .onValueChange(function (newValue) { return _this.setSeriesOption(\"lineDash\", [newValue]); });\n this.addWidget(seriesLineDashSlider);\n };\n SeriesPanel.prototype.initLineOpacity = function () {\n var _this = this;\n var currentValue = this.getSeriesOption(\"strokeOpacity\");\n var seriesLineOpacitySlider = this.createBean(new AgSlider());\n seriesLineOpacitySlider\n .setLabel(this.translate(\"strokeOpacity\"))\n .setStep(0.05)\n .setMaxValue(getMaxValue(currentValue, 1))\n .setTextFieldWidth(45)\n .setValue(\"\" + currentValue)\n .onValueChange(function (newValue) { return _this.setSeriesOption(\"strokeOpacity\", newValue); });\n this.addWidget(seriesLineOpacitySlider);\n };\n SeriesPanel.prototype.initFillOpacity = function () {\n var _this = this;\n var currentValue = this.getSeriesOption(\"fillOpacity\");\n var seriesFillOpacitySlider = this.createBean(new AgSlider());\n seriesFillOpacitySlider\n .setLabel(this.translate(\"fillOpacity\"))\n .setStep(0.05)\n .setMaxValue(getMaxValue(currentValue, 1))\n .setTextFieldWidth(45)\n .setValue(\"\" + currentValue)\n .onValueChange(function (newValue) { return _this.setSeriesOption(\"fillOpacity\", newValue); });\n this.addWidget(seriesFillOpacitySlider);\n };\n SeriesPanel.prototype.initLabels = function () {\n var _this = this;\n var params = initFontPanelParams(this.chartTranslationService, this.chartOptionsService, function () { return _this.seriesType; });\n var labelPanelComp = this.createBean(new FontPanel(params));\n if (this.seriesType === 'pie') {\n var calloutPanelComp = this.createBean(new CalloutPanel(this.chartOptionsService, function () { return _this.seriesType; }));\n labelPanelComp.addCompToPanel(calloutPanelComp);\n this.activePanels.push(calloutPanelComp);\n }\n this.addWidget(labelPanelComp);\n };\n SeriesPanel.prototype.initShadow = function () {\n var _this = this;\n var shadowPanelComp = this.createBean(new ShadowPanel(this.chartOptionsService, function () { return _this.seriesType; }));\n this.addWidget(shadowPanelComp);\n };\n SeriesPanel.prototype.initMarkers = function () {\n var _this = this;\n var markersPanelComp = this.createBean(new MarkersPanel(this.chartOptionsService, function () { return _this.seriesType; }));\n this.addWidget(markersPanelComp);\n };\n SeriesPanel.prototype.initBins = function () {\n var _this = this;\n var currentValue = this.getSeriesOption(\"binCount\");\n var seriesBinCountSlider = this.createBean(new AgSlider());\n seriesBinCountSlider\n .setLabel(this.translate(\"histogramBinCount\"))\n .setMinValue(4)\n .setMaxValue(getMaxValue(currentValue, 100))\n .setTextFieldWidth(45)\n .setValue(\"\" + currentValue)\n .onValueChange(function (newValue) { return _this.setSeriesOption(\"binCount\", newValue); });\n this.addWidget(seriesBinCountSlider);\n };\n SeriesPanel.prototype.addWidget = function (widget) {\n this.seriesGroup.addItem(widget);\n this.activePanels.push(widget);\n };\n SeriesPanel.prototype.getSeriesOption = function (expression) {\n return this.chartOptionsService.getSeriesOption(expression, this.seriesType);\n };\n SeriesPanel.prototype.setSeriesOption = function (expression, newValue) {\n this.chartOptionsService.setSeriesOption(expression, newValue, this.seriesType);\n };\n SeriesPanel.prototype.getChartSeriesType = function () {\n var ct = this.chartController.getSeriesChartTypes()[0].chartType;\n return (ct === 'columnLineCombo') ? 'column' : (ct === 'areaColumnCombo') ? 'area' : getSeriesType(ct);\n };\n SeriesPanel.prototype.getSeriesSelectOptions = function () {\n var _this = this;\n if (!this.seriesSelectOptions) {\n // lazy init options as they are only required for combo charts\n this.seriesSelectOptions = new Map([\n ['area', { value: 'area', text: this.translate('area', 'Area') }],\n ['bar', { value: 'bar', text: this.translate('bar', 'Bar') }],\n ['column', { value: 'column', text: this.translate('column', 'Column') }],\n ['line', { value: 'line', text: this.translate('line', 'Line') }],\n ['scatter', { value: 'scatter', text: this.translate('scatter', 'Scatter') }],\n ['histogram', { value: 'histogram', text: this.translate('histogram', 'Histogram') }],\n ['pie', { value: 'pie', text: this.translate('pie', 'Pie') }],\n ]);\n }\n var seriesSelectOptions = new Set();\n this.chartController.getActiveSeriesChartTypes().forEach(function (s) {\n var chartType = getSeriesType(s.chartType);\n seriesSelectOptions.add(_this.seriesSelectOptions.get(chartType));\n });\n return Array.from(seriesSelectOptions);\n };\n SeriesPanel.prototype.updateSeriesType = function () {\n var activeChartTypes = this.chartController.getActiveSeriesChartTypes().map(function (s) { return getSeriesType(s.chartType); });\n var invalidSeriesType = !activeChartTypes.includes(this.seriesType);\n if (invalidSeriesType && activeChartTypes.length > 0) {\n this.seriesType = activeChartTypes[0]; // default to first active series type\n }\n };\n SeriesPanel.prototype.translate = function (key, defaultText) {\n return this.chartTranslationService.translate(key, defaultText);\n };\n SeriesPanel.prototype.destroyActivePanels = function () {\n var _this = this;\n this.activePanels.forEach(function (panel) {\n _.removeFromParent(panel.getGui());\n _this.destroyBean(panel);\n });\n };\n SeriesPanel.prototype.destroy = function () {\n this.destroyActivePanels();\n _super.prototype.destroy.call(this);\n };\n SeriesPanel.TEMPLATE = \"
    \\n \\n \\n
    \";\n __decorate([\n RefSelector('seriesGroup')\n ], SeriesPanel.prototype, \"seriesGroup\", void 0);\n __decorate([\n Autowired('chartTranslationService')\n ], SeriesPanel.prototype, \"chartTranslationService\", void 0);\n __decorate([\n PostConstruct\n ], SeriesPanel.prototype, \"init\", null);\n return SeriesPanel;\n}(Component));\nexport { SeriesPanel };\n","export function initFontPanelParams(chartTranslationService, chartOptionsService, getSelectedSeries) {\n var initialFont = {\n family: chartOptionsService.getSeriesOption(\"label.fontFamily\", getSelectedSeries()),\n style: chartOptionsService.getSeriesOption(\"label.fontStyle\", getSelectedSeries()),\n weight: chartOptionsService.getSeriesOption(\"label.fontWeight\", getSelectedSeries()),\n size: chartOptionsService.getSeriesOption(\"label.fontSize\", getSelectedSeries()),\n color: chartOptionsService.getSeriesOption(\"label.color\", getSelectedSeries())\n };\n var setFont = function (font) {\n if (font.family) {\n chartOptionsService.setSeriesOption(\"label.fontFamily\", font.family, getSelectedSeries());\n }\n if (font.weight) {\n chartOptionsService.setSeriesOption(\"label.fontWeight\", font.weight, getSelectedSeries());\n }\n if (font.style) {\n chartOptionsService.setSeriesOption(\"label.fontStyle\", font.style, getSelectedSeries());\n }\n if (font.size) {\n chartOptionsService.setSeriesOption(\"label.fontSize\", font.size, getSelectedSeries());\n }\n if (font.color) {\n chartOptionsService.setSeriesOption(\"label.color\", font.color, getSelectedSeries());\n }\n };\n var params = {\n name: chartTranslationService.translate('labels'),\n enabled: chartOptionsService.getSeriesOption(\"label.enabled\", getSelectedSeries()) || false,\n setEnabled: function (enabled) { return chartOptionsService.setSeriesOption(\"label.enabled\", enabled, getSelectedSeries()); },\n suppressEnabledCheckbox: false,\n initialFont: initialFont,\n setFont: setFont\n };\n return params;\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { _, Component, PostConstruct } from \"@ag-grid-community/core\";\nimport { ChartController } from \"../../chartController\";\nimport { LegendPanel } from \"./legend/legendPanel\";\nimport { AxisPanel } from \"./axis/axisPanel\";\nimport { NavigatorPanel } from \"./navigator/navigatorPanel\";\nimport { ChartPanel } from \"./chart/chartPanel\";\nimport { SeriesPanel } from \"./series/seriesPanel\";\nexport function getMaxValue(currentValue, defaultMaxValue) {\n return Math.max(currentValue, defaultMaxValue);\n}\nvar FormatPanel = /** @class */ (function (_super) {\n __extends(FormatPanel, _super);\n function FormatPanel(chartController, chartOptionsService) {\n var _this = _super.call(this, FormatPanel.TEMPLATE) || this;\n _this.chartController = chartController;\n _this.chartOptionsService = chartOptionsService;\n _this.panels = [];\n return _this;\n }\n FormatPanel.prototype.init = function () {\n this.createPanels();\n this.addManagedListener(this.chartController, ChartController.EVENT_CHART_UPDATED, this.createPanels.bind(this));\n };\n FormatPanel.prototype.createPanels = function () {\n var chartType = this.chartController.getChartType();\n var isGrouping = this.chartController.isGrouping();\n if (chartType === this.chartType && isGrouping === this.isGrouping) {\n // existing panels can be re-used\n return;\n }\n this.destroyPanels();\n this.addComponent(new ChartPanel(this.chartOptionsService));\n this.addComponent(new LegendPanel(this.chartOptionsService));\n switch (chartType) {\n case 'groupedColumn':\n case 'stackedColumn':\n case 'normalizedColumn':\n this.addComponent(new AxisPanel(this.chartController, this.chartOptionsService));\n this.addComponent(new SeriesPanel(this.chartController, this.chartOptionsService, 'column'));\n this.addComponent(new NavigatorPanel(this.chartOptionsService));\n break;\n case 'groupedBar':\n case 'stackedBar':\n case 'normalizedBar':\n this.addComponent(new AxisPanel(this.chartController, this.chartOptionsService));\n this.addComponent(new SeriesPanel(this.chartController, this.chartOptionsService, 'bar'));\n this.addComponent(new NavigatorPanel(this.chartOptionsService));\n break;\n case 'pie':\n case 'doughnut':\n this.addComponent(new SeriesPanel(this.chartController, this.chartOptionsService, 'pie'));\n break;\n case 'line':\n this.addComponent(new AxisPanel(this.chartController, this.chartOptionsService));\n this.addComponent(new SeriesPanel(this.chartController, this.chartOptionsService, 'line'));\n this.addComponent(new NavigatorPanel(this.chartOptionsService));\n break;\n case 'scatter':\n case 'bubble':\n this.addComponent(new AxisPanel(this.chartController, this.chartOptionsService));\n this.addComponent(new SeriesPanel(this.chartController, this.chartOptionsService, 'scatter'));\n this.addComponent(new NavigatorPanel(this.chartOptionsService));\n break;\n case 'area':\n case 'stackedArea':\n case 'normalizedArea':\n this.addComponent(new AxisPanel(this.chartController, this.chartOptionsService));\n this.addComponent(new SeriesPanel(this.chartController, this.chartOptionsService, 'area'));\n this.addComponent(new NavigatorPanel(this.chartOptionsService));\n break;\n case 'histogram':\n this.addComponent(new AxisPanel(this.chartController, this.chartOptionsService));\n this.addComponent(new SeriesPanel(this.chartController, this.chartOptionsService, 'histogram'));\n this.addComponent(new NavigatorPanel(this.chartOptionsService));\n break;\n case 'columnLineCombo':\n case 'areaColumnCombo':\n case 'customCombo':\n this.addComponent(new AxisPanel(this.chartController, this.chartOptionsService));\n // there is no single series type supplied for combo charts, it is inferred by the Series Panel\n this.addComponent(new SeriesPanel(this.chartController, this.chartOptionsService));\n this.addComponent(new NavigatorPanel(this.chartOptionsService));\n break;\n default:\n // warn vanilla javascript users when they supply invalid chart type\n console.warn(\"AG Grid: ChartFormattingPanel - unexpected chart type index: \" + chartType + \" supplied\");\n }\n this.chartType = chartType;\n this.isGrouping = isGrouping;\n };\n FormatPanel.prototype.addComponent = function (component) {\n this.createBean(component);\n this.panels.push(component);\n component.addCssClass('ag-chart-format-section');\n this.getGui().appendChild(component.getGui());\n };\n FormatPanel.prototype.destroyPanels = function () {\n var _this = this;\n this.panels.forEach(function (panel) {\n _.removeFromParent(panel.getGui());\n _this.destroyBean(panel);\n });\n };\n FormatPanel.prototype.destroy = function () {\n this.destroyPanels();\n _super.prototype.destroy.call(this);\n };\n FormatPanel.TEMPLATE = \"
    \";\n __decorate([\n PostConstruct\n ], FormatPanel.prototype, \"init\", null);\n return FormatPanel;\n}(Component));\nexport { FormatPanel };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Component, PostConstruct } from \"@ag-grid-community/core\";\nimport { Group, Scene } from \"ag-charts-community\";\nvar MiniChart = /** @class */ (function (_super) {\n __extends(MiniChart, _super);\n function MiniChart(container, tooltipName) {\n var _this = _super.call(this) || this;\n _this.size = 58;\n _this.padding = 5;\n _this.root = new Group();\n var scene = new Scene(window.document, _this.size, _this.size);\n scene.canvas.element.classList.add('ag-chart-mini-thumbnail-canvas');\n scene.root = _this.root;\n scene.container = container;\n _this.scene = scene;\n _this.tooltipName = tooltipName;\n return _this;\n }\n MiniChart.prototype.init = function () {\n this.scene.canvas.element.title = this.chartTranslationService.translate(this.tooltipName);\n };\n __decorate([\n Autowired('chartTranslationService')\n ], MiniChart.prototype, \"chartTranslationService\", void 0);\n __decorate([\n PostConstruct\n ], MiniChart.prototype, \"init\", null);\n return MiniChart;\n}(Component));\nexport { MiniChart };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { PostConstruct } from \"@ag-grid-community/core\";\nimport { MiniChart } from \"./miniChart\";\nimport { Line } from \"ag-charts-community\";\nvar MiniChartWithAxes = /** @class */ (function (_super) {\n __extends(MiniChartWithAxes, _super);\n function MiniChartWithAxes(container, tooltipName) {\n var _this = _super.call(this, container, tooltipName) || this;\n _this.stroke = 'gray';\n _this.axisOvershoot = 3;\n return _this;\n }\n MiniChartWithAxes.prototype.addAxes = function () {\n var size = this.size;\n var padding = this.padding;\n var leftAxis = new Line();\n leftAxis.x1 = padding;\n leftAxis.y1 = padding;\n leftAxis.x2 = padding;\n leftAxis.y2 = size - padding + this.axisOvershoot;\n leftAxis.stroke = this.stroke;\n var bottomAxis = new Line();\n bottomAxis.x1 = padding - this.axisOvershoot + 1;\n bottomAxis.y1 = size - padding;\n bottomAxis.x2 = size - padding + 1;\n bottomAxis.y2 = size - padding;\n bottomAxis.stroke = this.stroke;\n var root = this.root;\n root.append(leftAxis);\n root.append(bottomAxis);\n };\n __decorate([\n PostConstruct\n ], MiniChartWithAxes.prototype, \"addAxes\", null);\n return MiniChartWithAxes;\n}(MiniChart));\nexport { MiniChartWithAxes };\n","import { BandScale, ClipRect, LinearScale, Path, Rect } from \"ag-charts-community\";\nexport function createColumnRects(params) {\n var stacked = params.stacked, size = params.size, padding = params.padding, xScalePadding = params.xScalePadding, xScaleDomain = params.xScaleDomain, yScaleDomain = params.yScaleDomain;\n var xScale = new BandScale();\n xScale.domain = xScaleDomain;\n xScale.range = [padding, size - padding];\n xScale.paddingInner = xScalePadding;\n xScale.paddingOuter = xScalePadding;\n var yScale = new LinearScale();\n yScale.domain = yScaleDomain;\n yScale.range = [size - padding, padding];\n var createBars = function (series, xScale, yScale) {\n return series.map(function (datum, i) {\n var top = yScale.convert(datum);\n var rect = new Rect();\n rect.x = xScale.convert(i);\n rect.y = top;\n rect.width = xScale.bandwidth;\n rect.height = yScale.convert(0) - top;\n rect.strokeWidth = 1;\n rect.crisp = true;\n return rect;\n });\n };\n if (stacked) {\n return params.data.map(function (d) { return createBars(d, xScale, yScale); });\n }\n return createBars(params.data, xScale, yScale);\n}\nexport function createLinePaths(root, data, size, padding) {\n var xScale = new LinearScale();\n xScale.domain = [0, 4];\n xScale.range = [padding, size - padding];\n var yScale = new LinearScale();\n yScale.domain = [0, 10];\n yScale.range = [size - padding, padding];\n var lines = data.map(function (series) {\n var line = new Path();\n line.strokeWidth = 3;\n line.lineCap = \"round\";\n line.fill = undefined;\n series.forEach(function (datum, i) {\n line.path[i > 0 ? \"lineTo\" : \"moveTo\"](xScale.convert(i), yScale.convert(datum));\n });\n return line;\n });\n var clipRect = new ClipRect();\n clipRect.x = clipRect.y = padding;\n clipRect.width = clipRect.height = size - padding * 2;\n clipRect.append(lines);\n root.append(clipRect);\n return lines;\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { MiniChartWithAxes } from \"../miniChartWithAxes\";\nimport { createColumnRects } from \"../miniChartHelpers\";\nvar MiniColumn = /** @class */ (function (_super) {\n __extends(MiniColumn, _super);\n function MiniColumn(container, fills, strokes) {\n var _this = _super.call(this, container, \"groupedColumnTooltip\") || this;\n _this.columnData = [2, 3, 4];\n var _a = _this, root = _a.root, columnData = _a.columnData, size = _a.size, padding = _a.padding;\n _this.columns = createColumnRects({\n stacked: false,\n root: root,\n data: columnData,\n size: size,\n padding: padding,\n xScaleDomain: [0, 1, 2],\n yScaleDomain: [0, 4],\n xScalePadding: 0.3\n });\n root.append(_this.columns);\n _this.updateColors(fills, strokes);\n return _this;\n }\n MiniColumn.prototype.updateColors = function (fills, strokes) {\n this.columns.forEach(function (column, i) {\n column.fill = fills[i];\n column.stroke = strokes[i];\n });\n };\n MiniColumn.chartType = 'groupedColumn';\n return MiniColumn;\n}(MiniChartWithAxes));\nexport { MiniColumn };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { MiniChartWithAxes } from \"../miniChartWithAxes\";\nimport { createColumnRects } from \"../miniChartHelpers\";\nvar MiniStackedColumn = /** @class */ (function (_super) {\n __extends(MiniStackedColumn, _super);\n function MiniStackedColumn(container, fills, strokes, data, yScaleDomain, tooltipName) {\n if (data === void 0) { data = MiniStackedColumn.data; }\n if (yScaleDomain === void 0) { yScaleDomain = [0, 16]; }\n if (tooltipName === void 0) { tooltipName = \"stackedColumnTooltip\"; }\n var _this = _super.call(this, container, tooltipName) || this;\n var _a = _this, root = _a.root, size = _a.size, padding = _a.padding;\n _this.stackedColumns = createColumnRects({\n stacked: true,\n root: root,\n data: data,\n size: size,\n padding: padding,\n xScaleDomain: [0, 1, 2],\n yScaleDomain: yScaleDomain,\n xScalePadding: 0.3,\n });\n root.append([].concat.apply([], _this.stackedColumns));\n _this.updateColors(fills, strokes);\n return _this;\n }\n MiniStackedColumn.prototype.updateColors = function (fills, strokes) {\n this.stackedColumns.forEach(function (series, i) {\n return series.forEach(function (column) {\n column.fill = fills[i];\n column.stroke = strokes[i];\n });\n });\n };\n MiniStackedColumn.chartType = 'stackedColumn';\n MiniStackedColumn.data = [\n [8, 12, 16],\n [6, 9, 12],\n [2, 3, 4]\n ];\n return MiniStackedColumn;\n}(MiniChartWithAxes));\nexport { MiniStackedColumn };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { MiniStackedColumn } from \"./miniStackedColumn\";\nvar MiniNormalizedColumn = /** @class */ (function (_super) {\n __extends(MiniNormalizedColumn, _super);\n function MiniNormalizedColumn(container, fills, strokes) {\n return _super.call(this, container, fills, strokes, MiniNormalizedColumn.data, [0, 10], \"normalizedColumnTooltip\") || this;\n }\n MiniNormalizedColumn.chartType = 'normalizedColumn';\n MiniNormalizedColumn.data = [\n [10, 10, 10],\n [6, 7, 8],\n [2, 4, 6]\n ];\n return MiniNormalizedColumn;\n}(MiniStackedColumn));\nexport { MiniNormalizedColumn };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { BandScale, LinearScale, Rect } from \"ag-charts-community\";\nimport { MiniChartWithAxes } from \"../miniChartWithAxes\";\nvar MiniBar = /** @class */ (function (_super) {\n __extends(MiniBar, _super);\n function MiniBar(container, fills, strokes) {\n var _this = _super.call(this, container, \"groupedBarTooltip\") || this;\n var padding = _this.padding;\n var size = _this.size;\n var data = [2, 3, 4];\n var yScale = new BandScale();\n yScale.domain = [0, 1, 2];\n yScale.range = [padding, size - padding];\n yScale.paddingInner = 0.3;\n yScale.paddingOuter = 0.3;\n var xScale = new LinearScale();\n xScale.domain = [0, 4];\n xScale.range = [size - padding, padding];\n var bottom = xScale.convert(0);\n var height = yScale.bandwidth;\n _this.bars = data.map(function (datum, i) {\n var rect = new Rect();\n rect.x = padding;\n rect.y = yScale.convert(i);\n rect.width = bottom - xScale.convert(datum);\n rect.height = height;\n rect.strokeWidth = 1;\n rect.crisp = true;\n return rect;\n });\n _this.updateColors(fills, strokes);\n _this.root.append(_this.bars);\n return _this;\n }\n MiniBar.prototype.updateColors = function (fills, strokes) {\n this.bars.forEach(function (bar, i) {\n bar.fill = fills[i];\n bar.stroke = strokes[i];\n });\n };\n MiniBar.chartType = 'groupedBar';\n return MiniBar;\n}(MiniChartWithAxes));\nexport { MiniBar };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { MiniChartWithAxes } from \"../miniChartWithAxes\";\nimport { BandScale, LinearScale, Rect } from \"ag-charts-community\";\nvar MiniStackedBar = /** @class */ (function (_super) {\n __extends(MiniStackedBar, _super);\n function MiniStackedBar(container, fills, strokes, data, xScaleDomain, tooltipName) {\n if (data === void 0) { data = MiniStackedBar.data; }\n if (xScaleDomain === void 0) { xScaleDomain = [0, 16]; }\n if (tooltipName === void 0) { tooltipName = \"stackedBarTooltip\"; }\n var _this = _super.call(this, container, tooltipName) || this;\n var size = _this.size;\n var padding = _this.padding;\n var yScale = new BandScale();\n yScale.domain = [0, 1, 2];\n yScale.range = [padding, size - padding];\n yScale.paddingInner = 0.3;\n yScale.paddingOuter = 0.3;\n var xScale = new LinearScale();\n xScale.domain = xScaleDomain;\n xScale.range = [size - padding, padding];\n var bottom = xScale.convert(0);\n var height = yScale.bandwidth;\n _this.bars = data.map(function (series) {\n return series.map(function (datum, i) {\n var rect = new Rect();\n rect.x = padding;\n rect.y = yScale.convert(i);\n rect.width = bottom - xScale.convert(datum);\n rect.height = height;\n rect.strokeWidth = 1;\n rect.crisp = true;\n return rect;\n });\n });\n _this.updateColors(fills, strokes);\n _this.root.append([].concat.apply([], _this.bars));\n return _this;\n }\n MiniStackedBar.prototype.updateColors = function (fills, strokes) {\n this.bars.forEach(function (series, i) {\n return series.forEach(function (bar) {\n bar.fill = fills[i];\n bar.stroke = strokes[i];\n });\n });\n };\n MiniStackedBar.chartType = 'stackedBar';\n MiniStackedBar.data = [\n [8, 12, 16],\n [6, 9, 12],\n [2, 3, 4]\n ];\n return MiniStackedBar;\n}(MiniChartWithAxes));\nexport { MiniStackedBar };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { MiniStackedBar } from \"./miniStackedBar\";\nvar MiniNormalizedBar = /** @class */ (function (_super) {\n __extends(MiniNormalizedBar, _super);\n function MiniNormalizedBar(container, fills, strokes) {\n return _super.call(this, container, fills, strokes, MiniNormalizedBar.data, [0, 10], \"normalizedBarTooltip\") || this;\n }\n MiniNormalizedBar.chartType = 'normalizedBar';\n MiniNormalizedBar.data = [\n [10, 10, 10],\n [6, 7, 8],\n [2, 4, 6]\n ];\n return MiniNormalizedBar;\n}(MiniStackedBar));\nexport { MiniNormalizedBar };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nimport { MiniChart } from \"../miniChart\";\nimport { Sector, toRadians } from \"ag-charts-community\";\nvar MiniDoughnut = /** @class */ (function (_super) {\n __extends(MiniDoughnut, _super);\n function MiniDoughnut(container, fills, strokes, centerRadiusScaler, tooltipName) {\n if (centerRadiusScaler === void 0) { centerRadiusScaler = 0.6; }\n if (tooltipName === void 0) { tooltipName = \"doughnutTooltip\"; }\n var _this = _super.call(this, container, tooltipName) || this;\n var radius = (_this.size - _this.padding * 2) / 2;\n var center = radius + _this.padding;\n var angles = [\n [toRadians(-90), toRadians(30)],\n [toRadians(30), toRadians(120)],\n [toRadians(120), toRadians(180)],\n [toRadians(180), toRadians(210)],\n [toRadians(210), toRadians(240)],\n [toRadians(240), toRadians(270)]\n ];\n _this.sectors = angles.map(function (_a) {\n var _b = __read(_a, 2), startAngle = _b[0], endAngle = _b[1];\n var sector = new Sector();\n sector.centerX = center;\n sector.centerY = center;\n sector.innerRadius = radius * centerRadiusScaler;\n sector.outerRadius = radius;\n sector.startAngle = startAngle;\n sector.endAngle = endAngle;\n sector.stroke = undefined;\n sector.strokeWidth = 1;\n return sector;\n });\n _this.updateColors(fills, strokes);\n _this.root.append(_this.sectors);\n return _this;\n }\n MiniDoughnut.prototype.updateColors = function (fills, strokes) {\n this.sectors.forEach(function (sector, i) {\n sector.fill = fills[i % fills.length];\n sector.stroke = strokes[i % strokes.length];\n });\n };\n MiniDoughnut.chartType = 'doughnut';\n return MiniDoughnut;\n}(MiniChart));\nexport { MiniDoughnut };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { MiniDoughnut } from \"./miniDoughnut\";\nvar MiniPie = /** @class */ (function (_super) {\n __extends(MiniPie, _super);\n function MiniPie(container, fills, strokes) {\n return _super.call(this, container, fills, strokes, 0, \"pieTooltip\") || this;\n }\n MiniPie.chartType = 'pie';\n return MiniPie;\n}(MiniDoughnut));\nexport { MiniPie };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { MiniChartWithAxes } from \"../miniChartWithAxes\";\nimport { createLinePaths } from \"../miniChartHelpers\";\nvar MiniLine = /** @class */ (function (_super) {\n __extends(MiniLine, _super);\n function MiniLine(container, fills, strokes) {\n var _this = _super.call(this, container, \"lineTooltip\") || this;\n _this.data = [\n [9, 7, 8, 5, 6],\n [5, 6, 3, 4, 1],\n [1, 3, 4, 8, 7]\n ];\n _this.lines = createLinePaths(_this.root, _this.data, _this.size, _this.padding);\n _this.updateColors(fills, strokes);\n return _this;\n }\n MiniLine.prototype.updateColors = function (fills, strokes) {\n this.lines.forEach(function (line, i) {\n line.stroke = fills[i];\n });\n };\n MiniLine.chartType = 'line';\n return MiniLine;\n}(MiniChartWithAxes));\nexport { MiniLine };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nimport { MiniChartWithAxes } from \"../miniChartWithAxes\";\nimport { Arc, ClipRect, LinearScale } from \"ag-charts-community\";\nvar MiniScatter = /** @class */ (function (_super) {\n __extends(MiniScatter, _super);\n function MiniScatter(container, fills, strokes) {\n var _this = _super.call(this, container, \"scatterTooltip\") || this;\n var size = _this.size;\n var padding = _this.padding;\n // [x, y] pairs\n var data = [\n [[0.3, 3], [1.1, 0.9], [2, 0.4], [3.4, 2.4]],\n [[0, 0.3], [1, 2], [2.4, 1.4], [3, 0]]\n ];\n var xScale = new LinearScale();\n xScale.domain = [-0.5, 4];\n xScale.range = [padding * 2, size - padding];\n var yScale = new LinearScale();\n yScale.domain = [-0.5, 3.5];\n yScale.range = [size - padding, padding];\n var points = [];\n data.forEach(function (series) {\n series.forEach(function (_a) {\n var _b = __read(_a, 2), x = _b[0], y = _b[1];\n var arc = new Arc();\n arc.strokeWidth = 1;\n arc.centerX = xScale.convert(x);\n arc.centerY = yScale.convert(y);\n arc.radiusX = arc.radiusY = 2.5;\n points.push(arc);\n });\n });\n _this.points = points;\n _this.updateColors(fills, strokes);\n var clipRect = new ClipRect();\n clipRect.x = clipRect.y = padding;\n clipRect.width = clipRect.height = size - padding * 2;\n clipRect.append(_this.points);\n _this.root.append(clipRect);\n return _this;\n }\n MiniScatter.prototype.updateColors = function (fills, strokes) {\n this.points.forEach(function (line, i) {\n line.stroke = strokes[i % strokes.length];\n line.fill = fills[i % fills.length];\n });\n };\n MiniScatter.chartType = 'scatter';\n return MiniScatter;\n}(MiniChartWithAxes));\nexport { MiniScatter };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nimport { MiniChartWithAxes } from \"../miniChartWithAxes\";\nimport { Arc, ClipRect, LinearScale } from \"ag-charts-community\";\nvar MiniBubble = /** @class */ (function (_super) {\n __extends(MiniBubble, _super);\n function MiniBubble(container, fills, strokes) {\n var _this = _super.call(this, container, \"bubbleTooltip\") || this;\n var size = _this.size;\n var padding = _this.padding;\n // [x, y, radius] triples\n var data = [\n [[0.1, 0.3, 5], [0.5, 0.4, 7], [0.2, 0.8, 7]], [[0.8, 0.7, 5], [0.7, 0.3, 9]]\n ];\n var xScale = new LinearScale();\n xScale.domain = [0, 1];\n xScale.range = [padding * 2, size - padding];\n var yScale = new LinearScale();\n yScale.domain = [0, 1];\n yScale.range = [size - padding, padding];\n var points = [];\n data.forEach(function (series) {\n series.forEach(function (_a) {\n var _b = __read(_a, 3), x = _b[0], y = _b[1], radius = _b[2];\n var arc = new Arc();\n arc.strokeWidth = 1;\n arc.centerX = xScale.convert(x);\n arc.centerY = yScale.convert(y);\n arc.radiusX = arc.radiusY = radius;\n arc.fillOpacity = 0.7;\n points.push(arc);\n });\n });\n _this.points = points;\n _this.updateColors(fills, strokes);\n var clipRect = new ClipRect();\n clipRect.x = padding;\n clipRect.y = padding;\n clipRect.width = size - padding * 2;\n clipRect.height = size - padding * 2;\n clipRect.append(_this.points);\n _this.root.append(clipRect);\n return _this;\n }\n MiniBubble.prototype.updateColors = function (fills, strokes) {\n this.points.forEach(function (line, i) {\n line.stroke = strokes[i % strokes.length];\n line.fill = fills[i % fills.length];\n });\n };\n MiniBubble.chartType = 'bubble';\n return MiniBubble;\n}(MiniChartWithAxes));\nexport { MiniBubble };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { MiniChartWithAxes } from \"../miniChartWithAxes\";\nimport { BandScale, LinearScale, Path } from \"ag-charts-community\";\nvar MiniArea = /** @class */ (function (_super) {\n __extends(MiniArea, _super);\n function MiniArea(container, fills, strokes, data) {\n if (data === void 0) { data = MiniArea.data; }\n var _this = _super.call(this, container, \"groupedAreaTooltip\") || this;\n var size = _this.size;\n var padding = _this.padding;\n var xScale = new BandScale();\n xScale.domain = [0, 1, 2];\n xScale.paddingInner = 1;\n xScale.paddingOuter = 0;\n xScale.range = [padding + 0.5, size - padding - 0.5];\n var yScale = new LinearScale();\n yScale.domain = [0, 6];\n yScale.range = [size - padding + 0.5, padding];\n var xCount = data.length;\n var last = xCount * 2 - 1;\n var pathData = [];\n var bottomY = yScale.convert(0);\n data.forEach(function (datum, i) {\n var x = xScale.convert(i);\n datum.forEach(function (yDatum, j) {\n var y = yScale.convert(yDatum);\n var points = pathData[j] || (pathData[j] = []);\n points[i] = {\n x: x,\n y: y\n };\n points[last - i] = {\n x: x,\n y: bottomY\n };\n });\n });\n _this.areas = pathData.reverse().map(function (points) {\n var area = new Path();\n area.strokeWidth = 1;\n area.fillOpacity = 0.7;\n var path = area.path;\n path.clear();\n points.forEach(function (point, i) { return path[i > 0 ? \"lineTo\" : \"moveTo\"](point.x, point.y); });\n path.closePath();\n return area;\n });\n _this.updateColors(fills, strokes);\n _this.root.append(_this.areas);\n return _this;\n }\n MiniArea.prototype.updateColors = function (fills, strokes) {\n this.areas.forEach(function (area, i) {\n area.fill = fills[i];\n area.stroke = strokes[i];\n });\n };\n MiniArea.chartType = 'area';\n MiniArea.data = [\n [1, 3, 5],\n [2, 6, 4],\n [5, 3, 1]\n ];\n return MiniArea;\n}(MiniChartWithAxes));\nexport { MiniArea };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { MiniChartWithAxes } from \"../miniChartWithAxes\";\nimport { BandScale, LinearScale, Path } from \"ag-charts-community\";\nvar MiniStackedArea = /** @class */ (function (_super) {\n __extends(MiniStackedArea, _super);\n function MiniStackedArea(container, fills, strokes, data, tooltipName) {\n if (data === void 0) { data = MiniStackedArea.data; }\n if (tooltipName === void 0) { tooltipName = \"stackedAreaTooltip\"; }\n var _this = _super.call(this, container, tooltipName) || this;\n var size = _this.size;\n var padding = _this.padding;\n var xScale = new BandScale();\n xScale.domain = [0, 1, 2];\n xScale.paddingInner = 1;\n xScale.paddingOuter = 0;\n xScale.range = [padding + 0.5, size - padding - 0.5];\n var yScale = new LinearScale();\n yScale.domain = [0, 16];\n yScale.range = [size - padding + 0.5, padding + 0.5];\n var xCount = data.length;\n var last = xCount * 2 - 1;\n var pathData = [];\n data.forEach(function (datum, i) {\n var x = xScale.convert(i);\n var total = 0;\n datum.forEach(function (yDatum, j) {\n var y = yScale.convert(total + yDatum);\n var points = pathData[j] || (pathData[j] = []);\n points[i] = {\n x: x,\n y: y\n };\n points[last - i] = {\n x: x,\n y: yScale.convert(total) // bottom y\n };\n total += yDatum;\n });\n });\n _this.areas = pathData.map(function (points) {\n var area = new Path();\n area.strokeWidth = 1;\n var path = area.path;\n path.clear();\n points.forEach(function (point, i) { return path[i > 0 ? \"lineTo\" : \"moveTo\"](point.x, point.y); });\n path.closePath();\n return area;\n });\n _this.updateColors(fills, strokes);\n _this.root.append(_this.areas);\n return _this;\n }\n MiniStackedArea.prototype.updateColors = function (fills, strokes) {\n this.areas.forEach(function (area, i) {\n area.fill = fills[i];\n area.stroke = strokes[i];\n });\n };\n MiniStackedArea.chartType = 'stackedArea';\n MiniStackedArea.data = [\n [2, 3, 2],\n [3, 6, 5],\n [6, 2, 2]\n ];\n return MiniStackedArea;\n}(MiniChartWithAxes));\nexport { MiniStackedArea };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { MiniStackedArea } from \"./miniStackedArea\";\nvar MiniNormalizedArea = /** @class */ (function (_super) {\n __extends(MiniNormalizedArea, _super);\n function MiniNormalizedArea(container, fills, strokes, data) {\n if (data === void 0) { data = MiniNormalizedArea.data; }\n return _super.call(this, container, fills, strokes, data, \"normalizedAreaTooltip\") || this;\n }\n MiniNormalizedArea.chartType = 'normalizedArea';\n MiniNormalizedArea.data = MiniStackedArea.data.map(function (stack) {\n var sum = stack.reduce(function (p, c) { return p + c; }, 0);\n return stack.map(function (v) { return v / sum * 16; });\n });\n return MiniNormalizedArea;\n}(MiniStackedArea));\nexport { MiniNormalizedArea };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nimport { MiniChartWithAxes } from \"../miniChartWithAxes\";\nimport { LinearScale, Rect } from \"ag-charts-community\";\nvar MiniHistogram = /** @class */ (function (_super) {\n __extends(MiniHistogram, _super);\n function MiniHistogram(container, fills, strokes) {\n var _this = _super.call(this, container, \"histogramTooltip\") || this;\n var padding = _this.padding;\n var size = _this.size;\n // approx normal curve\n var data = [2, 5, 11, 13, 10, 6, 1];\n var xScale = new LinearScale();\n xScale.domain = [0, data.length];\n xScale.range = [padding, size - padding];\n var yScale = new LinearScale();\n yScale.domain = [0, data.reduce(function (a, b) { return Math.max(a, b); }, 0)];\n yScale.range = [size - padding, padding];\n var bottom = yScale.convert(0);\n _this.bars = data.map(function (datum, i) {\n var top = yScale.convert(datum);\n var left = xScale.convert(i);\n var right = xScale.convert(i + 1);\n var rect = new Rect();\n rect.x = left;\n rect.y = top;\n rect.width = right - left;\n rect.height = bottom - top;\n rect.strokeWidth = 1;\n rect.crisp = true;\n return rect;\n });\n _this.updateColors(fills, strokes);\n _this.root.append(_this.bars);\n return _this;\n }\n MiniHistogram.prototype.updateColors = function (_a, _b) {\n var _c = __read(_a, 1), fill = _c[0];\n var _d = __read(_b, 1), stroke = _d[0];\n this.bars.forEach(function (bar) {\n bar.fill = fill;\n bar.stroke = stroke;\n });\n };\n MiniHistogram.chartType = 'histogram';\n return MiniHistogram;\n}(MiniChartWithAxes));\nexport { MiniHistogram };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { MiniChartWithAxes } from \"../miniChartWithAxes\";\nimport { createColumnRects, createLinePaths } from \"../miniChartHelpers\";\nvar MiniColumnLineCombo = /** @class */ (function (_super) {\n __extends(MiniColumnLineCombo, _super);\n function MiniColumnLineCombo(container, fills, strokes) {\n var _this = _super.call(this, container, \"columnLineComboTooltip\") || this;\n _this.columnData = [3, 4];\n _this.lineData = [\n [5, 4, 6, 5, 4]\n ];\n var _a = _this, root = _a.root, columnData = _a.columnData, lineData = _a.lineData, size = _a.size, padding = _a.padding;\n _this.columns = createColumnRects({\n stacked: false,\n root: root,\n data: columnData,\n size: size,\n padding: padding,\n xScaleDomain: [0, 1],\n yScaleDomain: [0, 4],\n xScalePadding: 0.5\n });\n root.append(_this.columns);\n _this.lines = createLinePaths(root, lineData, size, padding);\n _this.updateColors(fills, strokes);\n return _this;\n }\n MiniColumnLineCombo.prototype.updateColors = function (fills, strokes) {\n this.columns.forEach(function (bar, i) {\n bar.fill = fills[i];\n bar.stroke = strokes[i];\n });\n this.lines.forEach(function (line, i) {\n line.stroke = fills[i + 2];\n });\n };\n MiniColumnLineCombo.chartType = 'columnLineCombo';\n return MiniColumnLineCombo;\n}(MiniChartWithAxes));\nexport { MiniColumnLineCombo };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { MiniChartWithAxes } from \"../miniChartWithAxes\";\nimport { BandScale, LinearScale, Path } from \"ag-charts-community\";\nimport { createColumnRects } from \"../miniChartHelpers\";\nvar MiniAreaColumnCombo = /** @class */ (function (_super) {\n __extends(MiniAreaColumnCombo, _super);\n function MiniAreaColumnCombo(container, fills, strokes) {\n var _this = _super.call(this, container, \"areaColumnComboTooltip\") || this;\n _this.columnData = [3, 4.5];\n _this.areaData = [\n [5, 4, 6, 5, 4],\n ];\n var _a = _this, root = _a.root, columnData = _a.columnData, areaData = _a.areaData, size = _a.size, padding = _a.padding;\n _this.columns = createColumnRects({\n stacked: false,\n root: root,\n data: columnData,\n size: size,\n padding: padding,\n xScaleDomain: [0, 1],\n yScaleDomain: [0, 6],\n xScalePadding: 0.5,\n });\n // scale for area series\n var xScale = new BandScale();\n xScale.range = [padding, size - padding];\n xScale.domain = [0, 1, 2, 3, 4];\n xScale.paddingInner = 1;\n xScale.paddingOuter = 0;\n var yScale = new LinearScale();\n yScale.range = [size - padding, padding];\n yScale.domain = [0, 6];\n var pathData = [];\n var yZero = yScale.convert(0);\n var firstX = xScale.convert(0);\n areaData.forEach(function (series, i) {\n var points = pathData[i] || (pathData[i] = []);\n series.forEach(function (data, j) {\n var yDatum = data;\n var xDatum = j;\n var x = xScale.convert(xDatum);\n var y = yScale.convert(yDatum);\n points[j] = { x: x, y: y };\n });\n var lastX = xScale.convert(series.length - 1);\n pathData[i].push({\n x: lastX,\n y: yZero\n }, {\n x: firstX,\n y: yZero\n });\n });\n _this.areas = pathData.map(function (points) {\n var area = new Path();\n area.strokeWidth = 1;\n area.fillOpacity = 0.8;\n var path = area.path;\n points.forEach(function (point, i) { return path[i > 0 ? 'lineTo' : 'moveTo'](point.x, point.y); });\n return area;\n });\n root.append(_this.areas);\n root.append([].concat.apply([], _this.columns));\n _this.updateColors(fills, strokes);\n return _this;\n }\n MiniAreaColumnCombo.prototype.updateColors = function (fills, strokes) {\n this.areas.forEach(function (area, i) {\n area.fill = fills[i];\n area.stroke = strokes[i];\n });\n this.columns.forEach(function (bar, i) {\n bar.fill = fills[i + 1];\n bar.stroke = strokes[i + 1];\n });\n };\n MiniAreaColumnCombo.chartType = 'areaColumnCombo';\n return MiniAreaColumnCombo;\n}(MiniChartWithAxes));\nexport { MiniAreaColumnCombo };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Line, Path } from \"ag-charts-community\";\nimport { createColumnRects, createLinePaths } from \"../miniChartHelpers\";\nimport { MiniChart } from \"../miniChart\";\nvar MiniCustomCombo = /** @class */ (function (_super) {\n __extends(MiniCustomCombo, _super);\n function MiniCustomCombo(container, fills, strokes) {\n var _this = _super.call(this, container, \"customComboTooltip\") || this;\n _this.columnData = [3, 4];\n _this.lineData = [\n [5, 4, 6, 5, 4]\n ];\n var _a = _this, root = _a.root, columnData = _a.columnData, lineData = _a.lineData, size = _a.size, padding = _a.padding;\n _this.columns = createColumnRects({\n stacked: false,\n root: root,\n data: columnData,\n size: size,\n padding: padding,\n xScaleDomain: [0, 1],\n yScaleDomain: [0, 4],\n xScalePadding: 0.5\n });\n root.append(_this.columns);\n _this.lines = createLinePaths(root, lineData, size, padding);\n var axisStroke = 'grey';\n var axisOvershoot = 3;\n var leftAxis = new Line();\n leftAxis.x1 = padding;\n leftAxis.y1 = padding;\n leftAxis.x2 = padding;\n leftAxis.y2 = size - padding + axisOvershoot;\n leftAxis.stroke = axisStroke;\n var bottomAxis = new Line();\n bottomAxis.x1 = padding - axisOvershoot + 1;\n bottomAxis.y1 = size - padding;\n bottomAxis.x2 = size - padding + 1;\n bottomAxis.y2 = size - padding;\n bottomAxis.stroke = axisStroke;\n var penIcon = new Path();\n penIcon.svgPath = 'M25.76,43.46l5.51,5.07M49.86,22a3.26,3.26,0,0,0-3-.59,6.78,6.78,0,0,0-3.35,2.14l-18,20.25-.08.09-2.42,8-.18.57,8.19-3.6,18-20.34a6.83,6.83,0,0,0,1.73-3.59A3.29,3.29,0,0,0,49.86,22Zm-8.1,3.5,5.58,5m-6.6-3.85,5.51,5.06';\n penIcon.fill = 'whitesmoke';\n penIcon.stroke = 'darkslategrey';\n penIcon.strokeWidth = 1;\n root.append([bottomAxis, leftAxis, penIcon]);\n _this.updateColors(fills, strokes);\n return _this;\n }\n MiniCustomCombo.prototype.updateColors = function (fills, strokes) {\n this.columns.forEach(function (bar, i) {\n bar.fill = fills[i];\n bar.stroke = strokes[i];\n });\n this.lines.forEach(function (line, i) {\n line.stroke = fills[i + 2];\n });\n };\n MiniCustomCombo.chartType = 'customCombo';\n return MiniCustomCombo;\n}(MiniChart));\nexport { MiniCustomCombo };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { AgGroupComponent, Autowired, Component, PostConstruct } from \"@ag-grid-community/core\";\nimport { MiniArea, MiniAreaColumnCombo, MiniBar, MiniBubble, MiniColumn, MiniColumnLineCombo, MiniCustomCombo, MiniDoughnut, MiniHistogram, MiniLine, MiniNormalizedArea, MiniNormalizedBar, MiniNormalizedColumn, MiniPie, MiniScatter, MiniStackedArea, MiniStackedBar, MiniStackedColumn, } from \"./miniCharts\";\nvar MiniChartsContainer = /** @class */ (function (_super) {\n __extends(MiniChartsContainer, _super);\n function MiniChartsContainer(chartController, fills, strokes) {\n var _this = _super.call(this, MiniChartsContainer.TEMPLATE) || this;\n _this.wrappers = {};\n _this.chartGroups = {\n columnGroup: [\n MiniColumn,\n MiniStackedColumn,\n MiniNormalizedColumn\n ],\n barGroup: [\n MiniBar,\n MiniStackedBar,\n MiniNormalizedBar\n ],\n pieGroup: [\n MiniPie,\n MiniDoughnut\n ],\n lineGroup: [\n MiniLine\n ],\n scatterGroup: [\n MiniScatter,\n MiniBubble\n ],\n areaGroup: [\n MiniArea,\n MiniStackedArea,\n MiniNormalizedArea\n ],\n histogramGroup: [\n MiniHistogram\n ],\n combinationGroup: [\n MiniColumnLineCombo,\n MiniAreaColumnCombo,\n MiniCustomCombo\n ]\n };\n _this.chartController = chartController;\n _this.fills = fills;\n _this.strokes = strokes;\n return _this;\n }\n MiniChartsContainer.prototype.init = function () {\n var _this = this;\n // hide MiniCustomCombo if no custom combo exists\n if (!this.chartController.customComboExists()) {\n this.chartGroups.combinationGroup = this.chartGroups.combinationGroup.filter(function (miniChart) { return miniChart !== MiniCustomCombo; });\n }\n var eGui = this.getGui();\n Object.keys(this.chartGroups).forEach(function (group) {\n var chartGroup = _this.chartGroups[group];\n var groupComponent = _this.createBean(new AgGroupComponent({\n title: _this.chartTranslationService.translate(group),\n suppressEnabledCheckbox: true,\n enabled: true,\n suppressOpenCloseIcons: true,\n cssIdentifier: 'charts-settings',\n direction: 'horizontal'\n }));\n chartGroup.forEach(function (MiniClass) {\n var miniWrapper = document.createElement('div');\n miniWrapper.classList.add('ag-chart-mini-thumbnail');\n _this.addManagedListener(miniWrapper, 'click', function () {\n _this.chartController.setChartType(MiniClass.chartType);\n _this.updateSelectedMiniChart();\n });\n _this.wrappers[MiniClass.chartType] = miniWrapper;\n _this.createBean(new MiniClass(miniWrapper, _this.fills, _this.strokes));\n groupComponent.addItem(miniWrapper);\n });\n eGui.appendChild(groupComponent.getGui());\n });\n this.updateSelectedMiniChart();\n };\n MiniChartsContainer.prototype.updateSelectedMiniChart = function () {\n var selectedChartType = this.chartController.getChartType();\n for (var miniChartType in this.wrappers) {\n var miniChart = this.wrappers[miniChartType];\n var selected = miniChartType === selectedChartType;\n miniChart.classList.toggle('ag-selected', selected);\n }\n };\n MiniChartsContainer.TEMPLATE = \"
    \";\n __decorate([\n Autowired('chartTranslationService')\n ], MiniChartsContainer.prototype, \"chartTranslationService\", void 0);\n __decorate([\n PostConstruct\n ], MiniChartsContainer.prototype, \"init\", null);\n return MiniChartsContainer;\n}(Component));\nexport { MiniChartsContainer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { _, Autowired, Component, PostConstruct, RefSelector } from \"@ag-grid-community/core\";\nimport { MiniChartsContainer } from \"./miniChartsContainer\";\nimport { ChartController } from \"../../chartController\";\nvar ChartSettingsPanel = /** @class */ (function (_super) {\n __extends(ChartSettingsPanel, _super);\n function ChartSettingsPanel(chartController) {\n var _this = _super.call(this, ChartSettingsPanel.TEMPLATE) || this;\n _this.miniCharts = [];\n _this.cardItems = [];\n _this.activePaletteIndex = 0;\n _this.palettes = [];\n _this.themes = [];\n _this.chartController = chartController;\n return _this;\n }\n ChartSettingsPanel.prototype.postConstruct = function () {\n var _this = this;\n this.resetPalettes();\n this.ePrevBtn.insertAdjacentElement('afterbegin', _.createIconNoSpan('previous', this.gridOptionsWrapper));\n this.eNextBtn.insertAdjacentElement('afterbegin', _.createIconNoSpan('next', this.gridOptionsWrapper));\n this.addManagedListener(this.ePrevBtn, 'click', function () { return _this.setActivePalette(_this.getPrev(), 'left'); });\n this.addManagedListener(this.eNextBtn, 'click', function () { return _this.setActivePalette(_this.getNext(), 'right'); });\n // change the selected chart when a combo chart is modified via the data panel, i.e. the custom combo should be selected\n this.addManagedListener(this.chartController, ChartController.EVENT_CHART_TYPE_CHANGED, function () { return _this.resetPalettes(true); });\n this.scrollSelectedIntoView();\n };\n ChartSettingsPanel.prototype.scrollSelectedIntoView = function () {\n var _this = this;\n // the panel is not immediately visible due to the slide animation, so we add a\n // setTimeout to wait until the panel animation is over and is able to scroll\n setTimeout(function () {\n var currentPallet = _this.miniCharts.find(function (pallet) { return !pallet.getGui().classList.contains('ag-hidden'); });\n var currentChart = currentPallet.getGui().querySelector('.ag-selected');\n if (currentChart) {\n currentChart.scrollIntoView({ block: 'nearest' });\n }\n }, 250);\n };\n ChartSettingsPanel.prototype.resetPalettes = function (forceReset) {\n var _this = this;\n var palettes = this.chartController.getPalettes();\n if ((_.shallowCompare(palettes, this.palettes) && !forceReset) || this.isAnimating) {\n return;\n }\n this.palettes = palettes;\n this.themes = this.chartController.getThemes();\n this.activePaletteIndex = this.themes.findIndex(function (name) { return name === _this.chartController.getChartThemeName(); });\n this.cardItems = [];\n _.clearElement(this.eCardSelector);\n this.destroyMiniCharts();\n this.palettes.forEach(function (palette, index) {\n var isActivePalette = _this.activePaletteIndex === index;\n var fills = palette.fills, strokes = palette.strokes;\n var miniChartsContainer = _this.createBean(new MiniChartsContainer(_this.chartController, fills, strokes));\n _this.miniCharts.push(miniChartsContainer);\n _this.eMiniChartsContainer.appendChild(miniChartsContainer.getGui());\n _this.addCardLink(index);\n if (isActivePalette) {\n miniChartsContainer.updateSelectedMiniChart();\n }\n else {\n miniChartsContainer.addCssClass('ag-hidden');\n }\n });\n this.eNavBar.classList.toggle('ag-hidden', this.palettes.length <= 1);\n _.radioCssClass(this.cardItems[this.activePaletteIndex], 'ag-selected', 'ag-not-selected');\n };\n ChartSettingsPanel.prototype.addCardLink = function (index) {\n var _this = this;\n var link = document.createElement('div');\n link.classList.add('ag-chart-settings-card-item');\n this.addManagedListener(link, 'click', function () {\n _this.setActivePalette(index, index < _this.activePaletteIndex ? 'left' : 'right');\n });\n this.eCardSelector.appendChild(link);\n this.cardItems.push(link);\n };\n ChartSettingsPanel.prototype.getPrev = function () {\n var prev = this.activePaletteIndex - 1;\n if (prev < 0) {\n prev = this.palettes.length - 1;\n }\n return prev;\n };\n ChartSettingsPanel.prototype.getNext = function () {\n var next = this.activePaletteIndex + 1;\n if (next >= this.palettes.length) {\n next = 0;\n }\n return next;\n };\n ChartSettingsPanel.prototype.setActivePalette = function (index, animationDirection) {\n var _this = this;\n if (this.isAnimating || this.activePaletteIndex === index) {\n return;\n }\n _.radioCssClass(this.cardItems[index], 'ag-selected', 'ag-not-selected');\n var currentPalette = this.miniCharts[this.activePaletteIndex];\n var currentGui = currentPalette.getGui();\n var futurePalette = this.miniCharts[index];\n var nextGui = futurePalette.getGui();\n currentPalette.updateSelectedMiniChart();\n futurePalette.updateSelectedMiniChart();\n var multiplier = animationDirection === 'left' ? -1 : 1;\n var final = nextGui.style.left = (_.getAbsoluteWidth(this.getGui()) * multiplier) + \"px\";\n this.activePaletteIndex = index;\n this.isAnimating = true;\n var animatingClass = 'ag-animating';\n futurePalette.removeCssClass('ag-hidden');\n currentPalette.addCssClass(animatingClass);\n futurePalette.addCssClass(animatingClass);\n this.chartController.setChartThemeName(this.themes[index]);\n window.setTimeout(function () {\n currentGui.style.left = -parseFloat(final) + \"px\";\n nextGui.style.left = '0px';\n }, 0);\n window.setTimeout(function () {\n _this.isAnimating = false;\n currentPalette.removeCssClass(animatingClass);\n futurePalette.removeCssClass(animatingClass);\n currentPalette.addCssClass('ag-hidden');\n }, 300);\n };\n ChartSettingsPanel.prototype.destroyMiniCharts = function () {\n _.clearElement(this.eMiniChartsContainer);\n this.miniCharts = this.destroyBeans(this.miniCharts);\n };\n ChartSettingsPanel.prototype.destroy = function () {\n this.destroyMiniCharts();\n _super.prototype.destroy.call(this);\n };\n ChartSettingsPanel.TEMPLATE = \"
    \\n
    \\n
    \\n
    \\n \\n
    \\n
    \\n
    \\n \\n
    \\n
    \\n
    \";\n __decorate([\n Autowired('resizeObserverService')\n ], ChartSettingsPanel.prototype, \"resizeObserverService\", void 0);\n __decorate([\n RefSelector('eMiniChartsContainer')\n ], ChartSettingsPanel.prototype, \"eMiniChartsContainer\", void 0);\n __decorate([\n RefSelector('eNavBar')\n ], ChartSettingsPanel.prototype, \"eNavBar\", void 0);\n __decorate([\n RefSelector('eCardSelector')\n ], ChartSettingsPanel.prototype, \"eCardSelector\", void 0);\n __decorate([\n RefSelector('ePrevBtn')\n ], ChartSettingsPanel.prototype, \"ePrevBtn\", void 0);\n __decorate([\n RefSelector('eNextBtn')\n ], ChartSettingsPanel.prototype, \"eNextBtn\", void 0);\n __decorate([\n PostConstruct\n ], ChartSettingsPanel.prototype, \"postConstruct\", null);\n return ChartSettingsPanel;\n}(Component));\nexport { ChartSettingsPanel };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { AgPromise, Autowired, Component, PostConstruct, TabbedLayout } from \"@ag-grid-community/core\";\nimport { ChartDataPanel } from \"./data/chartDataPanel\";\nimport { FormatPanel } from \"./format/formatPanel\";\nimport { ChartSettingsPanel } from \"./settings/chartSettingsPanel\";\nvar TabbedChartMenu = /** @class */ (function (_super) {\n __extends(TabbedChartMenu, _super);\n function TabbedChartMenu(params) {\n var _this = _super.call(this) || this;\n _this.tabs = [];\n var controller = params.controller, panels = params.panels, chartOptionsService = params.chartOptionsService;\n _this.chartController = controller;\n _this.chartOptionsService = chartOptionsService;\n _this.panels = panels;\n return _this;\n }\n TabbedChartMenu.prototype.init = function () {\n var _this = this;\n this.panels.forEach(function (panel) {\n var panelType = panel.replace('chart', '').toLowerCase();\n var _a = _this.createTab(panel, panelType, _this.getPanelClass(panelType)), comp = _a.comp, tab = _a.tab;\n _this.tabs.push(tab);\n _this.addDestroyFunc(function () { return _this.destroyBean(comp); });\n });\n this.tabbedLayout = new TabbedLayout({\n items: this.tabs,\n cssClass: 'ag-chart-tabbed-menu',\n keepScrollPosition: true\n });\n this.getContext().createBean(this.tabbedLayout);\n };\n TabbedChartMenu.prototype.createTab = function (name, title, TabPanelClass) {\n var eWrapperDiv = document.createElement('div');\n eWrapperDiv.classList.add('ag-chart-tab', \"ag-chart-\" + title);\n var comp = new TabPanelClass(this.chartController, this.chartOptionsService);\n this.getContext().createBean(comp);\n eWrapperDiv.appendChild(comp.getGui());\n var titleEl = document.createElement('div');\n var translatedTitle = this.chartTranslationService.translate(title);\n titleEl.innerText = translatedTitle;\n return {\n comp: comp,\n tab: {\n title: titleEl,\n titleLabel: translatedTitle,\n bodyPromise: AgPromise.resolve(eWrapperDiv),\n getScrollableContainer: function () {\n var scrollableContainer = eWrapperDiv.querySelector('.ag-scrollable-container');\n return (scrollableContainer || eWrapperDiv);\n },\n name: name\n }\n };\n };\n TabbedChartMenu.prototype.showTab = function (tab) {\n var tabItem = this.tabs[tab];\n this.tabbedLayout.showItem(tabItem);\n };\n TabbedChartMenu.prototype.getGui = function () {\n return this.tabbedLayout && this.tabbedLayout.getGui();\n };\n TabbedChartMenu.prototype.destroy = function () {\n if (this.parentComponent && this.parentComponent.isAlive()) {\n this.destroyBean(this.parentComponent);\n }\n _super.prototype.destroy.call(this);\n };\n TabbedChartMenu.prototype.getPanelClass = function (panelType) {\n switch (panelType) {\n case TabbedChartMenu.TAB_DATA:\n return ChartDataPanel;\n case TabbedChartMenu.TAB_FORMAT:\n return FormatPanel;\n default:\n return ChartSettingsPanel;\n }\n };\n TabbedChartMenu.TAB_DATA = 'data';\n TabbedChartMenu.TAB_FORMAT = 'format';\n __decorate([\n Autowired('chartTranslationService')\n ], TabbedChartMenu.prototype, \"chartTranslationService\", void 0);\n __decorate([\n PostConstruct\n ], TabbedChartMenu.prototype, \"init\", null);\n return TabbedChartMenu;\n}(Component));\nexport { TabbedChartMenu };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nimport { _, AgPanel, AgPromise, Autowired, Component, PostConstruct } from \"@ag-grid-community/core\";\nimport { TabbedChartMenu } from \"./tabbedChartMenu\";\nvar ChartMenu = /** @class */ (function (_super) {\n __extends(ChartMenu, _super);\n function ChartMenu(eChartContainer, eMenuPanelContainer, chartController, chartOptionsService) {\n var _this = _super.call(this, ChartMenu.TEMPLATE) || this;\n _this.eChartContainer = eChartContainer;\n _this.eMenuPanelContainer = eMenuPanelContainer;\n _this.chartController = chartController;\n _this.chartOptionsService = chartOptionsService;\n _this.buttons = {\n chartSettings: ['menu', function () { return _this.showMenu(\"chartSettings\"); }],\n chartData: ['menu', function () { return _this.showMenu(\"chartData\"); }],\n chartFormat: ['menu', function () { return _this.showMenu(\"chartFormat\"); }],\n chartLink: ['linked', function (e) { return _this.toggleDetached(e); }],\n chartUnlink: ['unlinked', function (e) { return _this.toggleDetached(e); }],\n chartDownload: ['save', function () { return _this.saveChart(); }]\n };\n _this.tabs = [];\n _this.menuVisible = false;\n return _this;\n }\n ChartMenu.prototype.postConstruct = function () {\n this.createButtons();\n this.refreshMenuClasses();\n // TODO requires a better solution as this causes the docs the 'jump' when pages are reloaded\n // this.addManagedListener(this.eventService, Events.EVENT_CHART_CREATED, (e: ChartCreated) => {\n // // creating settings panel ahead of time to prevent an undesirable 'jitter' when the canvas resizes\n // // caused as a result of scrollIntoView() when the selected chart type is scrolled into view\n // if (e.chartId === this.chartController.getChartId()) {\n // this.createMenuPanel(0);\n // }\n // });\n };\n ChartMenu.prototype.isVisible = function () {\n return this.menuVisible;\n };\n ChartMenu.prototype.getToolbarOptions = function () {\n var _this = this;\n var tabOptions = [\n 'chartSettings',\n 'chartData',\n 'chartFormat',\n this.chartController.isChartLinked() ? 'chartLink' : 'chartUnlink',\n 'chartDownload'\n ];\n var toolbarItemsFunc = this.gridOptionsWrapper.getChartToolbarItemsFunc();\n if (toolbarItemsFunc) {\n var params = {\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n defaultItems: tabOptions\n };\n tabOptions = toolbarItemsFunc(params).filter(function (option) {\n if (!_this.buttons[option]) {\n console.warn(\"AG Grid: '\" + option + \" is not a valid Chart Toolbar Option\");\n return false;\n }\n return true;\n });\n }\n // pivot charts use the column tool panel instead of the data panel\n if (this.chartController.isPivotChart()) {\n tabOptions = tabOptions.filter(function (option) { return option !== 'chartData'; });\n }\n var ignoreOptions = ['chartUnlink', 'chartLink', 'chartDownload'];\n this.tabs = tabOptions.filter(function (option) { return ignoreOptions.indexOf(option) === -1; });\n return tabOptions.filter(function (value) {\n return ignoreOptions.indexOf(value) !== -1 ||\n (_this.tabs.length && value === _this.tabs[0]);\n });\n };\n ChartMenu.prototype.toggleDetached = function (e) {\n var target = e.target;\n var active = target.classList.contains('ag-icon-linked');\n target.classList.toggle('ag-icon-linked', !active);\n target.classList.toggle('ag-icon-unlinked', active);\n var tooltipKey = active ? 'chartUnlinkToolbarTooltip' : 'chartLinkToolbarTooltip';\n var tooltipTitle = this.chartTranslationService.translate(tooltipKey);\n if (tooltipTitle) {\n target.title = tooltipTitle;\n }\n this.chartController.detachChartRange();\n };\n ChartMenu.prototype.createButtons = function () {\n var _this = this;\n var chartToolbarOptions = this.getToolbarOptions();\n var gui = this.getGui();\n chartToolbarOptions.forEach(function (button) {\n var buttonConfig = _this.buttons[button];\n var _a = __read(buttonConfig, 2), iconName = _a[0], callback = _a[1];\n var buttonEl = _.createIconNoSpan(iconName, _this.gridOptionsWrapper, undefined, true);\n buttonEl.classList.add('ag-chart-menu-icon');\n var tooltipTitle = _this.chartTranslationService.translate(button + 'ToolbarTooltip');\n if (tooltipTitle) {\n buttonEl.title = tooltipTitle;\n }\n _this.addManagedListener(buttonEl, 'click', callback);\n gui.appendChild(buttonEl);\n });\n };\n ChartMenu.prototype.saveChart = function () {\n var event = { type: ChartMenu.EVENT_DOWNLOAD_CHART };\n this.dispatchEvent(event);\n };\n ChartMenu.prototype.createMenuPanel = function (defaultTab) {\n var _this = this;\n var width = this.gridOptionsWrapper.chartMenuPanelWidth();\n var menuPanel = this.menuPanel = this.createBean(new AgPanel({\n minWidth: width,\n width: width,\n height: '100%',\n closable: true,\n hideTitleBar: true,\n cssIdentifier: 'chart-menu'\n }));\n menuPanel.setParentComponent(this);\n this.eMenuPanelContainer.appendChild(menuPanel.getGui());\n this.tabbedMenu = this.createBean(new TabbedChartMenu({\n controller: this.chartController,\n type: this.chartController.getChartType(),\n panels: this.tabs,\n chartOptionsService: this.chartOptionsService\n }));\n this.addManagedListener(menuPanel, Component.EVENT_DESTROYED, function () { return _this.destroyBean(_this.tabbedMenu); });\n return new AgPromise(function (res) {\n window.setTimeout(function () {\n menuPanel.setBodyComponent(_this.tabbedMenu);\n _this.tabbedMenu.showTab(defaultTab);\n _this.addManagedListener(_this.eChartContainer, 'click', function (event) {\n if (_this.getGui().contains(event.target)) {\n return;\n }\n if (_this.menuVisible) {\n _this.hideMenu();\n }\n });\n res(menuPanel);\n }, 100);\n });\n };\n ChartMenu.prototype.showContainer = function () {\n if (!this.menuPanel) {\n return;\n }\n this.menuVisible = true;\n this.showParent(this.menuPanel.getWidth());\n this.refreshMenuClasses();\n };\n ChartMenu.prototype.showMenu = function (tabName) {\n var tab = this.tabs.indexOf(tabName);\n if (!this.menuPanel) {\n this.createMenuPanel(tab).then(this.showContainer.bind(this));\n }\n else {\n this.showContainer();\n }\n };\n ChartMenu.prototype.hideMenu = function () {\n var _this = this;\n this.hideParent();\n window.setTimeout(function () {\n _this.menuVisible = false;\n _this.refreshMenuClasses();\n }, 500);\n };\n ChartMenu.prototype.refreshMenuClasses = function () {\n this.eChartContainer.classList.toggle('ag-chart-menu-visible', this.menuVisible);\n this.eChartContainer.classList.toggle('ag-chart-menu-hidden', !this.menuVisible);\n };\n ChartMenu.prototype.showParent = function (width) {\n this.eMenuPanelContainer.style.minWidth = width + \"px\";\n };\n ChartMenu.prototype.hideParent = function () {\n this.eMenuPanelContainer.style.minWidth = '0';\n };\n ChartMenu.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.menuPanel && this.menuPanel.isAlive()) {\n this.destroyBean(this.menuPanel);\n }\n };\n ChartMenu.EVENT_DOWNLOAD_CHART = \"downloadChart\";\n ChartMenu.TEMPLATE = \"
    \";\n __decorate([\n Autowired('chartTranslationService')\n ], ChartMenu.prototype, \"chartTranslationService\", void 0);\n __decorate([\n PostConstruct\n ], ChartMenu.prototype, \"postConstruct\", null);\n return ChartMenu;\n}(Component));\nexport { ChartMenu };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __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};\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Component, PostConstruct } from \"@ag-grid-community/core\";\nvar TitleEdit = /** @class */ (function (_super) {\n __extends(TitleEdit, _super);\n function TitleEdit(chartMenu) {\n var _this = _super.call(this, TitleEdit.TEMPLATE) || this;\n _this.chartMenu = chartMenu;\n return _this;\n }\n TitleEdit.prototype.init = function () {\n var _this = this;\n this.addManagedListener(this.getGui(), 'keypress', function (e) {\n if (e.key === 'Enter') {\n _this.endEditing();\n }\n });\n this.addManagedListener(this.getGui(), 'blur', this.endEditing.bind(this));\n };\n /* should be called when the containing component changes to a new chart proxy */\n TitleEdit.prototype.refreshTitle = function (chartController, chartOptionsService) {\n var _this = this;\n this.chartController = chartController;\n this.chartOptionsService = chartOptionsService;\n var chartProxy = this.chartController.getChartProxy();\n if (chartProxy) {\n for (var i = 0; i++; i < this.destroyableChartListeners.length) {\n this.destroyableChartListeners[i]();\n }\n this.destroyableChartListeners = [];\n }\n var chart = chartProxy.getChart();\n var canvas = chart.scene.canvas.element;\n var destroyDbleClickListener = this.addManagedListener(canvas, 'dblclick', function (event) {\n var title = chart.title;\n if (title && title.node.containsPoint(event.offsetX, event.offsetY)) {\n var bbox = title.node.computeBBox();\n var xy = title.node.inverseTransformPoint(bbox.x, bbox.y);\n _this.startEditing(__assign(__assign({}, bbox), xy));\n }\n });\n var destroyMouseMoveListener = this.addManagedListener(canvas, 'mousemove', function (event) {\n var title = chart.title;\n var inTitle = title && title.enabled && title.node.containsPoint(event.offsetX, event.offsetY);\n canvas.style.cursor = inTitle ? 'pointer' : '';\n });\n this.destroyableChartListeners = [\n destroyDbleClickListener,\n destroyMouseMoveListener\n ];\n };\n TitleEdit.prototype.startEditing = function (titleBBox) {\n if (this.chartMenu && this.chartMenu.isVisible()) {\n // currently we ignore requests to edit the chart title while the chart menu is showing\n // because the click to edit the chart will also close the chart menu, making the position\n // of the title change.\n return;\n }\n var minimumTargetInputWidth = 300;\n var maximumInputWidth = this.chartController.getChartProxy().getChart().width;\n var inputWidth = Math.max(Math.min(titleBBox.width + 20, maximumInputWidth), minimumTargetInputWidth);\n var inputElement = this.getGui();\n inputElement.classList.add('currently-editing');\n var inputStyle = inputElement.style;\n // match style of input to title that we're editing\n inputStyle.fontFamily = this.chartOptionsService.getChartOption('title.fontFamily');\n inputStyle.fontWeight = this.chartOptionsService.getChartOption('title.fontWeight');\n inputStyle.fontStyle = this.chartOptionsService.getChartOption('title.fontStyle');\n inputStyle.fontSize = this.chartOptionsService.getChartOption('title.fontSize') + 'px';\n inputStyle.color = this.chartOptionsService.getChartOption('title.color');\n // populate the input with the title, unless the title is the placeholder:\n var oldTitle = this.chartOptionsService.getChartOption('title.text');\n var inputValue = oldTitle === this.chartTranslationService.translate('titlePlaceholder') ? '' : oldTitle;\n inputElement.value = inputValue;\n var inputRect = inputElement.getBoundingClientRect();\n inputStyle.left = Math.round(titleBBox.x + titleBBox.width / 2 - inputWidth / 2) + 'px';\n inputStyle.top = Math.round(titleBBox.y + titleBBox.height / 2 - inputRect.height / 2) + 'px';\n inputStyle.width = Math.round(inputWidth) + 'px';\n inputElement.focus();\n };\n TitleEdit.prototype.endEditing = function () {\n var value = this.getGui().value;\n this.chartOptionsService.setChartOption('title.text', value);\n this.eventService.dispatchEvent({ type: 'chartTitleEdit' });\n this.removeCssClass('currently-editing');\n };\n TitleEdit.TEMPLATE = \"\\n \";\n __decorate([\n Autowired('chartTranslationService')\n ], TitleEdit.prototype, \"chartTranslationService\", void 0);\n __decorate([\n PostConstruct\n ], TitleEdit.prototype, \"init\", null);\n return TitleEdit;\n}(Component));\nexport { TitleEdit };\n","// deepMerge\nfunction emptyTarget(value) {\n return Array.isArray(value) ? [] : {};\n}\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n return (options.clone !== false && options.isMergeableObject(value))\n ? deepMerge(emptyTarget(value), value, options)\n : value;\n}\nfunction defaultArrayMerge(target, source, options) {\n return target.concat(source).map(function (element) {\n return cloneUnlessOtherwiseSpecified(element, options);\n });\n}\nfunction getMergeFunction(key, options) {\n if (!options.customMerge) {\n return deepMerge;\n }\n var customMerge = options.customMerge(key);\n return typeof customMerge === 'function' ? customMerge : deepMerge;\n}\nfunction getEnumerableOwnPropertySymbols(target) {\n // @ts-ignore\n return Object.getOwnPropertySymbols\n // @ts-ignore\n ? Object.getOwnPropertySymbols(target).filter(function (symbol) {\n return target.propertyIsEnumerable(symbol);\n })\n : [];\n}\nfunction getKeys(target) {\n return Object.keys(target).concat(getEnumerableOwnPropertySymbols(target));\n}\nfunction propertyIsOnObject(object, property) {\n try {\n return property in object;\n }\n catch (_) {\n return false;\n }\n}\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n return propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n && !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n && Object.propertyIsEnumerable.call(target, key)); // and also unsafe if they're nonenumerable.\n}\nfunction mergeObject(target, source, options) {\n var destination = {};\n if (options.isMergeableObject(target)) {\n getKeys(target).forEach(function (key) {\n destination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n });\n }\n getKeys(source).forEach(function (key) {\n if (propertyIsUnsafe(target, key)) {\n return;\n }\n if (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n destination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n }\n else {\n destination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n }\n });\n return destination;\n}\nfunction defaultIsMergeableObject(value) {\n return isNonNullObject(value) && !isSpecial(value);\n}\nfunction isNonNullObject(value) {\n return !!value && typeof value === 'object';\n}\nfunction isSpecial(value) {\n var stringValue = Object.prototype.toString.call(value);\n return stringValue === '[object RegExp]' || stringValue === '[object Date]';\n}\nexport function deepMerge(target, source, options) {\n options = options || {};\n options.arrayMerge = options.arrayMerge || defaultArrayMerge;\n options.isMergeableObject = options.isMergeableObject || defaultIsMergeableObject;\n // cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n // implementations can use it. The caller may not replace it.\n options.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n var sourceIsArray = Array.isArray(source);\n var targetIsArray = Array.isArray(target);\n var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n if (!sourceAndTargetTypesMatch) {\n return cloneUnlessOtherwiseSpecified(source, options);\n }\n else if (sourceIsArray) {\n return options.arrayMerge(target, source, options);\n }\n else {\n return mergeObject(target, source, options);\n }\n}\n// END - deep merge\nexport function mergeDeep(dest, source, copyUndefined, objectsThatNeedCopy, iteration) {\n if (copyUndefined === void 0) { copyUndefined = true; }\n if (objectsThatNeedCopy === void 0) { objectsThatNeedCopy = []; }\n if (iteration === void 0) { iteration = 0; }\n if (!exists(source)) {\n return;\n }\n iterateObject(source, function (key, sourceValue) {\n var destValue = dest[key];\n if (destValue === sourceValue) {\n return;\n }\n var dontCopyOverSourceObject = iteration == 0 && destValue == null && sourceValue != null && objectsThatNeedCopy.indexOf(key) >= 0;\n if (dontCopyOverSourceObject) {\n // by putting an empty value into destValue first, it means we end up copying over values from\n // the source object, rather than just copying in the source object in it's entirety.\n destValue = {};\n dest[key] = destValue;\n }\n if (typeof destValue === 'object' && typeof sourceValue === 'object' && !Array.isArray(destValue)) {\n mergeDeep(destValue, sourceValue, copyUndefined, objectsThatNeedCopy, iteration++);\n }\n else if (copyUndefined || sourceValue !== undefined) {\n dest[key] = sourceValue;\n }\n });\n}\nfunction iterateObject(object, callback) {\n if (object == null) {\n return;\n }\n if (Array.isArray(object)) {\n forEach(object, function (value, index) { return callback(\"\" + index, value); });\n }\n else {\n forEach(Object.keys(object), function (key) { return callback(key, object[key]); });\n }\n}\nexport function exists(value, allowEmptyString) {\n if (allowEmptyString === void 0) { allowEmptyString = false; }\n return value != null && (allowEmptyString || value !== '');\n}\nfunction forEach(list, action) {\n if (list == null) {\n return;\n }\n for (var i = 0; i < list.length; i++) {\n action(list[i], i);\n }\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};\nimport { _ } from \"@ag-grid-community/core\";\nimport { CategoryAxis, getChartTheme, themes, } from \"ag-charts-community\";\nimport { deepMerge } from \"../utils/object\";\nimport { getSeriesType } from \"../utils/seriesTypeMapper\";\nvar ChartProxy = /** @class */ (function () {\n function ChartProxy(chartProxyParams) {\n this.chartProxyParams = chartProxyParams;\n this.chartType = chartProxyParams.chartType;\n this.crossFiltering = chartProxyParams.crossFiltering;\n this.crossFilterCallback = chartProxyParams.crossFilterCallback;\n this.standaloneChartType = getSeriesType(this.chartType);\n if (this.chartProxyParams.chartOptionsToRestore) {\n this.chartOptions = this.chartProxyParams.chartOptionsToRestore;\n var themeOverrides = { overrides: this.chartOptions };\n this.chartTheme = getChartTheme(__assign({ baseTheme: this.getSelectedTheme() }, themeOverrides));\n return;\n }\n this.chartTheme = this.createChartTheme();\n this.chartOptions = this.convertConfigToOverrides(this.chartTheme.config);\n }\n ChartProxy.prototype.recreateChart = function () {\n var _this = this;\n if (this.chart) {\n this.destroyChart();\n }\n this.chart = this.createChart();\n if (this.crossFiltering) {\n // add event listener to chart canvas to detect when user wishes to reset filters\n var resetFilters_1 = true;\n this.chart.addEventListener('click', function (e) { return _this.crossFilterCallback(e, resetFilters_1); });\n }\n };\n ChartProxy.prototype.getChart = function () {\n return this.chart;\n };\n ChartProxy.prototype.createChartTheme = function () {\n var _this = this;\n var themeName = this.getSelectedTheme();\n var stockTheme = this.isStockTheme(themeName);\n var gridOptionsThemeOverrides = this.chartProxyParams.getGridOptionsChartThemeOverrides();\n var apiThemeOverrides = this.chartProxyParams.apiChartThemeOverrides;\n if (gridOptionsThemeOverrides || apiThemeOverrides) {\n var themeOverrides_1 = {\n overrides: ChartProxy.mergeThemeOverrides(gridOptionsThemeOverrides, apiThemeOverrides)\n };\n var getCustomTheme = function () { return deepMerge(_this.lookupCustomChartTheme(themeName), themeOverrides_1); };\n return getChartTheme(stockTheme ? __assign({ baseTheme: themeName }, themeOverrides_1) : getCustomTheme());\n }\n return getChartTheme(stockTheme ? themeName : this.lookupCustomChartTheme(themeName));\n };\n ChartProxy.prototype.isStockTheme = function (themeName) {\n return _.includes(Object.keys(themes), themeName);\n };\n ChartProxy.prototype.getSelectedTheme = function () {\n var chartThemeName = this.chartProxyParams.getChartThemeName();\n var availableThemes = this.chartProxyParams.getChartThemes();\n if (!_.includes(availableThemes, chartThemeName)) {\n chartThemeName = availableThemes[0];\n }\n return chartThemeName;\n };\n ChartProxy.prototype.lookupCustomChartTheme = function (name) {\n var customChartThemes = this.chartProxyParams.customChartThemes;\n var customChartTheme = customChartThemes && customChartThemes[name];\n if (!customChartTheme) {\n console.warn(\"AG Grid: no stock theme exists with the name '\" + name + \"' and no \" +\n \"custom chart theme with that name was supplied to 'customChartThemes'\");\n }\n return customChartTheme;\n };\n ChartProxy.mergeThemeOverrides = function (gridOptionsThemeOverrides, apiThemeOverrides) {\n if (!gridOptionsThemeOverrides) {\n return apiThemeOverrides;\n }\n if (!apiThemeOverrides) {\n return gridOptionsThemeOverrides;\n }\n return deepMerge(gridOptionsThemeOverrides, apiThemeOverrides);\n };\n ChartProxy.prototype.downloadChart = function () {\n var chart = this.chart;\n var fileName = chart.title ? chart.title.text : 'chart';\n chart.scene.download(fileName);\n };\n ChartProxy.prototype.getChartImageDataURL = function (type) {\n return this.chart.scene.getDataURL(type);\n };\n ChartProxy.prototype.getChartOptions = function () {\n return this.chartOptions;\n };\n ChartProxy.prototype.transformData = function (data, categoryKey) {\n var usingGroupedCategory = this.chartProxyParams.grouping || this.chart.axes.filter(function (a) { return a instanceof CategoryAxis; }).length < 1;\n if (usingGroupedCategory) {\n return data;\n }\n // replace the values for the selected category with a complex object to allow for duplicated categories\n return data.map(function (d, index) {\n var value = d[categoryKey];\n var valueString = value && value.toString ? value.toString() : '';\n var datum = __assign({}, d);\n datum[categoryKey] = { id: index, value: value, toString: function () { return valueString; } };\n return datum;\n });\n };\n ChartProxy.prototype.convertConfigToOverrides = function (config) {\n var isComboChart = ['columnLineCombo', 'areaColumnCombo', 'customCombo'].includes(this.chartType);\n var overrideObjs = isComboChart ? ['line', 'area', 'column', 'cartesian'] : [this.standaloneChartType];\n var overrides = {};\n overrideObjs.forEach(function (overrideObj) {\n var chartOverrides = deepMerge({}, config[overrideObj]);\n chartOverrides.series = chartOverrides.series[overrideObj];\n // special handing to add the scatter paired mode to the chart options\n if (overrideObj === 'scatter') {\n chartOverrides.paired = true;\n }\n overrides[overrideObj] = chartOverrides;\n });\n return overrides;\n };\n ChartProxy.prototype.destroy = function () {\n this.destroyChart();\n };\n ChartProxy.prototype.destroyChart = function () {\n if (this.chart) {\n this.chart.destroy();\n this.chart = undefined;\n }\n };\n return ChartProxy;\n}());\nexport { ChartProxy };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { ChartProxy } from \"../chartProxy\";\nimport { AreaSeries, CategoryAxis, GroupedCategoryAxis, LineSeries, NumberAxis, TimeAxis } from \"ag-charts-community\";\nimport { ChartDataModel } from \"../../chartDataModel\";\nvar CartesianChartProxy = /** @class */ (function (_super) {\n __extends(CartesianChartProxy, _super);\n function CartesianChartProxy(params) {\n var _this = _super.call(this, params) || this;\n _this.axisTypeToClassMap = {\n number: NumberAxis,\n category: CategoryAxis,\n groupedCategory: GroupedCategoryAxis,\n time: TimeAxis\n };\n return _this;\n }\n CartesianChartProxy.prototype.updateAxes = function (params) {\n // when grouping recreate chart if the axis is not a 'groupedCategory', otherwise return\n if (params.grouping) {\n if (!(this.axisTypeToClassMap[this.xAxisType] === GroupedCategoryAxis)) {\n this.xAxisType = 'groupedCategory';\n this.recreateChart();\n }\n return;\n }\n // only update axis has changed and recreate the chart, i.e. switching from 'category' to 'time' axis\n var newXAxisType = CartesianChartProxy.isTimeAxis(params) ? 'time' : 'category';\n if (newXAxisType !== this.xAxisType) {\n this.xAxisType = newXAxisType;\n this.recreateChart();\n }\n };\n CartesianChartProxy.prototype.updateLabelRotation = function (categoryId) {\n var chartXAxisLabel = this.chart.axes[0].label;\n if (categoryId === ChartDataModel.DEFAULT_CATEGORY) {\n chartXAxisLabel.rotation = 0;\n }\n else {\n var xAxisOptions = this.getAxesOptions()[this.xAxisType];\n chartXAxisLabel.rotation = xAxisOptions.label.rotation;\n }\n this.chart.layoutPending = true;\n };\n CartesianChartProxy.prototype.getAxesOptions = function (chartSeriesType) {\n if (chartSeriesType === void 0) { chartSeriesType = this.standaloneChartType; }\n return this.chartOptions[chartSeriesType].axes;\n };\n CartesianChartProxy.prototype.processDataForCrossFiltering = function (data, colId, params) {\n var yKey = colId;\n var atLeastOneSelectedPoint = false;\n if (this.crossFiltering) {\n data.forEach(function (d) {\n d[colId + '-total'] = d[colId] + d[colId + '-filtered-out'];\n if (d[colId + '-filtered-out'] > 0) {\n atLeastOneSelectedPoint = true;\n }\n });\n var lastSelectedChartId = params.getCrossFilteringContext().lastSelectedChartId;\n if (lastSelectedChartId === params.chartId) {\n yKey = colId + '-total';\n }\n }\n return { yKey: yKey, atLeastOneSelectedPoint: atLeastOneSelectedPoint };\n };\n CartesianChartProxy.prototype.updateSeriesForCrossFiltering = function (series, colId, chart, params, atLeastOneSelectedPoint) {\n if (this.crossFiltering) {\n // special custom marker handling to show and hide points\n series.marker.enabled = true;\n series.marker.formatter = function (p) {\n return {\n fill: p.highlighted ? 'yellow' : p.fill,\n size: p.highlighted ? 12 : p.datum[colId] > 0 ? 8 : 0,\n };\n };\n chart.tooltip.delay = 500;\n // make line opaque when some points are deselected\n var ctx = params.getCrossFilteringContext();\n var lastSelectionOnThisChart = ctx.lastSelectedChartId === params.chartId;\n var deselectedPoints = lastSelectionOnThisChart && atLeastOneSelectedPoint;\n if (series instanceof AreaSeries) {\n series.fillOpacity = deselectedPoints ? 0.3 : 1;\n }\n if (series instanceof LineSeries) {\n series.strokeOpacity = deselectedPoints ? 0.3 : 1;\n }\n // add node click cross filtering callback to series\n series.addEventListener('nodeClick', this.crossFilterCallback);\n }\n };\n CartesianChartProxy.isTimeAxis = function (params) {\n if (params.category && params.category.chartDataType) {\n return params.category.chartDataType === 'time';\n }\n var testDatum = params.data[0];\n return (testDatum && testDatum[params.category.id]) instanceof Date;\n };\n return CartesianChartProxy;\n}(ChartProxy));\nexport { CartesianChartProxy };\n","import { Color } from \"@ag-grid-community/core\";\nexport function hexToRGBA(hex, alpha) {\n var r = parseInt(hex.slice(1, 3), 16);\n var g = parseInt(hex.slice(3, 5), 16);\n var b = parseInt(hex.slice(5, 7), 16);\n return alpha ? \"rgba(\" + r + \", \" + g + \", \" + b + \", \" + alpha + \")\" : \"rgba(\" + r + \", \" + g + \", \" + b + \")\";\n}\nexport function changeOpacity(fills, alpha) {\n return fills.map(function (fill) {\n var c = Color.fromString(fill);\n return new Color(c.r, c.g, c.b, alpha).toHexString();\n });\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __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};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nimport { _, } from \"@ag-grid-community/core\";\nimport { AgChart, ChartAxisPosition } from \"ag-charts-community\";\nimport { CartesianChartProxy } from \"./cartesianChartProxy\";\nimport { deepMerge } from \"../../utils/object\";\nimport { hexToRGBA } from \"../../utils/color\";\nvar BarChartProxy = /** @class */ (function (_super) {\n __extends(BarChartProxy, _super);\n function BarChartProxy(params) {\n var _this = _super.call(this, params) || this;\n // when the standalone chart type is 'bar' - xAxis is positioned to the 'left'\n _this.xAxisType = params.grouping ? 'groupedCategory' : 'category';\n _this.yAxisType = 'number';\n _this.recreateChart();\n return _this;\n }\n BarChartProxy.prototype.createChart = function () {\n var _a = __read([this.standaloneChartType === 'bar', this.isNormalised()], 2), isBar = _a[0], isNormalised = _a[1];\n return AgChart.create({\n container: this.chartProxyParams.parentElement,\n theme: this.chartTheme,\n axes: this.getAxes(isBar, isNormalised),\n series: this.getSeries(isNormalised),\n });\n };\n BarChartProxy.prototype.update = function (params) {\n this.updateAxes(params);\n var barSeries = this.chart.series[0];\n if (this.crossFiltering) {\n this.updateCrossFilteringSeries(barSeries, params);\n }\n else {\n barSeries.fills = this.chartTheme.palette.fills;\n barSeries.strokes = this.chartTheme.palette.strokes;\n }\n barSeries.data = this.transformData(params.data, params.category.id);\n barSeries.xKey = params.category.id;\n barSeries.xName = params.category.name;\n barSeries.yKeys = params.fields.map(function (f) { return f.colId; });\n barSeries.yNames = params.fields.map(function (f) { return f.displayName; });\n this.updateLabelRotation(params.category.id);\n };\n BarChartProxy.prototype.updateCrossFilteringSeries = function (barSeries, params) {\n // add additional filtered out field\n var fields = params.fields;\n fields.forEach(function (field) {\n var crossFilteringField = __assign({}, field);\n crossFilteringField.colId = field.colId + '-filtered-out';\n fields.push(crossFilteringField);\n });\n var palette = this.chartTheme.palette;\n // introduce cross filtering transparent fills\n var fills = [];\n palette.fills.forEach(function (fill) {\n fills.push(fill);\n fills.push(hexToRGBA(fill, '0.3'));\n });\n barSeries.fills = fills;\n // introduce cross filtering transparent strokes\n var strokes = [];\n palette.strokes.forEach(function (stroke) {\n fills.push(stroke);\n fills.push(hexToRGBA(stroke, '0.3'));\n });\n barSeries.strokes = strokes;\n // disable series highlighting by default\n barSeries.highlightStyle.fill = undefined;\n // hide 'filtered out' legend items\n var colIds = params.fields.map(function (f) { return f.colId; });\n barSeries.hideInLegend = colIds.filter(function (colId) { return colId.indexOf('-filtered-out') !== -1; });\n // sync toggling of legend item with hidden 'filtered out' item\n this.chart.legend.addEventListener('click', function (event) {\n barSeries.toggleSeriesItem(event.itemId + '-filtered-out', event.enabled);\n });\n this.chart.tooltip.delay = 500;\n // add node click cross filtering callback to series\n barSeries.addEventListener('nodeClick', this.crossFilterCallback);\n };\n BarChartProxy.prototype.getAxes = function (isBar, normalised) {\n var axisOptions = this.getAxesOptions();\n var axes = [\n __assign(__assign({}, deepMerge(axisOptions[this.xAxisType], axisOptions[this.xAxisType].bottom)), { type: this.xAxisType, position: isBar ? ChartAxisPosition.Left : ChartAxisPosition.Bottom }),\n __assign(__assign({}, deepMerge(axisOptions[this.yAxisType], axisOptions[this.yAxisType].left)), { type: this.yAxisType, position: isBar ? ChartAxisPosition.Bottom : ChartAxisPosition.Left }),\n ];\n // special handling to add a default label formatter to show '%' for normalized charts if none is provided\n if (normalised) {\n var numberAxis = axes[1];\n numberAxis.label = __assign(__assign({}, numberAxis.label), { formatter: function (params) { return Math.round(params.value) + '%'; } });\n }\n return axes;\n };\n BarChartProxy.prototype.getSeries = function (normalised) {\n var groupedCharts = ['groupedColumn', 'groupedBar'];\n var isGrouped = !this.crossFiltering && _.includes(groupedCharts, this.chartType);\n return [__assign(__assign({}, this.chartOptions[this.standaloneChartType].series), { type: this.standaloneChartType, grouped: isGrouped, normalizedTo: normalised ? 100 : undefined })];\n };\n BarChartProxy.prototype.isNormalised = function () {\n var normalisedCharts = ['normalizedColumn', 'normalizedBar'];\n return !this.crossFiltering && _.includes(normalisedCharts, this.chartType);\n };\n return BarChartProxy;\n}(CartesianChartProxy));\nexport { BarChartProxy };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __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};\nimport { AgChart, ChartAxisPosition } from \"ag-charts-community\";\nimport { CartesianChartProxy } from \"./cartesianChartProxy\";\nimport { deepMerge } from \"../../utils/object\";\nvar AreaChartProxy = /** @class */ (function (_super) {\n __extends(AreaChartProxy, _super);\n function AreaChartProxy(params) {\n var _this = _super.call(this, params) || this;\n _this.xAxisType = params.grouping ? 'groupedCategory' : 'category';\n _this.yAxisType = 'number';\n _this.recreateChart();\n return _this;\n }\n AreaChartProxy.prototype.createChart = function () {\n return AgChart.create({\n type: 'area',\n container: this.chartProxyParams.parentElement,\n theme: this.chartTheme,\n axes: this.getAxes(),\n });\n };\n AreaChartProxy.prototype.update = function (params) {\n this.updateAxes(params);\n if (this.chartType === 'area') {\n // area charts have multiple series\n this.updateAreaChart(params);\n }\n else {\n // stacked and normalized has a single series\n var areaSeries = this.chart.series[0];\n if (!areaSeries) {\n var seriesDefaults = __assign(__assign({}, this.chartOptions[this.standaloneChartType].series), { type: 'area', normalizedTo: this.chartType === 'normalizedArea' ? 100 : undefined });\n areaSeries = AgChart.createComponent(__assign({}, seriesDefaults), 'area.series');\n if (!areaSeries) {\n return;\n }\n this.chart.addSeries(areaSeries);\n }\n areaSeries.data = this.transformData(params.data, params.category.id);\n areaSeries.xKey = params.category.id;\n areaSeries.xName = params.category.name;\n areaSeries.yKeys = params.fields.map(function (f) { return f.colId; });\n areaSeries.yNames = params.fields.map(function (f) { return f.displayName; });\n areaSeries.fills = this.chartTheme.palette.fills;\n areaSeries.strokes = this.chartTheme.palette.strokes;\n }\n this.updateLabelRotation(params.category.id);\n };\n AreaChartProxy.prototype.updateAreaChart = function (params) {\n var _this = this;\n var chart = this.chart;\n if (params.fields.length === 0) {\n chart.removeAllSeries();\n return;\n }\n var fieldIds = params.fields.map(function (f) { return f.colId; });\n var existingSeriesById = chart.series\n .reduceRight(function (map, series, i) {\n var id = series.yKeys[0];\n if (fieldIds.indexOf(id) === i) {\n map.set(id, series);\n }\n else {\n chart.removeSeries(series);\n }\n return map;\n }, new Map());\n var data = this.transformData(params.data, params.category.id);\n var previousSeries;\n var _a = this.chartTheme.palette, fills = _a.fills, strokes = _a.strokes;\n params.fields.forEach(function (f, index) {\n var _a = _this.processDataForCrossFiltering(data, f.colId, params), yKey = _a.yKey, atLeastOneSelectedPoint = _a.atLeastOneSelectedPoint;\n var areaSeries = existingSeriesById.get(f.colId);\n var fill = fills[index % fills.length];\n var stroke = strokes[index % strokes.length];\n if (areaSeries) {\n areaSeries.data = data;\n areaSeries.xKey = params.category.id;\n areaSeries.xName = params.category.name;\n areaSeries.yKeys = [yKey];\n areaSeries.yNames = [f.displayName];\n areaSeries.fills = [fill];\n areaSeries.strokes = [stroke];\n }\n else {\n var seriesOverrides = _this.chartOptions[_this.standaloneChartType].series;\n var seriesDefaults = __assign(__assign({}, seriesOverrides), { type: 'area', normalizedTo: _this.chartType === 'normalizedArea' ? 100 : undefined });\n var options = __assign(__assign({}, seriesDefaults), { data: data, xKey: params.category.id, xName: params.category.name, yKeys: [yKey], yNames: [f.displayName], fills: [fill], strokes: [stroke], marker: __assign(__assign({}, seriesDefaults.marker), { fill: fill,\n stroke: stroke }) });\n areaSeries = AgChart.createComponent(options, 'area.series');\n chart.addSeriesAfter(areaSeries, previousSeries);\n }\n _this.updateSeriesForCrossFiltering(areaSeries, f.colId, chart, params, atLeastOneSelectedPoint);\n previousSeries = areaSeries;\n });\n };\n AreaChartProxy.prototype.getAxes = function () {\n var axisOptions = this.getAxesOptions();\n var options = [\n __assign(__assign({}, deepMerge(axisOptions[this.xAxisType], axisOptions[this.xAxisType].bottom)), { type: this.xAxisType, position: ChartAxisPosition.Bottom, paddingInner: 1, paddingOuter: 0 }),\n __assign(__assign({}, deepMerge(axisOptions[this.yAxisType], axisOptions[this.yAxisType].left)), { type: this.yAxisType, position: ChartAxisPosition.Left }),\n ];\n if (this.xAxisType === 'time') {\n delete options[0].paddingInner;\n delete options[0].paddingOuter;\n }\n return options;\n };\n return AreaChartProxy;\n}(CartesianChartProxy));\nexport { AreaChartProxy };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __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};\nimport { AgChart, ChartAxisPosition } from \"ag-charts-community\";\nimport { CartesianChartProxy } from \"./cartesianChartProxy\";\nimport { deepMerge } from \"../../utils/object\";\nvar LineChartProxy = /** @class */ (function (_super) {\n __extends(LineChartProxy, _super);\n function LineChartProxy(params) {\n var _this = _super.call(this, params) || this;\n _this.xAxisType = params.grouping ? 'groupedCategory' : 'category';\n _this.yAxisType = 'number';\n _this.recreateChart();\n return _this;\n }\n LineChartProxy.prototype.createChart = function () {\n return AgChart.create({\n type: 'line',\n container: this.chartProxyParams.parentElement,\n theme: this.chartTheme,\n axes: this.getAxes()\n });\n };\n LineChartProxy.prototype.update = function (params) {\n var _this = this;\n if (params.fields.length === 0) {\n this.chart.removeAllSeries();\n return;\n }\n this.updateAxes(params);\n var chart = this.chart;\n var fields = params.fields;\n var fieldIds = fields.map(function (f) { return f.colId; });\n var data = this.transformData(params.data, params.category.id);\n var existingSeriesById = chart.series.reduceRight(function (map, series, i) {\n var id = series.yKey;\n (fieldIds.indexOf(id) === i) ? map.set(id, series) : chart.removeSeries(series);\n return map;\n }, new Map());\n var previousSeries;\n var _a = this.chartTheme.palette, fills = _a.fills, strokes = _a.strokes;\n fields.forEach(function (f, index) {\n var _a = _this.processDataForCrossFiltering(data, f.colId, params), yKey = _a.yKey, atLeastOneSelectedPoint = _a.atLeastOneSelectedPoint;\n var lineSeries = existingSeriesById.get(f.colId);\n var fill = fills[index % fills.length];\n var stroke = strokes[index % strokes.length];\n if (lineSeries) {\n lineSeries.title = f.displayName;\n lineSeries.data = data;\n lineSeries.xKey = params.category.id;\n lineSeries.xName = params.category.name;\n lineSeries.yKey = yKey;\n lineSeries.yName = f.displayName;\n lineSeries.marker.fill = fill;\n lineSeries.marker.stroke = stroke;\n lineSeries.stroke = fill; // this is deliberate, so that the line colours match the fills of other series\n }\n else {\n var seriesOverrides = _this.chartOptions[_this.standaloneChartType].series;\n var seriesOptions = __assign(__assign({}, seriesOverrides), { type: 'line', title: f.displayName, data: data, xKey: params.category.id, xName: params.category.name, yKey: yKey, yName: f.displayName, stroke: fill, marker: __assign(__assign({}, seriesOverrides.marker), { fill: fill,\n stroke: stroke }) });\n lineSeries = AgChart.createComponent(seriesOptions, 'line.series');\n chart.addSeriesAfter(lineSeries, previousSeries);\n }\n _this.updateSeriesForCrossFiltering(lineSeries, f.colId, chart, params, atLeastOneSelectedPoint);\n previousSeries = lineSeries;\n });\n this.updateLabelRotation(params.category.id);\n };\n LineChartProxy.prototype.getAxes = function () {\n var axisOptions = this.getAxesOptions();\n return [\n __assign(__assign({}, deepMerge(axisOptions[this.xAxisType], axisOptions[this.xAxisType].bottom)), { type: this.xAxisType, position: ChartAxisPosition.Bottom }),\n __assign(__assign({}, deepMerge(axisOptions[this.yAxisType], axisOptions[this.yAxisType].left)), { type: this.yAxisType, position: ChartAxisPosition.Left }),\n ];\n };\n return LineChartProxy;\n}(CartesianChartProxy));\nexport { LineChartProxy };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { ChartProxy } from \"../chartProxy\";\nvar PolarChartProxy = /** @class */ (function (_super) {\n __extends(PolarChartProxy, _super);\n function PolarChartProxy(params) {\n return _super.call(this, params) || this;\n }\n PolarChartProxy.prototype.addCrossFilteringTooltipRenderer = function (pieSeries) {\n pieSeries.tooltip.renderer = function (params) {\n var label = params.datum[params.labelKey];\n var ratio = params.datum[params.radiusKey];\n var totalValue = params.angleValue;\n var value = totalValue * ratio;\n return {\n content: label + \": \" + value,\n };\n };\n };\n return PolarChartProxy;\n}(ChartProxy));\nexport { PolarChartProxy };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __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};\nimport { AgChart } from \"ag-charts-community\";\nimport { PolarChartProxy } from \"./polarChartProxy\";\nimport { changeOpacity } from \"../../utils/color\";\nvar PieChartProxy = /** @class */ (function (_super) {\n __extends(PieChartProxy, _super);\n function PieChartProxy(params) {\n var _this = _super.call(this, params) || this;\n _this.recreateChart();\n return _this;\n }\n PieChartProxy.prototype.createChart = function () {\n return AgChart.create({\n type: 'pie',\n container: this.chartProxyParams.parentElement,\n theme: this.chartTheme,\n });\n };\n PieChartProxy.prototype.update = function (params) {\n var chart = this.chart;\n if (params.fields.length === 0) {\n chart.removeAllSeries();\n return;\n }\n var field = params.fields[0];\n var angleField = field;\n if (this.crossFiltering) {\n // add additional filtered out field\n var fields_1 = params.fields;\n fields_1.forEach(function (field) {\n var crossFilteringField = __assign({}, field);\n crossFilteringField.colId = field.colId + '-filtered-out';\n fields_1.push(crossFilteringField);\n });\n var filteredOutField_1 = fields_1[1];\n params.data.forEach(function (d) {\n d[field.colId + '-total'] = d[field.colId] + d[filteredOutField_1.colId];\n d[field.colId] = d[field.colId] / d[field.colId + '-total'];\n d[filteredOutField_1.colId] = 1;\n });\n var opaqueSeries = chart.series[1];\n var radiusField = filteredOutField_1;\n opaqueSeries = this.updateSeries(chart, opaqueSeries, angleField, radiusField, params, undefined);\n radiusField = angleField;\n var filteredSeries = chart.series[0];\n this.updateSeries(chart, filteredSeries, angleField, radiusField, params, opaqueSeries);\n }\n else {\n var series = chart.series[0];\n this.updateSeries(chart, series, angleField, angleField, params, undefined);\n }\n };\n PieChartProxy.prototype.updateSeries = function (chart, series, angleField, field, params, opaqueSeries) {\n var existingSeriesId = series && series.angleKey;\n var seriesOverrides = this.chartOptions[this.standaloneChartType].series;\n var pieSeries = series;\n if (existingSeriesId !== field.colId) {\n chart.removeSeries(series);\n var options = __assign(__assign({}, seriesOverrides), { type: 'pie', angleKey: this.crossFiltering ? angleField.colId + '-total' : angleField.colId, radiusKey: this.crossFiltering ? field.colId : undefined });\n pieSeries = AgChart.createComponent(options, 'pie.series');\n pieSeries.fills = this.chartTheme.palette.fills;\n pieSeries.strokes = this.chartTheme.palette.strokes;\n pieSeries.callout.colors = this.chartTheme.palette.strokes;\n if (this.crossFiltering && pieSeries && !pieSeries.tooltip.renderer) {\n // only add renderer if user hasn't provided one\n this.addCrossFilteringTooltipRenderer(pieSeries);\n }\n }\n pieSeries.angleName = field.displayName;\n pieSeries.labelKey = params.category.id;\n pieSeries.labelName = params.category.name;\n pieSeries.data = params.data;\n if (this.crossFiltering) {\n pieSeries.radiusMin = 0;\n pieSeries.radiusMax = 1;\n var isOpaqueSeries = !opaqueSeries;\n if (isOpaqueSeries) {\n pieSeries.fills = changeOpacity(pieSeries.fills, 0.3);\n pieSeries.strokes = changeOpacity(pieSeries.strokes, 0.3);\n pieSeries.callout.colors = changeOpacity(pieSeries.strokes, 0.3);\n pieSeries.showInLegend = false;\n }\n else {\n chart.legend.addEventListener('click', function (event) {\n if (opaqueSeries) {\n opaqueSeries.toggleSeriesItem(event.itemId, event.enabled);\n }\n });\n }\n chart.tooltip.delay = 500;\n // disable series highlighting by default\n pieSeries.highlightStyle.fill = undefined;\n pieSeries.addEventListener(\"nodeClick\", this.crossFilterCallback);\n }\n chart.addSeries(pieSeries);\n return pieSeries;\n };\n return PieChartProxy;\n}(PolarChartProxy));\nexport { PieChartProxy };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __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};\nimport { AgChart } from \"ag-charts-community\";\nimport { _ } from \"@ag-grid-community/core\";\nimport { PolarChartProxy } from \"./polarChartProxy\";\nimport { hexToRGBA } from \"../../utils/color\";\nvar DoughnutChartProxy = /** @class */ (function (_super) {\n __extends(DoughnutChartProxy, _super);\n function DoughnutChartProxy(params) {\n var _this = _super.call(this, params) || this;\n _this.recreateChart();\n return _this;\n }\n DoughnutChartProxy.prototype.createChart = function () {\n return AgChart.create({\n type: 'pie',\n container: this.chartProxyParams.parentElement,\n theme: this.chartTheme,\n });\n };\n DoughnutChartProxy.prototype.update = function (params) {\n var _this = this;\n if (params.fields.length === 0) {\n this.chart.removeAllSeries();\n return;\n }\n var doughnutChart = this.chart;\n var fieldIds = params.fields.map(function (f) { return f.colId; });\n var seriesMap = {};\n doughnutChart.series.forEach(function (series) {\n var pieSeries = series;\n var id = pieSeries.angleKey;\n if (_.includes(fieldIds, id)) {\n seriesMap[id] = pieSeries;\n }\n });\n var fills = this.chartTheme.palette.fills;\n var strokes = this.chartTheme.palette.strokes;\n var seriesOverrides = this.chartOptions[this.standaloneChartType].series;\n var numFields = params.fields.length;\n var offset = 0;\n if (this.crossFiltering) {\n params.fields.forEach(function (field, index) {\n var filteredOutField = __assign({}, field);\n filteredOutField.colId = field.colId + '-filtered-out';\n params.data.forEach(function (d) {\n d[field.colId + '-total'] = d[field.colId] + d[filteredOutField.colId];\n d[field.colId] = d[field.colId] / d[field.colId + '-total'];\n d[filteredOutField.colId] = 1;\n });\n var _a = _this.updateSeries({\n seriesMap: seriesMap,\n angleField: field,\n field: filteredOutField,\n seriesDefaults: seriesOverrides,\n index: index,\n params: params,\n fills: fills,\n strokes: strokes,\n doughnutChart: doughnutChart,\n offset: offset,\n numFields: numFields,\n opaqueSeries: undefined\n }), updatedOffset = _a.updatedOffset, pieSeries = _a.pieSeries;\n _this.updateSeries({\n seriesMap: seriesMap,\n angleField: field,\n field: field,\n seriesDefaults: seriesOverrides,\n index: index,\n params: params,\n fills: fills,\n strokes: strokes,\n doughnutChart: doughnutChart,\n offset: offset,\n numFields: numFields,\n opaqueSeries: pieSeries\n });\n offset = updatedOffset;\n });\n }\n else {\n params.fields.forEach(function (f, index) {\n var updatedOffset = _this.updateSeries({\n seriesMap: seriesMap,\n angleField: f,\n field: f,\n seriesDefaults: seriesOverrides,\n index: index,\n params: params,\n fills: fills,\n strokes: strokes,\n doughnutChart: doughnutChart,\n offset: offset,\n numFields: numFields,\n opaqueSeries: undefined\n }).updatedOffset;\n offset = updatedOffset;\n });\n }\n // Because repaints are automatic, it's important to remove/add/update series at once,\n // so that we don't get painted twice.\n doughnutChart.series = _.values(seriesMap);\n };\n DoughnutChartProxy.prototype.updateSeries = function (updateParams) {\n var existingSeries = updateParams.seriesMap[updateParams.field.colId];\n var seriesOptions = __assign(__assign({}, updateParams.seriesDefaults), { type: 'pie', angleKey: this.crossFiltering ? updateParams.angleField.colId + '-total' : updateParams.angleField.colId, radiusKey: this.crossFiltering ? updateParams.field.colId : undefined, title: __assign(__assign({}, updateParams.seriesDefaults.title), { text: updateParams.seriesDefaults.title.text || updateParams.field.displayName }) });\n var pieSeries = existingSeries || AgChart.createComponent(seriesOptions, 'pie.series');\n if (pieSeries.title) {\n pieSeries.title.showInLegend = updateParams.numFields > 1;\n }\n if (!existingSeries) {\n if (this.crossFiltering && !pieSeries.tooltip.renderer) {\n // only add renderer if user hasn't provided one\n this.addCrossFilteringTooltipRenderer(pieSeries);\n }\n }\n pieSeries.angleName = updateParams.field.displayName;\n pieSeries.labelKey = updateParams.params.category.id;\n pieSeries.labelName = updateParams.params.category.name;\n pieSeries.data = updateParams.params.data;\n if (this.crossFiltering) {\n pieSeries.radiusMin = 0;\n pieSeries.radiusMax = 1;\n var isOpaqueSeries = !updateParams.opaqueSeries;\n if (isOpaqueSeries) {\n pieSeries.fills = updateParams.fills.map(function (fill) { return hexToRGBA(fill, '0.3'); });\n pieSeries.strokes = updateParams.strokes.map(function (stroke) { return hexToRGBA(stroke, '0.3'); });\n pieSeries.showInLegend = false;\n }\n else {\n updateParams.doughnutChart.legend.addEventListener('click', function (event) {\n if (updateParams.opaqueSeries) {\n updateParams.opaqueSeries.toggleSeriesItem(event.itemId, event.enabled);\n }\n });\n pieSeries.fills = updateParams.fills;\n pieSeries.strokes = updateParams.strokes;\n pieSeries.callout.colors = updateParams.strokes;\n }\n // disable series highlighting by default\n pieSeries.highlightStyle.fill = undefined;\n pieSeries.addEventListener('nodeClick', this.crossFilterCallback);\n updateParams.doughnutChart.tooltip.delay = 500;\n }\n else {\n pieSeries.fills = updateParams.fills;\n pieSeries.strokes = updateParams.strokes;\n pieSeries.callout.colors = updateParams.strokes;\n }\n var offsetAmount = updateParams.numFields > 1 ? 20 : 40;\n pieSeries.outerRadiusOffset = updateParams.offset;\n updateParams.offset -= offsetAmount;\n pieSeries.innerRadiusOffset = updateParams.offset;\n updateParams.offset -= offsetAmount;\n if (!existingSeries) {\n updateParams.seriesMap[updateParams.field.colId] = pieSeries;\n }\n return { updatedOffset: updateParams.offset, pieSeries: pieSeries };\n };\n return DoughnutChartProxy;\n}(PolarChartProxy));\nexport { DoughnutChartProxy };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __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};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nimport { AgChart, ChartAxisPosition } from \"ag-charts-community\";\nimport { ChartDataModel } from \"../../chartDataModel\";\nimport { CartesianChartProxy } from \"./cartesianChartProxy\";\nimport { deepMerge } from \"../../utils/object\";\nimport { hexToRGBA } from \"../../utils/color\";\nvar ScatterChartProxy = /** @class */ (function (_super) {\n __extends(ScatterChartProxy, _super);\n function ScatterChartProxy(params) {\n var _this = _super.call(this, params) || this;\n _this.xAxisType = 'number';\n _this.yAxisType = 'number';\n _this.recreateChart();\n return _this;\n }\n ScatterChartProxy.prototype.createChart = function () {\n return AgChart.create({\n type: 'scatter',\n container: this.chartProxyParams.parentElement,\n theme: this.chartTheme,\n axes: this.getAxes()\n });\n };\n ScatterChartProxy.prototype.update = function (params) {\n var _this = this;\n if (params.fields.length < 2) {\n this.chart.removeAllSeries();\n return;\n }\n var fields = params.fields;\n if (this.crossFiltering) {\n // add additional filtered out field\n fields.forEach(function (field) {\n var crossFilteringField = __assign({}, field);\n crossFilteringField.colId = field.colId + '-filtered-out';\n fields.push(crossFilteringField);\n });\n }\n var paired = this.chartOptions[this.standaloneChartType].paired;\n var seriesDefinitions = this.getSeriesDefinitions(fields, paired);\n var dataDomain;\n if (this.crossFiltering) {\n dataDomain = this.getCrossFilteringDataDomain(seriesDefinitions, params);\n }\n var chart = this.chart;\n var existingSeriesById = chart.series.reduceRight(function (map, series, i) {\n var matchingIndex = seriesDefinitions.findIndex(function (s) {\n return s.xField.colId === series.xKey &&\n s.yField.colId === series.yKey &&\n ((!s.sizeField && !series.sizeKey) || (s.sizeField && s.sizeField.colId === series.sizeKey));\n });\n if (matchingIndex === i) {\n map.set(series.yKey, series);\n }\n else {\n chart.removeSeries(series);\n }\n return map;\n }, new Map());\n var _a = this.chartTheme.palette, fills = _a.fills, strokes = _a.strokes;\n if (this.crossFiltering) {\n // introduce cross filtering transparent fills\n var fillsMod_1 = [];\n fills.forEach(function (fill) {\n fillsMod_1.push(fill);\n fillsMod_1.push(hexToRGBA(fill, '0.3'));\n });\n fills = fillsMod_1;\n // introduce cross filtering transparent strokes\n var strokesMod_1 = [];\n strokes.forEach(function (stroke) {\n strokesMod_1.push(stroke);\n strokesMod_1.push(hexToRGBA(stroke, '0.3'));\n });\n strokes = strokesMod_1;\n }\n var labelFieldDefinition = params.category.id === ChartDataModel.DEFAULT_CATEGORY ? undefined : params.category;\n var previousSeries;\n var seriesOverrides = this.chartOptions[this.standaloneChartType].series;\n seriesDefinitions.forEach(function (seriesDefinition, index) {\n var existingSeries = existingSeriesById.get(seriesDefinition.yField.colId);\n var series = existingSeries || AgChart.createComponent(__assign(__assign({}, seriesOverrides), { type: 'scatter' }), 'scatter.series');\n if (!series) {\n return;\n }\n var _a = seriesDefinition, xFieldDefinition = _a.xField, yFieldDefinition = _a.yField, sizeFieldDefinition = _a.sizeField;\n series.title = yFieldDefinition.displayName + \" vs \" + xFieldDefinition.displayName;\n series.xKey = xFieldDefinition.colId;\n series.xName = xFieldDefinition.displayName;\n series.yKey = yFieldDefinition.colId;\n series.yName = yFieldDefinition.displayName;\n series.data = params.data;\n series.fill = fills[index % fills.length];\n series.stroke = strokes[index % strokes.length];\n if (sizeFieldDefinition) {\n series.sizeKey = sizeFieldDefinition.colId;\n series.sizeName = sizeFieldDefinition.displayName;\n }\n else {\n series.sizeKey = undefined;\n }\n if (labelFieldDefinition) {\n series.labelKey = labelFieldDefinition.id;\n series.labelName = labelFieldDefinition.name;\n }\n else {\n series.labelKey = series.yKey;\n }\n var isFilteredOutYKey = yFieldDefinition.colId.indexOf('-filtered-out') > -1;\n if (_this.crossFiltering) {\n if (!isFilteredOutYKey) {\n // sync toggling of legend item with hidden 'filtered out' item\n chart.legend.addEventListener('click', function (event) {\n series.toggleSeriesItem(event.itemId + '-filtered-out', event.enabled);\n });\n }\n if (dataDomain) {\n series.marker.domain = dataDomain;\n }\n chart.tooltip.delay = 500;\n // hide 'filtered out' legend items\n if (isFilteredOutYKey) {\n series.showInLegend = false;\n }\n // add node click cross filtering callback to series\n series.addEventListener('nodeClick', _this.crossFilterCallback);\n }\n if (!existingSeries) {\n chart.addSeriesAfter(series, previousSeries);\n }\n previousSeries = series;\n });\n };\n ScatterChartProxy.prototype.getSeriesDefinitions = function (fields, paired) {\n if (fields.length < 2) {\n return [];\n }\n var isBubbleChart = this.chartType === 'bubble';\n if (paired) {\n if (isBubbleChart) {\n return fields.map(function (currentXField, i) { return i % 3 === 0 ? ({\n xField: currentXField,\n yField: fields[i + 1],\n sizeField: fields[i + 2],\n }) : null; }).filter(function (x) { return x && x.yField && x.sizeField; });\n }\n return fields.map(function (currentXField, i) { return i % 2 === 0 ? ({\n xField: currentXField,\n yField: fields[i + 1],\n }) : null; }).filter(function (x) { return x && x.yField; });\n }\n var xField = fields[0];\n if (isBubbleChart) {\n return fields\n .map(function (yField, i) { return i % 2 === 1 ? ({\n xField: xField,\n yField: yField,\n sizeField: fields[i + 1],\n }) : null; })\n .filter(function (x) { return x && x.sizeField; });\n }\n return fields.filter(function (value, i) { return i > 0; }).map(function (yField) { return ({ xField: xField, yField: yField }); });\n };\n ScatterChartProxy.prototype.getCrossFilteringDataDomain = function (seriesDefinitions, params) {\n var domain;\n if (seriesDefinitions[0] && seriesDefinitions[0].sizeField) {\n var sizeColId_1 = seriesDefinitions[0].sizeField.colId;\n var allSizePoints_1 = [];\n params.data.forEach(function (d) {\n if (typeof d[sizeColId_1] !== 'undefined') {\n allSizePoints_1.push(d[sizeColId_1]);\n }\n if (typeof d[sizeColId_1 + '-filtered-out'] !== 'undefined') {\n allSizePoints_1.push(d[sizeColId_1 + '-filtered-out']);\n }\n });\n if (allSizePoints_1.length > 0) {\n domain = [Math.min.apply(Math, __spread(allSizePoints_1)), Math.max.apply(Math, __spread(allSizePoints_1))];\n }\n }\n return domain;\n };\n ScatterChartProxy.prototype.getAxes = function () {\n var axisOptions = this.getAxesOptions();\n return [\n __assign(__assign({}, deepMerge(axisOptions[this.xAxisType], axisOptions[this.xAxisType].bottom)), { type: this.xAxisType, position: ChartAxisPosition.Bottom }),\n __assign(__assign({}, deepMerge(axisOptions[this.yAxisType], axisOptions[this.yAxisType].left)), { type: this.yAxisType, position: ChartAxisPosition.Left }),\n ];\n };\n return ScatterChartProxy;\n}(CartesianChartProxy));\nexport { ScatterChartProxy };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __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};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nimport { AgChart, ChartAxisPosition } from \"ag-charts-community\";\nimport { CartesianChartProxy } from \"./cartesianChartProxy\";\nimport { deepMerge } from \"../../utils/object\";\nvar HistogramChartProxy = /** @class */ (function (_super) {\n __extends(HistogramChartProxy, _super);\n function HistogramChartProxy(params) {\n var _this = _super.call(this, params) || this;\n _this.xAxisType = 'number';\n _this.yAxisType = 'number';\n _this.recreateChart();\n return _this;\n }\n HistogramChartProxy.prototype.createChart = function () {\n return AgChart.create({\n container: this.chartProxyParams.parentElement,\n theme: this.chartTheme,\n axes: this.getAxes(),\n series: [__assign(__assign({}, this.chartOptions[this.standaloneChartType].series), { type: 'histogram' })]\n });\n };\n HistogramChartProxy.prototype.update = function (params) {\n var _a = __read(params.fields, 1), xField = _a[0];\n var chart = this.chart;\n var series = chart.series[0];\n series.data = params.data;\n series.xKey = xField.colId;\n series.xName = xField.displayName;\n // for now, only constant width is supported via integrated charts\n series.areaPlot = false;\n series.fill = this.chartTheme.palette.fills[0];\n series.stroke = this.chartTheme.palette.strokes[0];\n };\n HistogramChartProxy.prototype.getAxes = function () {\n var axisOptions = this.getAxesOptions();\n return [\n __assign(__assign({}, deepMerge(axisOptions[this.xAxisType], axisOptions[this.xAxisType].bottom)), { type: this.xAxisType, position: ChartAxisPosition.Bottom }),\n __assign(__assign({}, deepMerge(axisOptions[this.yAxisType], axisOptions[this.yAxisType].left)), { type: this.yAxisType, position: ChartAxisPosition.Left }),\n ];\n };\n return HistogramChartProxy;\n}(CartesianChartProxy));\nexport { HistogramChartProxy };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { _, Autowired, BeanStub, Events } from \"@ag-grid-community/core\";\nimport { AreaSeries, BarSeries, CategoryAxis, GroupedCategoryAxis, HistogramSeries, LineSeries, NumberAxis, PieSeries, ScatterSeries, TimeAxis } from \"ag-charts-community\";\nimport { getSeriesType } from \"../utils/seriesTypeMapper\";\nvar ChartOptionsService = /** @class */ (function (_super) {\n __extends(ChartOptionsService, _super);\n function ChartOptionsService(chartController) {\n var _this = _super.call(this) || this;\n _this.chartController = chartController;\n return _this;\n }\n ChartOptionsService.prototype.getChartType = function () {\n return this.chartController.getChartType();\n };\n ChartOptionsService.prototype.getChartOption = function (expression) {\n return _.get(this.getChart(), expression, undefined);\n };\n ChartOptionsService.prototype.setChartOption = function (expression, value) {\n var _this = this;\n // update chart options\n this.chartController.getChartSeriesTypes().forEach(function (optionsType) {\n var options = _.get(_this.getChartOptions(), \"\" + optionsType, undefined);\n _.set(options, expression, value);\n });\n // update chart\n _.set(this.getChart(), expression, value);\n this.raiseChartOptionsChangedEvent();\n };\n ChartOptionsService.prototype.getAxisProperty = function (expression) {\n return _.get(this.getChart().axes[0], expression, undefined);\n };\n ChartOptionsService.prototype.setAxisProperty = function (expression, value) {\n var _this = this;\n var chart = this.getChart();\n chart.axes.forEach(function (axis) {\n // update axis options\n _this.updateAxisOptions(axis, expression, value);\n // update chart axis\n _.set(axis, expression, value);\n });\n // chart axis properties are not reactive, need to schedule a layout\n chart.layoutPending = true;\n this.raiseChartOptionsChangedEvent();\n };\n ChartOptionsService.prototype.getLabelRotation = function (axisType) {\n var axis = this.getAxis(axisType);\n return _.get(axis, 'label.rotation', undefined);\n };\n ChartOptionsService.prototype.setLabelRotation = function (axisType, value) {\n var expression = 'label.rotation';\n // update chart\n var chartAxis = this.getAxis(axisType);\n _.set(chartAxis, expression, value);\n // chart axis properties are not reactive, need to schedule a layout\n this.getChart().layoutPending = true;\n // do not update axis options when the default category is selected\n if (chartAxis && !this.chartController.isDefaultCategorySelected()) {\n this.updateAxisOptions(chartAxis, expression, value);\n this.raiseChartOptionsChangedEvent();\n }\n };\n ChartOptionsService.prototype.getSeriesOption = function (expression, seriesType) {\n var series = this.getChart().series.find(function (s) { return ChartOptionsService.isMatchingSeries(seriesType, s); });\n return _.get(series, expression, undefined);\n };\n ChartOptionsService.prototype.setSeriesOption = function (expression, value, seriesType) {\n // update series options\n var options = this.getChartOptions();\n if (!options[seriesType]) {\n options[seriesType] = {};\n }\n _.set(options[seriesType].series, expression, value);\n // update chart series\n this.getChart().series.forEach(function (s) {\n if (ChartOptionsService.isMatchingSeries(seriesType, s)) {\n _.set(s, expression, value);\n }\n });\n this.raiseChartOptionsChangedEvent();\n };\n ChartOptionsService.prototype.getPairedMode = function () {\n var optionsType = getSeriesType(this.getChartType());\n return _.get(this.getChartOptions(), optionsType + \".paired\", undefined);\n };\n ChartOptionsService.prototype.setPairedMode = function (paired) {\n var optionsType = getSeriesType(this.getChartType());\n var options = _.get(this.getChartOptions(), \"\" + optionsType, undefined);\n _.set(options, 'paired', paired);\n };\n ChartOptionsService.prototype.getChart = function () {\n return this.chartController.getChartProxy().getChart();\n };\n ChartOptionsService.prototype.getChartOptions = function () {\n return this.chartController.getChartProxy().getChartOptions();\n };\n ChartOptionsService.prototype.getAxis = function (axisType) {\n var chart = this.getChart();\n if (!chart.axes || chart.axes.length < 1) {\n return undefined;\n }\n if (axisType === 'xAxis') {\n return (chart.axes && chart.axes[0].direction === 'x') ? chart.axes[0] : chart.axes[1];\n }\n return (chart.axes && chart.axes[1].direction === 'y') ? chart.axes[1] : chart.axes[0];\n };\n ChartOptionsService.prototype.updateAxisOptions = function (chartAxis, expression, value) {\n var optionsType = getSeriesType(this.getChartType());\n var axisOptions = this.getChartOptions()[optionsType].axes;\n if (chartAxis instanceof NumberAxis) {\n _.set(axisOptions.number, expression, value);\n }\n else if (chartAxis instanceof CategoryAxis) {\n _.set(axisOptions.category, expression, value);\n }\n else if (chartAxis instanceof TimeAxis) {\n _.set(axisOptions.time, expression, value);\n }\n else if (chartAxis instanceof GroupedCategoryAxis) {\n _.set(axisOptions.groupedCategory, expression, value);\n }\n };\n ChartOptionsService.prototype.raiseChartOptionsChangedEvent = function () {\n var chartModel = this.chartController.getChartModel();\n var event = Object.freeze({\n type: Events.EVENT_CHART_OPTIONS_CHANGED,\n chartId: chartModel.chartId,\n chartType: chartModel.chartType,\n chartThemeName: chartModel.chartThemeName,\n chartOptions: chartModel.chartOptions,\n api: this.gridApi,\n columnApi: this.columnApi,\n });\n this.eventService.dispatchEvent(event);\n };\n ChartOptionsService.isMatchingSeries = function (seriesType, series) {\n return seriesType === 'area' && series instanceof AreaSeries ? true :\n seriesType === 'bar' && series instanceof BarSeries ? true :\n seriesType === 'column' && series instanceof BarSeries ? true :\n seriesType === 'histogram' && series instanceof HistogramSeries ? true :\n seriesType === 'line' && series instanceof LineSeries ? true :\n seriesType === 'pie' && series instanceof PieSeries ? true :\n seriesType === 'scatter' && series instanceof ScatterSeries;\n };\n ChartOptionsService.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Autowired('gridApi')\n ], ChartOptionsService.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('columnApi')\n ], ChartOptionsService.prototype, \"columnApi\", void 0);\n return ChartOptionsService;\n}(BeanStub));\nexport { ChartOptionsService };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __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};\nimport { AgChart, ChartAxisPosition } from \"ag-charts-community\";\nimport { _ } from \"@ag-grid-community/core\";\nimport { CartesianChartProxy } from \"../cartesian/cartesianChartProxy\";\nimport { deepMerge } from \"../../utils/object\";\nimport { getSeriesType } from \"../../utils/seriesTypeMapper\";\nvar ComboChartProxy = /** @class */ (function (_super) {\n __extends(ComboChartProxy, _super);\n function ComboChartProxy(params) {\n var _this = _super.call(this, params) || this;\n _this.xAxisType = params.grouping ? 'groupedCategory' : 'category';\n _this.yAxisType = 'number';\n _this.recreateChart();\n return _this;\n }\n ComboChartProxy.prototype.createChart = function () {\n return AgChart.create({\n container: this.chartProxyParams.parentElement,\n theme: this.chartTheme,\n });\n };\n ComboChartProxy.prototype.update = function (params) {\n var category = params.category, data = params.data;\n var options = {\n data: this.transformData(data, category.id)\n };\n if (this.seriesChanged(params)) {\n options.series = this.getSeriesOptions(params);\n options.axes = this.getAxes(params);\n }\n AgChart.update(this.chart, options);\n this.updateLabelRotation(params.category.id);\n };\n ComboChartProxy.prototype.seriesChanged = function (params) {\n var seriesChartTypes = params.seriesChartTypes;\n var seriesChartTypesChanged = !_.areEqual(this.prevSeriesChartTypes, seriesChartTypes, function (s1, s2) { return s1.colId === s2.colId && s1.chartType === s2.chartType && s1.secondaryAxis === s2.secondaryAxis; });\n // cache a cloned copy of `seriesChartTypes` for subsequent comparisons\n this.prevSeriesChartTypes = seriesChartTypes.map(function (s) { return (__assign({}, s)); });\n // check if any fields have changed\n var fields = params.fields.map(function (f) { return f.colId; }).join();\n var fieldsChanged = this.prevFields !== fields;\n this.prevFields = fields;\n // check if the category has changed\n var categoryId = params.category.id;\n var categoryChanged = this.prevCategoryId !== categoryId;\n this.prevCategoryId = categoryId;\n return seriesChartTypesChanged || fieldsChanged || categoryChanged;\n };\n ComboChartProxy.prototype.getSeriesOptions = function (params) {\n var _this = this;\n var fields = params.fields, category = params.category, seriesChartTypes = params.seriesChartTypes;\n return fields.map(function (field) {\n var seriesChartType = seriesChartTypes.find(function (s) { return s.colId === field.colId; });\n if (seriesChartType) {\n var chartType = seriesChartType.chartType;\n return __assign(__assign({}, _this.extractSeriesOverrides(seriesChartType)), { type: getSeriesType(chartType), xKey: category.id, yKey: field.colId, yName: field.displayName, grouped: ['groupedColumn', 'groupedBar', 'groupedArea'].includes(chartType), stacked: ['stackedArea', 'stackedColumn'].includes(chartType) });\n }\n });\n };\n ComboChartProxy.prototype.getAxes = function (updateParams) {\n var _this = this;\n this.xAxisType = updateParams.grouping ? 'groupedCategory' : 'category';\n var fields = updateParams ? updateParams.fields : [];\n var fieldsMap = new Map(fields.map(function (f) { return [f.colId, f]; }));\n var _a = this.getYKeys(fields, updateParams.seriesChartTypes), primaryYKeys = _a.primaryYKeys, secondaryYKeys = _a.secondaryYKeys;\n var _b = this.getAxisOptions(), bottomOptions = _b.bottomOptions, leftOptions = _b.leftOptions, rightOptions = _b.rightOptions;\n var axes = [\n __assign(__assign({}, bottomOptions), { type: this.xAxisType, position: ChartAxisPosition.Bottom, gridStyle: [\n { strokeWidth: 0 },\n ] }),\n ];\n if (primaryYKeys.length > 0) {\n axes.push(__assign(__assign({}, leftOptions), { type: this.yAxisType, keys: primaryYKeys, position: ChartAxisPosition.Left, title: __assign({}, deepMerge(leftOptions.title, {\n enabled: true,\n text: primaryYKeys.map(function (key) {\n var field = fieldsMap.get(key);\n return field ? field.displayName : key;\n }).join(' / '),\n })) }));\n }\n if (secondaryYKeys.length > 0) {\n secondaryYKeys.forEach(function (secondaryYKey, i) {\n var field = fieldsMap.get(secondaryYKey);\n var secondaryAxisIsVisible = field && field.colId === secondaryYKey;\n if (!secondaryAxisIsVisible) {\n return;\n }\n var secondaryAxisOptions = __assign(__assign({}, rightOptions), { type: _this.yAxisType, keys: [secondaryYKey], position: ChartAxisPosition.Right, title: __assign({}, deepMerge(rightOptions.title, {\n enabled: true,\n text: field ? field.displayName : secondaryYKey,\n })) });\n var primaryYAxis = primaryYKeys.some(function (primaryYKey) { return !!fieldsMap.get(primaryYKey); });\n var lastSecondaryAxis = i === secondaryYKeys.length - 1;\n if (!primaryYAxis && lastSecondaryAxis) {\n // don't remove grid lines from the secondary axis closest to the chart, i.e. last supplied\n }\n else {\n secondaryAxisOptions.gridStyle = [\n { strokeWidth: 0 },\n ];\n }\n axes.push(secondaryAxisOptions);\n });\n }\n return axes;\n };\n ComboChartProxy.prototype.getAxisOptions = function () {\n var axisOptions = this.getAxesOptions('cartesian');\n return {\n bottomOptions: deepMerge(axisOptions[this.xAxisType], axisOptions[this.xAxisType].bottom),\n leftOptions: deepMerge(axisOptions[this.yAxisType], axisOptions[this.yAxisType].left),\n rightOptions: deepMerge(axisOptions[this.yAxisType], axisOptions[this.yAxisType].right),\n };\n };\n ComboChartProxy.prototype.getYKeys = function (fields, seriesChartTypes) {\n var primaryYKeys = [];\n var secondaryYKeys = [];\n fields.forEach(function (field) {\n var colId = field.colId;\n var seriesChartType = seriesChartTypes.find(function (s) { return s.colId === colId; });\n if (seriesChartType) {\n seriesChartType.secondaryAxis ? secondaryYKeys.push(colId) : primaryYKeys.push(colId);\n }\n });\n return { primaryYKeys: primaryYKeys, secondaryYKeys: secondaryYKeys };\n };\n ComboChartProxy.prototype.extractSeriesOverrides = function (seriesChartType) {\n var seriesOverrides = this.chartOptions[getSeriesType(seriesChartType.chartType)].series;\n // TODO: remove once `yKeys` and `yNames` have been removed from the options\n delete seriesOverrides.yKeys;\n delete seriesOverrides.yNames;\n return seriesOverrides;\n };\n return ComboChartProxy;\n}(CartesianChartProxy));\nexport { ComboChartProxy };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { _, AgDialog, Autowired, Component, Events, PostConstruct, RefSelector } from \"@ag-grid-community/core\";\nimport { ChartMenu } from \"./menu/chartMenu\";\nimport { TitleEdit } from \"./chartTitle/titleEdit\";\nimport { ChartController } from \"./chartController\";\nimport { ChartDataModel } from \"./chartDataModel\";\nimport { BarChartProxy } from \"./chartProxies/cartesian/barChartProxy\";\nimport { AreaChartProxy } from \"./chartProxies/cartesian/areaChartProxy\";\nimport { LineChartProxy } from \"./chartProxies/cartesian/lineChartProxy\";\nimport { PieChartProxy } from \"./chartProxies/polar/pieChartProxy\";\nimport { DoughnutChartProxy } from \"./chartProxies/polar/doughnutChartProxy\";\nimport { ScatterChartProxy } from \"./chartProxies/cartesian/scatterChartProxy\";\nimport { HistogramChartProxy } from \"./chartProxies/cartesian/histogramChartProxy\";\nimport { ChartOptionsService } from \"./services/chartOptionsService\";\nimport { ComboChartProxy } from \"./chartProxies/combo/comboChartProxy\";\nvar GridChartComp = /** @class */ (function (_super) {\n __extends(GridChartComp, _super);\n function GridChartComp(params) {\n var _this = _super.call(this, GridChartComp.TEMPLATE) || this;\n _this.params = params;\n return _this;\n }\n GridChartComp.prototype.init = function () {\n var availableChartThemes = this.gridOptionsWrapper.getChartThemes();\n if (availableChartThemes.length < 1) {\n throw new Error('Cannot create chart: no chart themes are available to be used.');\n }\n var chartThemeName = this.params.chartThemeName;\n if (!_.includes(availableChartThemes, chartThemeName)) {\n chartThemeName = availableChartThemes[0];\n }\n var modelParams = {\n chartId: this.params.chartId,\n pivotChart: this.params.pivotChart,\n chartType: this.params.chartType,\n chartThemeName: chartThemeName,\n aggFunc: this.params.aggFunc,\n cellRange: this.params.cellRange,\n suppressChartRanges: this.params.suppressChartRanges,\n unlinkChart: this.params.unlinkChart,\n crossFiltering: this.params.crossFiltering,\n seriesChartTypes: this.params.seriesChartTypes,\n };\n var isRtl = this.gridOptionsWrapper.isEnableRtl();\n this.addCssClass(isRtl ? 'ag-rtl' : 'ag-ltr');\n // only the chart controller interacts with the chart model\n var model = this.createBean(new ChartDataModel(modelParams));\n this.chartController = this.createManagedBean(new ChartController(model));\n this.validateCustomThemes();\n // create chart before dialog to ensure dialog is correct size\n this.createChart();\n if (this.params.insideDialog) {\n this.addDialog();\n }\n this.addMenu();\n this.addTitleEditComp();\n this.addManagedListener(this.getGui(), 'focusin', this.setActiveChartCellRange.bind(this));\n this.addManagedListener(this.chartController, ChartController.EVENT_CHART_UPDATED, this.refresh.bind(this));\n if (this.chartMenu) {\n // chart menu may not exist, i.e. cross filtering\n this.addManagedListener(this.chartMenu, ChartMenu.EVENT_DOWNLOAD_CHART, this.downloadChart.bind(this));\n }\n this.refresh();\n this.raiseChartCreatedEvent();\n };\n GridChartComp.prototype.validateCustomThemes = function () {\n var suppliedThemes = this.gridOptionsWrapper.getChartThemes();\n var customChartThemes = this.gridOptionsWrapper.getCustomChartThemes();\n if (customChartThemes) {\n _.getAllKeysInObjects([customChartThemes]).forEach(function (customThemeName) {\n if (!_.includes(suppliedThemes, customThemeName)) {\n console.warn(\"AG Grid: a custom chart theme with the name '\" + customThemeName + \"' has been \" +\n \"supplied but not added to the 'chartThemes' list\");\n }\n });\n }\n };\n GridChartComp.prototype.createChart = function () {\n var _this = this;\n // if chart already exists, destroy it and remove it from DOM\n if (this.chartProxy) {\n this.chartProxy.destroy();\n }\n var crossFilterCallback = function (event, reset) {\n var ctx = _this.params.crossFilteringContext;\n ctx.lastSelectedChartId = reset ? '' : _this.chartController.getChartId();\n _this.crossFilterService.filter(event, reset);\n };\n var chartType = this.chartController.getChartType();\n var chartProxyParams = {\n chartType: chartType,\n getChartThemeName: this.getChartThemeName.bind(this),\n getChartThemes: this.getChartThemes.bind(this),\n customChartThemes: this.gridOptionsWrapper.getCustomChartThemes(),\n getGridOptionsChartThemeOverrides: this.getGridOptionsChartThemeOverrides.bind(this),\n apiChartThemeOverrides: this.params.chartThemeOverrides,\n crossFiltering: this.params.crossFiltering,\n crossFilterCallback: crossFilterCallback,\n parentElement: this.eChart,\n grouping: this.chartController.isGrouping(),\n chartOptionsToRestore: this.params.chartOptionsToRestore,\n seriesChartTypes: this.chartController.getSeriesChartTypes()\n };\n // ensure 'restoring' options are not reused when switching chart types\n this.params.chartOptionsToRestore = undefined;\n // set local state used to detect when chart changes\n this.chartType = chartType;\n this.chartThemeName = this.chartController.getChartThemeName();\n this.chartProxy = GridChartComp.createChartProxy(chartProxyParams);\n if (!this.chartProxy) {\n console.warn('AG Grid: invalid chart type supplied: ', chartProxyParams.chartType);\n return;\n }\n var canvas = this.eChart.querySelector('canvas');\n if (canvas) {\n canvas.classList.add('ag-charts-canvas');\n }\n this.chartController.setChartProxy(this.chartProxy);\n this.chartOptionsService = this.createBean(new ChartOptionsService(this.chartController));\n this.titleEdit && this.titleEdit.refreshTitle(this.chartController, this.chartOptionsService);\n };\n GridChartComp.prototype.getChartThemeName = function () {\n return this.chartController.getChartThemeName();\n };\n GridChartComp.prototype.getChartThemes = function () {\n return this.chartController.getThemes();\n };\n GridChartComp.prototype.getGridOptionsChartThemeOverrides = function () {\n return this.gridOptionsWrapper.getChartThemeOverrides();\n };\n GridChartComp.createChartProxy = function (chartProxyParams) {\n switch (chartProxyParams.chartType) {\n case 'column':\n case 'bar':\n case 'groupedColumn':\n case 'stackedColumn':\n case 'normalizedColumn':\n case 'groupedBar':\n case 'stackedBar':\n case 'normalizedBar':\n return new BarChartProxy(chartProxyParams);\n case 'pie':\n return new PieChartProxy(chartProxyParams);\n case 'doughnut':\n return new DoughnutChartProxy(chartProxyParams);\n case 'area':\n case 'stackedArea':\n case 'normalizedArea':\n return new AreaChartProxy(chartProxyParams);\n case 'line':\n return new LineChartProxy(chartProxyParams);\n case 'scatter':\n case 'bubble':\n return new ScatterChartProxy(chartProxyParams);\n case 'histogram':\n return new HistogramChartProxy(chartProxyParams);\n case 'columnLineCombo':\n case 'areaColumnCombo':\n case 'customCombo':\n return new ComboChartProxy(chartProxyParams);\n default:\n throw \"AG Grid: Unable to create chart as an invalid chartType = '\" + chartProxyParams.chartType + \"' was supplied.\";\n }\n };\n GridChartComp.prototype.addDialog = function () {\n var _this = this;\n var title = this.chartTranslationService.translate(this.params.pivotChart ? 'pivotChartTitle' : 'rangeChartTitle');\n var _a = this.getBestDialogSize(), width = _a.width, height = _a.height;\n this.chartDialog = new AgDialog({\n resizable: true,\n movable: true,\n maximizable: true,\n title: title,\n width: width,\n height: height,\n component: this,\n centered: true,\n closable: true\n });\n this.getContext().createBean(this.chartDialog);\n this.chartDialog.addEventListener(AgDialog.EVENT_DESTROYED, function () { return _this.destroy(); });\n };\n GridChartComp.prototype.getBestDialogSize = function () {\n var popupParent = this.popupService.getPopupParent();\n var maxWidth = _.getAbsoluteWidth(popupParent) * 0.75;\n var maxHeight = _.getAbsoluteHeight(popupParent) * 0.75;\n var ratio = 0.553;\n var chart = this.chartProxy.getChart();\n var width = this.params.insideDialog ? 850 : chart.width;\n var height = this.params.insideDialog ? 470 : chart.height;\n if (width > maxWidth || height > maxHeight) {\n width = Math.min(width, maxWidth);\n height = Math.round(width * ratio);\n if (height > maxHeight) {\n height = maxHeight;\n width = Math.min(width, Math.round(height / ratio));\n }\n }\n return { width: width, height: height };\n };\n GridChartComp.prototype.addMenu = function () {\n if (!this.params.crossFiltering) {\n this.chartMenu = this.createBean(new ChartMenu(this.eChartContainer, this.eMenuContainer, this.chartController, this.chartOptionsService));\n this.eChartContainer.appendChild(this.chartMenu.getGui());\n }\n };\n GridChartComp.prototype.addTitleEditComp = function () {\n this.titleEdit = this.createBean(new TitleEdit(this.chartMenu));\n this.eTitleEditContainer.appendChild(this.titleEdit.getGui());\n if (this.chartProxy) {\n this.titleEdit.refreshTitle(this.chartController, this.chartOptionsService);\n }\n };\n GridChartComp.prototype.refresh = function () {\n if (this.shouldRecreateChart()) {\n this.createChart();\n }\n this.updateChart();\n };\n GridChartComp.prototype.shouldRecreateChart = function () {\n return this.chartType !== this.chartController.getChartType() || this.chartThemeName !== this.chartController.getChartThemeName();\n };\n GridChartComp.prototype.getCurrentChartType = function () {\n return this.chartType;\n };\n GridChartComp.prototype.getChartModel = function () {\n return this.chartController.getChartModel();\n };\n GridChartComp.prototype.getChartImageDataURL = function (fileFormat) {\n return this.chartProxy.getChartImageDataURL(fileFormat);\n };\n GridChartComp.prototype.updateChart = function () {\n var _this = this;\n var chartProxy = this.chartProxy;\n var selectedCols = this.chartController.getSelectedValueColState();\n var fields = selectedCols.map(function (c) { return ({ colId: c.colId, displayName: c.displayName }); });\n var data = this.chartController.getChartData();\n var chartEmpty = this.handleEmptyChart(data, fields);\n if (chartEmpty) {\n return;\n }\n var selectedDimension = this.chartController.getSelectedDimension();\n var chartUpdateParams = {\n data: data,\n grouping: this.chartController.isGrouping(),\n category: {\n id: selectedDimension.colId,\n name: selectedDimension.displayName,\n chartDataType: this.getChartDataType(selectedDimension.colId)\n },\n fields: fields,\n chartId: this.chartController.getChartId(),\n getCrossFilteringContext: function () { return _this.params.crossFilteringContext; },\n seriesChartTypes: this.chartController.getSeriesChartTypes()\n };\n chartProxy.update(chartUpdateParams);\n this.titleEdit.refreshTitle(this.chartController, this.chartOptionsService);\n };\n GridChartComp.prototype.getChartDataType = function (colId) {\n var column = this.columnModel.getPrimaryColumn(colId);\n return column ? column.getColDef().chartDataType : undefined;\n };\n GridChartComp.prototype.handleEmptyChart = function (data, fields) {\n var container = this.chartProxy.getChart().container;\n var pivotModeDisabled = this.chartController.isPivotChart() && !this.chartController.isPivotMode();\n var minFieldsRequired = 1;\n if (this.chartController.isActiveXYChart()) {\n minFieldsRequired = this.chartController.getChartType() === 'bubble' ? 3 : 2;\n }\n var isEmptyChart = fields.length < minFieldsRequired || data.length === 0;\n if (container) {\n var isEmpty = pivotModeDisabled || isEmptyChart;\n _.setDisplayed(this.eChart, !isEmpty);\n _.setDisplayed(this.eEmpty, isEmpty);\n }\n if (pivotModeDisabled) {\n this.eEmpty.innerText = this.chartTranslationService.translate('pivotChartRequiresPivotMode');\n return true;\n }\n if (isEmptyChart) {\n this.eEmpty.innerText = this.chartTranslationService.translate('noDataToChart');\n return true;\n }\n return false;\n };\n GridChartComp.prototype.downloadChart = function () {\n this.chartProxy.downloadChart();\n };\n GridChartComp.prototype.getChartId = function () {\n return this.chartController.getChartId();\n };\n GridChartComp.prototype.getUnderlyingChart = function () {\n return this.chartProxy.getChart();\n };\n GridChartComp.prototype.refreshCanvasSize = function () {\n if (!this.params.insideDialog) {\n return;\n }\n var eChart = this.eChart;\n if (this.chartMenu.isVisible()) {\n // we don't want the menu showing to affect the chart options\n var chart = this.chartProxy.getChart();\n chart.height = _.getInnerHeight(eChart);\n chart.width = _.getInnerWidth(eChart);\n }\n };\n GridChartComp.prototype.setActiveChartCellRange = function (focusEvent) {\n if (this.getGui().contains(focusEvent.relatedTarget)) {\n return;\n }\n this.chartController.setChartRange(true);\n this.gridApi.focusService.clearFocusedCell();\n };\n GridChartComp.prototype.raiseChartCreatedEvent = function () {\n var event = Object.freeze({\n type: Events.EVENT_CHART_CREATED,\n chartId: this.chartController.getChartId(),\n api: this.gridApi,\n columnApi: this.columnApi,\n });\n this.eventService.dispatchEvent(event);\n };\n GridChartComp.prototype.raiseChartDestroyedEvent = function () {\n var event = Object.freeze({\n type: Events.EVENT_CHART_DESTROYED,\n chartId: this.chartController.getChartId(),\n api: this.gridApi,\n columnApi: this.columnApi,\n });\n this.eventService.dispatchEvent(event);\n };\n GridChartComp.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.chartProxy) {\n this.chartProxy.destroy();\n }\n this.destroyBean(this.chartMenu);\n // don't want to invoke destroy() on the Dialog (prevents destroy loop)\n if (this.chartDialog && this.chartDialog.isAlive()) {\n this.destroyBean(this.chartDialog);\n }\n // if the user is providing containers for the charts, we need to clean up, otherwise the old chart\n // data will still be visible although the chart is no longer bound to the grid\n var eGui = this.getGui();\n _.clearElement(eGui);\n // remove from parent, so if user provided container, we detach from the provided dom element\n _.removeFromParent(eGui);\n this.raiseChartDestroyedEvent();\n };\n GridChartComp.TEMPLATE = \"
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \\n
    \";\n __decorate([\n RefSelector('eChart')\n ], GridChartComp.prototype, \"eChart\", void 0);\n __decorate([\n RefSelector('eChartContainer')\n ], GridChartComp.prototype, \"eChartContainer\", void 0);\n __decorate([\n RefSelector('eMenuContainer')\n ], GridChartComp.prototype, \"eMenuContainer\", void 0);\n __decorate([\n RefSelector('eEmpty')\n ], GridChartComp.prototype, \"eEmpty\", void 0);\n __decorate([\n RefSelector('eTitleEditContainer')\n ], GridChartComp.prototype, \"eTitleEditContainer\", void 0);\n __decorate([\n Autowired('environment')\n ], GridChartComp.prototype, \"environment\", void 0);\n __decorate([\n Autowired('columnModel')\n ], GridChartComp.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('chartCrossFilterService')\n ], GridChartComp.prototype, \"crossFilterService\", void 0);\n __decorate([\n Autowired('chartTranslationService')\n ], GridChartComp.prototype, \"chartTranslationService\", void 0);\n __decorate([\n Autowired('gridApi')\n ], GridChartComp.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('columnApi')\n ], GridChartComp.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('popupService')\n ], GridChartComp.prototype, \"popupService\", void 0);\n __decorate([\n PostConstruct\n ], GridChartComp.prototype, \"init\", null);\n return GridChartComp;\n}(Component));\nexport { GridChartComp };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __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};\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Bean, BeanStub, Optional, PreDestroy } from \"@ag-grid-community/core\";\nimport { GridChartComp } from \"./chartComp/gridChartComp\";\nimport { upgradeChartModel, CURRENT_VERSION } from \"./chartModelMigration\";\nvar ChartService = /** @class */ (function (_super) {\n __extends(ChartService, _super);\n function ChartService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // we destroy all charts bound to this grid when grid is destroyed. activeCharts contains all charts, including\n // those in developer provided containers.\n _this.activeCharts = new Set();\n _this.activeChartComps = new Set();\n // this shared (singleton) context is used by cross filtering in line and area charts\n _this.crossFilteringContext = {\n lastSelectedChartId: '',\n };\n return _this;\n }\n ChartService.prototype.getChartModels = function () {\n var models = [];\n var versionedModel = function (c) {\n return __assign(__assign({}, c), { version: CURRENT_VERSION });\n };\n this.activeChartComps.forEach(function (c) { return models.push(versionedModel(c.getChartModel())); });\n return models;\n };\n ChartService.prototype.getChartRef = function (chartId) {\n var chartRef;\n this.activeCharts.forEach(function (cr) {\n if (cr.chartId === chartId) {\n chartRef = cr;\n }\n });\n return chartRef;\n };\n ChartService.prototype.getChartImageDataURL = function (params) {\n var url;\n this.activeChartComps.forEach(function (c) {\n if (c.getChartId() === params.chartId) {\n url = c.getChartImageDataURL(params.fileFormat);\n }\n });\n return url;\n };\n ChartService.prototype.createChartFromCurrentRange = function (chartType) {\n if (chartType === void 0) { chartType = 'groupedColumn'; }\n var selectedRange = this.getSelectedRange();\n return this.createChart(selectedRange, chartType);\n };\n ChartService.prototype.restoreChart = function (model, chartContainer) {\n var _this = this;\n if (!model) {\n console.warn(\"AG Grid - unable to restore chart as no chart model is provided\");\n return;\n }\n if (model.version !== CURRENT_VERSION) {\n model = upgradeChartModel(model);\n }\n var params = {\n cellRange: model.cellRange,\n chartType: model.chartType,\n chartThemeName: model.chartThemeName,\n chartContainer: chartContainer,\n suppressChartRanges: model.suppressChartRanges,\n aggFunc: model.aggFunc,\n unlinkChart: model.unlinkChart,\n seriesChartTypes: model.seriesChartTypes\n };\n var getCellRange = function (cellRangeParams) {\n return _this.rangeService\n ? _this.rangeService.createCellRangeFromCellRangeParams(cellRangeParams)\n : undefined;\n };\n if (model.modelType === 'pivot') {\n // if required enter pivot mode\n if (!this.columnModel.isPivotMode()) {\n this.columnModel.setPivotMode(true, \"pivotChart\");\n }\n // pivot chart range contains all visible column without a row range to include all rows\n var columns = this.columnModel.getAllDisplayedColumns().map(function (col) { return col.getColId(); });\n var chartAllRangeParams = { rowStartIndex: null, rowEndIndex: null, columns: columns };\n var cellRange_1 = getCellRange(chartAllRangeParams);\n if (!cellRange_1) {\n console.warn(\"AG Grid - unable to create chart as there are no columns in the grid.\");\n return;\n }\n return this.createChart(cellRange_1, params.chartType, params.chartThemeName, true, true, params.chartContainer, undefined, undefined, params.unlinkChart, false, model.chartOptions);\n }\n var cellRange = getCellRange(params.cellRange);\n if (!cellRange) {\n console.warn(\"AG Grid - unable to create chart as no range is selected\");\n return;\n }\n return this.createChart(cellRange, params.chartType, params.chartThemeName, false, params.suppressChartRanges, params.chartContainer, params.aggFunc, undefined, params.unlinkChart, false, model.chartOptions, params.seriesChartTypes);\n };\n ChartService.prototype.createRangeChart = function (params) {\n var cellRange = this.rangeService\n ? this.rangeService.createCellRangeFromCellRangeParams(params.cellRange)\n : undefined;\n if (!cellRange) {\n console.warn(\"AG Grid - unable to create chart as no range is selected\");\n return;\n }\n return this.createChart(cellRange, params.chartType, params.chartThemeName, false, params.suppressChartRanges, params.chartContainer, params.aggFunc, params.chartThemeOverrides, params.unlinkChart, undefined, undefined, params.seriesChartTypes);\n };\n ChartService.prototype.createPivotChart = function (params) {\n // if required enter pivot mode\n if (!this.columnModel.isPivotMode()) {\n this.columnModel.setPivotMode(true, \"pivotChart\");\n }\n // pivot chart range contains all visible column without a row range to include all rows\n var chartAllRangeParams = {\n rowStartIndex: null,\n rowEndIndex: null,\n columns: this.columnModel.getAllDisplayedColumns().map(function (col) { return col.getColId(); })\n };\n var cellRange = this.rangeService\n ? this.rangeService.createCellRangeFromCellRangeParams(chartAllRangeParams)\n : undefined;\n if (!cellRange) {\n console.warn(\"AG Grid - unable to create chart as there are no columns in the grid.\");\n return;\n }\n return this.createChart(cellRange, params.chartType, params.chartThemeName, true, true, params.chartContainer, undefined, params.chartThemeOverrides, params.unlinkChart);\n };\n ChartService.prototype.createCrossFilterChart = function (params) {\n var cellRange = this.rangeService\n ? this.rangeService.createCellRangeFromCellRangeParams(params.cellRange)\n : undefined;\n if (!cellRange) {\n console.warn(\"AG Grid - unable to create chart as no range is selected\");\n return;\n }\n var crossFiltering = true;\n var suppressChartRangesSupplied = typeof params.suppressChartRanges !== 'undefined' && params.suppressChartRanges !== null;\n var suppressChartRanges = suppressChartRangesSupplied ? params.suppressChartRanges : true;\n return this.createChart(cellRange, params.chartType, params.chartThemeName, false, suppressChartRanges, params.chartContainer, params.aggFunc, params.chartThemeOverrides, params.unlinkChart, crossFiltering);\n };\n ChartService.prototype.createChart = function (cellRange, chartType, chartThemeName, pivotChart, suppressChartRanges, container, aggFunc, chartThemeOverrides, unlinkChart, crossFiltering, chartOptionsToRestore, seriesChartTypes) {\n var _this = this;\n if (pivotChart === void 0) { pivotChart = false; }\n if (suppressChartRanges === void 0) { suppressChartRanges = false; }\n if (unlinkChart === void 0) { unlinkChart = false; }\n if (crossFiltering === void 0) { crossFiltering = false; }\n var createChartContainerFunc = this.gridOptionsWrapper.getCreateChartContainerFunc();\n var params = {\n chartId: this.generateId(),\n pivotChart: pivotChart,\n cellRange: cellRange,\n chartType: chartType,\n chartThemeName: chartThemeName,\n insideDialog: !(container || createChartContainerFunc),\n suppressChartRanges: suppressChartRanges,\n aggFunc: aggFunc,\n chartThemeOverrides: chartThemeOverrides,\n unlinkChart: unlinkChart,\n crossFiltering: crossFiltering,\n crossFilteringContext: this.crossFilteringContext,\n chartOptionsToRestore: chartOptionsToRestore,\n seriesChartTypes: seriesChartTypes\n };\n var chartComp = new GridChartComp(params);\n this.context.createBean(chartComp);\n var chartRef = this.createChartRef(chartComp);\n if (container) {\n // if container exists, means developer initiated chart create via API, so place in provided container\n container.appendChild(chartComp.getGui());\n // if the chart container was placed outside of an element that\n // has the grid's theme, we manually add the current theme to\n // make sure all styles for the chartMenu are rendered correctly\n var theme = this.environment.getTheme();\n if (theme.el && !theme.el.contains(container)) {\n container.classList.add(theme.theme);\n }\n }\n else if (createChartContainerFunc) {\n // otherwise user created chart via grid UI, check if developer provides containers (eg if the application\n // is using its own dialogs rather than the grid provided dialogs)\n createChartContainerFunc(chartRef);\n }\n else {\n // add listener to remove from active charts list when charts are destroyed, e.g. closing chart dialog\n chartComp.addEventListener(GridChartComp.EVENT_DESTROYED, function () {\n _this.activeChartComps.delete(chartComp);\n _this.activeCharts.delete(chartRef);\n });\n }\n return chartRef;\n };\n ChartService.prototype.createChartRef = function (chartComp) {\n var _this = this;\n var chartRef = {\n destroyChart: function () {\n if (_this.activeCharts.has(chartRef)) {\n _this.context.destroyBean(chartComp);\n _this.activeChartComps.delete(chartComp);\n _this.activeCharts.delete(chartRef);\n }\n },\n chartElement: chartComp.getGui(),\n chart: chartComp.getUnderlyingChart(),\n chartId: chartComp.getChartModel().chartId\n };\n this.activeCharts.add(chartRef);\n this.activeChartComps.add(chartComp);\n return chartRef;\n };\n ChartService.prototype.getSelectedRange = function () {\n var ranges = this.rangeService.getCellRanges();\n return ranges.length > 0 ? ranges[0] : {};\n };\n ChartService.prototype.generateId = function () {\n return 'id-' + Math.random().toString(36).substr(2, 16);\n };\n ChartService.prototype.destroyAllActiveCharts = function () {\n this.activeCharts.forEach(function (chart) { return chart.destroyChart(); });\n };\n __decorate([\n Optional('rangeService')\n ], ChartService.prototype, \"rangeService\", void 0);\n __decorate([\n Autowired('columnModel')\n ], ChartService.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('environment')\n ], ChartService.prototype, \"environment\", void 0);\n __decorate([\n PreDestroy\n ], ChartService.prototype, \"destroyAllActiveCharts\", null);\n ChartService = __decorate([\n Bean('chartService')\n ], ChartService);\n return ChartService;\n}(BeanStub));\nexport { ChartService };\n","// the line below is automatically modified during releases - do not modify\n// (see scripts/release/updateChartModel.js)\nexport var CURRENT_VERSION = \"27.1.0\";\nexport function upgradeChartModel(model) {\n if (model.version == null) {\n // First release with version field.\n model.version = \"27.1.0\";\n }\n var _a = versionParts(model.version), major = _a.major, minor = _a.minor, patch = _a.patch;\n // TODO: Add some transforms as the model changes over time.\n // if (major < 28) {\n // model = migrateToV28Model(model);\n // }\n return model;\n}\nfunction versionParts(version) {\n if (!/^([:digits:]{1,2}\\.){2}[:digits:]{1}$/.test(version)) {\n throw new Error('AG Grid - Illegal version string: ' + version);\n }\n var split = version.split('.')\n .map(function (v) { return Number(v); });\n return {\n major: split[0],\n minor: split[1],\n patch: split[2],\n };\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Bean, BeanStub } from \"@ag-grid-community/core\";\nvar ChartTranslationService = /** @class */ (function (_super) {\n __extends(ChartTranslationService, _super);\n function ChartTranslationService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ChartTranslationService_1 = ChartTranslationService;\n ChartTranslationService.prototype.translate = function (toTranslate, defaultText) {\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var defaultTranslation = ChartTranslationService_1.DEFAULT_TRANSLATIONS[toTranslate] || defaultText;\n return translate(toTranslate, defaultTranslation);\n };\n var ChartTranslationService_1;\n ChartTranslationService.DEFAULT_TRANSLATIONS = {\n pivotChartTitle: 'Pivot Chart',\n rangeChartTitle: 'Range Chart',\n settings: 'Settings',\n data: 'Data',\n format: 'Format',\n categories: 'Categories',\n defaultCategory: '(None)',\n series: 'Series',\n xyValues: 'X Y Values',\n paired: 'Paired Mode',\n axis: 'Axis',\n navigator: 'Navigator',\n color: 'Color',\n thickness: 'Thickness',\n xType: 'X Type',\n automatic: 'Automatic',\n category: 'Category',\n number: 'Number',\n time: 'Time',\n xRotation: 'X Rotation',\n yRotation: 'Y Rotation',\n ticks: 'Ticks',\n width: 'Width',\n height: 'Height',\n length: 'Length',\n padding: 'Padding',\n spacing: 'Spacing',\n chart: 'Chart',\n title: 'Title',\n titlePlaceholder: 'Chart title - double click to edit',\n background: 'Background',\n font: 'Font',\n top: 'Top',\n right: 'Right',\n bottom: 'Bottom',\n left: 'Left',\n labels: 'Labels',\n size: 'Size',\n shape: 'Shape',\n minSize: 'Minimum Size',\n maxSize: 'Maximum Size',\n legend: 'Legend',\n position: 'Position',\n markerSize: 'Marker Size',\n markerStroke: 'Marker Stroke',\n markerPadding: 'Marker Padding',\n itemSpacing: 'Item Spacing',\n itemPaddingX: 'Item Padding X',\n itemPaddingY: 'Item Padding Y',\n layoutHorizontalSpacing: 'Horizontal Spacing',\n layoutVerticalSpacing: 'Vertical Spacing',\n strokeWidth: 'Stroke Width',\n offset: 'Offset',\n offsets: 'Offsets',\n tooltips: 'Tooltips',\n callout: 'Callout',\n markers: 'Markers',\n shadow: 'Shadow',\n blur: 'Blur',\n xOffset: 'X Offset',\n yOffset: 'Y Offset',\n lineWidth: 'Line Width',\n lineDash: 'Line Dash',\n normal: 'Normal',\n bold: 'Bold',\n italic: 'Italic',\n boldItalic: 'Bold Italic',\n predefined: 'Predefined',\n fillOpacity: 'Fill Opacity',\n strokeOpacity: 'Line Opacity',\n histogramBinCount: 'Bin count',\n columnGroup: 'Column',\n barGroup: 'Bar',\n pieGroup: 'Pie',\n lineGroup: 'Line',\n scatterGroup: 'X Y (Scatter)',\n areaGroup: 'Area',\n histogramGroup: 'Histogram',\n combinationGroup: 'Combination',\n groupedColumnTooltip: 'Grouped',\n stackedColumnTooltip: 'Stacked',\n normalizedColumnTooltip: '100% Stacked',\n groupedBarTooltip: 'Grouped',\n stackedBarTooltip: 'Stacked',\n normalizedBarTooltip: '100% Stacked',\n pieTooltip: 'Pie',\n doughnutTooltip: 'Doughnut',\n lineTooltip: 'Line',\n groupedAreaTooltip: 'Area',\n stackedAreaTooltip: 'Stacked',\n normalizedAreaTooltip: '100% Stacked',\n scatterTooltip: 'Scatter',\n bubbleTooltip: 'Bubble',\n histogramTooltip: 'Histogram',\n columnLineComboTooltip: 'Column & Line',\n areaColumnComboTooltip: 'Area & Column',\n customComboTooltip: 'Custom Combination',\n noDataToChart: 'No data available to be charted.',\n pivotChartRequiresPivotMode: 'Pivot Chart requires Pivot Mode enabled.',\n chartSettingsToolbarTooltip: 'Menu',\n chartLinkToolbarTooltip: 'Linked to Grid',\n chartUnlinkToolbarTooltip: 'Unlinked from Grid',\n chartDownloadToolbarTooltip: 'Download Chart',\n seriesChartType: 'Series Chart Type',\n seriesType: 'Series Type',\n secondaryAxis: 'Secondary Axis',\n };\n ChartTranslationService = ChartTranslationService_1 = __decorate([\n Bean(\"chartTranslationService\")\n ], ChartTranslationService);\n return ChartTranslationService;\n}(BeanStub));\nexport { ChartTranslationService };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { _, Autowired, Bean, BeanStub } from \"@ag-grid-community/core\";\nvar ChartCrossFilterService = /** @class */ (function (_super) {\n __extends(ChartCrossFilterService, _super);\n function ChartCrossFilterService() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ChartCrossFilterService_1 = ChartCrossFilterService;\n ChartCrossFilterService.prototype.filter = function (event, reset) {\n if (reset === void 0) { reset = false; }\n var filterModel = this.gridApi.getFilterModel();\n // filters should be reset when user clicks on canvas background\n if (reset) {\n this.resetFilters(filterModel);\n return;\n }\n var colId = ChartCrossFilterService_1.extractFilterColId(event);\n if (this.isValidColumnFilter(colId)) {\n // update filters based on current chart selections\n this.updateFilters(filterModel, event);\n }\n else {\n console.warn(\"AG Grid: cross filtering requires a 'agSetColumnFilter' or 'agMultiColumnFilter' \" +\n \"to be defined on the column with id: '\" + colId + \"'\");\n }\n };\n ChartCrossFilterService.prototype.resetFilters = function (filterModel) {\n var filtersExist = Object.keys(filterModel).length > 0;\n if (filtersExist) {\n // only reset filters / charts when necessary to prevent undesirable flickering effect\n this.gridApi.setFilterModel(null);\n this.gridApi.onFilterChanged();\n }\n };\n ChartCrossFilterService.prototype.updateFilters = function (filterModel, event) {\n var _a;\n var dataKey = ChartCrossFilterService_1.extractFilterColId(event);\n var rawValue = event.datum[dataKey];\n if (rawValue === undefined) {\n return;\n }\n var selectedValue = rawValue.toString();\n var filterColId = dataKey.replace('-filtered-out', '');\n if (event.event.metaKey || event.event.ctrlKey) {\n var existingGridValues = this.getCurrentGridValuesForCategory(filterColId);\n var valueAlreadyExists = _.includes(existingGridValues, selectedValue);\n var updatedValues = void 0;\n if (valueAlreadyExists) {\n updatedValues = existingGridValues.filter(function (v) { return v !== selectedValue; });\n }\n else {\n updatedValues = existingGridValues;\n updatedValues.push(selectedValue);\n }\n filterModel[filterColId] = this.getUpdatedFilterModel(filterColId, updatedValues);\n }\n else {\n var updatedValues = [selectedValue];\n filterModel = (_a = {}, _a[filterColId] = this.getUpdatedFilterModel(filterColId, updatedValues), _a);\n }\n this.gridApi.setFilterModel(filterModel);\n };\n ChartCrossFilterService.prototype.getUpdatedFilterModel = function (colId, updatedValues) {\n var columnFilterType = this.getColumnFilterType(colId);\n if (columnFilterType === 'agMultiColumnFilter') {\n return { filterType: 'multi', filterModels: [null, { filterType: 'set', values: updatedValues }] };\n }\n return { filterType: 'set', values: updatedValues };\n };\n ChartCrossFilterService.prototype.getCurrentGridValuesForCategory = function (dataKey) {\n var filteredValues = [];\n var gridContainsValue = _.includes;\n this.gridApi.forEachNodeAfterFilter(function (rowNode) {\n if (!rowNode.group) {\n var value = rowNode.data[dataKey] + '';\n if (!gridContainsValue(filteredValues, value)) {\n filteredValues.push(value);\n }\n }\n });\n return filteredValues;\n };\n ChartCrossFilterService.extractFilterColId = function (event) {\n return event.xKey ? event.xKey : event.labelKey;\n };\n ChartCrossFilterService.prototype.isValidColumnFilter = function (colId) {\n if (colId.indexOf('-filtered-out')) {\n colId = colId.replace('-filtered-out', '');\n }\n var filterType = this.getColumnFilterType(colId);\n if (typeof filterType === 'boolean') {\n return filterType;\n }\n return _.includes(['agSetColumnFilter', 'agMultiColumnFilter'], filterType);\n };\n ChartCrossFilterService.prototype.getColumnFilterType = function (colId) {\n var gridColumn = this.columnModel.getGridColumn(colId);\n if (!gridColumn) {\n return;\n }\n var colDef = gridColumn.getColDef();\n return colDef.filter != null ? colDef.filter : colDef.filterFramework;\n };\n var ChartCrossFilterService_1;\n __decorate([\n Autowired('gridApi')\n ], ChartCrossFilterService.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('columnModel')\n ], ChartCrossFilterService.prototype, \"columnModel\", void 0);\n ChartCrossFilterService = ChartCrossFilterService_1 = __decorate([\n Bean(\"chartCrossFilterService\")\n ], ChartCrossFilterService);\n return ChartCrossFilterService;\n}(BeanStub));\nexport { ChartCrossFilterService };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nimport { Autowired, Bean, Constants, Events, PostConstruct, BeanStub, AutoScrollService, _ } from \"@ag-grid-community/core\";\nvar RangeService = /** @class */ (function (_super) {\n __extends(RangeService, _super);\n function RangeService() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.cellRanges = [];\n _this.bodyScrollListener = _this.onBodyScroll.bind(_this);\n _this.dragging = false;\n return _this;\n }\n RangeService.prototype.init = function () {\n var _this = this;\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, function () { return _this.removeAllCellRanges(); });\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, function () { return _this.removeAllCellRanges(); });\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, function () { return _this.removeAllCellRanges(); });\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_CHANGED, function () { return _this.removeAllCellRanges(); });\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_GROUP_OPENED, this.refreshLastRangeStart.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_MOVED, this.refreshLastRangeStart.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PINNED, this.refreshLastRangeStart.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VISIBLE, this.onColumnVisibleChange.bind(this));\n this.ctrlsService.whenReady(function () {\n var gridBodyCon = _this.ctrlsService.getGridBodyCtrl();\n _this.autoScrollService = new AutoScrollService({\n scrollContainer: gridBodyCon.getBodyViewportElement(),\n scrollAxis: 'xy',\n getVerticalPosition: function () { return gridBodyCon.getScrollFeature().getVScrollPosition().top; },\n setVerticalPosition: function (position) { return gridBodyCon.getScrollFeature().setVerticalScrollPosition(position); },\n getHorizontalPosition: function () { return gridBodyCon.getScrollFeature().getHScrollPosition().left; },\n setHorizontalPosition: function (position) { return gridBodyCon.getScrollFeature().setHorizontalScrollPosition(position); },\n shouldSkipVerticalScroll: function () { return _this.gridOptionsWrapper.getDomLayout() !== Constants.DOM_LAYOUT_NORMAL; },\n shouldSkipHorizontalScroll: function () { return gridBodyCon.getScrollFeature().isHorizontalScrollShowing(); }\n });\n });\n };\n RangeService.prototype.onColumnVisibleChange = function () {\n var _this = this;\n // first move start column in last cell range (i.e. series chart range)\n this.refreshLastRangeStart();\n // then check if the column visibility has changed in any cell range\n this.cellRanges.forEach(function (cellRange) {\n var beforeCols = cellRange.columns;\n // remove hidden cols from cell range\n cellRange.columns = cellRange.columns.filter(function (col) { return col.isVisible(); });\n var colsInRangeChanged = !_.areEqual(beforeCols, cellRange.columns);\n if (colsInRangeChanged) {\n // notify users and other parts of grid (i.e. status panel) that range has changed\n _this.dispatchChangedEvent(false, true, cellRange.id);\n }\n });\n };\n RangeService.prototype.refreshLastRangeStart = function () {\n var lastRange = _.last(this.cellRanges);\n if (!lastRange) {\n return;\n }\n this.refreshRangeStart(lastRange);\n };\n RangeService.prototype.isContiguousRange = function (cellRange) {\n var rangeColumns = cellRange.columns;\n if (!rangeColumns.length) {\n return false;\n }\n var allColumns = this.columnModel.getAllDisplayedColumns();\n var allPositions = rangeColumns.map(function (c) { return allColumns.indexOf(c); }).sort(function (a, b) { return a - b; });\n return _.last(allPositions) - allPositions[0] + 1 === rangeColumns.length;\n };\n RangeService.prototype.getRangeStartRow = function (cellRange) {\n if (cellRange.startRow && cellRange.endRow) {\n return this.rowPositionUtils.before(cellRange.startRow, cellRange.endRow) ?\n cellRange.startRow : cellRange.endRow;\n }\n var rowPinned = this.pinnedRowModel.getPinnedTopRowCount() > 0 ? Constants.PINNED_TOP : null;\n return { rowIndex: 0, rowPinned: rowPinned };\n };\n RangeService.prototype.getRangeEndRow = function (cellRange) {\n if (cellRange.startRow && cellRange.endRow) {\n return this.rowPositionUtils.before(cellRange.startRow, cellRange.endRow) ?\n cellRange.endRow : cellRange.startRow;\n }\n var pinnedBottomRowCount = this.pinnedRowModel.getPinnedBottomRowCount();\n var pinnedBottom = pinnedBottomRowCount > 0;\n if (pinnedBottom) {\n return {\n rowIndex: pinnedBottomRowCount - 1,\n rowPinned: Constants.PINNED_BOTTOM\n };\n }\n return {\n rowIndex: this.rowModel.getRowCount() - 1,\n rowPinned: null\n };\n };\n RangeService.prototype.setRangeToCell = function (cell, appendRange) {\n if (appendRange === void 0) { appendRange = false; }\n if (!this.gridOptionsWrapper.isEnableRangeSelection()) {\n return;\n }\n var columns = this.calculateColumnsBetween(cell.column, cell.column);\n if (!columns) {\n return;\n }\n var suppressMultiRangeSelections = this.gridOptionsWrapper.isSuppressMultiRangeSelection();\n // if not appending, then clear previous range selections\n if (suppressMultiRangeSelections || !appendRange || _.missing(this.cellRanges)) {\n this.removeAllCellRanges(true);\n }\n var rowForCell = {\n rowIndex: cell.rowIndex,\n rowPinned: cell.rowPinned\n };\n // if there is already a range for this cell, then we reuse the same range, otherwise the user\n // can ctrl & click a cell many times and hit ctrl+c, which would result in the cell getting copied\n // many times to the clipboard.\n var cellRange;\n for (var i = 0; i < this.cellRanges.length; i++) {\n var range = this.cellRanges[i];\n var matches = \n // check cols are same\n (range.columns && range.columns.length === 1 && range.columns[0] === cell.column) &&\n // check rows are same\n this.rowPositionUtils.sameRow(rowForCell, range.startRow) &&\n this.rowPositionUtils.sameRow(rowForCell, range.endRow);\n if (matches) {\n cellRange = range;\n break;\n }\n }\n if (cellRange) {\n // we need it at the end of the list, as the dragStart picks the last created\n // range as the start point for the drag\n if (_.last(this.cellRanges) !== cellRange) {\n _.removeFromArray(this.cellRanges, cellRange);\n this.cellRanges.push(cellRange);\n }\n }\n else {\n cellRange = {\n startRow: rowForCell,\n endRow: rowForCell,\n columns: columns,\n startColumn: cell.column\n };\n this.cellRanges.push(cellRange);\n }\n this.setNewestRangeStartCell(cell);\n this.onDragStop();\n this.dispatchChangedEvent(true, true, cellRange.id);\n };\n RangeService.prototype.extendLatestRangeToCell = function (cellPosition) {\n if (this.isEmpty() || !this.newestRangeStartCell) {\n return;\n }\n var cellRange = _.last(this.cellRanges);\n this.updateRangeEnd(cellRange, cellPosition);\n };\n RangeService.prototype.updateRangeEnd = function (cellRange, cellPosition, silent) {\n if (silent === void 0) { silent = false; }\n var endColumn = cellPosition.column;\n var colsToAdd = this.calculateColumnsBetween(cellRange.startColumn, endColumn);\n if (!colsToAdd || this.isLastCellOfRange(cellRange, cellPosition)) {\n return;\n }\n cellRange.columns = colsToAdd;\n cellRange.endRow = { rowIndex: cellPosition.rowIndex, rowPinned: cellPosition.rowPinned };\n if (!silent) {\n this.dispatchChangedEvent(true, true, cellRange.id);\n }\n };\n RangeService.prototype.refreshRangeStart = function (cellRange) {\n var startColumn = cellRange.startColumn, columns = cellRange.columns;\n var moveColInCellRange = function (colToMove, moveToFront) {\n var otherCols = cellRange.columns.filter(function (col) { return col !== colToMove; });\n if (colToMove) {\n cellRange.startColumn = colToMove;\n cellRange.columns = moveToFront ? __spread([colToMove], otherCols) : __spread(otherCols, [colToMove]);\n }\n else {\n cellRange.columns = otherCols;\n }\n };\n var _a = this.getRangeEdgeColumns(cellRange), left = _a.left, right = _a.right;\n var shouldMoveLeftCol = startColumn === columns[0] && startColumn !== left;\n if (shouldMoveLeftCol) {\n moveColInCellRange(left, true);\n return;\n }\n var shouldMoveRightCol = startColumn === _.last(columns) && startColumn === right;\n if (shouldMoveRightCol) {\n moveColInCellRange(right, false);\n return;\n }\n };\n RangeService.prototype.getRangeEdgeColumns = function (cellRange) {\n var allColumns = this.columnModel.getAllDisplayedColumns();\n var allIndices = cellRange.columns\n .map(function (c) { return allColumns.indexOf(c); })\n .filter(function (i) { return i > -1; })\n .sort(function (a, b) { return a - b; });\n return {\n left: allColumns[allIndices[0]],\n right: allColumns[_.last(allIndices)]\n };\n };\n // returns true if successful, false if not successful\n RangeService.prototype.extendLatestRangeInDirection = function (key) {\n if (this.isEmpty() || !this.newestRangeStartCell) {\n return;\n }\n var lastRange = _.last(this.cellRanges);\n var startCell = this.newestRangeStartCell;\n var firstCol = lastRange.columns[0];\n var lastCol = _.last(lastRange.columns);\n // find the cell that is at the furthest away corner from the starting cell\n var endCellIndex = lastRange.endRow.rowIndex;\n var endCellFloating = lastRange.endRow.rowPinned;\n var endCellColumn = startCell.column === firstCol ? lastCol : firstCol;\n var endCell = { column: endCellColumn, rowIndex: endCellIndex, rowPinned: endCellFloating };\n var newEndCell = this.cellNavigationService.getNextCellToFocus(key, endCell);\n // if user is at end of grid, so no cell to extend to, we return false\n if (!newEndCell) {\n return;\n }\n this.setCellRange({\n rowStartIndex: startCell.rowIndex,\n rowStartPinned: startCell.rowPinned,\n rowEndIndex: newEndCell.rowIndex,\n rowEndPinned: newEndCell.rowPinned,\n columnStart: startCell.column,\n columnEnd: newEndCell.column\n });\n return newEndCell;\n };\n RangeService.prototype.setCellRange = function (params) {\n if (!this.gridOptionsWrapper.isEnableRangeSelection()) {\n return;\n }\n this.removeAllCellRanges(true);\n this.addCellRange(params);\n };\n RangeService.prototype.setCellRanges = function (cellRanges) {\n var _this = this;\n if (_.shallowCompare(this.cellRanges, cellRanges)) {\n return;\n }\n this.removeAllCellRanges(true);\n cellRanges.forEach(function (newRange) {\n if (newRange.columns && newRange.startRow) {\n _this.setNewestRangeStartCell({\n rowIndex: newRange.startRow.rowIndex,\n rowPinned: newRange.startRow.rowPinned,\n column: newRange.columns[0]\n });\n }\n _this.cellRanges.push(newRange);\n });\n this.dispatchChangedEvent(false, true);\n };\n RangeService.prototype.setNewestRangeStartCell = function (position) {\n this.newestRangeStartCell = position;\n };\n RangeService.prototype.createCellRangeFromCellRangeParams = function (params) {\n var _this = this;\n var columns;\n if (params.columns) {\n columns = params.columns.map(function (c) { return _this.columnModel.getColumnWithValidation(c); }).filter(function (c) { return c; });\n }\n else {\n var columnStart = this.columnModel.getColumnWithValidation(params.columnStart);\n var columnEnd = this.columnModel.getColumnWithValidation(params.columnEnd);\n if (!columnStart || !columnEnd) {\n return;\n }\n columns = this.calculateColumnsBetween(columnStart, columnEnd);\n }\n if (!columns) {\n return;\n }\n var startRow = params.rowStartIndex != null ? {\n rowIndex: params.rowStartIndex,\n rowPinned: params.rowStartPinned || null\n } : undefined;\n var endRow = params.rowEndIndex != null ? {\n rowIndex: params.rowEndIndex,\n rowPinned: params.rowEndPinned || null\n } : undefined;\n return {\n startRow: startRow,\n endRow: endRow,\n columns: columns,\n startColumn: columns[0]\n };\n };\n RangeService.prototype.addCellRange = function (params) {\n if (!this.gridOptionsWrapper.isEnableRangeSelection()) {\n return;\n }\n var newRange = this.createCellRangeFromCellRangeParams(params);\n if (newRange) {\n if (newRange.startRow) {\n this.setNewestRangeStartCell({\n rowIndex: newRange.startRow.rowIndex,\n rowPinned: newRange.startRow.rowPinned,\n column: newRange.columns[0]\n });\n }\n this.cellRanges.push(newRange);\n this.dispatchChangedEvent(false, true, newRange.id);\n }\n };\n RangeService.prototype.getCellRanges = function () {\n return this.cellRanges;\n };\n RangeService.prototype.isEmpty = function () {\n return this.cellRanges.length === 0;\n };\n RangeService.prototype.isMoreThanOneCell = function () {\n var len = this.cellRanges.length;\n if (len !== 1) {\n // if range is not zero and not one, means more than one cell\n return len !== 0;\n }\n // only one range, return true if range has more than one\n var range = this.cellRanges[0];\n var startRow = this.getRangeStartRow(range);\n var endRow = this.getRangeEndRow(range);\n return startRow.rowPinned !== endRow.rowPinned ||\n startRow.rowIndex !== endRow.rowIndex ||\n range.columns.length !== 1;\n };\n RangeService.prototype.areAllRangesAbleToMerge = function () {\n var e_1, _a;\n var _this = this;\n var rowToColumnMap = new Map();\n var len = this.cellRanges.length;\n if (len <= 1)\n return true;\n this.cellRanges.forEach(function (range) {\n var topRow = _this.getRangeStartRow(range);\n var bottomRow = _this.getRangeEndRow(range);\n var currentRow = topRow;\n var _loop_1 = function () {\n var rowName = (currentRow.rowPinned || 'normal') + \"_\" + currentRow.rowIndex;\n var columns = rowToColumnMap.get(rowName);\n var currentRangeColIds = range.columns.map(function (col) { return col.getId(); });\n if (columns) {\n var filteredColumns = currentRangeColIds.filter(function (col) { return columns.indexOf(col) === -1; });\n columns.push.apply(columns, __spread(filteredColumns));\n }\n else {\n rowToColumnMap.set(rowName, currentRangeColIds);\n }\n if (_this.rowPositionUtils.sameRow(currentRow, bottomRow)) {\n return \"break\";\n }\n currentRow = _this.cellNavigationService.getRowBelow(currentRow);\n };\n while (currentRow) {\n var state_1 = _loop_1();\n if (state_1 === \"break\")\n break;\n }\n });\n var columnsString;\n try {\n for (var _b = __values(rowToColumnMap.values()), _c = _b.next(); !_c.done; _c = _b.next()) {\n var val = _c.value;\n var currentValString = val.sort().join();\n if (columnsString === undefined) {\n columnsString = currentValString;\n continue;\n }\n if (columnsString !== currentValString) {\n return false;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return true;\n };\n RangeService.prototype.removeAllCellRanges = function (silent) {\n if (this.isEmpty()) {\n return;\n }\n this.onDragStop();\n this.cellRanges.length = 0;\n if (!silent) {\n this.dispatchChangedEvent(false, true);\n }\n };\n // as the user is dragging outside of the panel, the div starts to scroll, which in turn\n // means we are selection more (or less) cells, but the mouse isn't moving, so we recalculate\n // the selection my mimicking a new mouse event\n RangeService.prototype.onBodyScroll = function () {\n this.onDragging(this.lastMouseEvent);\n };\n RangeService.prototype.isCellInAnyRange = function (cell) {\n return this.getCellRangeCount(cell) > 0;\n };\n RangeService.prototype.isCellInSpecificRange = function (cell, range) {\n var columnInRange = range.columns !== null && _.includes(range.columns, cell.column);\n var rowInRange = this.isRowInRange(cell.rowIndex, cell.rowPinned, range);\n return columnInRange && rowInRange;\n };\n RangeService.prototype.isLastCellOfRange = function (cellRange, cell) {\n var startRow = cellRange.startRow, endRow = cellRange.endRow;\n var lastRow = this.rowPositionUtils.before(startRow, endRow) ? endRow : startRow;\n var isLastRow = cell.rowIndex === lastRow.rowIndex && cell.rowPinned === lastRow.rowPinned;\n var rangeFirstIndexColumn = cellRange.columns[0];\n var rangeLastIndexColumn = _.last(cellRange.columns);\n var lastRangeColumn = cellRange.startColumn === rangeFirstIndexColumn ? rangeLastIndexColumn : rangeFirstIndexColumn;\n var isLastColumn = cell.column === lastRangeColumn;\n return isLastColumn && isLastRow;\n };\n RangeService.prototype.isBottomRightCell = function (cellRange, cell) {\n var allColumns = this.columnModel.getAllDisplayedColumns();\n var allPositions = cellRange.columns.map(function (c) { return allColumns.indexOf(c); }).sort(function (a, b) { return a - b; });\n var startRow = cellRange.startRow, endRow = cellRange.endRow;\n var lastRow = this.rowPositionUtils.before(startRow, endRow) ? endRow : startRow;\n var isRightColumn = allColumns.indexOf(cell.column) === _.last(allPositions);\n var isLastRow = cell.rowIndex === lastRow.rowIndex && _.makeNull(cell.rowPinned) === _.makeNull(lastRow.rowPinned);\n return isRightColumn && isLastRow;\n };\n // returns the number of ranges this cell is in\n RangeService.prototype.getCellRangeCount = function (cell) {\n var _this = this;\n if (this.isEmpty()) {\n return 0;\n }\n return this.cellRanges.filter(function (cellRange) { return _this.isCellInSpecificRange(cell, cellRange); }).length;\n };\n RangeService.prototype.isRowInRange = function (rowIndex, floating, cellRange) {\n var firstRow = this.getRangeStartRow(cellRange);\n var lastRow = this.getRangeEndRow(cellRange);\n var thisRow = { rowIndex: rowIndex, rowPinned: floating || null };\n // compare rowPinned with == instead of === because it can be `null` or `undefined`\n var equalsFirstRow = thisRow.rowIndex === firstRow.rowIndex && thisRow.rowPinned == firstRow.rowPinned;\n var equalsLastRow = thisRow.rowIndex === lastRow.rowIndex && thisRow.rowPinned == lastRow.rowPinned;\n if (equalsFirstRow || equalsLastRow) {\n return true;\n }\n var afterFirstRow = !this.rowPositionUtils.before(thisRow, firstRow);\n var beforeLastRow = this.rowPositionUtils.before(thisRow, lastRow);\n return afterFirstRow && beforeLastRow;\n };\n RangeService.prototype.getDraggingRange = function () {\n return this.draggingRange;\n };\n RangeService.prototype.onDragStart = function (mouseEvent) {\n if (!this.gridOptionsWrapper.isEnableRangeSelection()) {\n return;\n }\n var ctrlKey = mouseEvent.ctrlKey, metaKey = mouseEvent.metaKey, shiftKey = mouseEvent.shiftKey;\n // ctrlKey for windows, metaKey for Apple\n var multiKeyPressed = ctrlKey || metaKey;\n var allowMulti = !this.gridOptionsWrapper.isSuppressMultiRangeSelection();\n var multiSelectKeyPressed = allowMulti ? multiKeyPressed : false;\n var extendRange = shiftKey && _.existsAndNotEmpty(this.cellRanges);\n if (!multiSelectKeyPressed && (!extendRange || _.exists(_.last(this.cellRanges).type))) {\n this.removeAllCellRanges(true);\n }\n // The DragService used by the this service (RangeService), automatically adds a `mousemove`\n // listener the document of the page that will then call `onDragging`. If you are in a shadow DOM\n // DOM elements outside your component's wrapper will be inaccessible to you, so here, we add a \n // temporary `mousemove` listener to the gridPanel to be able to update the last hovered cell.\n this.cellHoverListener = this.addManagedListener(this.ctrlsService.getGridCtrl().getGui(), 'mousemove', this.updateValuesOnMove.bind(this));\n // This is the mouse start event, so we need to call `updateValuesOnMove` \n // manually once to get the necessary variables initiated.\n this.updateValuesOnMove(mouseEvent);\n if (!this.lastCellHovered) {\n return;\n }\n this.dragging = true;\n this.lastMouseEvent = mouseEvent;\n if (!extendRange) {\n this.setNewestRangeStartCell(this.lastCellHovered);\n }\n // if we didn't clear the ranges, then dragging means the user clicked, and when the\n // user clicks it means a range of one cell was created. we need to extend this range\n // rather than creating another range. otherwise we end up with two distinct ranges\n // from a drag operation (one from click, and one from drag).\n if (this.cellRanges.length > 0) {\n this.draggingRange = _.last(this.cellRanges);\n }\n else {\n var mouseRowPosition = {\n rowIndex: this.lastCellHovered.rowIndex,\n rowPinned: this.lastCellHovered.rowPinned\n };\n this.draggingRange = {\n startRow: mouseRowPosition,\n endRow: mouseRowPosition,\n columns: [this.lastCellHovered.column],\n startColumn: this.newestRangeStartCell.column\n };\n this.cellRanges.push(this.draggingRange);\n }\n this.ctrlsService.getGridBodyCtrl().addScrollEventListener(this.bodyScrollListener);\n this.dispatchChangedEvent(true, false, this.draggingRange.id);\n };\n RangeService.prototype.updateValuesOnMove = function (mouseEvent) {\n var cell = this.mouseEventService.getCellPositionForEvent(mouseEvent);\n this.cellHasChanged = false;\n if (!cell || (this.lastCellHovered && this.cellPositionUtils.equals(cell, this.lastCellHovered))) {\n return;\n }\n if (this.lastCellHovered) {\n this.cellHasChanged = true;\n }\n this.lastCellHovered = cell;\n };\n RangeService.prototype.onDragging = function (mouseEvent) {\n var _this = this;\n if (!this.dragging || !mouseEvent) {\n return;\n }\n var cellPosition = this.lastCellHovered;\n var isMouseAndStartInPinned = function (position) {\n return cellPosition && cellPosition.rowPinned === position && _this.newestRangeStartCell.rowPinned === position;\n };\n var skipVerticalScroll = isMouseAndStartInPinned('top') || isMouseAndStartInPinned('bottom');\n this.autoScrollService.check(mouseEvent, skipVerticalScroll);\n if (!this.cellHasChanged) {\n return;\n }\n var columns = this.calculateColumnsBetween(this.newestRangeStartCell.column, cellPosition.column);\n if (!columns) {\n return;\n }\n this.draggingRange.endRow = {\n rowIndex: cellPosition.rowIndex,\n rowPinned: cellPosition.rowPinned\n };\n this.draggingRange.columns = columns;\n this.dispatchChangedEvent(false, false, this.draggingRange.id);\n };\n RangeService.prototype.onDragStop = function () {\n if (this.cellHoverListener) {\n this.cellHoverListener();\n this.cellHoverListener = undefined;\n }\n if (!this.dragging) {\n return;\n }\n var id = this.draggingRange.id;\n this.autoScrollService.ensureCleared();\n this.ctrlsService.getGridBodyCtrl().removeScrollEventListener(this.bodyScrollListener);\n this.lastMouseEvent = null;\n this.dragging = false;\n this.draggingRange = undefined;\n this.lastCellHovered = undefined;\n this.dispatchChangedEvent(false, true, id);\n };\n RangeService.prototype.dispatchChangedEvent = function (started, finished, id) {\n var event = Object.freeze({\n type: Events.EVENT_RANGE_SELECTION_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi,\n started: started,\n finished: finished,\n id: id,\n });\n this.eventService.dispatchEvent(event);\n };\n RangeService.prototype.calculateColumnsBetween = function (columnFrom, columnTo) {\n var allColumns = this.columnModel.getAllDisplayedColumns();\n var isSameColumn = columnFrom === columnTo;\n var fromIndex = allColumns.indexOf(columnFrom);\n if (fromIndex < 0) {\n console.warn(\"AG Grid: column \" + columnFrom.getId() + \" is not visible\");\n return;\n }\n var toIndex = isSameColumn ? fromIndex : allColumns.indexOf(columnTo);\n if (toIndex < 0) {\n console.warn(\"AG Grid: column \" + columnTo.getId() + \" is not visible\");\n return;\n }\n if (isSameColumn) {\n return [columnFrom];\n }\n var firstIndex = Math.min(fromIndex, toIndex);\n var lastIndex = firstIndex === fromIndex ? toIndex : fromIndex;\n var columns = [];\n for (var i = firstIndex; i <= lastIndex; i++) {\n columns.push(allColumns[i]);\n }\n return columns;\n };\n __decorate([\n Autowired('rowModel')\n ], RangeService.prototype, \"rowModel\", void 0);\n __decorate([\n Autowired('columnModel')\n ], RangeService.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('mouseEventService')\n ], RangeService.prototype, \"mouseEventService\", void 0);\n __decorate([\n Autowired('columnApi')\n ], RangeService.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], RangeService.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('cellNavigationService')\n ], RangeService.prototype, \"cellNavigationService\", void 0);\n __decorate([\n Autowired(\"pinnedRowModel\")\n ], RangeService.prototype, \"pinnedRowModel\", void 0);\n __decorate([\n Autowired('rowPositionUtils')\n ], RangeService.prototype, \"rowPositionUtils\", void 0);\n __decorate([\n Autowired('cellPositionUtils')\n ], RangeService.prototype, \"cellPositionUtils\", void 0);\n __decorate([\n Autowired('ctrlsService')\n ], RangeService.prototype, \"ctrlsService\", void 0);\n __decorate([\n PostConstruct\n ], RangeService.prototype, \"init\", null);\n RangeService = __decorate([\n Bean('rangeService')\n ], RangeService);\n return RangeService;\n}(BeanStub));\nexport { RangeService };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Component, PostConstruct, _, SelectionHandleType } from \"@ag-grid-community/core\";\nvar AbstractSelectionHandle = /** @class */ (function (_super) {\n __extends(AbstractSelectionHandle, _super);\n function AbstractSelectionHandle() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.changedCalculatedValues = false;\n _this.dragging = false;\n _this.shouldDestroyOnEndDragging = false;\n return _this;\n }\n AbstractSelectionHandle.prototype.init = function () {\n var _this = this;\n this.dragService.addDragSource({\n dragStartPixels: 0,\n eElement: this.getGui(),\n onDragStart: this.onDragStart.bind(this),\n onDragging: function (e) {\n _this.dragging = true;\n _this.rangeService.autoScrollService.check(e);\n if (_this.changedCalculatedValues) {\n _this.onDrag(e);\n _this.changedCalculatedValues = false;\n }\n },\n onDragStop: function (e) {\n _this.dragging = false;\n _this.onDragEnd(e);\n _this.clearValues();\n _this.rangeService.autoScrollService.ensureCleared();\n // TODO: this causes a bug where if there are multiple grids in the same page, all of them will\n // be affected by a drag on any. Move it to the root element.\n document.body.classList.remove(_this.getDraggingCssClass());\n if (_this.shouldDestroyOnEndDragging) {\n _this.destroy();\n }\n }\n });\n this.addManagedListener(this.getGui(), 'mousedown', this.preventRangeExtension.bind(this));\n };\n AbstractSelectionHandle.prototype.isDragging = function () {\n return this.dragging;\n };\n AbstractSelectionHandle.prototype.getCellCtrl = function () {\n return this.cellCtrl;\n };\n AbstractSelectionHandle.prototype.setCellCtrl = function (cellComp) {\n this.cellCtrl = cellComp;\n };\n AbstractSelectionHandle.prototype.getCellRange = function () {\n return this.cellRange;\n };\n AbstractSelectionHandle.prototype.setCellRange = function (range) {\n this.cellRange = range;\n };\n AbstractSelectionHandle.prototype.getRangeStartRow = function () {\n return this.rangeStartRow;\n };\n AbstractSelectionHandle.prototype.setRangeStartRow = function (row) {\n this.rangeStartRow = row;\n };\n AbstractSelectionHandle.prototype.getRangeEndRow = function () {\n return this.rangeEndRow;\n };\n AbstractSelectionHandle.prototype.setRangeEndRow = function (row) {\n this.rangeEndRow = row;\n };\n AbstractSelectionHandle.prototype.getLastCellHovered = function () {\n return this.lastCellHovered;\n };\n AbstractSelectionHandle.prototype.preventRangeExtension = function (e) {\n e.preventDefault();\n e.stopPropagation();\n };\n AbstractSelectionHandle.prototype.onDragStart = function (e) {\n this.cellHoverListener = this.addManagedListener(this.ctrlsService.getGridCtrl().getGui(), 'mousemove', this.updateValuesOnMove.bind(this));\n document.body.classList.add(this.getDraggingCssClass());\n };\n AbstractSelectionHandle.prototype.getDraggingCssClass = function () {\n return \"ag-dragging-\" + (this.type === SelectionHandleType.FILL ? 'fill' : 'range') + \"-handle\";\n };\n AbstractSelectionHandle.prototype.updateValuesOnMove = function (e) {\n var cell = this.mouseEventService.getCellPositionForEvent(e);\n if (!cell || (this.lastCellHovered && this.cellPositionUtils.equals(cell, this.lastCellHovered))) {\n return;\n }\n this.lastCellHovered = cell;\n this.changedCalculatedValues = true;\n };\n AbstractSelectionHandle.prototype.getType = function () {\n return this.type;\n };\n AbstractSelectionHandle.prototype.refresh = function (cellCtrl) {\n var oldCellComp = this.getCellCtrl();\n var eGui = this.getGui();\n var cellRange = _.last(this.rangeService.getCellRanges());\n var start = cellRange.startRow;\n var end = cellRange.endRow;\n if (start && end) {\n var isBefore = this.rowPositionUtils.before(end, start);\n if (isBefore) {\n this.setRangeStartRow(end);\n this.setRangeEndRow(start);\n }\n else {\n this.setRangeStartRow(start);\n this.setRangeEndRow(end);\n }\n }\n if (oldCellComp !== cellCtrl || !_.isVisible(eGui)) {\n this.setCellCtrl(cellCtrl);\n var eParentOfValue = cellCtrl.getComp().getParentOfValue();\n if (eParentOfValue) {\n eParentOfValue.appendChild(eGui);\n }\n }\n this.setCellRange(cellRange);\n };\n AbstractSelectionHandle.prototype.clearValues = function () {\n this.lastCellHovered = undefined;\n this.removeListeners();\n };\n AbstractSelectionHandle.prototype.removeListeners = function () {\n if (this.cellHoverListener) {\n this.cellHoverListener();\n this.cellHoverListener = undefined;\n }\n };\n AbstractSelectionHandle.prototype.destroy = function () {\n if (!this.shouldDestroyOnEndDragging && this.isDragging()) {\n _.setDisplayed(this.getGui(), false);\n this.shouldDestroyOnEndDragging = true;\n return;\n }\n this.shouldDestroyOnEndDragging = false;\n _super.prototype.destroy.call(this);\n this.removeListeners();\n var eGui = this.getGui();\n if (eGui.parentElement) {\n eGui.parentElement.removeChild(eGui);\n }\n };\n __decorate([\n Autowired(\"rowRenderer\")\n ], AbstractSelectionHandle.prototype, \"rowRenderer\", void 0);\n __decorate([\n Autowired(\"dragService\")\n ], AbstractSelectionHandle.prototype, \"dragService\", void 0);\n __decorate([\n Autowired(\"rangeService\")\n ], AbstractSelectionHandle.prototype, \"rangeService\", void 0);\n __decorate([\n Autowired(\"mouseEventService\")\n ], AbstractSelectionHandle.prototype, \"mouseEventService\", void 0);\n __decorate([\n Autowired(\"columnModel\")\n ], AbstractSelectionHandle.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired(\"cellNavigationService\")\n ], AbstractSelectionHandle.prototype, \"cellNavigationService\", void 0);\n __decorate([\n Autowired(\"navigationService\")\n ], AbstractSelectionHandle.prototype, \"navigationService\", void 0);\n __decorate([\n Autowired('rowPositionUtils')\n ], AbstractSelectionHandle.prototype, \"rowPositionUtils\", void 0);\n __decorate([\n Autowired('cellPositionUtils')\n ], AbstractSelectionHandle.prototype, \"cellPositionUtils\", void 0);\n __decorate([\n Autowired('ctrlsService')\n ], AbstractSelectionHandle.prototype, \"ctrlsService\", void 0);\n __decorate([\n PostConstruct\n ], AbstractSelectionHandle.prototype, \"init\", null);\n return AbstractSelectionHandle;\n}(Component));\nexport { AbstractSelectionHandle };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __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};\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nimport { Autowired, Events, SelectionHandleType, _ } from '@ag-grid-community/core';\nimport { AbstractSelectionHandle } from \"./abstractSelectionHandle\";\nvar FillHandle = /** @class */ (function (_super) {\n __extends(FillHandle, _super);\n function FillHandle() {\n var _this = _super.call(this, FillHandle.TEMPLATE) || this;\n _this.markedCells = [];\n _this.cellValues = [];\n _this.isUp = false;\n _this.isLeft = false;\n _this.isReduce = false;\n _this.type = SelectionHandleType.FILL;\n return _this;\n }\n FillHandle.prototype.updateValuesOnMove = function (e) {\n _super.prototype.updateValuesOnMove.call(this, e);\n if (!this.initialXY) {\n this.initialXY = this.mouseEventService.getNormalisedPosition(e);\n }\n var _a = this.initialXY, x = _a.x, y = _a.y;\n var _b = this.mouseEventService.getNormalisedPosition(e), newX = _b.x, newY = _b.y;\n var diffX = Math.abs(x - newX);\n var diffY = Math.abs(y - newY);\n var allowedDirection = this.gridOptionsWrapper.getFillHandleDirection();\n var direction;\n if (allowedDirection === 'xy') {\n direction = diffX > diffY ? 'x' : 'y';\n }\n else {\n direction = allowedDirection;\n }\n if (direction !== this.dragAxis) {\n this.dragAxis = direction;\n this.changedCalculatedValues = true;\n }\n };\n FillHandle.prototype.onDrag = function (e) {\n if (!this.initialPosition) {\n var cellCtrl = this.getCellCtrl();\n if (!cellCtrl) {\n return;\n }\n this.initialPosition = cellCtrl.getCellPosition();\n }\n var lastCellHovered = this.getLastCellHovered();\n if (lastCellHovered) {\n this.markPathFrom(this.initialPosition, lastCellHovered);\n }\n };\n FillHandle.prototype.onDragEnd = function (e) {\n this.initialXY = null;\n if (!this.markedCells.length) {\n return;\n }\n var isX = this.dragAxis === 'x';\n var initialRange = this.getCellRange();\n var colLen = initialRange.columns.length;\n var rangeStartRow = this.getRangeStartRow();\n var rangeEndRow = this.getRangeEndRow();\n var finalRange;\n if (!this.isUp && !this.isLeft) {\n finalRange = this.rangeService.createCellRangeFromCellRangeParams({\n rowStartIndex: rangeStartRow.rowIndex,\n rowStartPinned: rangeStartRow.rowPinned,\n columnStart: initialRange.columns[0],\n rowEndIndex: isX ? rangeEndRow.rowIndex : this.lastCellMarked.rowIndex,\n rowEndPinned: isX ? rangeEndRow.rowPinned : this.lastCellMarked.rowPinned,\n columnEnd: isX ? this.lastCellMarked.column : initialRange.columns[colLen - 1]\n });\n }\n else {\n var startRow = isX ? rangeStartRow : this.lastCellMarked;\n finalRange = this.rangeService.createCellRangeFromCellRangeParams({\n rowStartIndex: startRow.rowIndex,\n rowStartPinned: startRow.rowPinned,\n columnStart: isX ? this.lastCellMarked.column : initialRange.columns[0],\n rowEndIndex: rangeEndRow.rowIndex,\n rowEndPinned: rangeEndRow.rowPinned,\n columnEnd: initialRange.columns[colLen - 1]\n });\n }\n if (finalRange) {\n // raising fill events for undo / redo\n this.raiseFillStartEvent();\n this.handleValueChanged(initialRange, finalRange, e);\n this.rangeService.setCellRanges([finalRange]);\n this.raiseFillEndEvent(initialRange, finalRange);\n }\n };\n FillHandle.prototype.raiseFillStartEvent = function () {\n var fillStartEvent = {\n type: Events.EVENT_FILL_START,\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n api: this.gridOptionsWrapper.getApi()\n };\n this.eventService.dispatchEvent(fillStartEvent);\n };\n FillHandle.prototype.raiseFillEndEvent = function (initialRange, finalRange) {\n var fillEndEvent = {\n type: Events.EVENT_FILL_END,\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n api: this.gridOptionsWrapper.getApi(),\n initialRange: initialRange,\n finalRange: finalRange\n };\n this.eventService.dispatchEvent(fillEndEvent);\n };\n FillHandle.prototype.handleValueChanged = function (initialRange, finalRange, e) {\n var _this = this;\n var initialRangeEndRow = this.rangeService.getRangeEndRow(initialRange);\n var initialRangeStartRow = this.rangeService.getRangeStartRow(initialRange);\n var finalRangeEndRow = this.rangeService.getRangeEndRow(finalRange);\n var finalRangeStartRow = this.rangeService.getRangeStartRow(finalRange);\n var isVertical = this.dragAxis === 'y';\n // if the range is being reduced in size, all we need to do is\n // clear the cells that are no longer part of the range\n if (this.isReduce && !this.gridOptionsWrapper.isSuppressClearOnFillReduction()) {\n var columns = isVertical\n ? initialRange.columns\n : initialRange.columns.filter(function (col) { return finalRange.columns.indexOf(col) < 0; });\n var startRow = isVertical ? this.cellNavigationService.getRowBelow(finalRangeEndRow) : finalRangeStartRow;\n if (startRow) {\n this.clearCellsInRange(startRow, initialRangeEndRow, columns);\n }\n return;\n }\n var withinInitialRange = true;\n var values = [];\n var initialValues = [];\n var idx = 0;\n var resetValues = function () {\n values.length = 0;\n initialValues.length = 0;\n idx = 0;\n };\n var iterateAcrossCells = function (column, columns) {\n var currentRow = _this.isUp ? initialRangeEndRow : initialRangeStartRow;\n var finished = false;\n if (isVertical) {\n withinInitialRange = true;\n resetValues();\n }\n var _loop_1 = function () {\n var rowNode = _this.rowPositionUtils.getRowNode(currentRow);\n if (!rowNode) {\n return \"break\";\n }\n if (isVertical && column) {\n fillValues(values, column, rowNode, function () {\n return !_this.rowPositionUtils.sameRow(currentRow, _this.isUp ? initialRangeStartRow : initialRangeEndRow);\n });\n }\n else if (columns) {\n withinInitialRange = true;\n resetValues();\n columns.forEach(function (col) { return fillValues(values, col, rowNode, function () { return col !== (_this.isLeft ? initialRange.columns[0] : _.last(initialRange.columns)); }); });\n }\n finished = _this.rowPositionUtils.sameRow(currentRow, _this.isUp ? finalRangeStartRow : finalRangeEndRow);\n currentRow = _this.isUp\n ? _this.cellNavigationService.getRowAbove(currentRow)\n : _this.cellNavigationService.getRowBelow(currentRow);\n };\n while (!finished && currentRow) {\n var state_1 = _loop_1();\n if (state_1 === \"break\")\n break;\n }\n };\n var fillValues = function (currentValues, col, rowNode, updateInitialSet) {\n var currentValue;\n var skipValue = false;\n if (withinInitialRange) {\n currentValue = _this.valueService.getValue(col, rowNode);\n initialValues.push(currentValue);\n withinInitialRange = updateInitialSet();\n }\n else {\n var _a = _this.processValues(e, currentValues, initialValues, col, rowNode, idx++), value = _a.value, fromUserFunction = _a.fromUserFunction;\n currentValue = value;\n if (col.isCellEditable(rowNode)) {\n var cellValue = _this.valueService.getValue(col, rowNode);\n if (!fromUserFunction || cellValue !== currentValue) {\n rowNode.setDataValue(col, currentValue);\n }\n else {\n skipValue = true;\n }\n }\n }\n if (!skipValue) {\n currentValues.push(currentValue);\n }\n };\n if (isVertical) {\n initialRange.columns.forEach(function (col) {\n iterateAcrossCells(col);\n });\n }\n else {\n var columns = this.isLeft ? __spread(finalRange.columns).reverse() : finalRange.columns;\n iterateAcrossCells(undefined, columns);\n }\n };\n FillHandle.prototype.clearCellsInRange = function (startRow, endRow, columns) {\n var currentRow = startRow;\n var finished = false;\n var _loop_2 = function () {\n var rowNode = this_1.rowPositionUtils.getRowNode(currentRow);\n // should never happen, defensive programming\n if (!rowNode) {\n return \"break\";\n }\n columns.forEach(function (col) {\n if (col.isCellEditable(rowNode)) {\n rowNode.setDataValue(col, null);\n }\n });\n finished = this_1.rowPositionUtils.sameRow(currentRow, endRow);\n currentRow = this_1.cellNavigationService.getRowBelow(currentRow);\n };\n var this_1 = this;\n while (!finished && currentRow) {\n var state_2 = _loop_2();\n if (state_2 === \"break\")\n break;\n }\n };\n FillHandle.prototype.processValues = function (event, values, initialValues, col, rowNode, idx) {\n var userFillOperation = this.gridOptionsWrapper.getFillOperation();\n var isVertical = this.dragAxis === 'y';\n var direction;\n if (isVertical) {\n direction = this.isUp ? 'up' : 'down';\n }\n else {\n direction = this.isLeft ? 'left' : 'right';\n }\n if (userFillOperation) {\n var userResult = userFillOperation({\n event: event,\n values: values,\n initialValues: initialValues,\n currentIndex: idx,\n currentCellValue: this.valueService.getValue(col, rowNode),\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext(),\n direction: direction,\n column: col,\n rowNode: rowNode\n });\n if (userResult !== false) {\n return { value: userResult, fromUserFunction: true };\n }\n }\n var allNumbers = !values.some(function (val) {\n var asFloat = parseFloat(val);\n return isNaN(asFloat) || asFloat.toString() !== val.toString();\n });\n // values should be copied in order if the alt key is pressed\n // or if the values contain strings and numbers\n // However, if we only have one initial value selected, and that\n // value is a number and we are also pressing alt, then we should\n // increment or decrement the value by 1 based on direction.\n if (event.altKey || !allNumbers) {\n if (allNumbers && initialValues.length === 1) {\n var multiplier = (this.isUp || this.isLeft) ? -1 : 1;\n return { value: parseFloat(_.last(values)) + 1 * multiplier, fromUserFunction: false };\n }\n return { value: values[idx % values.length], fromUserFunction: false };\n }\n return { value: _.last(_.findLineByLeastSquares(values.map(Number))), fromUserFunction: false };\n };\n FillHandle.prototype.clearValues = function () {\n this.clearMarkedPath();\n this.clearCellValues();\n this.lastCellMarked = undefined;\n _super.prototype.clearValues.call(this);\n };\n FillHandle.prototype.clearMarkedPath = function () {\n this.markedCells.forEach(function (cell) {\n var comp = cell.getComp();\n comp.addOrRemoveCssClass('ag-selection-fill-top', false);\n comp.addOrRemoveCssClass('ag-selection-fill-right', false);\n comp.addOrRemoveCssClass('ag-selection-fill-bottom', false);\n comp.addOrRemoveCssClass('ag-selection-fill-left', false);\n });\n this.markedCells.length = 0;\n this.isUp = false;\n this.isLeft = false;\n this.isReduce = false;\n };\n FillHandle.prototype.clearCellValues = function () {\n this.cellValues.length = 0;\n };\n FillHandle.prototype.markPathFrom = function (initialPosition, currentPosition) {\n this.clearMarkedPath();\n this.clearCellValues();\n if (this.dragAxis === 'y') {\n if (this.rowPositionUtils.sameRow(currentPosition, initialPosition)) {\n return;\n }\n var isBefore = this.rowPositionUtils.before(currentPosition, initialPosition);\n var rangeStartRow = this.getRangeStartRow();\n var rangeEndRow = this.getRangeEndRow();\n if (isBefore && ((currentPosition.rowPinned == rangeStartRow.rowPinned &&\n currentPosition.rowIndex >= rangeStartRow.rowIndex) ||\n (rangeStartRow.rowPinned != rangeEndRow.rowPinned &&\n currentPosition.rowPinned == rangeEndRow.rowPinned &&\n currentPosition.rowIndex <= rangeEndRow.rowIndex))) {\n this.reduceVertical(initialPosition, currentPosition);\n this.isReduce = true;\n }\n else {\n this.extendVertical(initialPosition, currentPosition, isBefore);\n this.isReduce = false;\n }\n }\n else {\n var initialColumn = initialPosition.column;\n var currentColumn = currentPosition.column;\n if (initialColumn === currentColumn) {\n return;\n }\n var displayedColumns = this.columnModel.getAllDisplayedColumns();\n var initialIndex = displayedColumns.indexOf(initialColumn);\n var currentIndex = displayedColumns.indexOf(currentColumn);\n if (currentIndex <= initialIndex && currentIndex >= displayedColumns.indexOf(this.getCellRange().columns[0])) {\n this.reduceHorizontal(initialPosition, currentPosition);\n this.isReduce = true;\n }\n else {\n this.extendHorizontal(initialPosition, currentPosition, currentIndex < initialIndex);\n this.isReduce = false;\n }\n }\n this.lastCellMarked = currentPosition;\n };\n FillHandle.prototype.extendVertical = function (initialPosition, endPosition, isMovingUp) {\n var _a = this, navigationService = _a.navigationService, rangeService = _a.rangeService;\n var row = initialPosition;\n do {\n var cellRange = this.getCellRange();\n var colLen = cellRange.columns.length;\n for (var i = 0; i < colLen; i++) {\n var column = cellRange.columns[i];\n var rowPos = { rowIndex: row.rowIndex, rowPinned: row.rowPinned };\n var cellPos = __assign(__assign({}, rowPos), { column: column });\n var cellInRange = rangeService.isCellInSpecificRange(cellPos, cellRange);\n var isInitialRow = this.rowPositionUtils.sameRow(row, initialPosition);\n if (isMovingUp) {\n this.isUp = true;\n }\n if (!isInitialRow) {\n var cell = navigationService.getCellByPosition(cellPos);\n if (cell) {\n this.markedCells.push(cell);\n var cellCtrl = cell.getComp();\n if (!cellInRange) {\n cellCtrl.addOrRemoveCssClass('ag-selection-fill-left', i === 0);\n cellCtrl.addOrRemoveCssClass('ag-selection-fill-right', i === colLen - 1);\n }\n cellCtrl.addOrRemoveCssClass(isMovingUp ? 'ag-selection-fill-top' : 'ag-selection-fill-bottom', this.rowPositionUtils.sameRow(row, endPosition));\n }\n }\n }\n if (this.rowPositionUtils.sameRow(row, endPosition)) {\n break;\n }\n } while (\n // tslint:disable-next-line\n row = isMovingUp\n ? this.cellNavigationService.getRowAbove(row)\n : this.cellNavigationService.getRowBelow(row));\n };\n FillHandle.prototype.reduceVertical = function (initialPosition, endPosition) {\n var row = initialPosition;\n do {\n var cellRange = this.getCellRange();\n var colLen = cellRange.columns.length;\n var isLastRow = this.rowPositionUtils.sameRow(row, endPosition);\n for (var i = 0; i < colLen; i++) {\n var rowPos = { rowIndex: row.rowIndex, rowPinned: row.rowPinned };\n var celPos = __assign(__assign({}, rowPos), { column: cellRange.columns[i] });\n var cell = this.navigationService.getCellByPosition(celPos);\n if (cell) {\n this.markedCells.push(cell);\n var cellComp = cell.getComp();\n cellComp.addOrRemoveCssClass('ag-selection-fill-bottom', this.rowPositionUtils.sameRow(row, endPosition));\n }\n }\n if (isLastRow) {\n break;\n }\n // tslint:disable-next-line\n } while (row = this.cellNavigationService.getRowAbove(row));\n };\n FillHandle.prototype.extendHorizontal = function (initialPosition, endPosition, isMovingLeft) {\n var _this = this;\n var allCols = this.columnModel.getAllDisplayedColumns();\n var startCol = allCols.indexOf(isMovingLeft ? endPosition.column : initialPosition.column);\n var endCol = allCols.indexOf(isMovingLeft ? this.getCellRange().columns[0] : endPosition.column);\n var offset = isMovingLeft ? 0 : 1;\n var colsToMark = allCols.slice(startCol + offset, endCol + offset);\n var rangeStartRow = this.getRangeStartRow();\n var rangeEndRow = this.getRangeEndRow();\n colsToMark.forEach(function (column) {\n var row = rangeStartRow;\n var isLastRow = false;\n do {\n isLastRow = _this.rowPositionUtils.sameRow(row, rangeEndRow);\n var cell = _this.navigationService.getCellByPosition({\n rowIndex: row.rowIndex,\n rowPinned: row.rowPinned,\n column: column\n });\n if (cell) {\n _this.markedCells.push(cell);\n var cellComp = cell.getComp();\n cellComp.addOrRemoveCssClass('ag-selection-fill-top', _this.rowPositionUtils.sameRow(row, rangeStartRow));\n cellComp.addOrRemoveCssClass('ag-selection-fill-bottom', _this.rowPositionUtils.sameRow(row, rangeEndRow));\n if (isMovingLeft) {\n _this.isLeft = true;\n cellComp.addOrRemoveCssClass('ag-selection-fill-left', column === colsToMark[0]);\n }\n else {\n cellComp.addOrRemoveCssClass('ag-selection-fill-right', column === _.last(colsToMark));\n }\n }\n row = _this.cellNavigationService.getRowBelow(row);\n } while (!isLastRow);\n });\n };\n FillHandle.prototype.reduceHorizontal = function (initialPosition, endPosition) {\n var _this = this;\n var allCols = this.columnModel.getAllDisplayedColumns();\n var startCol = allCols.indexOf(endPosition.column);\n var endCol = allCols.indexOf(initialPosition.column);\n var colsToMark = allCols.slice(startCol, endCol);\n var rangeStartRow = this.getRangeStartRow();\n var rangeEndRow = this.getRangeEndRow();\n colsToMark.forEach(function (column) {\n var row = rangeStartRow;\n var isLastRow = false;\n do {\n isLastRow = _this.rowPositionUtils.sameRow(row, rangeEndRow);\n var cell = _this.navigationService.getCellByPosition({\n rowIndex: row.rowIndex,\n rowPinned: row.rowPinned,\n column: column\n });\n if (cell) {\n _this.markedCells.push(cell);\n var cellComp = cell.getComp();\n cellComp.addOrRemoveCssClass('ag-selection-fill-right', column === colsToMark[0]);\n }\n row = _this.cellNavigationService.getRowBelow(row);\n } while (!isLastRow);\n });\n };\n FillHandle.prototype.refresh = function (cellCtrl) {\n var cellRange = this.rangeService.getCellRanges()[0];\n var isColumnRange = !cellRange.startRow || !cellRange.endRow;\n if (isColumnRange) {\n this.destroy();\n return;\n }\n _super.prototype.refresh.call(this, cellCtrl);\n };\n FillHandle.TEMPLATE = \"
    \";\n __decorate([\n Autowired('valueService')\n ], FillHandle.prototype, \"valueService\", void 0);\n return FillHandle;\n}(AbstractSelectionHandle));\nexport { FillHandle };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __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};\nimport { CellRangeType, SelectionHandleType, _ } from \"@ag-grid-community/core\";\nimport { AbstractSelectionHandle } from \"./abstractSelectionHandle\";\nvar RangeHandle = /** @class */ (function (_super) {\n __extends(RangeHandle, _super);\n function RangeHandle() {\n var _this = _super.call(this, RangeHandle.TEMPLATE) || this;\n _this.type = SelectionHandleType.RANGE;\n _this.rangeFixed = false;\n return _this;\n }\n RangeHandle.prototype.onDrag = function (e) {\n var lastCellHovered = this.getLastCellHovered();\n if (!lastCellHovered) {\n return;\n }\n var cellRanges = this.rangeService.getCellRanges();\n var lastRange = _.last(cellRanges);\n if (!this.rangeFixed) {\n this.fixRangeStartEnd(lastRange);\n this.rangeFixed = true;\n }\n this.endPosition = {\n rowIndex: lastCellHovered.rowIndex,\n rowPinned: lastCellHovered.rowPinned,\n column: lastCellHovered.column\n };\n // check if the cell ranges are for a chart\n if (cellRanges.length === 2 && cellRanges[0].type === CellRangeType.DIMENSION && lastRange.type === CellRangeType.VALUE) {\n var rowChanged = !this.rowPositionUtils.sameRow(this.endPosition, this.rangeService.getRangeEndRow(lastRange));\n if (rowChanged) {\n // ensure the dimension range is kept in sync with the value range (which has the handle)\n this.rangeService.updateRangeEnd(cellRanges[0], __assign(__assign({}, this.endPosition), { column: cellRanges[0].columns[0] }), true);\n }\n }\n this.rangeService.extendLatestRangeToCell(this.endPosition);\n };\n RangeHandle.prototype.onDragEnd = function (e) {\n var cellRange = _.last(this.rangeService.getCellRanges());\n this.fixRangeStartEnd(cellRange);\n this.rangeFixed = false;\n };\n RangeHandle.prototype.fixRangeStartEnd = function (cellRange) {\n var startRow = this.rangeService.getRangeStartRow(cellRange);\n var endRow = this.rangeService.getRangeEndRow(cellRange);\n var column = cellRange.columns[0];\n cellRange.startRow = startRow;\n cellRange.endRow = endRow;\n cellRange.startColumn = column;\n };\n RangeHandle.TEMPLATE = \"
    \";\n return RangeHandle;\n}(AbstractSelectionHandle));\nexport { RangeHandle };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Bean, BeanStub, SelectionHandleType } from \"@ag-grid-community/core\";\nimport { RangeHandle } from \"./rangeHandle\";\nimport { FillHandle } from \"./fillHandle\";\nvar SelectionHandleFactory = /** @class */ (function (_super) {\n __extends(SelectionHandleFactory, _super);\n function SelectionHandleFactory() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SelectionHandleFactory.prototype.createSelectionHandle = function (type) {\n return this.createBean(type === SelectionHandleType.RANGE ? new RangeHandle() : new FillHandle());\n };\n SelectionHandleFactory = __decorate([\n Bean('selectionHandleFactory')\n ], SelectionHandleFactory);\n return SelectionHandleFactory;\n}(BeanStub));\nexport { SelectionHandleFactory };\n","import { ModuleNames } from \"@ag-grid-community/core\";\nimport { EnterpriseCoreModule } from \"@ag-grid-enterprise/core\";\nimport { RangeService } from \"./rangeSelection/rangeService\";\nimport { FillHandle } from \"./rangeSelection/fillHandle\";\nimport { RangeHandle } from \"./rangeSelection/rangeHandle\";\nimport { SelectionHandleFactory } from \"./rangeSelection/selectionHandleFactory\";\nexport var RangeSelectionModule = {\n moduleName: ModuleNames.RangeSelectionModule,\n beans: [RangeService, SelectionHandleFactory],\n agStackComponents: [\n { componentName: 'AgFillHandle', componentClass: FillHandle },\n { componentName: 'AgRangeHandle', componentClass: RangeHandle }\n ],\n dependantModules: [\n EnterpriseCoreModule\n ]\n};\n","import { ModuleNames } from \"@ag-grid-community/core\";\nimport { EnterpriseCoreModule } from \"@ag-grid-enterprise/core\";\nimport { ChartService } from \"./charts/chartService\";\nimport { ChartTranslationService } from \"./charts/chartComp/services/chartTranslationService\";\nimport { ChartCrossFilterService } from \"./charts/chartComp/services/chartCrossFilterService\";\nimport { RangeSelectionModule } from \"@ag-grid-enterprise/range-selection\";\nexport var GridChartsModule = {\n moduleName: ModuleNames.GridChartsModule,\n beans: [\n ChartService, ChartTranslationService, ChartCrossFilterService\n ],\n dependantModules: [\n RangeSelectionModule,\n EnterpriseCoreModule\n ]\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __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};\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, BeanStub, RowNode, _ } from \"@ag-grid-community/core\";\nvar DetailCellRendererCtrl = /** @class */ (function (_super) {\n __extends(DetailCellRendererCtrl, _super);\n function DetailCellRendererCtrl() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.loadRowDataVersion = 0;\n _this.needRefresh = false;\n return _this;\n }\n DetailCellRendererCtrl.prototype.init = function (comp, params) {\n var _this = this;\n this.params = params;\n this.comp = comp;\n var doNothingBecauseInsidePinnedSection = params.pinned != null;\n if (doNothingBecauseInsidePinnedSection) {\n return;\n }\n this.setAutoHeightClasses();\n this.setupRefreshStrategy();\n this.addThemeToDetailGrid();\n this.createDetailGrid();\n this.loadRowData();\n this.addManagedListener(params.node.parent, RowNode.EVENT_DATA_CHANGED, function () {\n _this.needRefresh = true;\n });\n };\n DetailCellRendererCtrl.prototype.setAutoHeightClasses = function () {\n var autoHeight = this.gridOptionsWrapper.isDetailRowAutoHeight();\n var parentClass = autoHeight ? 'ag-details-row-auto-height' : 'ag-details-row-fixed-height';\n var detailClass = autoHeight ? 'ag-details-grid-auto-height' : 'ag-details-grid-fixed-height';\n this.comp.addOrRemoveCssClass(parentClass, true);\n this.comp.addOrRemoveDetailGridCssClass(detailClass, true);\n };\n DetailCellRendererCtrl.prototype.setupRefreshStrategy = function () {\n if (this.params.suppressRefresh) {\n console.warn(\"AG Grid: as of v23.2.0, cellRendererParams.suppressRefresh for Detail Cell Renderer is no \" +\n \"longer used. Please set cellRendererParams.refreshStrategy = 'nothing' instead.\");\n this.refreshStrategy = 'nothing';\n return;\n }\n var providedStrategy = this.params.refreshStrategy;\n var validSelection = providedStrategy == 'everything' || providedStrategy == 'nothing' || providedStrategy == 'rows';\n if (validSelection) {\n this.refreshStrategy = providedStrategy;\n return;\n }\n if (providedStrategy != null) {\n console.warn(\"AG Grid: invalid cellRendererParams.refreshStrategy = '\" + providedStrategy +\n \"' supplied, defaulting to refreshStrategy = 'rows'.\");\n }\n this.refreshStrategy = 'rows';\n };\n DetailCellRendererCtrl.prototype.addThemeToDetailGrid = function () {\n // this is needed by environment service of the child grid, the class needs to be on\n // the grid div itself - the browser's CSS on the other hand just inherits from the parent grid theme.\n var theme = this.environment.getTheme().theme;\n if (theme) {\n this.comp.addOrRemoveDetailGridCssClass(theme, true);\n }\n };\n DetailCellRendererCtrl.prototype.createDetailGrid = function () {\n if (_.missing(this.params.detailGridOptions)) {\n console.warn('AG Grid: could not find detail grid options for master detail, ' +\n 'please set gridOptions.detailCellRendererParams.detailGridOptions');\n return;\n }\n var autoHeight = this.gridOptionsWrapper.isDetailRowAutoHeight();\n // we clone the detail grid options, as otherwise it would be shared\n // across many instances, and that would be a problem because we set\n // api and columnApi into gridOptions\n var gridOptions = __assign({}, this.params.detailGridOptions);\n if (autoHeight) {\n gridOptions.domLayout = 'autoHeight';\n }\n this.comp.setDetailGrid(gridOptions);\n };\n DetailCellRendererCtrl.prototype.registerDetailWithMaster = function (api, columnApi) {\n var rowId = this.params.node.id;\n var masterGridApi = this.params.api;\n var gridInfo = {\n id: rowId,\n api: api,\n columnApi: columnApi\n };\n var rowNode = this.params.node;\n // register with api\n masterGridApi.addDetailGridInfo(rowId, gridInfo);\n // register with node\n rowNode.detailGridInfo = gridInfo;\n this.addDestroyFunc(function () {\n // the gridInfo can be stale if a refresh happens and\n // a new row is created before the old one is destroyed.\n if (rowNode.detailGridInfo !== gridInfo) {\n return;\n }\n masterGridApi.removeDetailGridInfo(rowId); // unregister from api\n rowNode.detailGridInfo = null; // unregister from node\n });\n };\n DetailCellRendererCtrl.prototype.loadRowData = function () {\n var _this = this;\n // in case a refresh happens before the last refresh completes (as we depend on async\n // application logic) we keep track on what the latest call was.\n this.loadRowDataVersion++;\n var versionThisCall = this.loadRowDataVersion;\n var userFunc = this.params.getDetailRowData;\n if (!userFunc) {\n console.warn('AG Grid: could not find getDetailRowData for master / detail, ' +\n 'please set gridOptions.detailCellRendererParams.getDetailRowData');\n return;\n }\n var successCallback = function (rowData) {\n var mostRecentCall = _this.loadRowDataVersion === versionThisCall;\n if (mostRecentCall) {\n _this.comp.setRowData(rowData);\n }\n };\n var funcParams = {\n node: this.params.node,\n // we take data from node, rather than params.data\n // as the data could have been updated with new instance\n data: this.params.node.data,\n successCallback: successCallback,\n context: this.gridOptionsWrapper.getContext()\n };\n userFunc(funcParams);\n };\n DetailCellRendererCtrl.prototype.refresh = function () {\n var GET_GRID_TO_REFRESH = false;\n var GET_GRID_TO_DO_NOTHING = true;\n // if we return true, it means we pretend to the grid\n // that we have refreshed, so refresh will never happen.\n var doNotRefresh = !this.needRefresh || this.refreshStrategy === 'nothing';\n if (doNotRefresh) {\n // we do nothing in this refresh method, and also tell the grid to do nothing\n return GET_GRID_TO_DO_NOTHING;\n }\n // reset flag, so don't refresh again until more data changes.\n this.needRefresh = false;\n if (this.refreshStrategy === 'everything') {\n // we want full refresh, so tell the grid to destroy and recreate this cell\n return GET_GRID_TO_REFRESH;\n }\n else {\n // do the refresh here, and tell the grid to do nothing\n this.loadRowData();\n return GET_GRID_TO_DO_NOTHING;\n }\n };\n __decorate([\n Autowired('environment')\n ], DetailCellRendererCtrl.prototype, \"environment\", void 0);\n return DetailCellRendererCtrl;\n}(BeanStub));\nexport { DetailCellRendererCtrl };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Grid, RefSelector, _ } from \"@ag-grid-community/core\";\nimport { DetailCellRendererCtrl } from \"./detailCellRendererCtrl\";\nvar DetailCellRenderer = /** @class */ (function (_super) {\n __extends(DetailCellRenderer, _super);\n function DetailCellRenderer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n DetailCellRenderer.prototype.init = function (params) {\n var _this = this;\n this.params = params;\n this.selectAndSetTemplate();\n var compProxy = {\n addOrRemoveCssClass: function (cssClassName, on) { return _this.addOrRemoveCssClass(cssClassName, on); },\n addOrRemoveDetailGridCssClass: function (cssClassName, on) { return _this.eDetailGrid.classList.toggle(cssClassName, on); },\n setDetailGrid: function (gridOptions) { return _this.setDetailGrid(gridOptions); },\n setRowData: function (rowData) { return _this.setRowData(rowData); }\n };\n this.ctrl = this.createManagedBean(new DetailCellRendererCtrl());\n this.ctrl.init(compProxy, params);\n };\n DetailCellRenderer.prototype.refresh = function () {\n return this.ctrl && this.ctrl.refresh();\n };\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to override destroy() just to make the method public.\n DetailCellRenderer.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n DetailCellRenderer.prototype.selectAndSetTemplate = function () {\n var _this = this;\n if (this.params.pinned) {\n this.setTemplate('
    ');\n return;\n }\n var setDefaultTemplate = function () {\n _this.setTemplate(DetailCellRenderer.TEMPLATE);\n };\n if (_.missing(this.params.template)) {\n // use default template\n setDefaultTemplate();\n }\n else {\n // use user provided template\n if (typeof this.params.template === 'string') {\n this.setTemplate(this.params.template);\n }\n else if (typeof this.params.template === 'function') {\n var templateFunc = this.params.template;\n var template = templateFunc(this.params);\n this.setTemplate(template);\n }\n else {\n console.warn('AG Grid: detailCellRendererParams.template should be function or string');\n setDefaultTemplate();\n }\n }\n if (this.eDetailGrid == null) {\n console.warn('AG Grid: reference to eDetailGrid was missing from the details template. ' +\n 'Please add ref=\"eDetailGrid\" to the template.');\n }\n };\n DetailCellRenderer.prototype.setDetailGrid = function (gridOptions) {\n if (!this.eDetailGrid) {\n return;\n }\n // AG-1715\n // this is only needed when reactUi=false, once we remove the old way\n // of doing react, and Master / Details is all native React, then we\n // can remove this code.\n var agGridReact = this.context.getBean('agGridReact');\n var agGridReactCloned = agGridReact ? _.cloneObject(agGridReact) : undefined;\n // when we create detail grid, the detail grid needs frameworkComponentWrapper so that\n // it created child components correctly, ie Angular detail grid can have Angular cell renderer.\n // this is only used by Angular and Vue, as React uses native React AG Grid detail grids\n var frameworkComponentWrapper = this.context.getBean('frameworkComponentWrapper');\n var frameworkOverrides = this.getFrameworkOverrides();\n // tslint:disable-next-line\n new Grid(this.eDetailGrid, gridOptions, {\n $scope: this.params.$scope,\n $compile: this.params.$compile,\n frameworkOverrides: frameworkOverrides,\n providedBeanInstances: {\n agGridReact: agGridReactCloned,\n frameworkComponentWrapper: frameworkComponentWrapper\n }\n });\n this.detailApi = gridOptions.api;\n this.ctrl.registerDetailWithMaster(gridOptions.api, gridOptions.columnApi);\n this.addDestroyFunc(function () {\n if (gridOptions.api) {\n gridOptions.api.destroy();\n }\n });\n };\n DetailCellRenderer.prototype.setRowData = function (rowData) {\n // ensure detail grid api still exists (grid may be destroyed when async call tries to set data)\n this.detailApi && this.detailApi.setRowData(rowData);\n };\n DetailCellRenderer.TEMPLATE = \"
    \\n
    \\n
    \";\n __decorate([\n RefSelector('eDetailGrid')\n ], DetailCellRenderer.prototype, \"eDetailGrid\", void 0);\n return DetailCellRenderer;\n}(Component));\nexport { DetailCellRenderer };\n","import { ModuleNames } from \"@ag-grid-community/core\";\nimport { EnterpriseCoreModule } from \"@ag-grid-enterprise/core\";\nimport { DetailCellRenderer } from \"./masterDetail/detailCellRenderer\";\nimport { DetailCellRendererCtrl } from \"./masterDetail/detailCellRendererCtrl\";\nexport var MasterDetailModule = {\n moduleName: ModuleNames.MasterDetailModule,\n beans: [],\n userComponents: [\n { componentName: 'agDetailCellRenderer', componentClass: DetailCellRenderer }\n ],\n controllers: [\n { controllerName: 'detailCellRenderer', controllerClass: DetailCellRendererCtrl }\n ],\n dependantModules: [\n EnterpriseCoreModule\n ]\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { _, Autowired, Bean, BeanStub, Column, Constants, ModuleNames, ModuleRegistry, PostConstruct, AgPromise, TabbedLayout, AgMenuList, AgMenuItemComponent } from '@ag-grid-community/core';\nimport { PrimaryColsPanel } from '@ag-grid-enterprise/column-tool-panel';\nvar EnterpriseMenuFactory = /** @class */ (function (_super) {\n __extends(EnterpriseMenuFactory, _super);\n function EnterpriseMenuFactory() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n EnterpriseMenuFactory.prototype.hideActiveMenu = function () {\n this.destroyBean(this.activeMenu);\n };\n EnterpriseMenuFactory.prototype.showMenuAfterMouseEvent = function (column, mouseEvent, defaultTab) {\n var _this = this;\n this.showMenu(column, function (menu) {\n var ePopup = menu.getGui();\n _this.popupService.positionPopupUnderMouseEvent({\n type: 'columnMenu',\n column: column,\n mouseEvent: mouseEvent,\n ePopup: ePopup\n });\n if (defaultTab) {\n menu.showTab(defaultTab);\n }\n }, 'columnMenu', defaultTab, undefined, mouseEvent.target);\n };\n EnterpriseMenuFactory.prototype.showMenuAfterButtonClick = function (column, eventSource, containerType, defaultTab, restrictToTabs) {\n var _this = this;\n var multiplier = -1;\n var alignSide = 'left';\n if (this.gridOptionsWrapper.isEnableRtl()) {\n multiplier = 1;\n alignSide = 'right';\n }\n this.showMenu(column, function (menu) {\n var ePopup = menu.getGui();\n _this.popupService.positionPopupUnderComponent({\n type: containerType,\n column: column,\n eventSource: eventSource,\n ePopup: ePopup,\n alignSide: alignSide,\n nudgeX: 9 * multiplier,\n nudgeY: -23,\n keepWithinBounds: true\n });\n if (defaultTab) {\n menu.showTab(defaultTab);\n }\n }, containerType, defaultTab, restrictToTabs, eventSource);\n };\n EnterpriseMenuFactory.prototype.showMenu = function (column, positionCallback, containerType, defaultTab, restrictToTabs, eventSource) {\n var _this = this;\n var menu = this.createBean(new EnterpriseMenu(column, this.lastSelectedTab, restrictToTabs));\n var eMenuGui = menu.getGui();\n var anchorToElement = eventSource || this.ctrlsService.getGridBodyCtrl().getGui();\n var closedFuncs = [];\n closedFuncs.push(function (e) {\n _this.destroyBean(menu);\n column.setMenuVisible(false, 'contextMenu');\n var isKeyboardEvent = e instanceof KeyboardEvent;\n if (isKeyboardEvent && eventSource && _.isVisible(eventSource)) {\n var focusableEl = _this.focusService.findTabbableParent(eventSource);\n if (focusableEl) {\n focusableEl.focus();\n }\n }\n });\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n // need to show filter before positioning, as only after filter\n // is visible can we find out what the width of it is\n var addPopupRes = this.popupService.addPopup({\n modal: true,\n eChild: eMenuGui,\n closeOnEsc: true,\n closedCallback: function (e) {\n closedFuncs.forEach(function (f) { return f(e); });\n },\n afterGuiAttached: function (params) { return menu.afterGuiAttached(Object.assign({}, { container: containerType }, params)); },\n positionCallback: function () { return positionCallback(menu); },\n anchorToElement: anchorToElement,\n ariaLabel: translate('ariaLabelColumnMenu', 'Column Menu')\n });\n if (addPopupRes) {\n // if user starts showing / hiding columns, or otherwise move the underlying column\n // for this menu, we want to stop tracking the menu with the column position. otherwise\n // the menu would move as the user is using the columns tab inside the menu.\n var stopAnchoringPromise = addPopupRes.stopAnchoringPromise;\n if (stopAnchoringPromise) {\n stopAnchoringPromise.then(function (stopAnchoringFunc) {\n column.addEventListener(Column.EVENT_LEFT_CHANGED, stopAnchoringFunc);\n column.addEventListener(Column.EVENT_VISIBLE_CHANGED, stopAnchoringFunc);\n closedFuncs.push(function () {\n column.removeEventListener(Column.EVENT_LEFT_CHANGED, stopAnchoringFunc);\n column.removeEventListener(Column.EVENT_VISIBLE_CHANGED, stopAnchoringFunc);\n });\n });\n }\n }\n if (!defaultTab) {\n menu.showTabBasedOnPreviousSelection();\n // reposition the menu because the method above could load\n // an element that is bigger than enterpriseMenu header.\n positionCallback(menu);\n }\n menu.addEventListener(EnterpriseMenu.EVENT_TAB_SELECTED, function (event) {\n _this.lastSelectedTab = event.key;\n });\n column.setMenuVisible(true, 'contextMenu');\n this.activeMenu = menu;\n menu.addEventListener(BeanStub.EVENT_DESTROYED, function () {\n if (_this.activeMenu === menu) {\n _this.activeMenu = null;\n }\n });\n };\n EnterpriseMenuFactory.prototype.isMenuEnabled = function (column) {\n return column.getMenuTabs(EnterpriseMenu.TABS_DEFAULT).length > 0;\n };\n __decorate([\n Autowired('popupService')\n ], EnterpriseMenuFactory.prototype, \"popupService\", void 0);\n __decorate([\n Autowired('focusService')\n ], EnterpriseMenuFactory.prototype, \"focusService\", void 0);\n __decorate([\n Autowired('ctrlsService')\n ], EnterpriseMenuFactory.prototype, \"ctrlsService\", void 0);\n EnterpriseMenuFactory = __decorate([\n Bean('menuFactory')\n ], EnterpriseMenuFactory);\n return EnterpriseMenuFactory;\n}(BeanStub));\nexport { EnterpriseMenuFactory };\nvar EnterpriseMenu = /** @class */ (function (_super) {\n __extends(EnterpriseMenu, _super);\n function EnterpriseMenu(column, initialSelection, restrictTo) {\n var _this = _super.call(this) || this;\n _this.tabFactories = {};\n _this.includeChecks = {};\n _this.column = column;\n _this.initialSelection = initialSelection;\n _this.tabFactories[EnterpriseMenu.TAB_GENERAL] = _this.createMainPanel.bind(_this);\n _this.tabFactories[EnterpriseMenu.TAB_FILTER] = _this.createFilterPanel.bind(_this);\n _this.tabFactories[EnterpriseMenu.TAB_COLUMNS] = _this.createColumnsPanel.bind(_this);\n _this.includeChecks[EnterpriseMenu.TAB_GENERAL] = function () { return true; };\n _this.includeChecks[EnterpriseMenu.TAB_FILTER] = function () { return column.isFilterAllowed(); };\n _this.includeChecks[EnterpriseMenu.TAB_COLUMNS] = function () { return true; };\n _this.restrictTo = restrictTo;\n return _this;\n }\n EnterpriseMenu.prototype.init = function () {\n var _this = this;\n var tabs = this.getTabsToCreate().map(function (name) { return _this.createTab(name); });\n this.tabbedLayout = new TabbedLayout({\n items: tabs,\n cssClass: 'ag-menu',\n onActiveItemClicked: this.onHidePopup.bind(this),\n onItemClicked: this.onTabItemClicked.bind(this)\n });\n this.createBean(this.tabbedLayout);\n if (this.mainMenuList) {\n this.mainMenuList.setParentComponent(this.tabbedLayout);\n }\n };\n EnterpriseMenu.prototype.getTabsToCreate = function () {\n var _this = this;\n if (this.restrictTo) {\n return this.restrictTo;\n }\n return this.column.getMenuTabs(EnterpriseMenu.TABS_DEFAULT)\n .filter(function (tabName) { return _this.isValidMenuTabItem(tabName); })\n .filter(function (tabName) { return _this.isNotSuppressed(tabName); })\n .filter(function (tabName) { return _this.isModuleLoaded(tabName); });\n };\n EnterpriseMenu.prototype.isModuleLoaded = function (menuTabName) {\n if (menuTabName === EnterpriseMenu.TAB_COLUMNS) {\n return ModuleRegistry.isRegistered(ModuleNames.ColumnToolPanelModule);\n }\n return true;\n };\n EnterpriseMenu.prototype.isValidMenuTabItem = function (menuTabName) {\n var isValid = true;\n var itemsToConsider = EnterpriseMenu.TABS_DEFAULT;\n if (this.restrictTo != null) {\n isValid = this.restrictTo.indexOf(menuTabName) > -1;\n itemsToConsider = this.restrictTo;\n }\n isValid = isValid && EnterpriseMenu.TABS_DEFAULT.indexOf(menuTabName) > -1;\n if (!isValid) {\n console.warn(\"AG Grid: Trying to render an invalid menu item '\" + menuTabName + \"'. Check that your 'menuTabs' contains one of [\" + itemsToConsider + \"]\");\n }\n return isValid;\n };\n EnterpriseMenu.prototype.isNotSuppressed = function (menuTabName) {\n return this.includeChecks[menuTabName]();\n };\n EnterpriseMenu.prototype.createTab = function (name) {\n return this.tabFactories[name]();\n };\n EnterpriseMenu.prototype.showTabBasedOnPreviousSelection = function () {\n // show the tab the user was on last time they had a menu open\n this.showTab(this.initialSelection);\n };\n EnterpriseMenu.prototype.showTab = function (toShow) {\n if (this.tabItemColumns && toShow === EnterpriseMenu.TAB_COLUMNS) {\n this.tabbedLayout.showItem(this.tabItemColumns);\n }\n else if (this.tabItemFilter && toShow === EnterpriseMenu.TAB_FILTER) {\n this.tabbedLayout.showItem(this.tabItemFilter);\n }\n else if (this.tabItemGeneral && toShow === EnterpriseMenu.TAB_GENERAL) {\n this.tabbedLayout.showItem(this.tabItemGeneral);\n }\n else {\n this.tabbedLayout.showFirstItem();\n }\n };\n EnterpriseMenu.prototype.onTabItemClicked = function (event) {\n var key = null;\n switch (event.item) {\n case this.tabItemColumns:\n key = EnterpriseMenu.TAB_COLUMNS;\n break;\n case this.tabItemFilter:\n key = EnterpriseMenu.TAB_FILTER;\n break;\n case this.tabItemGeneral:\n key = EnterpriseMenu.TAB_GENERAL;\n break;\n }\n if (key) {\n this.activateTab(key);\n }\n };\n EnterpriseMenu.prototype.activateTab = function (tab) {\n var ev = {\n type: EnterpriseMenu.EVENT_TAB_SELECTED,\n key: tab\n };\n this.dispatchEvent(ev);\n };\n EnterpriseMenu.prototype.getMenuItems = function () {\n var defaultMenuOptions = this.getDefaultMenuOptions();\n var result;\n var userFunc = this.gridOptionsWrapper.getMainMenuItemsFunc();\n if (userFunc) {\n result = userFunc({\n column: this.column,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext(),\n defaultItems: defaultMenuOptions\n });\n }\n else {\n result = defaultMenuOptions;\n }\n // GUI looks weird when two separators are side by side. this can happen accidentally\n // if we remove items from the menu then two separators can edit up adjacent.\n _.removeRepeatsFromArray(result, EnterpriseMenu.MENU_ITEM_SEPARATOR);\n return result;\n };\n EnterpriseMenu.prototype.getDefaultMenuOptions = function () {\n var result = [];\n var allowPinning = !this.column.getColDef().lockPinned;\n var rowGroupCount = this.columnModel.getRowGroupColumns().length;\n var doingGrouping = rowGroupCount > 0;\n var groupedByThisColumn = this.columnModel.getRowGroupColumns().indexOf(this.column) >= 0;\n var allowValue = this.column.isAllowValue();\n var allowRowGroup = this.column.isAllowRowGroup();\n var isPrimary = this.column.isPrimary();\n var pivotModeOn = this.columnModel.isPivotMode();\n var isInMemoryRowModel = this.rowModel.getType() === Constants.ROW_MODEL_TYPE_CLIENT_SIDE;\n var usingTreeData = this.gridOptionsWrapper.isTreeData();\n var allowValueAgg = \n // if primary, then only allow aggValue if grouping and it's a value columns\n (isPrimary && doingGrouping && allowValue)\n // secondary columns can always have aggValue, as it means it's a pivot value column\n || !isPrimary;\n if (allowPinning) {\n result.push('pinSubMenu');\n }\n if (allowValueAgg) {\n result.push('valueAggSubMenu');\n }\n if (allowPinning || allowValueAgg) {\n result.push(EnterpriseMenu.MENU_ITEM_SEPARATOR);\n }\n result.push('autoSizeThis');\n result.push('autoSizeAll');\n result.push(EnterpriseMenu.MENU_ITEM_SEPARATOR);\n if (allowRowGroup && this.column.isPrimary()) {\n if (groupedByThisColumn) {\n result.push('rowUnGroup');\n }\n else {\n result.push('rowGroup');\n }\n }\n result.push(EnterpriseMenu.MENU_ITEM_SEPARATOR);\n result.push('resetColumns');\n // only add grouping expand/collapse if grouping in the InMemoryRowModel\n // if pivoting, we only have expandable groups if grouping by 2 or more columns\n // as the lowest level group is not expandable while pivoting.\n // if not pivoting, then any active row group can be expanded.\n var allowExpandAndContract = isInMemoryRowModel && (usingTreeData || rowGroupCount > (pivotModeOn ? 1 : 0));\n if (allowExpandAndContract) {\n result.push('expandAll');\n result.push('contractAll');\n }\n return result;\n };\n EnterpriseMenu.prototype.createMainPanel = function () {\n this.mainMenuList = this.createManagedBean(new AgMenuList());\n var menuItems = this.getMenuItems();\n var menuItemsMapped = this.menuItemMapper.mapWithStockItems(menuItems, this.column);\n this.mainMenuList.addMenuItems(menuItemsMapped);\n this.mainMenuList.addEventListener(AgMenuItemComponent.EVENT_MENU_ITEM_SELECTED, this.onHidePopup.bind(this));\n this.tabItemGeneral = {\n title: _.createIconNoSpan('menu', this.gridOptionsWrapper, this.column),\n titleLabel: EnterpriseMenu.TAB_GENERAL.replace('MenuTab', ''),\n bodyPromise: AgPromise.resolve(this.mainMenuList.getGui()),\n name: EnterpriseMenu.TAB_GENERAL\n };\n return this.tabItemGeneral;\n };\n EnterpriseMenu.prototype.onHidePopup = function (event) {\n var keyboardEvent;\n if (event && event.event && event.event instanceof KeyboardEvent) {\n keyboardEvent = event.event;\n }\n this.hidePopupFunc(keyboardEvent && { keyboardEvent: keyboardEvent });\n // this method only gets called when the menu was closed by selection an option\n // in this case we highlight the cell that was previously highlighted\n var focusedCell = this.focusService.getFocusedCell();\n var eDocument = this.gridOptionsWrapper.getDocument();\n if (eDocument.activeElement === eDocument.body && focusedCell) {\n var rowIndex = focusedCell.rowIndex, rowPinned = focusedCell.rowPinned, column = focusedCell.column;\n this.focusService.setFocusedCell(rowIndex, column, rowPinned, true);\n }\n };\n EnterpriseMenu.prototype.createFilterPanel = function () {\n var _a;\n var filterWrapper = this.filterManager.getOrCreateFilterWrapper(this.column, 'COLUMN_MENU');\n if (!filterWrapper) {\n throw new Error('AG Grid - Unable to instantiate filter');\n }\n var afterFilterAttachedCallback = function (params) {\n var _a;\n if (!((_a = filterWrapper) === null || _a === void 0 ? void 0 : _a.filterPromise)) {\n return;\n }\n // slightly odd block this - this promise will always have been resolved by the time it gets here, so won't be\n // async (_unless_ in react or similar, but if so why not encountered before now?).\n // I'd suggest a future improvement would be to remove/replace this promise as this block just wont work if it is\n // async and is confusing if you don't have this context\n filterWrapper.filterPromise.then(function (filter) {\n if (filter && filter.afterGuiAttached) {\n filter.afterGuiAttached(params);\n }\n });\n };\n this.tabItemFilter = {\n title: _.createIconNoSpan('filter', this.gridOptionsWrapper, this.column),\n titleLabel: EnterpriseMenu.TAB_FILTER.replace('MenuTab', ''),\n bodyPromise: (_a = filterWrapper) === null || _a === void 0 ? void 0 : _a.guiPromise,\n afterAttachedCallback: afterFilterAttachedCallback,\n name: EnterpriseMenu.TAB_FILTER\n };\n return this.tabItemFilter;\n };\n EnterpriseMenu.prototype.createColumnsPanel = function () {\n var eWrapperDiv = document.createElement('div');\n eWrapperDiv.classList.add('ag-menu-column-select-wrapper');\n this.columnSelectPanel = this.createManagedBean(new PrimaryColsPanel());\n var columnsMenuParams = this.column.getColDef().columnsMenuParams;\n if (!columnsMenuParams) {\n columnsMenuParams = {};\n }\n this.columnSelectPanel.init(false, {\n suppressColumnMove: false,\n suppressValues: false,\n suppressPivots: false,\n suppressRowGroups: false,\n suppressPivotMode: false,\n contractColumnSelection: !!columnsMenuParams.contractColumnSelection,\n suppressColumnExpandAll: !!columnsMenuParams.suppressColumnExpandAll,\n suppressColumnFilter: !!columnsMenuParams.suppressColumnFilter,\n suppressColumnSelectAll: !!columnsMenuParams.suppressColumnSelectAll,\n suppressSyncLayoutWithGrid: !!columnsMenuParams.suppressSyncLayoutWithGrid,\n api: this.gridApi,\n columnApi: this.columnApi\n }, 'columnMenu');\n var columnSelectPanelGui = this.columnSelectPanel.getGui();\n columnSelectPanelGui.classList.add('ag-menu-column-select');\n eWrapperDiv.appendChild(columnSelectPanelGui);\n this.tabItemColumns = {\n title: _.createIconNoSpan('columns', this.gridOptionsWrapper, this.column),\n titleLabel: EnterpriseMenu.TAB_COLUMNS.replace('MenuTab', ''),\n bodyPromise: AgPromise.resolve(eWrapperDiv),\n name: EnterpriseMenu.TAB_COLUMNS\n };\n return this.tabItemColumns;\n };\n EnterpriseMenu.prototype.afterGuiAttached = function (params) {\n var container = params.container, hidePopup = params.hidePopup;\n this.tabbedLayout.setAfterAttachedParams({ container: container, hidePopup: hidePopup });\n if (hidePopup) {\n this.hidePopupFunc = hidePopup;\n this.addDestroyFunc(hidePopup);\n }\n };\n EnterpriseMenu.prototype.getGui = function () {\n return this.tabbedLayout.getGui();\n };\n EnterpriseMenu.EVENT_TAB_SELECTED = 'tabSelected';\n EnterpriseMenu.TAB_FILTER = 'filterMenuTab';\n EnterpriseMenu.TAB_GENERAL = 'generalMenuTab';\n EnterpriseMenu.TAB_COLUMNS = 'columnsMenuTab';\n EnterpriseMenu.TABS_DEFAULT = [EnterpriseMenu.TAB_GENERAL, EnterpriseMenu.TAB_FILTER, EnterpriseMenu.TAB_COLUMNS];\n EnterpriseMenu.MENU_ITEM_SEPARATOR = 'separator';\n __decorate([\n Autowired('columnModel')\n ], EnterpriseMenu.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('filterManager')\n ], EnterpriseMenu.prototype, \"filterManager\", void 0);\n __decorate([\n Autowired('gridApi')\n ], EnterpriseMenu.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('columnApi')\n ], EnterpriseMenu.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('menuItemMapper')\n ], EnterpriseMenu.prototype, \"menuItemMapper\", void 0);\n __decorate([\n Autowired('rowModel')\n ], EnterpriseMenu.prototype, \"rowModel\", void 0);\n __decorate([\n Autowired('focusService')\n ], EnterpriseMenu.prototype, \"focusService\", void 0);\n __decorate([\n PostConstruct\n ], EnterpriseMenu.prototype, \"init\", null);\n return EnterpriseMenu;\n}(BeanStub));\nexport { EnterpriseMenu };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { _, AgMenuItemComponent, AgMenuList, Autowired, Bean, BeanStub, Component, ModuleNames, ModuleRegistry, Optional, PostConstruct } from \"@ag-grid-community/core\";\nvar CSS_MENU = 'ag-menu';\nvar CSS_CONTEXT_MENU_OPEN = 'ag-context-menu-open';\nvar ContextMenuFactory = /** @class */ (function (_super) {\n __extends(ContextMenuFactory, _super);\n function ContextMenuFactory() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ContextMenuFactory.prototype.hideActiveMenu = function () {\n this.destroyBean(this.activeMenu);\n };\n ContextMenuFactory.prototype.getMenuItems = function (node, column, value) {\n var defaultMenuOptions = [];\n if (_.exists(node) && ModuleRegistry.isRegistered(ModuleNames.ClipboardModule)) {\n if (column) {\n // only makes sense if column exists, could have originated from a row\n defaultMenuOptions.push('copy', 'copyWithHeaders', 'copyWithGroupHeaders', 'paste', 'separator');\n }\n }\n if (this.gridOptionsWrapper.isEnableCharts() &&\n ModuleRegistry.isRegistered(ModuleNames.RangeSelectionModule) &&\n ModuleRegistry.isRegistered(ModuleNames.GridChartsModule)) {\n if (this.columnModel.isPivotMode()) {\n defaultMenuOptions.push('pivotChart');\n }\n if (this.rangeService && !this.rangeService.isEmpty()) {\n defaultMenuOptions.push('chartRange');\n }\n }\n if (_.exists(node)) {\n // if user clicks a cell\n var csvModuleMissing = !ModuleRegistry.isRegistered(ModuleNames.CsvExportModule);\n var excelModuleMissing = !ModuleRegistry.isRegistered(ModuleNames.ExcelExportModule);\n var suppressExcel = this.gridOptionsWrapper.isSuppressExcelExport() || excelModuleMissing;\n var suppressCsv = this.gridOptionsWrapper.isSuppressCsvExport() || csvModuleMissing;\n var onIPad = _.isIOSUserAgent();\n var anyExport = !onIPad && (!suppressExcel || !suppressCsv);\n if (anyExport) {\n defaultMenuOptions.push('export');\n }\n }\n if (this.gridOptionsWrapper.getContextMenuItemsFunc()) {\n var userFunc = this.gridOptionsWrapper.getContextMenuItemsFunc();\n var params = {\n node: node,\n column: column,\n value: value,\n defaultItems: defaultMenuOptions.length ? defaultMenuOptions : undefined,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext()\n };\n return userFunc ? userFunc(params) : undefined;\n }\n return defaultMenuOptions;\n };\n ContextMenuFactory.prototype.onContextMenu = function (mouseEvent, touchEvent, rowNode, column, value, anchorToElement) {\n // to allow us to debug in chrome, we ignore the event if ctrl is pressed.\n // not everyone wants this, so first 'if' below allows to turn this hack off.\n if (!this.gridOptionsWrapper.isAllowContextMenuWithControlKey()) {\n // then do the check\n if (mouseEvent && (mouseEvent.ctrlKey || mouseEvent.metaKey)) {\n return;\n }\n }\n // need to do this regardless of context menu showing or not, so doing\n // before the isSuppressContextMenu() check\n if (mouseEvent) {\n this.blockMiddleClickScrollsIfNeeded(mouseEvent);\n }\n if (this.gridOptionsWrapper.isSuppressContextMenu()) {\n return;\n }\n var eventOrTouch = mouseEvent ? mouseEvent : touchEvent.touches[0];\n if (this.showMenu(rowNode, column, value, eventOrTouch, anchorToElement)) {\n var event_1 = mouseEvent ? mouseEvent : touchEvent;\n event_1.preventDefault();\n }\n };\n ContextMenuFactory.prototype.blockMiddleClickScrollsIfNeeded = function (mouseEvent) {\n // if we don't do this, then middle click will never result in a 'click' event, as 'mousedown'\n // will be consumed by the browser to mean 'scroll' (as you can scroll with the middle mouse\n // button in the browser). so this property allows the user to receive middle button clicks if\n // they want.\n var gridOptionsWrapper = this.gridOptionsWrapper;\n var which = mouseEvent.which;\n if (gridOptionsWrapper.isSuppressMiddleClickScrolls() && which === 2) {\n mouseEvent.preventDefault();\n }\n };\n ContextMenuFactory.prototype.showMenu = function (node, column, value, mouseEvent, anchorToElement) {\n var _this = this;\n var menuItems = this.getMenuItems(node, column, value);\n var eGridBodyGui = this.ctrlsService.getGridBodyCtrl().getGui();\n if (menuItems === undefined || _.missingOrEmpty(menuItems)) {\n return false;\n }\n var menu = new ContextMenu(menuItems);\n this.createBean(menu);\n var eMenuGui = menu.getGui();\n var positionParams = {\n column: column,\n rowNode: node,\n type: 'contextMenu',\n mouseEvent: mouseEvent,\n ePopup: eMenuGui,\n // move one pixel away so that accidentally double clicking\n // won't show the browser's contextmenu\n nudgeY: 1\n };\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var addPopupRes = this.popupService.addPopup({\n modal: true,\n eChild: eMenuGui,\n closeOnEsc: true,\n closedCallback: function () {\n eGridBodyGui.classList.remove(CSS_CONTEXT_MENU_OPEN);\n _this.destroyBean(menu);\n },\n click: mouseEvent,\n positionCallback: function () {\n _this.popupService.positionPopupUnderMouseEvent(Object.assign({}, {\n nudgeX: _this.gridOptionsWrapper.isEnableRtl() ? (eMenuGui.offsetWidth + 1) * -1 : 1\n }, positionParams));\n },\n // so when browser is scrolled down, or grid is scrolled, context menu stays with cell\n anchorToElement: anchorToElement,\n ariaLabel: translate('ariaLabelContextMenu', 'Context Menu')\n });\n if (addPopupRes) {\n eGridBodyGui.classList.add(CSS_CONTEXT_MENU_OPEN);\n menu.afterGuiAttached({ container: 'contextMenu', hidePopup: addPopupRes.hideFunc });\n }\n // there should never be an active menu at this point, however it was found\n // that you could right click a second time just 1 or 2 pixels from the first\n // click, and another menu would pop up. so somehow the logic for closing the\n // first menu (clicking outside should close it) was glitchy somehow. an easy\n // way to avoid this is just remove the old context menu here if it exists.\n if (this.activeMenu) {\n this.hideActiveMenu();\n }\n this.activeMenu = menu;\n menu.addEventListener(BeanStub.EVENT_DESTROYED, function () {\n if (_this.activeMenu === menu) {\n _this.activeMenu = null;\n }\n });\n // hide the popup if something gets selected\n if (addPopupRes) {\n menu.addEventListener(AgMenuItemComponent.EVENT_MENU_ITEM_SELECTED, addPopupRes.hideFunc);\n }\n return true;\n };\n __decorate([\n Autowired('popupService')\n ], ContextMenuFactory.prototype, \"popupService\", void 0);\n __decorate([\n Optional('rangeService')\n ], ContextMenuFactory.prototype, \"rangeService\", void 0);\n __decorate([\n Autowired('ctrlsService')\n ], ContextMenuFactory.prototype, \"ctrlsService\", void 0);\n __decorate([\n Autowired('columnModel')\n ], ContextMenuFactory.prototype, \"columnModel\", void 0);\n ContextMenuFactory = __decorate([\n Bean('contextMenuFactory')\n ], ContextMenuFactory);\n return ContextMenuFactory;\n}(BeanStub));\nexport { ContextMenuFactory };\nvar ContextMenu = /** @class */ (function (_super) {\n __extends(ContextMenu, _super);\n function ContextMenu(menuItems) {\n var _this = _super.call(this, /* html */ \"
    \") || this;\n _this.menuList = null;\n _this.focusedCell = null;\n _this.menuItems = menuItems;\n return _this;\n }\n ContextMenu.prototype.addMenuItems = function () {\n var _this = this;\n var menuList = this.createBean(new AgMenuList());\n var menuItemsMapped = this.menuItemMapper.mapWithStockItems(this.menuItems, null);\n menuList.addMenuItems(menuItemsMapped);\n this.appendChild(menuList);\n this.menuList = menuList;\n menuList.addEventListener(AgMenuItemComponent.EVENT_MENU_ITEM_SELECTED, function (e) { return _this.dispatchEvent(e); });\n };\n ContextMenu.prototype.afterGuiAttached = function (params) {\n if (params.hidePopup) {\n this.addDestroyFunc(params.hidePopup);\n }\n this.focusedCell = this.focusService.getFocusedCell();\n if (this.menuList) {\n this.focusService.focusInto(this.menuList.getGui());\n }\n };\n ContextMenu.prototype.restoreFocusedCell = function () {\n var currentFocusedCell = this.focusService.getFocusedCell();\n if (currentFocusedCell && this.focusedCell && this.cellPositionUtils.equals(currentFocusedCell, this.focusedCell)) {\n var _a = this.focusedCell, rowIndex = _a.rowIndex, rowPinned = _a.rowPinned, column = _a.column;\n var doc = this.gridOptionsWrapper.getDocument();\n if (doc.activeElement === doc.body) {\n this.focusService.setFocusedCell(rowIndex, column, rowPinned, true);\n }\n }\n };\n ContextMenu.prototype.destroy = function () {\n this.restoreFocusedCell();\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Autowired('menuItemMapper')\n ], ContextMenu.prototype, \"menuItemMapper\", void 0);\n __decorate([\n Autowired('focusService')\n ], ContextMenu.prototype, \"focusService\", void 0);\n __decorate([\n Autowired('cellPositionUtils')\n ], ContextMenu.prototype, \"cellPositionUtils\", void 0);\n __decorate([\n PostConstruct\n ], ContextMenu.prototype, \"addMenuItems\", null);\n return ContextMenu;\n}(Component));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { _, Autowired, Bean, BeanStub, Constants, ModuleNames, ModuleRegistry, Optional } from '@ag-grid-community/core';\nvar MenuItemMapper = /** @class */ (function (_super) {\n __extends(MenuItemMapper, _super);\n function MenuItemMapper() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MenuItemMapper.prototype.mapWithStockItems = function (originalList, column) {\n var _this = this;\n if (!originalList) {\n return [];\n }\n var resultList = [];\n originalList.forEach(function (menuItemOrString) {\n var result;\n if (typeof menuItemOrString === 'string') {\n result = _this.getStockMenuItem(menuItemOrString, column);\n }\n else {\n result = menuItemOrString;\n }\n // if no mapping, can happen when module is not loaded but user tries to use module anyway\n if (!result) {\n return;\n }\n var resultDef = result;\n var subMenu = resultDef.subMenu;\n if (subMenu && subMenu instanceof Array) {\n resultDef.subMenu = _this.mapWithStockItems(resultDef.subMenu, column);\n }\n if (result != null) {\n resultList.push(result);\n }\n });\n return resultList;\n };\n MenuItemMapper.prototype.getStockMenuItem = function (key, column) {\n var _this = this;\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var skipHeaderOnAutoSize = this.gridOptionsWrapper.isSkipHeaderOnAutoSize();\n switch (key) {\n case 'pinSubMenu':\n return {\n name: localeTextFunc('pinColumn', 'Pin Column'),\n icon: _.createIconNoSpan('menuPin', this.gridOptionsWrapper, null),\n subMenu: ['pinLeft', 'pinRight', 'clearPinned']\n };\n case 'pinLeft':\n return {\n name: localeTextFunc('pinLeft', 'Pin Left'),\n action: function () { return _this.columnModel.setColumnPinned(column, Constants.PINNED_LEFT, \"contextMenu\"); },\n checked: !!column && column.isPinnedLeft()\n };\n case 'pinRight':\n return {\n name: localeTextFunc('pinRight', 'Pin Right'),\n action: function () { return _this.columnModel.setColumnPinned(column, Constants.PINNED_RIGHT, \"contextMenu\"); },\n checked: !!column && column.isPinnedRight()\n };\n case 'clearPinned':\n return {\n name: localeTextFunc('noPin', 'No Pin'),\n action: function () { return _this.columnModel.setColumnPinned(column, null, \"contextMenu\"); },\n checked: !!column && !column.isPinned()\n };\n case 'valueAggSubMenu':\n if (ModuleRegistry.assertRegistered(ModuleNames.RowGroupingModule, 'Aggregation from Menu')) {\n return {\n name: localeTextFunc('valueAggregation', 'Value Aggregation'),\n icon: _.createIconNoSpan('menuValue', this.gridOptionsWrapper, null),\n subMenu: this.createAggregationSubMenu(column)\n };\n }\n else {\n return null;\n }\n case 'autoSizeThis':\n return {\n name: localeTextFunc('autosizeThiscolumn', 'Autosize This Column'),\n action: function () { return _this.columnModel.autoSizeColumn(column, skipHeaderOnAutoSize, \"contextMenu\"); }\n };\n case 'autoSizeAll':\n return {\n name: localeTextFunc('autosizeAllColumns', 'Autosize All Columns'),\n action: function () { return _this.columnModel.autoSizeAllColumns(skipHeaderOnAutoSize, \"contextMenu\"); }\n };\n case 'rowGroup':\n return {\n name: localeTextFunc('groupBy', 'Group by') + ' ' + _.escapeString(this.columnModel.getDisplayNameForColumn(column, 'header')),\n action: function () { return _this.columnModel.addRowGroupColumn(column, \"contextMenu\"); },\n icon: _.createIconNoSpan('menuAddRowGroup', this.gridOptionsWrapper, null)\n };\n case 'rowUnGroup':\n return {\n name: localeTextFunc('ungroupBy', 'Un-Group by') + ' ' + _.escapeString(this.columnModel.getDisplayNameForColumn(column, 'header')),\n action: function () { return _this.columnModel.removeRowGroupColumn(column, \"contextMenu\"); },\n icon: _.createIconNoSpan('menuRemoveRowGroup', this.gridOptionsWrapper, null)\n };\n case 'resetColumns':\n return {\n name: localeTextFunc('resetColumns', 'Reset Columns'),\n action: function () { return _this.columnModel.resetColumnState(\"contextMenu\"); }\n };\n case 'expandAll':\n return {\n name: localeTextFunc('expandAll', 'Expand All'),\n action: function () { return _this.gridApi.expandAll(); }\n };\n case 'contractAll':\n return {\n name: localeTextFunc('collapseAll', 'Collapse All'),\n action: function () { return _this.gridApi.collapseAll(); }\n };\n case 'copy':\n if (ModuleRegistry.assertRegistered(ModuleNames.ClipboardModule, 'Copy from Menu')) {\n return {\n name: localeTextFunc('copy', 'Copy'),\n shortcut: localeTextFunc('ctrlC', 'Ctrl+C'),\n icon: _.createIconNoSpan('clipboardCopy', this.gridOptionsWrapper, null),\n action: function () { return _this.clipboardService.copyToClipboard(); }\n };\n }\n else {\n return null;\n }\n case 'copyWithHeaders':\n if (ModuleRegistry.assertRegistered(ModuleNames.ClipboardModule, 'Copy with Headers from Menu')) {\n return {\n name: localeTextFunc('copyWithHeaders', 'Copy with Headers'),\n // shortcut: localeTextFunc('ctrlC','Ctrl+C'),\n icon: _.createIconNoSpan('clipboardCopy', this.gridOptionsWrapper, null),\n action: function () { return _this.clipboardService.copyToClipboard({ includeHeaders: true }); }\n };\n }\n else {\n return null;\n }\n case 'copyWithGroupHeaders':\n if (ModuleRegistry.assertRegistered(ModuleNames.ClipboardModule, 'Copy with Group Headers from Menu')) {\n return {\n name: localeTextFunc('copyWithGroupHeaders', 'Copy with Group Headers'),\n // shortcut: localeTextFunc('ctrlC','Ctrl+C'),\n icon: _.createIconNoSpan('clipboardCopy', this.gridOptionsWrapper, null),\n action: function () { return _this.clipboardService.copyToClipboard({ includeHeaders: true, includeGroupHeaders: true }); }\n };\n }\n else {\n return null;\n }\n case 'paste':\n if (ModuleRegistry.assertRegistered(ModuleNames.ClipboardModule, 'Paste from Clipboard')) {\n return {\n name: localeTextFunc('paste', 'Paste'),\n shortcut: localeTextFunc('ctrlV', 'Ctrl+V'),\n disabled: true,\n icon: _.createIconNoSpan('clipboardPaste', this.gridOptionsWrapper, null),\n action: function () { return _this.clipboardService.pasteFromClipboard(); }\n };\n }\n else {\n return null;\n }\n case 'export':\n var exportSubMenuItems = [];\n var csvModuleLoaded = ModuleRegistry.isRegistered(ModuleNames.CsvExportModule);\n var excelModuleLoaded = ModuleRegistry.isRegistered(ModuleNames.ExcelExportModule);\n if (!this.gridOptionsWrapper.isSuppressCsvExport() && csvModuleLoaded) {\n exportSubMenuItems.push('csvExport');\n }\n if (!this.gridOptionsWrapper.isSuppressExcelExport() && excelModuleLoaded) {\n exportSubMenuItems.push('excelExport');\n }\n return {\n name: localeTextFunc('export', 'Export'),\n subMenu: exportSubMenuItems,\n icon: _.createIconNoSpan('save', this.gridOptionsWrapper, null),\n };\n case 'csvExport':\n return {\n name: localeTextFunc('csvExport', 'CSV Export'),\n icon: _.createIconNoSpan('csvExport', this.gridOptionsWrapper, null),\n action: function () { return _this.gridApi.exportDataAsCsv({}); }\n };\n case 'excelExport':\n return {\n name: localeTextFunc('excelExport', 'Excel Export'),\n icon: _.createIconNoSpan('excelExport', this.gridOptionsWrapper, null),\n action: function () { return _this.gridApi.exportDataAsExcel(); }\n };\n case 'separator':\n return 'separator';\n default:\n var chartMenuItem = this.getChartItems(key);\n if (chartMenuItem) {\n return chartMenuItem;\n }\n else {\n console.warn(\"AG Grid: unknown menu item type \" + key);\n return null;\n }\n }\n };\n MenuItemMapper.prototype.getChartItems = function (key) {\n var _this = this;\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var pivotChartMenuItem = function (localeKey, defaultText, chartType) {\n return {\n name: localeTextFunc(localeKey, defaultText),\n action: function () { return _this.chartService.createPivotChart({ chartType: chartType }); }\n };\n };\n var rangeChartMenuItem = function (localeKey, defaultText, chartType) {\n return {\n name: localeTextFunc(localeKey, defaultText),\n action: function () { return _this.chartService.createChartFromCurrentRange(chartType); }\n };\n };\n switch (key) {\n case 'pivotChart':\n return {\n name: localeTextFunc('pivotChart', 'Pivot Chart'),\n subMenu: [\n 'pivotColumnChart',\n 'pivotBarChart',\n 'pivotPieChart',\n 'pivotLineChart',\n 'pivotXYChart',\n 'pivotAreaChart'\n ],\n icon: _.createIconNoSpan('chart', this.gridOptionsWrapper, null),\n };\n case 'chartRange':\n return {\n name: localeTextFunc('chartRange', 'Chart Range'),\n subMenu: [\n 'rangeColumnChart',\n 'rangeBarChart',\n 'rangePieChart',\n 'rangeLineChart',\n 'rangeXYChart',\n 'rangeAreaChart',\n 'rangeHistogramChart',\n 'rangeCombinationChart'\n ],\n icon: _.createIconNoSpan('chart', this.gridOptionsWrapper, null),\n };\n case 'pivotColumnChart':\n return {\n name: localeTextFunc('columnChart', 'Column'),\n subMenu: ['pivotGroupedColumn', 'pivotStackedColumn', 'pivotNormalizedColumn']\n };\n case 'pivotGroupedColumn':\n return pivotChartMenuItem('groupedColumn', 'Grouped‎', 'groupedColumn');\n case 'pivotStackedColumn':\n return pivotChartMenuItem('stackedColumn', 'Stacked‎', 'stackedColumn');\n case 'pivotNormalizedColumn':\n return pivotChartMenuItem('normalizedColumn', '100% Stacked‎', 'normalizedColumn');\n case 'rangeColumnChart':\n return {\n name: localeTextFunc('columnChart', 'Column'),\n subMenu: ['rangeGroupedColumn', 'rangeStackedColumn', 'rangeNormalizedColumn']\n };\n case 'rangeGroupedColumn':\n return rangeChartMenuItem('groupedColumn', 'Grouped‎', 'groupedColumn');\n case 'rangeStackedColumn':\n return rangeChartMenuItem('stackedColumn', 'Stacked‎', 'stackedColumn');\n case 'rangeNormalizedColumn':\n return rangeChartMenuItem('normalizedColumn', '100% Stacked‎', 'normalizedColumn');\n case 'pivotBarChart':\n return {\n name: localeTextFunc('barChart', 'Bar'),\n subMenu: ['pivotGroupedBar', 'pivotStackedBar', 'pivotNormalizedBar']\n };\n case 'pivotGroupedBar':\n return pivotChartMenuItem('groupedBar', 'Grouped‎', 'groupedBar');\n case 'pivotStackedBar':\n return pivotChartMenuItem('stackedBar', 'Stacked‎', 'stackedBar');\n case 'pivotNormalizedBar':\n return pivotChartMenuItem('normalizedBar', '100% Stacked‎', 'normalizedBar');\n case 'rangeBarChart':\n return {\n name: localeTextFunc('barChart', 'Bar'),\n subMenu: ['rangeGroupedBar', 'rangeStackedBar', 'rangeNormalizedBar']\n };\n case 'rangeGroupedBar':\n return rangeChartMenuItem('groupedBar', 'Grouped‎', 'groupedBar');\n case 'rangeStackedBar':\n return rangeChartMenuItem('stackedBar', 'Stacked‎', 'stackedBar');\n case 'rangeNormalizedBar':\n return rangeChartMenuItem('normalizedBar', '100% Stacked‎', 'normalizedBar');\n case 'pivotPieChart':\n return {\n name: localeTextFunc('pieChart', 'Pie'),\n subMenu: ['pivotPie', 'pivotDoughnut']\n };\n case 'pivotPie':\n return pivotChartMenuItem('pie', 'Pie‎', 'pie');\n case 'pivotDoughnut':\n return pivotChartMenuItem('doughnut', 'Doughnut‎', 'doughnut');\n case 'rangePieChart':\n return {\n name: localeTextFunc('pieChart', 'Pie'),\n subMenu: ['rangePie', 'rangeDoughnut']\n };\n case 'rangePie':\n return rangeChartMenuItem('pie', 'Pie‎', 'pie');\n case 'rangeDoughnut':\n return rangeChartMenuItem('doughnut', 'Doughnut‎', 'doughnut');\n case 'pivotLineChart':\n return pivotChartMenuItem('line', 'Line‎', 'line');\n case 'rangeLineChart':\n return rangeChartMenuItem('line', 'Line‎', 'line');\n case 'pivotXYChart':\n return {\n name: localeTextFunc('xyChart', 'X Y (Scatter)'),\n subMenu: ['pivotScatter', 'pivotBubble']\n };\n case 'pivotScatter':\n return pivotChartMenuItem('scatter', 'Scatter‎', 'scatter');\n case 'pivotBubble':\n return pivotChartMenuItem('bubble', 'Bubble‎', 'bubble');\n case 'rangeXYChart':\n return {\n name: localeTextFunc('xyChart', 'X Y (Scatter)'),\n subMenu: ['rangeScatter', 'rangeBubble']\n };\n case 'rangeScatter':\n return rangeChartMenuItem('scatter', 'Scatter‎', 'scatter');\n case 'rangeBubble':\n return rangeChartMenuItem('bubble', 'Bubble‎', 'bubble');\n case 'pivotAreaChart':\n return {\n name: localeTextFunc('areaChart', 'Area'),\n subMenu: ['pivotArea', 'pivotStackedArea', 'pivotNormalizedArea']\n };\n case 'pivotArea':\n return pivotChartMenuItem('area', 'Area‎', 'area');\n case 'pivotStackedArea':\n return pivotChartMenuItem('stackedArea', 'Stacked‎', 'stackedArea');\n case 'pivotNormalizedArea':\n return pivotChartMenuItem('normalizedArea', '100% Stacked‎', 'normalizedArea');\n case 'rangeAreaChart':\n return {\n name: localeTextFunc('areaChart', 'Area'),\n subMenu: ['rangeArea', 'rangeStackedArea', 'rangeNormalizedArea']\n };\n case 'rangeArea':\n return rangeChartMenuItem('area', 'Area‎', 'area');\n case 'rangeStackedArea':\n return rangeChartMenuItem('stackedArea', 'Stacked‎', 'stackedArea');\n case 'rangeNormalizedArea':\n return rangeChartMenuItem('normalizedArea', '100% Stacked‎', 'normalizedArea');\n case 'rangeHistogramChart':\n return rangeChartMenuItem('histogramChart', 'Histogram‎', 'histogram');\n case 'rangeColumnLineCombo':\n return rangeChartMenuItem('columnLineCombo', 'Column & Line‎', 'columnLineCombo');\n case 'rangeAreaColumnCombo':\n return rangeChartMenuItem('AreaColumnCombo', 'Area & Column‎', 'areaColumnCombo');\n case 'rangeCombinationChart':\n return {\n name: localeTextFunc('combinationChart', 'Combination'),\n subMenu: ['rangeColumnLineCombo', 'rangeAreaColumnCombo']\n };\n default:\n return null;\n }\n };\n MenuItemMapper.prototype.createAggregationSubMenu = function (column) {\n var _this = this;\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var columnIsAlreadyAggValue = column.isValueActive();\n var funcNames = this.aggFuncService.getFuncNames(column);\n var columnToUse;\n if (column.isPrimary()) {\n columnToUse = column;\n }\n else {\n var pivotValueColumn = column.getColDef().pivotValueColumn;\n columnToUse = _.exists(pivotValueColumn) ? pivotValueColumn : undefined;\n }\n var result = [];\n funcNames.forEach(function (funcName) {\n result.push({\n name: localeTextFunc(funcName, funcName),\n action: function () {\n _this.columnModel.setColumnAggFunc(columnToUse, funcName, \"contextMenu\");\n _this.columnModel.addValueColumn(columnToUse, \"contextMenu\");\n },\n checked: columnIsAlreadyAggValue && columnToUse.getAggFunc() === funcName\n });\n });\n return result;\n };\n __decorate([\n Autowired('columnModel')\n ], MenuItemMapper.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('gridApi')\n ], MenuItemMapper.prototype, \"gridApi\", void 0);\n __decorate([\n Optional('clipboardService')\n ], MenuItemMapper.prototype, \"clipboardService\", void 0);\n __decorate([\n Optional('aggFuncService')\n ], MenuItemMapper.prototype, \"aggFuncService\", void 0);\n __decorate([\n Optional('chartService')\n ], MenuItemMapper.prototype, \"chartService\", void 0);\n MenuItemMapper = __decorate([\n Bean('menuItemMapper')\n ], MenuItemMapper);\n return MenuItemMapper;\n}(BeanStub));\nexport { MenuItemMapper };\n","import { ModuleNames } from \"@ag-grid-community/core\";\nimport { EnterpriseCoreModule } from \"@ag-grid-enterprise/core\";\nimport { EnterpriseMenuFactory } from \"./menu/enterpriseMenu\";\nimport { ContextMenuFactory } from \"./menu/contextMenu\";\nimport { MenuItemMapper } from \"./menu/menuItemMapper\";\nexport var MenuModule = {\n moduleName: ModuleNames.MenuModule,\n beans: [EnterpriseMenuFactory, ContextMenuFactory, MenuItemMapper],\n dependantModules: [\n EnterpriseCoreModule\n ]\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __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};\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ProvidedFilter, AgPromise, Autowired, AgGroupComponent, TabGuardComp, AgMenuItemComponent, PostConstruct, _ } from '@ag-grid-community/core';\nvar MultiFilter = /** @class */ (function (_super) {\n __extends(MultiFilter, _super);\n function MultiFilter() {\n var _this = _super.call(this, /* html */ \"
    \") || this;\n _this.filterDefs = [];\n _this.filters = [];\n _this.guiDestroyFuncs = [];\n _this.activeFilterIndices = [];\n _this.lastActivatedMenuItem = null;\n _this.afterFiltersReadyFuncs = [];\n return _this;\n }\n MultiFilter.prototype.postConstruct = function () {\n var _this = this;\n this.initialiseTabGuard({\n onFocusIn: function (e) { return _this.onFocusIn(e); }\n });\n };\n MultiFilter.getFilterDefs = function (params) {\n var filters = params.filters;\n return filters && filters.length > 0 ?\n filters :\n [{ filter: 'agTextColumnFilter' }, { filter: 'agSetColumnFilter' }];\n };\n MultiFilter.prototype.init = function (params) {\n var _this = this;\n this.params = params;\n this.filterDefs = MultiFilter.getFilterDefs(params);\n var column = params.column, filterChangedCallback = params.filterChangedCallback;\n this.column = column;\n this.filterChangedCallback = filterChangedCallback;\n var filterPromises = [];\n this.filterDefs.forEach(function (filterDef, index) {\n var filterPromise = _this.createFilter(filterDef, index);\n if (filterPromise != null) {\n filterPromises.push(filterPromise);\n }\n });\n // we have to refresh the GUI here to ensure that Angular components are not rendered in odd places\n return AgPromise\n .all(filterPromises)\n .then(function (filters) {\n _this.filters = filters;\n _this.refreshGui('columnMenu');\n _this.afterFiltersReadyFuncs.forEach(function (f) { return f(); });\n _this.afterFiltersReadyFuncs.length = 0;\n });\n };\n MultiFilter.prototype.refreshGui = function (container) {\n var _this = this;\n if (container === this.lastOpenedInContainer) {\n return;\n }\n this.removeAllChildrenExceptTabGuards();\n this.destroyChildren();\n this.filters.forEach(function (filter, index) {\n if (index > 0) {\n _this.appendChild(_.loadTemplate(/* html */ \"
    \"));\n }\n var filterDef = _this.filterDefs[index];\n var filterTitle = _this.getFilterTitle(filter, filterDef);\n var filterGui;\n if (filterDef.display === 'subMenu' && container !== 'toolPanel') {\n // prevent sub-menu being used in tool panel\n var menuItem = _this.insertFilterMenu(filter, filterTitle);\n filterGui = menuItem.getGui();\n }\n else if (filterDef.display === 'subMenu' || filterDef.display === 'accordion') {\n // sub-menus should appear as groups in the tool panel\n var group = _this.insertFilterGroup(filter, filterTitle);\n filterGui = group.getGui();\n }\n else {\n // display inline\n filterGui = filter.getGui();\n }\n _this.appendChild(filterGui);\n });\n this.lastOpenedInContainer = container;\n };\n MultiFilter.prototype.getFilterTitle = function (filter, filterDef) {\n if (filterDef.title != null) {\n return filterDef.title;\n }\n var filterWithoutType = filter;\n return typeof filterWithoutType.getFilterTitle === 'function' ? filterWithoutType.getFilterTitle() : 'Filter';\n };\n MultiFilter.prototype.destroyChildren = function () {\n this.guiDestroyFuncs.forEach(function (func) { return func(); });\n this.guiDestroyFuncs.length = 0;\n };\n MultiFilter.prototype.insertFilterMenu = function (filter, name) {\n var _this = this;\n var menuItem = this.createBean(new AgMenuItemComponent({\n name: name,\n subMenu: filter,\n cssClasses: ['ag-multi-filter-menu-item'],\n isCompact: true,\n isAnotherSubMenuOpen: function () { return false; },\n }));\n menuItem.setParentComponent(this);\n this.guiDestroyFuncs.push(function () { return _this.destroyBean(menuItem); });\n this.addManagedListener(menuItem, AgMenuItemComponent.EVENT_MENU_ITEM_ACTIVATED, function (event) {\n if (_this.lastActivatedMenuItem && _this.lastActivatedMenuItem !== event.menuItem) {\n _this.lastActivatedMenuItem.deactivate();\n }\n _this.lastActivatedMenuItem = event.menuItem;\n });\n menuItem.addGuiEventListener('focusin', function () { return menuItem.activate(); });\n menuItem.addGuiEventListener('focusout', function () {\n if (!menuItem.isSubMenuOpen()) {\n menuItem.deactivate();\n }\n });\n return menuItem;\n };\n MultiFilter.prototype.insertFilterGroup = function (filter, title) {\n var _this = this;\n var group = this.createBean(new AgGroupComponent({\n title: title,\n cssIdentifier: 'multi-filter',\n }));\n this.guiDestroyFuncs.push(function () { return _this.destroyBean(group); });\n group.addItem(filter.getGui());\n group.toggleGroupExpand(false);\n if (filter.afterGuiAttached) {\n var params_1 = { container: this.lastOpenedInContainer, suppressFocus: true };\n group.addManagedListener(group, AgGroupComponent.EVENT_EXPANDED, function () { return filter.afterGuiAttached(params_1); });\n }\n return group;\n };\n MultiFilter.prototype.isFilterActive = function () {\n return this.filters.some(function (filter) { return filter.isFilterActive(); });\n };\n MultiFilter.prototype.getLastActiveFilterIndex = function () {\n return this.activeFilterIndices.length > 0 ? this.activeFilterIndices[this.activeFilterIndices.length - 1] : null;\n };\n MultiFilter.prototype.doesFilterPass = function (params, filterToSkip) {\n var rowPasses = true;\n this.filters.forEach(function (filter) {\n if (!rowPasses || filter === filterToSkip || !filter.isFilterActive()) {\n return;\n }\n rowPasses = filter.doesFilterPass(params);\n });\n return rowPasses;\n };\n MultiFilter.prototype.getFilterType = function () {\n return 'multi';\n };\n MultiFilter.prototype.getModelFromUi = function () {\n var model = {\n filterType: this.getFilterType(),\n filterModels: this.filters.map(function (filter) {\n var providedFilter = filter;\n if (typeof providedFilter.getModelFromUi === 'function') {\n return providedFilter.getModelFromUi();\n }\n return null;\n })\n };\n return model;\n };\n MultiFilter.prototype.getModel = function () {\n if (!this.isFilterActive()) {\n return null;\n }\n var model = {\n filterType: this.getFilterType(),\n filterModels: this.filters.map(function (filter) {\n if (filter.isFilterActive()) {\n return filter.getModel();\n }\n return null;\n })\n };\n return model;\n };\n MultiFilter.prototype.setModel = function (model) {\n var _this = this;\n var setFilterModel = function (filter, filterModel) {\n return new AgPromise(function (resolve) {\n var promise = filter.setModel(filterModel);\n promise ? promise.then(function () { return resolve(); }) : resolve();\n });\n };\n var promises = [];\n if (model == null) {\n promises = this.filters.map(function (filter, index) {\n var res = setFilterModel(filter, null);\n _this.updateActiveList(index);\n return res;\n });\n }\n else {\n this.filters.forEach(function (filter, index) {\n var filterModel = model.filterModels.length > index ? model.filterModels[index] : null;\n var res = setFilterModel(filter, filterModel);\n promises.push(res);\n _this.updateActiveList(index);\n });\n }\n return AgPromise.all(promises).then(function () { });\n };\n MultiFilter.prototype.applyModel = function () {\n var result = false;\n this.filters.forEach(function (filter) {\n if (filter instanceof ProvidedFilter) {\n result = filter.applyModel() || result;\n }\n });\n return result;\n };\n MultiFilter.prototype.getChildFilterInstance = function (index) {\n return this.filters[index];\n };\n MultiFilter.prototype.afterGuiAttached = function (params) {\n if (params) {\n this.refreshGui(params.container);\n }\n var filters = this.params.filters;\n var suppressFocus = filters && filters.some(function (filter) { return filter.display && filter.display !== 'inline'; });\n this.executeFunctionIfExists('afterGuiAttached', __assign(__assign({}, params || {}), { suppressFocus: suppressFocus }));\n var eDocument = this.gridOptionsWrapper.getDocument();\n var activeEl = eDocument.activeElement;\n // if suppress focus is true, we might run into two scenarios:\n // 1 - we are loading the filter for the first time and the component isn't ready,\n // which means the document will have focus.\n // 2 - The focus will be somewhere inside the component due to auto focus\n // In both cases we need to force the focus somewhere valid but outside the filter.\n if (suppressFocus && (activeEl === eDocument.body || this.getGui().contains(activeEl))) {\n // reset focus to the top of the container, and blur\n this.forceFocusOutOfContainer(true);\n }\n };\n MultiFilter.prototype.onAnyFilterChanged = function () {\n this.executeFunctionIfExists('onAnyFilterChanged');\n };\n MultiFilter.prototype.onNewRowsLoaded = function () {\n this.executeFunctionIfExists('onNewRowsLoaded');\n };\n MultiFilter.prototype.destroy = function () {\n var _this = this;\n this.filters.forEach(function (filter) {\n filter.setModel(null);\n _this.destroyBean(filter);\n });\n this.filters.length = 0;\n this.destroyChildren();\n _super.prototype.destroy.call(this);\n };\n MultiFilter.prototype.executeFunctionIfExists = function (name) {\n var params = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n params[_i - 1] = arguments[_i];\n }\n // The first filter is always the \"dominant\" one. By iterating in reverse order we ensure the first filter\n // always gets the last say\n _.forEachReverse(this.filters, function (filter) {\n var func = filter[name];\n if (typeof func === 'function') {\n func.apply(filter, params);\n }\n });\n };\n MultiFilter.prototype.createFilter = function (filterDef, index) {\n var _this = this;\n var _a = this.params, filterModifiedCallback = _a.filterModifiedCallback, doesRowPassOtherFilter = _a.doesRowPassOtherFilter;\n var filterInstance;\n var filterParams = __assign(__assign({}, this.filterManager.createFilterParams(this.column, this.column.getColDef())), { filterModifiedCallback: filterModifiedCallback, filterChangedCallback: function (additionalEventAttributes) {\n _this.executeWhenAllFiltersReady(function () { return _this.filterChanged(index, additionalEventAttributes); });\n }, doesRowPassOtherFilter: function (node) {\n return doesRowPassOtherFilter(node) && _this.doesFilterPass({ node: node, data: node.data }, filterInstance);\n } });\n var compDetails = this.userComponentFactory.getFilterDetails(filterDef, filterParams, 'agTextColumnFilter');\n if (!compDetails) {\n return null;\n }\n var filterPromise = compDetails.newAgStackInstance();\n if (filterPromise) {\n filterPromise.then(function (filter) { return filterInstance = filter; });\n }\n return filterPromise;\n };\n MultiFilter.prototype.executeWhenAllFiltersReady = function (action) {\n if (this.filters && this.filters.length > 0) {\n action();\n }\n else {\n this.afterFiltersReadyFuncs.push(action);\n }\n };\n MultiFilter.prototype.updateActiveList = function (index) {\n var changedFilter = this.filters[index];\n _.removeFromArray(this.activeFilterIndices, index);\n if (changedFilter.isFilterActive()) {\n this.activeFilterIndices.push(index);\n }\n };\n MultiFilter.prototype.filterChanged = function (index, additionalEventAttributes) {\n this.updateActiveList(index);\n this.filterChangedCallback(additionalEventAttributes);\n var changedFilter = this.filters[index];\n this.filters.forEach(function (filter) {\n if (filter === changedFilter) {\n return;\n }\n if (typeof filter.onAnyFilterChanged === 'function') {\n filter.onAnyFilterChanged();\n }\n });\n };\n MultiFilter.prototype.onFocusIn = function (e) {\n if (this.lastActivatedMenuItem != null && !this.lastActivatedMenuItem.getGui().contains(e.target)) {\n this.lastActivatedMenuItem.deactivate();\n this.lastActivatedMenuItem = null;\n }\n return true;\n };\n __decorate([\n Autowired('filterManager')\n ], MultiFilter.prototype, \"filterManager\", void 0);\n __decorate([\n Autowired('userComponentFactory')\n ], MultiFilter.prototype, \"userComponentFactory\", void 0);\n __decorate([\n PostConstruct\n ], MultiFilter.prototype, \"postConstruct\", null);\n return MultiFilter;\n}(TabGuardComp));\nexport { MultiFilter };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __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};\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, _, Autowired, AgPromise, } from '@ag-grid-community/core';\nimport { MultiFilter } from './multiFilter';\nvar MultiFloatingFilterComp = /** @class */ (function (_super) {\n __extends(MultiFloatingFilterComp, _super);\n function MultiFloatingFilterComp() {\n var _this = _super.call(this, /* html */ \"
    \") || this;\n _this.floatingFilters = [];\n return _this;\n }\n MultiFloatingFilterComp.prototype.init = function (params) {\n var _this = this;\n this.params = params;\n var filterParams = params.filterParams;\n var floatingFilterPromises = [];\n MultiFilter.getFilterDefs(filterParams).forEach(function (filterDef, index) {\n var floatingFilterParams = __assign(__assign({}, params), { \n // set the parent filter instance for each floating filter to the relevant child filter instance\n parentFilterInstance: function (callback) {\n _this.parentMultiFilterInstance(function (parent) {\n var child = parent.getChildFilterInstance(index);\n if (child == null) {\n return;\n }\n callback(child);\n });\n } });\n var floatingFilterPromise = _this.createFloatingFilter(filterDef, floatingFilterParams);\n if (floatingFilterPromise != null) {\n floatingFilterPromises.push(floatingFilterPromise);\n }\n });\n return AgPromise.all(floatingFilterPromises).then(function (floatingFilters) {\n floatingFilters.forEach(function (floatingFilter, index) {\n _this.floatingFilters.push(floatingFilter);\n var gui = floatingFilter.getGui();\n _this.appendChild(gui);\n if (index > 0) {\n _.setDisplayed(gui, false);\n }\n });\n });\n };\n MultiFloatingFilterComp.prototype.onParentModelChanged = function (model, event) {\n var _this = this;\n // We don't want to update the floating filter if the floating filter caused the change,\n // because the UI is already in sync. if we didn't do this, the UI would behave strangely\n // as it would be updating as the user is typing\n if (event && event.afterFloatingFilter) {\n return;\n }\n this.parentMultiFilterInstance(function (parent) {\n if (model == null) {\n _this.floatingFilters.forEach(function (filter, i) {\n filter.onParentModelChanged(null, event);\n _.setDisplayed(filter.getGui(), i === 0);\n });\n }\n else {\n var lastActiveFloatingFilterIndex_1 = parent.getLastActiveFilterIndex();\n _this.floatingFilters.forEach(function (filter, i) {\n var filterModel = model.filterModels.length > i ? model.filterModels[i] : null;\n filter.onParentModelChanged(filterModel, event);\n var shouldShow = lastActiveFloatingFilterIndex_1 == null ? i === 0 : i === lastActiveFloatingFilterIndex_1;\n _.setDisplayed(filter.getGui(), shouldShow);\n });\n }\n });\n };\n MultiFloatingFilterComp.prototype.destroy = function () {\n this.destroyBeans(this.floatingFilters);\n this.floatingFilters.length = 0;\n _super.prototype.destroy.call(this);\n };\n MultiFloatingFilterComp.prototype.createFloatingFilter = function (filterDef, params) {\n var defaultComponentName = this.userComponentFactory.getDefaultFloatingFilterType(filterDef) || 'agTextColumnFloatingFilter';\n var compDetails = this.userComponentFactory.getFloatingFilterCompDetails(filterDef, params, defaultComponentName);\n return compDetails ? compDetails.newAgStackInstance() : null;\n };\n MultiFloatingFilterComp.prototype.parentMultiFilterInstance = function (cb) {\n this.params.parentFilterInstance(function (parent) {\n if (!(parent instanceof MultiFilter)) {\n throw new Error('AG Grid - MultiFloatingFilterComp expects MultiFilter as it\\'s parent');\n }\n cb(parent);\n });\n };\n __decorate([\n Autowired('userComponentFactory')\n ], MultiFloatingFilterComp.prototype, \"userComponentFactory\", void 0);\n return MultiFloatingFilterComp;\n}(Component));\nexport { MultiFloatingFilterComp };\n","import { ModuleNames } from '@ag-grid-community/core';\nimport { EnterpriseCoreModule } from '@ag-grid-enterprise/core';\nimport { MultiFilter } from './multiFilter/multiFilter';\nimport { MultiFloatingFilterComp } from './multiFilter/multiFloatingFilter';\nexport var MultiFilterModule = {\n moduleName: ModuleNames.MultiFilterModule,\n beans: [],\n userComponents: [\n { componentName: 'agMultiColumnFilter', componentClass: MultiFilter },\n { componentName: 'agMultiColumnFloatingFilter', componentClass: MultiFloatingFilterComp },\n ],\n dependantModules: [\n EnterpriseCoreModule\n ]\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { _, Autowired, Component } from \"@ag-grid-community/core\";\nvar RichSelectRow = /** @class */ (function (_super) {\n __extends(RichSelectRow, _super);\n function RichSelectRow(params) {\n var _this = _super.call(this, /* html */ \"
    \") || this;\n _this.params = params;\n return _this;\n }\n RichSelectRow.prototype.setState = function (value, valueFormatted, selected) {\n var rendererSuccessful = this.populateWithRenderer(value, valueFormatted);\n if (!rendererSuccessful) {\n this.populateWithoutRenderer(value, valueFormatted);\n }\n this.addOrRemoveCssClass('ag-rich-select-row-selected', selected);\n };\n RichSelectRow.prototype.populateWithoutRenderer = function (value, valueFormatted) {\n var valueFormattedExits = valueFormatted !== null && valueFormatted !== undefined;\n var valueToRender = valueFormattedExits ? valueFormatted : value;\n if (_.exists(valueToRender) && valueToRender !== '') {\n // not using innerHTML to prevent injection of HTML\n // https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML#Security_considerations\n this.getGui().textContent = valueToRender.toString();\n }\n else {\n // putting in blank, so if missing, at least the user can click on it\n this.getGui().innerHTML = ' ';\n }\n };\n RichSelectRow.prototype.populateWithRenderer = function (value, valueFormatted) {\n var _this = this;\n // bad coder here - we are not populating all values of the cellRendererParams\n var params = {\n value: value,\n valueFormatted: valueFormatted,\n api: this.gridOptionsWrapper.getApi()\n };\n var compDetails = this.userComponentFactory.getCellRendererDetails(this.params, params);\n var cellRendererPromise = compDetails ? compDetails.newAgStackInstance() : undefined;\n if (cellRendererPromise != null) {\n _.bindCellRendererToHtmlElement(cellRendererPromise, this.getGui());\n }\n else {\n this.getGui().innerText = params.valueFormatted != null ? params.valueFormatted : params.value;\n }\n if (cellRendererPromise) {\n cellRendererPromise.then(function (childComponent) {\n _this.addDestroyFunc(function () {\n _this.getContext().destroyBean(childComponent);\n });\n });\n return true;\n }\n return false;\n };\n __decorate([\n Autowired('userComponentFactory')\n ], RichSelectRow.prototype, \"userComponentFactory\", void 0);\n return RichSelectRow;\n}(Component));\nexport { RichSelectRow };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, PopupComponent, RefSelector, VirtualList, KeyCode, _, } from \"@ag-grid-community/core\";\nimport { RichSelectRow } from \"./richSelectRow\";\nvar RichSelectCellEditor = /** @class */ (function (_super) {\n __extends(RichSelectCellEditor, _super);\n function RichSelectCellEditor() {\n var _this = _super.call(this, RichSelectCellEditor.TEMPLATE) || this;\n _this.selectionConfirmed = false;\n _this.searchString = '';\n return _this;\n }\n RichSelectCellEditor.prototype.init = function (params) {\n this.params = params;\n this.selectedValue = params.value;\n this.originalSelectedValue = params.value;\n this.focusAfterAttached = params.cellStartedEdit;\n var icon = _.createIconNoSpan('smallDown', this.gridOptionsWrapper);\n icon.classList.add('ag-rich-select-value-icon');\n this.eValue.appendChild(icon);\n this.virtualList = this.getContext().createBean(new VirtualList('rich-select'));\n this.virtualList.setComponentCreator(this.createRowComponent.bind(this));\n this.eList.appendChild(this.virtualList.getGui());\n if (_.exists(this.params.cellHeight)) {\n this.virtualList.setRowHeight(this.params.cellHeight);\n }\n this.renderSelectedValue();\n if (_.missing(params.values)) {\n console.warn('AG Grid: richSelectCellEditor requires values for it to work');\n return;\n }\n var values = params.values;\n this.virtualList.setModel({\n getRowCount: function () { return values.length; },\n getRow: function (index) { return values[index]; }\n });\n this.addGuiEventListener('keydown', this.onKeyDown.bind(this));\n var virtualListGui = this.virtualList.getGui();\n this.addManagedListener(virtualListGui, 'click', this.onClick.bind(this));\n this.addManagedListener(virtualListGui, 'mousemove', this.onMouseMove.bind(this));\n var debounceDelay = _.exists(params.searchDebounceDelay) ? params.searchDebounceDelay : 300;\n this.clearSearchString = _.debounce(this.clearSearchString, debounceDelay);\n if (_.exists(params.charPress)) {\n this.searchText(params.charPress);\n }\n };\n RichSelectCellEditor.prototype.onKeyDown = function (event) {\n var key = event.key;\n event.preventDefault();\n switch (key) {\n case KeyCode.ENTER:\n this.onEnterKeyDown();\n break;\n case KeyCode.TAB:\n this.confirmSelection();\n break;\n case KeyCode.DOWN:\n case KeyCode.UP:\n this.onNavigationKeyPressed(event, key);\n break;\n default:\n this.searchText(event);\n }\n };\n RichSelectCellEditor.prototype.confirmSelection = function () {\n this.selectionConfirmed = true;\n };\n RichSelectCellEditor.prototype.onEnterKeyDown = function () {\n this.confirmSelection();\n this.params.stopEditing();\n };\n RichSelectCellEditor.prototype.onNavigationKeyPressed = function (event, key) {\n // if we don't preventDefault the page body and/or grid scroll will move.\n event.preventDefault();\n var oldIndex = this.params.values.indexOf(this.selectedValue);\n var newIndex = key === KeyCode.UP ? oldIndex - 1 : oldIndex + 1;\n if (newIndex >= 0 && newIndex < this.params.values.length) {\n var valueToSelect = this.params.values[newIndex];\n this.setSelectedValue(valueToSelect);\n }\n };\n RichSelectCellEditor.prototype.searchText = function (key) {\n if (typeof key !== 'string') {\n var keyString = key.key;\n if (keyString === KeyCode.BACKSPACE) {\n this.searchString = this.searchString.slice(0, -1);\n keyString = '';\n }\n else if (!_.isEventFromPrintableCharacter(key)) {\n return;\n }\n this.searchText(keyString);\n return;\n }\n this.searchString += key;\n this.runSearch();\n this.clearSearchString();\n };\n RichSelectCellEditor.prototype.runSearch = function () {\n var _this = this;\n var values = this.params.values;\n var searchStrings;\n if (typeof values[0] === 'number' || typeof values[0] === 'string') {\n searchStrings = values.map(String);\n }\n if (typeof values[0] === 'object' && this.params.colDef.keyCreator) {\n searchStrings = values.map(function (value) {\n var keyParams = {\n value: value,\n colDef: _this.params.colDef,\n column: _this.params.column,\n node: _this.params.node,\n data: _this.params.data,\n api: _this.gridOptionsWrapper.getApi(),\n columnApi: _this.gridOptionsWrapper.getColumnApi(),\n context: _this.gridOptionsWrapper.getContext()\n };\n return _this.params.colDef.keyCreator(keyParams);\n });\n }\n if (!searchStrings) {\n return;\n }\n var topSuggestion = _.fuzzySuggestions(this.searchString, searchStrings, true, true)[0];\n if (!topSuggestion) {\n return;\n }\n var topSuggestionIndex = searchStrings.indexOf(topSuggestion);\n var topValue = values[topSuggestionIndex];\n this.setSelectedValue(topValue);\n };\n RichSelectCellEditor.prototype.clearSearchString = function () {\n this.searchString = '';\n };\n RichSelectCellEditor.prototype.renderSelectedValue = function () {\n var _this = this;\n var valueFormatted = this.params.formatValue(this.selectedValue);\n var eValue = this.eValue;\n var params = {\n value: this.selectedValue,\n valueFormatted: valueFormatted,\n api: this.gridOptionsWrapper.getApi()\n };\n var compDetails = this.userComponentFactory.getCellRendererDetails(this.params, params);\n var promise = compDetails ? compDetails.newAgStackInstance() : undefined;\n if (promise) {\n _.bindCellRendererToHtmlElement(promise, eValue);\n promise.then(function (renderer) {\n _this.addDestroyFunc(function () { return _this.getContext().destroyBean(renderer); });\n });\n }\n else {\n if (_.exists(this.selectedValue)) {\n eValue.innerHTML = valueFormatted;\n }\n else {\n _.clearElement(eValue);\n }\n }\n };\n RichSelectCellEditor.prototype.setSelectedValue = function (value) {\n if (this.selectedValue === value) {\n return;\n }\n var index = this.params.values.indexOf(value);\n if (index === -1) {\n return;\n }\n this.selectedValue = value;\n this.virtualList.ensureIndexVisible(index);\n this.virtualList.refresh();\n };\n RichSelectCellEditor.prototype.createRowComponent = function (value) {\n var valueFormatted = this.params.formatValue(value);\n var row = new RichSelectRow(this.params);\n this.getContext().createBean(row);\n row.setState(value, valueFormatted, value === this.selectedValue);\n return row;\n };\n RichSelectCellEditor.prototype.onMouseMove = function (mouseEvent) {\n var rect = this.virtualList.getGui().getBoundingClientRect();\n var scrollTop = this.virtualList.getScrollTop();\n var mouseY = mouseEvent.clientY - rect.top + scrollTop;\n var row = Math.floor(mouseY / this.virtualList.getRowHeight());\n var value = this.params.values[row];\n // not using utils.exist() as want empty string test to pass\n if (value !== undefined) {\n this.setSelectedValue(value);\n }\n };\n RichSelectCellEditor.prototype.onClick = function () {\n this.confirmSelection();\n this.params.stopEditing();\n };\n // we need to have the gui attached before we can draw the virtual rows, as the\n // virtual row logic needs info about the gui state\n RichSelectCellEditor.prototype.afterGuiAttached = function () {\n var selectedIndex = this.params.values.indexOf(this.selectedValue);\n // we have to call this here to get the list to have the right height, ie\n // otherwise it would not have scrolls yet and ensureIndexVisible would do nothing\n this.virtualList.refresh();\n if (selectedIndex >= 0) {\n this.virtualList.ensureIndexVisible(selectedIndex);\n }\n // we call refresh again, as the list could of moved, and we need to render the new rows\n this.virtualList.refresh();\n if (this.focusAfterAttached) {\n this.getGui().focus();\n }\n };\n RichSelectCellEditor.prototype.getValue = function () {\n // NOTE: we don't use valueParser for Set Filter. The user should provide values that are to be\n // set into the data. valueParser only really makese sense when the user is typing in text (not picking\n // form a set).\n return this.selectionConfirmed ? this.selectedValue : this.originalSelectedValue;\n };\n // tab index is needed so we can focus, which is needed for keyboard events\n RichSelectCellEditor.TEMPLATE = \"
    \\n
    \\n
    \\n
    \";\n __decorate([\n Autowired('userComponentFactory')\n ], RichSelectCellEditor.prototype, \"userComponentFactory\", void 0);\n __decorate([\n RefSelector('eValue')\n ], RichSelectCellEditor.prototype, \"eValue\", void 0);\n __decorate([\n RefSelector('eList')\n ], RichSelectCellEditor.prototype, \"eList\", void 0);\n return RichSelectCellEditor;\n}(PopupComponent));\nexport { RichSelectCellEditor };\n","import { ModuleNames } from \"@ag-grid-community/core\";\nimport { EnterpriseCoreModule } from \"@ag-grid-enterprise/core\";\nimport { RichSelectCellEditor } from \"./richSelect/richSelectCellEditor\";\nexport var RichSelectModule = {\n moduleName: ModuleNames.RichSelectModule,\n beans: [],\n userComponents: [\n { componentName: 'agRichSelect', componentClass: RichSelectCellEditor },\n { componentName: 'agRichSelectCellEditor', componentClass: RichSelectCellEditor }\n ],\n dependantModules: [\n EnterpriseCoreModule\n ]\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { _, Autowired, Bean, BeanStub, Constants, Events, NumberSequence, PostConstruct, PreDestroy, RowNode } from \"@ag-grid-community/core\";\nvar ServerSideRowModel = /** @class */ (function (_super) {\n __extends(ServerSideRowModel, _super);\n function ServerSideRowModel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.pauseStoreUpdateListening = false;\n _this.started = false;\n return _this;\n }\n // we don't implement as lazy row heights is not supported in this row model\n ServerSideRowModel.prototype.ensureRowHeightsValid = function () { return false; };\n ServerSideRowModel.prototype.start = function () {\n this.started = true;\n var datasource = this.gridOptionsWrapper.getServerSideDatasource();\n if (datasource) {\n this.setDatasource(datasource);\n }\n };\n ServerSideRowModel.prototype.destroyDatasource = function () {\n if (!this.datasource) {\n return;\n }\n if (this.datasource.destroy) {\n this.datasource.destroy();\n }\n this.rowRenderer.datasourceChanged();\n this.datasource = undefined;\n };\n ServerSideRowModel.prototype.addEventListeners = function () {\n this.addManagedListener(this.eventService, Events.EVENT_NEW_COLUMNS_LOADED, this.onColumnEverything.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_STORE_UPDATED, this.onStoreUpdated.bind(this));\n var resetListener = this.resetRootStore.bind(this);\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_VALUE_CHANGED, resetListener);\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_CHANGED, resetListener);\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_ROW_GROUP_CHANGED, resetListener);\n this.addManagedListener(this.eventService, Events.EVENT_COLUMN_PIVOT_MODE_CHANGED, resetListener);\n this.verifyProps();\n };\n ServerSideRowModel.prototype.verifyProps = function () {\n if (this.gridOptionsWrapper.getDefaultGroupOrderComparator() != null) {\n var message_1 = \"AG Grid: defaultGroupOrderComparator cannot be used with Server Side Row Model. If using Full Store, then provide the rows to the grid in the desired sort order. If using Partial Store, then sorting is done on the server side, nothing to do with the client.\";\n _.doOnce(function () { return console.warn(message_1); }, 'SSRM.DefaultGroupOrderComparator');\n }\n if (this.gridOptionsWrapper.isRowSelection() && this.gridOptionsWrapper.getRowIdFunc() == null) {\n var message_2 = \"AG Grid: getRowId callback must be provided for Server Side Row Model selection to work correctly.\";\n _.doOnce(function () { return console.warn(message_2); }, 'SSRM.SelectionNeedsRowNodeIdFunc');\n }\n };\n ServerSideRowModel.prototype.setDatasource = function (datasource) {\n // sometimes React, due to async, can call gridApi.setDatasource() before we have started.\n // this happens when React app does this:\n // useEffect(() => setDatasource(ds), []);\n // thus if we set the datasource before the grid UI has finished initialising, we do not set it,\n // and the ssrm.start() method will set the datasoure when the grid is ready.\n if (!this.started) {\n return;\n }\n this.destroyDatasource();\n this.datasource = datasource;\n this.resetRootStore();\n };\n ServerSideRowModel.prototype.isLastRowIndexKnown = function () {\n var cache = this.getRootStore();\n if (!cache) {\n return false;\n }\n return cache.isLastRowIndexKnown();\n };\n ServerSideRowModel.prototype.onColumnEverything = function () {\n // this is a hack for one customer only, so they can suppress the resetting of the columns.\n // The problem the customer had was they were api.setColumnDefs() after the data source came\n // back with data. So this stops the reload from the grid after the data comes back.\n // Once we have \"AG-1591 Allow delta changes to columns\" fixed, then this hack can be taken out.\n if (this.gridOptionsWrapper.isSuppressEnterpriseResetOnNewColumns()) {\n return;\n }\n // every other customer can continue as normal and have it working!!!\n // if first time, alwasy reset\n if (!this.storeParams) {\n this.resetRootStore();\n return;\n }\n // check if anything pertaining to fetching data has changed, and if it has, reset, but if\n // it has not, don't reset\n var rowGroupColumnVos = this.columnsToValueObjects(this.columnModel.getRowGroupColumns());\n var valueColumnVos = this.columnsToValueObjects(this.columnModel.getValueColumns());\n var pivotColumnVos = this.columnsToValueObjects(this.columnModel.getPivotColumns());\n var sortModelDifferent = !_.jsonEquals(this.storeParams.sortModel, this.sortController.getSortModel());\n var rowGroupDifferent = !_.jsonEquals(this.storeParams.rowGroupCols, rowGroupColumnVos);\n var pivotDifferent = !_.jsonEquals(this.storeParams.pivotCols, pivotColumnVos);\n var valuesDifferent = !_.jsonEquals(this.storeParams.valueCols, valueColumnVos);\n var resetRequired = sortModelDifferent || rowGroupDifferent || pivotDifferent || valuesDifferent;\n if (resetRequired) {\n this.resetRootStore();\n }\n };\n ServerSideRowModel.prototype.destroyRootStore = function () {\n if (!this.rootNode || !this.rootNode.childStore) {\n return;\n }\n this.rootNode.childStore = this.destroyBean(this.rootNode.childStore);\n this.nodeManager.clear();\n };\n ServerSideRowModel.prototype.refreshAfterSort = function (newSortModel, params) {\n if (this.storeParams) {\n this.storeParams.sortModel = newSortModel;\n }\n var rootStore = this.getRootStore();\n if (!rootStore) {\n return;\n }\n rootStore.refreshAfterSort(params);\n this.onStoreUpdated();\n };\n ServerSideRowModel.prototype.resetRootStore = function () {\n this.destroyRootStore();\n this.rootNode = new RowNode(this.beans);\n this.rootNode.group = true;\n this.rootNode.level = -1;\n if (this.datasource) {\n this.storeParams = this.createStoreParams();\n this.rootNode.childStore = this.createBean(this.storeFactory.createStore(this.storeParams, this.rootNode));\n this.updateRowIndexesAndBounds();\n }\n // this event: 1) clears selection 2) updates filters 3) shows/hides 'no rows' overlay\n var rowDataChangedEvent = {\n type: Events.EVENT_ROW_DATA_CHANGED,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n this.eventService.dispatchEvent(rowDataChangedEvent);\n // this gets the row to render rows (or remove the previously rendered rows, as it's blank to start).\n // important to NOT pass in an event with keepRenderedRows or animate, as we want the renderer\n // to treat the rows as new rows, as it's all new data\n this.dispatchModelUpdated(true);\n };\n ServerSideRowModel.prototype.columnsToValueObjects = function (columns) {\n var _this = this;\n return columns.map(function (col) { return ({\n id: col.getId(),\n aggFunc: col.getAggFunc(),\n displayName: _this.columnModel.getDisplayNameForColumn(col, 'model'),\n field: col.getColDef().field\n }); });\n };\n ServerSideRowModel.prototype.createStoreParams = function () {\n var rowGroupColumnVos = this.columnsToValueObjects(this.columnModel.getRowGroupColumns());\n var valueColumnVos = this.columnsToValueObjects(this.columnModel.getValueColumns());\n var pivotColumnVos = this.columnsToValueObjects(this.columnModel.getPivotColumns());\n var dynamicRowHeight = this.gridOptionsWrapper.isDynamicRowHeight();\n var params = {\n // the columns the user has grouped and aggregated by\n valueCols: valueColumnVos,\n rowGroupCols: rowGroupColumnVos,\n pivotCols: pivotColumnVos,\n pivotMode: this.columnModel.isPivotMode(),\n // sort and filter model\n filterModel: this.filterManager.getFilterModel(),\n sortModel: this.sortListener.extractSortModel(),\n datasource: this.datasource,\n lastAccessedSequence: new NumberSequence(),\n // blockSize: blockSize == null ? 100 : blockSize,\n dynamicRowHeight: dynamicRowHeight\n };\n return params;\n };\n ServerSideRowModel.prototype.getParams = function () {\n return this.storeParams;\n };\n ServerSideRowModel.prototype.dispatchModelUpdated = function (reset) {\n if (reset === void 0) { reset = false; }\n var modelUpdatedEvent = {\n type: Events.EVENT_MODEL_UPDATED,\n api: this.gridApi,\n columnApi: this.columnApi,\n animate: !reset,\n keepRenderedRows: !reset,\n newPage: false,\n newData: false\n };\n this.eventService.dispatchEvent(modelUpdatedEvent);\n };\n ServerSideRowModel.prototype.onStoreUpdated = function () {\n // sometimes if doing a batch update, we do the batch first,\n // then call onStoreUpdated manually. eg expandAll() method.\n if (this.pauseStoreUpdateListening) {\n return;\n }\n this.updateRowIndexesAndBounds();\n this.dispatchModelUpdated();\n };\n ServerSideRowModel.prototype.onRowHeightChanged = function () {\n this.updateRowIndexesAndBounds();\n this.dispatchModelUpdated();\n };\n ServerSideRowModel.prototype.updateRowIndexesAndBounds = function () {\n var rootStore = this.getRootStore();\n if (!rootStore) {\n return;\n }\n rootStore.setDisplayIndexes(new NumberSequence(), { value: 0 });\n };\n ServerSideRowModel.prototype.retryLoads = function () {\n var rootStore = this.getRootStore();\n if (!rootStore) {\n return;\n }\n rootStore.retryLoads();\n this.onStoreUpdated();\n };\n ServerSideRowModel.prototype.getRow = function (index) {\n var rootStore = this.getRootStore();\n if (!rootStore) {\n return undefined;\n }\n return rootStore.getRowUsingDisplayIndex(index);\n };\n ServerSideRowModel.prototype.expandAll = function (value) {\n // if we don't pause store updating, we are needlessly\n // recalculating row-indexes etc, and also getting rendering\n // engine to re-render (listens on ModelUpdated event)\n this.pauseStoreUpdateListening = true;\n this.forEachNode(function (node) {\n if (node.group) {\n node.setExpanded(value);\n }\n });\n this.pauseStoreUpdateListening = false;\n this.onStoreUpdated();\n };\n ServerSideRowModel.prototype.refreshAfterFilter = function (newFilterModel, params) {\n if (this.storeParams) {\n this.storeParams.filterModel = newFilterModel;\n }\n var rootStore = this.getRootStore();\n if (!rootStore) {\n return;\n }\n rootStore.refreshAfterFilter(params);\n this.onStoreUpdated();\n };\n ServerSideRowModel.prototype.getRootStore = function () {\n if (this.rootNode && this.rootNode.childStore) {\n return this.rootNode.childStore;\n }\n };\n ServerSideRowModel.prototype.getRowCount = function () {\n var rootStore = this.getRootStore();\n if (!rootStore) {\n return 1;\n }\n return rootStore.getDisplayIndexEnd();\n };\n ServerSideRowModel.prototype.getTopLevelRowCount = function () {\n var rootStore = this.getRootStore();\n if (!rootStore) {\n return 1;\n }\n return rootStore.getRowCount();\n };\n ServerSideRowModel.prototype.getTopLevelRowDisplayedIndex = function (topLevelIndex) {\n var rootStore = this.getRootStore();\n if (!rootStore) {\n return topLevelIndex;\n }\n return rootStore.getTopLevelRowDisplayedIndex(topLevelIndex);\n };\n ServerSideRowModel.prototype.getRowBounds = function (index) {\n var rootStore = this.getRootStore();\n if (!rootStore) {\n var rowHeight = this.gridOptionsWrapper.getRowHeightAsNumber();\n return {\n rowTop: 0,\n rowHeight: rowHeight\n };\n }\n return rootStore.getRowBounds(index);\n };\n ServerSideRowModel.prototype.getRowIndexAtPixel = function (pixel) {\n var rootStore = this.getRootStore();\n if (pixel <= 0 || !rootStore) {\n return 0;\n }\n return rootStore.getRowIndexAtPixel(pixel);\n };\n ServerSideRowModel.prototype.isEmpty = function () {\n return false;\n };\n ServerSideRowModel.prototype.isRowsToRender = function () {\n return this.getRootStore() != null && this.getRowCount() > 0;\n };\n ServerSideRowModel.prototype.getType = function () {\n return Constants.ROW_MODEL_TYPE_SERVER_SIDE;\n };\n ServerSideRowModel.prototype.forEachNode = function (callback) {\n var rootStore = this.getRootStore();\n if (!rootStore) {\n return;\n }\n rootStore.forEachNodeDeep(callback);\n };\n ServerSideRowModel.prototype.forEachNodeAfterFilterAndSort = function (callback) {\n var rootStore = this.getRootStore();\n if (!rootStore) {\n return;\n }\n rootStore.forEachNodeDeepAfterFilterAndSort(callback);\n };\n ServerSideRowModel.prototype.executeOnStore = function (route, callback) {\n var rootStore = this.getRootStore();\n if (!rootStore) {\n return;\n }\n var storeToExecuteOn = rootStore.getChildStore(route);\n if (storeToExecuteOn) {\n callback(storeToExecuteOn);\n }\n };\n ServerSideRowModel.prototype.refreshStore = function (params) {\n if (params === void 0) { params = {}; }\n var route = params.route ? params.route : [];\n this.executeOnStore(route, function (store) { return store.refreshStore(params.purge == true); });\n };\n ServerSideRowModel.prototype.getStoreState = function () {\n var res = [];\n var rootStore = this.getRootStore();\n if (rootStore) {\n rootStore.addStoreStates(res);\n }\n return res;\n };\n ServerSideRowModel.prototype.getNodesInRangeForSelection = function (firstInRange, lastInRange) {\n if (_.exists(lastInRange) && firstInRange.parent !== lastInRange.parent) {\n return [];\n }\n return firstInRange.parent.childStore.getRowNodesInRange(lastInRange, firstInRange);\n };\n ServerSideRowModel.prototype.getRowNode = function (id) {\n var result;\n this.forEachNode(function (rowNode) {\n if (rowNode.id === id) {\n result = rowNode;\n }\n if (rowNode.detailNode && rowNode.detailNode.id === id) {\n result = rowNode.detailNode;\n }\n });\n return result;\n };\n ServerSideRowModel.prototype.isRowPresent = function (rowNode) {\n var foundRowNode = this.getRowNode(rowNode.id);\n return !!foundRowNode;\n };\n __decorate([\n Autowired('columnModel')\n ], ServerSideRowModel.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('filterManager')\n ], ServerSideRowModel.prototype, \"filterManager\", void 0);\n __decorate([\n Autowired('sortController')\n ], ServerSideRowModel.prototype, \"sortController\", void 0);\n __decorate([\n Autowired('gridApi')\n ], ServerSideRowModel.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('columnApi')\n ], ServerSideRowModel.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('rowRenderer')\n ], ServerSideRowModel.prototype, \"rowRenderer\", void 0);\n __decorate([\n Autowired('ssrmSortService')\n ], ServerSideRowModel.prototype, \"sortListener\", void 0);\n __decorate([\n Autowired('ssrmNodeManager')\n ], ServerSideRowModel.prototype, \"nodeManager\", void 0);\n __decorate([\n Autowired('ssrmStoreFactory')\n ], ServerSideRowModel.prototype, \"storeFactory\", void 0);\n __decorate([\n Autowired('beans')\n ], ServerSideRowModel.prototype, \"beans\", void 0);\n __decorate([\n PreDestroy\n ], ServerSideRowModel.prototype, \"destroyDatasource\", null);\n __decorate([\n PostConstruct\n ], ServerSideRowModel.prototype, \"addEventListeners\", null);\n __decorate([\n PreDestroy\n ], ServerSideRowModel.prototype, \"destroyRootStore\", null);\n ServerSideRowModel = __decorate([\n Bean('rowModel')\n ], ServerSideRowModel);\n return ServerSideRowModel;\n}(BeanStub));\nexport { ServerSideRowModel };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { _, Autowired, Bean, BeanStub } from \"@ag-grid-community/core\";\nvar StoreUtils = /** @class */ (function (_super) {\n __extends(StoreUtils, _super);\n function StoreUtils() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n StoreUtils.prototype.loadFromDatasource = function (p) {\n var groupKeys = p.parentNode.getGroupKeys();\n var storeParams = p.storeParams;\n if (!storeParams.datasource) {\n return;\n }\n var request = {\n startRow: p.startRow,\n endRow: p.endRow,\n rowGroupCols: storeParams.rowGroupCols,\n valueCols: storeParams.valueCols,\n pivotCols: storeParams.pivotCols,\n pivotMode: storeParams.pivotMode,\n groupKeys: groupKeys,\n filterModel: storeParams.filterModel,\n sortModel: storeParams.sortModel\n };\n var getRowsParams = {\n successCallback: p.successCallback,\n success: p.success,\n failCallback: p.failCallback,\n fail: p.fail,\n request: request,\n parentNode: p.parentNode,\n api: this.gridApi,\n columnApi: this.columnApi\n };\n window.setTimeout(function () {\n if (storeParams.datasource) {\n storeParams.datasource.getRows(getRowsParams);\n }\n }, 0);\n };\n StoreUtils.prototype.getChildStore = function (keys, currentCache, findNodeFunc) {\n if (_.missingOrEmpty(keys)) {\n return currentCache;\n }\n var nextKey = keys[0];\n var nextNode = findNodeFunc(nextKey);\n if (nextNode) {\n var keyListForNextLevel = keys.slice(1, keys.length);\n var nextStore = nextNode.childStore;\n return nextStore ? nextStore.getChildStore(keyListForNextLevel) : null;\n }\n return null;\n };\n StoreUtils.prototype.isServerRefreshNeeded = function (parentRowNode, rowGroupCols, params) {\n if (params.alwaysReset || params.valueColChanged || params.secondaryColChanged) {\n return true;\n }\n var level = parentRowNode.level + 1;\n var grouping = level < rowGroupCols.length;\n var leafNodes = !grouping;\n if (leafNodes) {\n return true;\n }\n var colIdThisGroup = rowGroupCols[level].id;\n var actionOnThisGroup = params.changedColumns.indexOf(colIdThisGroup) > -1;\n if (actionOnThisGroup) {\n return true;\n }\n return false;\n };\n __decorate([\n Autowired('columnApi')\n ], StoreUtils.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], StoreUtils.prototype, \"gridApi\", void 0);\n StoreUtils = __decorate([\n Bean('ssrmStoreUtils')\n ], StoreUtils);\n return StoreUtils;\n}(BeanStub));\nexport { StoreUtils };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { _, Autowired, Bean, BeanStub, PostConstruct, RowNode } from \"@ag-grid-community/core\";\nvar BlockUtils = /** @class */ (function (_super) {\n __extends(BlockUtils, _super);\n function BlockUtils() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n BlockUtils.prototype.postConstruct = function () {\n this.rowHeight = this.gridOptionsWrapper.getRowHeightAsNumber();\n this.usingTreeData = this.gridOptionsWrapper.isTreeData();\n this.usingMasterDetail = this.gridOptionsWrapper.isMasterDetail();\n };\n BlockUtils.prototype.createRowNode = function (params) {\n var rowNode = new RowNode(this.beans);\n var rowHeight = params.rowHeight != null ? params.rowHeight : this.rowHeight;\n rowNode.setRowHeight(rowHeight);\n rowNode.group = params.group;\n rowNode.leafGroup = params.leafGroup;\n rowNode.level = params.level;\n rowNode.uiLevel = params.level;\n rowNode.parent = params.parent;\n // stub gets set to true here, and then false when this rowNode gets it's data\n rowNode.stub = true;\n if (rowNode.group) {\n rowNode.expanded = false;\n rowNode.field = params.field;\n rowNode.rowGroupColumn = params.rowGroupColumn;\n }\n return rowNode;\n };\n BlockUtils.prototype.destroyRowNodes = function (rowNodes) {\n if (rowNodes) {\n rowNodes.forEach(this.destroyRowNode.bind(this));\n }\n };\n BlockUtils.prototype.destroyRowNode = function (rowNode) {\n if (rowNode.childStore) {\n this.destroyBean(rowNode.childStore);\n rowNode.childStore = null;\n }\n // this is needed, so row render knows to fade out the row, otherwise it\n // sees row top is present, and thinks the row should be shown. maybe\n // rowNode should have a flag on whether it is visible???\n rowNode.clearRowTopAndRowIndex();\n if (rowNode.id != null) {\n this.nodeManager.removeNode(rowNode);\n }\n };\n BlockUtils.prototype.setTreeGroupInfo = function (rowNode) {\n var isGroupFunc = this.gridOptionsWrapper.getIsServerSideGroupFunc();\n var getKeyFunc = this.gridOptionsWrapper.getServerSideGroupKeyFunc();\n if (isGroupFunc != null) {\n rowNode.setGroup(isGroupFunc(rowNode.data));\n if (rowNode.group && getKeyFunc != null) {\n rowNode.key = getKeyFunc(rowNode.data);\n }\n }\n if (!rowNode.group && rowNode.childStore != null) {\n this.destroyBean(rowNode.childStore);\n rowNode.childStore = null;\n }\n };\n BlockUtils.prototype.setRowGroupInfo = function (rowNode) {\n rowNode.key = this.valueService.getValue(rowNode.rowGroupColumn, rowNode);\n if (rowNode.key === null || rowNode.key === undefined) {\n _.doOnce(function () {\n console.warn(\"AG Grid: null and undefined values are not allowed for server side row model keys\");\n if (rowNode.rowGroupColumn) {\n console.warn(\"column = \" + rowNode.rowGroupColumn.getId());\n }\n console.warn(\"data is \", rowNode.data);\n }, 'ServerSideBlock-CannotHaveNullOrUndefinedForKey');\n }\n };\n BlockUtils.prototype.setMasterDetailInfo = function (rowNode) {\n var isMasterFunc = this.gridOptionsWrapper.getIsRowMasterFunc();\n if (isMasterFunc != null) {\n rowNode.master = isMasterFunc(rowNode.data);\n }\n else {\n rowNode.master = true;\n }\n };\n BlockUtils.prototype.updateDataIntoRowNode = function (rowNode, data) {\n rowNode.updateData(data);\n if (this.usingTreeData) {\n this.setTreeGroupInfo(rowNode);\n }\n else if (rowNode.group) {\n // it's not possible for a node to change whether it's a group or not\n // when doing row grouping (as only rows at certain levels are groups),\n // so nothing to do here\n }\n else if (this.usingMasterDetail) {\n // this should be implemented, however it's not the use case i'm currently\n // programming, so leaving for another day. to test this, create an example\n // where whether a master row is expandable or not is dynamic\n }\n };\n BlockUtils.prototype.setDataIntoRowNode = function (rowNode, data, defaultId, cachedRowHeight) {\n rowNode.stub = false;\n if (_.exists(data)) {\n rowNode.setDataAndId(data, defaultId);\n if (this.usingTreeData) {\n this.setTreeGroupInfo(rowNode);\n }\n else if (rowNode.group) {\n this.setRowGroupInfo(rowNode);\n }\n else if (this.usingMasterDetail) {\n this.setMasterDetailInfo(rowNode);\n }\n }\n else {\n rowNode.setDataAndId(undefined, undefined);\n rowNode.key = null;\n }\n if (this.usingTreeData || rowNode.group) {\n this.setGroupDataIntoRowNode(rowNode);\n this.setChildCountIntoRowNode(rowNode);\n }\n // this needs to be done AFTER setGroupDataIntoRowNode(), as the height can depend on the group data\n // getting set, if it's a group node and colDef.autoHeight=true\n if (_.exists(data)) {\n rowNode.setRowHeight(this.gridOptionsWrapper.getRowHeightForNode(rowNode, false, cachedRowHeight).height);\n }\n };\n BlockUtils.prototype.setChildCountIntoRowNode = function (rowNode) {\n var getChildCount = this.gridOptionsWrapper.getChildCountFunc();\n if (getChildCount) {\n rowNode.allChildrenCount = getChildCount(rowNode.data);\n }\n };\n BlockUtils.prototype.setGroupDataIntoRowNode = function (rowNode) {\n var _this = this;\n var groupDisplayCols = this.columnModel.getGroupDisplayColumns();\n var usingTreeData = this.gridOptionsWrapper.isTreeData();\n groupDisplayCols.forEach(function (col) {\n if (rowNode.groupData == null) {\n rowNode.groupData = {};\n }\n if (usingTreeData) {\n rowNode.groupData[col.getColId()] = rowNode.key;\n }\n else if (col.isRowGroupDisplayed(rowNode.rowGroupColumn.getId())) {\n var groupValue = _this.valueService.getValue(rowNode.rowGroupColumn, rowNode);\n rowNode.groupData[col.getColId()] = groupValue;\n }\n });\n };\n BlockUtils.prototype.clearDisplayIndex = function (rowNode) {\n rowNode.clearRowTopAndRowIndex();\n var hasChildStore = rowNode.group && _.exists(rowNode.childStore);\n if (hasChildStore) {\n var childStore = rowNode.childStore;\n childStore.clearDisplayIndexes();\n }\n var hasDetailNode = rowNode.master && rowNode.detailNode;\n if (hasDetailNode) {\n rowNode.detailNode.clearRowTopAndRowIndex();\n }\n };\n BlockUtils.prototype.setDisplayIndex = function (rowNode, displayIndexSeq, nextRowTop) {\n // set this row\n rowNode.setRowIndex(displayIndexSeq.next());\n rowNode.setRowTop(nextRowTop.value);\n nextRowTop.value += rowNode.rowHeight;\n // set child for master / detail\n var hasDetailRow = rowNode.master;\n if (hasDetailRow) {\n if (rowNode.expanded && rowNode.detailNode) {\n rowNode.detailNode.setRowIndex(displayIndexSeq.next());\n rowNode.detailNode.setRowTop(nextRowTop.value);\n nextRowTop.value += rowNode.detailNode.rowHeight;\n }\n else if (rowNode.detailNode) {\n rowNode.detailNode.clearRowTopAndRowIndex();\n }\n }\n // set children for SSRM child rows\n var hasChildStore = rowNode.group && _.exists(rowNode.childStore);\n if (hasChildStore) {\n var childStore = rowNode.childStore;\n if (rowNode.expanded) {\n childStore.setDisplayIndexes(displayIndexSeq, nextRowTop);\n }\n else {\n // we need to clear the row tops, as the row renderer depends on\n // this to know if the row should be faded out\n childStore.clearDisplayIndexes();\n }\n }\n };\n BlockUtils.prototype.binarySearchForDisplayIndex = function (displayRowIndex, rowNodes) {\n var bottomPointer = 0;\n var topPointer = rowNodes.length - 1;\n if (_.missing(topPointer) || _.missing(bottomPointer)) {\n console.warn(\"AG Grid: error: topPointer = \" + topPointer + \", bottomPointer = \" + bottomPointer);\n return undefined;\n }\n while (true) {\n var midPointer = Math.floor((bottomPointer + topPointer) / 2);\n var currentRowNode = rowNodes[midPointer];\n // first check current row for index\n if (currentRowNode.rowIndex === displayRowIndex) {\n return currentRowNode;\n }\n // then check if current row contains a detail row with the index\n var expandedMasterRow = currentRowNode.master && currentRowNode.expanded;\n var detailNode = currentRowNode.detailNode;\n if (expandedMasterRow && detailNode && detailNode.rowIndex === displayRowIndex) {\n return currentRowNode.detailNode;\n }\n // then check if child cache contains index\n var childStore = currentRowNode.childStore;\n if (currentRowNode.expanded && childStore && childStore.isDisplayIndexInStore(displayRowIndex)) {\n return childStore.getRowUsingDisplayIndex(displayRowIndex);\n }\n // otherwise adjust pointers to continue searching for index\n if (currentRowNode.rowIndex < displayRowIndex) {\n bottomPointer = midPointer + 1;\n }\n else if (currentRowNode.rowIndex > displayRowIndex) {\n topPointer = midPointer - 1;\n }\n else {\n console.warn(\"AG Grid: error: unable to locate rowIndex = \" + displayRowIndex + \" in cache\");\n return undefined;\n }\n }\n };\n BlockUtils.prototype.extractRowBounds = function (rowNode, index) {\n var extractRowBounds = function (currentRowNode) { return ({\n rowHeight: currentRowNode.rowHeight,\n rowTop: currentRowNode.rowTop\n }); };\n if (rowNode.rowIndex === index) {\n return extractRowBounds(rowNode);\n }\n if (rowNode.group && rowNode.expanded && _.exists(rowNode.childStore)) {\n var childStore = rowNode.childStore;\n if (childStore.isDisplayIndexInStore(index)) {\n return childStore.getRowBounds(index);\n }\n }\n else if (rowNode.master && rowNode.expanded && _.exists(rowNode.detailNode)) {\n if (rowNode.detailNode.rowIndex === index) {\n return extractRowBounds(rowNode.detailNode);\n }\n }\n };\n BlockUtils.prototype.getIndexAtPixel = function (rowNode, pixel) {\n // first check if pixel is in range of current row\n if (rowNode.isPixelInRange(pixel)) {\n return rowNode.rowIndex;\n }\n // then check if current row contains a detail row with pixel in range\n var expandedMasterRow = rowNode.master && rowNode.expanded;\n var detailNode = rowNode.detailNode;\n if (expandedMasterRow && detailNode && detailNode.isPixelInRange(pixel)) {\n return rowNode.detailNode.rowIndex;\n }\n // then check if it's a group row with a child cache with pixel in range\n if (rowNode.group && rowNode.expanded && _.exists(rowNode.childStore)) {\n var childStore = rowNode.childStore;\n if (childStore.isPixelInRange(pixel)) {\n return childStore.getRowIndexAtPixel(pixel);\n }\n }\n return null;\n // pixel is not within this row node or it's children / detail, so return undefined\n };\n BlockUtils.prototype.createNodeIdPrefix = function (parentRowNode) {\n var parts = [];\n var rowNode = parentRowNode;\n // pull keys from all parent nodes, but do not include the root node\n while (rowNode && rowNode.level >= 0) {\n parts.push(rowNode.key);\n rowNode = rowNode.parent;\n }\n if (parts.length > 0) {\n return parts.reverse().join('-');\n }\n // no prefix, so node id's are left as they are\n return undefined;\n };\n BlockUtils.prototype.checkOpenByDefault = function (rowNode) {\n if (!rowNode.isExpandable()) {\n return;\n }\n var userFunc = this.gridOptionsWrapper.getIsServerSideGroupOpenByDefaultFunc();\n if (!userFunc) {\n return;\n }\n var params = {\n data: rowNode.data,\n rowNode: rowNode\n };\n var userFuncRes = userFunc(params);\n if (userFuncRes) {\n // we do this in a timeout, so that we don't expand a row node while in the middle\n // of setting up rows, setting up rows is complex enough without another chunk of work\n // getting added to the call stack. this is also helpful as openByDefault may or may\n // not happen (so makes setting up rows more deterministic by expands never happening)\n // and also checkOpenByDefault is shard with both store types, so easier control how it\n // impacts things by keeping it in new VM turn.\n window.setTimeout(function () { return rowNode.setExpanded(true); }, 0);\n }\n };\n __decorate([\n Autowired('valueService')\n ], BlockUtils.prototype, \"valueService\", void 0);\n __decorate([\n Autowired('columnModel')\n ], BlockUtils.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('ssrmNodeManager')\n ], BlockUtils.prototype, \"nodeManager\", void 0);\n __decorate([\n Autowired('beans')\n ], BlockUtils.prototype, \"beans\", void 0);\n __decorate([\n PostConstruct\n ], BlockUtils.prototype, \"postConstruct\", null);\n BlockUtils = __decorate([\n Bean('ssrmBlockUtils')\n ], BlockUtils);\n return BlockUtils;\n}(BeanStub));\nexport { BlockUtils };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Bean, PreDestroy } from \"@ag-grid-community/core\";\nvar NodeManager = /** @class */ (function () {\n function NodeManager() {\n this.rowNodes = {};\n }\n NodeManager.prototype.addRowNode = function (rowNode) {\n var id = rowNode.id;\n if (this.rowNodes[id]) {\n console.warn('AG Grid: duplicate node id ' + rowNode.id);\n console.warn('first instance', this.rowNodes[id].data);\n console.warn('second instance', rowNode.data);\n }\n this.rowNodes[id] = rowNode;\n };\n NodeManager.prototype.removeNode = function (rowNode) {\n var id = rowNode.id;\n if (this.rowNodes[id]) {\n this.rowNodes[id] = undefined;\n }\n };\n NodeManager.prototype.clear = function () {\n this.rowNodes = {};\n };\n __decorate([\n PreDestroy\n ], NodeManager.prototype, \"clear\", null);\n NodeManager = __decorate([\n Bean('ssrmNodeManager')\n ], NodeManager);\n return NodeManager;\n}());\nexport { NodeManager };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Bean, BeanStub, Events, PostConstruct, ServerSideTransactionResultStatus } from \"@ag-grid-community/core\";\nvar TransactionManager = /** @class */ (function (_super) {\n __extends(TransactionManager, _super);\n function TransactionManager() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.asyncTransactions = [];\n return _this;\n }\n TransactionManager.prototype.postConstruct = function () {\n // only want to be active if SSRM active, otherwise would be interfering with other row models\n if (!this.gridOptionsWrapper.isRowModelServerSide()) {\n return;\n }\n };\n TransactionManager.prototype.applyTransactionAsync = function (transaction, callback) {\n if (this.asyncTransactionsTimeout == null) {\n this.scheduleExecuteAsync();\n }\n this.asyncTransactions.push({ transaction: transaction, callback: callback });\n };\n TransactionManager.prototype.scheduleExecuteAsync = function () {\n var _this = this;\n var waitMillis = this.gridOptionsWrapper.getAsyncTransactionWaitMillis();\n this.asyncTransactionsTimeout = window.setTimeout(function () {\n _this.executeAsyncTransactions();\n }, waitMillis);\n };\n TransactionManager.prototype.executeAsyncTransactions = function () {\n var _this = this;\n if (!this.asyncTransactions) {\n return;\n }\n var resultFuncs = [];\n var resultsForEvent = [];\n var transactionsToRetry = [];\n var atLeastOneTransactionApplied = false;\n this.asyncTransactions.forEach(function (txWrapper) {\n var result;\n _this.serverSideRowModel.executeOnStore(txWrapper.transaction.route, function (cache) {\n result = cache.applyTransaction(txWrapper.transaction);\n });\n if (result == undefined) {\n result = { status: ServerSideTransactionResultStatus.StoreNotFound };\n }\n resultsForEvent.push(result);\n var retryTransaction = result.status == ServerSideTransactionResultStatus.StoreLoading;\n if (retryTransaction) {\n transactionsToRetry.push(txWrapper);\n return;\n }\n if (txWrapper.callback) {\n resultFuncs.push(function () { return txWrapper.callback(result); });\n }\n if (result.status === ServerSideTransactionResultStatus.Applied) {\n atLeastOneTransactionApplied = true;\n }\n });\n // do callbacks in next VM turn so it's async\n if (resultFuncs.length > 0) {\n window.setTimeout(function () {\n resultFuncs.forEach(function (func) { return func(); });\n }, 0);\n }\n this.asyncTransactionsTimeout = undefined;\n // this will be empty list if nothing to retry\n this.asyncTransactions = transactionsToRetry;\n if (atLeastOneTransactionApplied) {\n this.valueCache.onDataChanged();\n this.eventService.dispatchEvent({ type: Events.EVENT_STORE_UPDATED });\n }\n if (resultsForEvent.length > 0) {\n var event_1 = {\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n type: Events.EVENT_ASYNC_TRANSACTIONS_FLUSHED,\n results: resultsForEvent\n };\n this.eventService.dispatchEvent(event_1);\n }\n };\n TransactionManager.prototype.flushAsyncTransactions = function () {\n // the timeout could be missing, if we are flushing due to row data loaded\n if (this.asyncTransactionsTimeout != null) {\n clearTimeout(this.asyncTransactionsTimeout);\n }\n this.executeAsyncTransactions();\n };\n TransactionManager.prototype.applyTransaction = function (transaction) {\n var res;\n this.serverSideRowModel.executeOnStore(transaction.route, function (store) {\n res = store.applyTransaction(transaction);\n });\n if (res) {\n this.valueCache.onDataChanged();\n this.eventService.dispatchEvent({ type: Events.EVENT_STORE_UPDATED });\n return res;\n }\n else {\n return { status: ServerSideTransactionResultStatus.StoreNotFound };\n }\n };\n __decorate([\n Autowired('rowNodeBlockLoader')\n ], TransactionManager.prototype, \"rowNodeBlockLoader\", void 0);\n __decorate([\n Autowired('valueCache')\n ], TransactionManager.prototype, \"valueCache\", void 0);\n __decorate([\n Autowired('rowModel')\n ], TransactionManager.prototype, \"serverSideRowModel\", void 0);\n __decorate([\n PostConstruct\n ], TransactionManager.prototype, \"postConstruct\", null);\n TransactionManager = __decorate([\n Bean('ssrmTransactionManager')\n ], TransactionManager);\n return TransactionManager;\n}(BeanStub));\nexport { TransactionManager };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { _, Autowired, BeanStub, Events, PostConstruct, RowNode, Bean } from \"@ag-grid-community/core\";\nvar ExpandListener = /** @class */ (function (_super) {\n __extends(ExpandListener, _super);\n function ExpandListener() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ExpandListener.prototype.postConstruct = function () {\n // only want to be active if SSRM active, otherwise would be interfering with other row models\n if (!this.gridOptionsWrapper.isRowModelServerSide()) {\n return;\n }\n this.addManagedListener(this.eventService, Events.EVENT_ROW_GROUP_OPENED, this.onRowGroupOpened.bind(this));\n };\n ExpandListener.prototype.onRowGroupOpened = function (event) {\n var rowNode = event.node;\n if (rowNode.expanded) {\n if (rowNode.master) {\n this.createDetailNode(rowNode);\n }\n else if (_.missing(rowNode.childStore)) {\n var storeParams = this.serverSideRowModel.getParams();\n rowNode.childStore = this.createBean(this.storeFactory.createStore(storeParams, rowNode));\n }\n }\n else if (this.gridOptionsWrapper.isPurgeClosedRowNodes() && _.exists(rowNode.childStore)) {\n rowNode.childStore = this.destroyBean(rowNode.childStore);\n }\n var storeUpdatedEvent = { type: Events.EVENT_STORE_UPDATED };\n this.eventService.dispatchEvent(storeUpdatedEvent);\n };\n ExpandListener.prototype.createDetailNode = function (masterNode) {\n if (_.exists(masterNode.detailNode)) {\n return masterNode.detailNode;\n }\n var detailNode = new RowNode(this.beans);\n detailNode.detail = true;\n detailNode.selectable = false;\n detailNode.parent = masterNode;\n if (_.exists(masterNode.id)) {\n detailNode.id = 'detail_' + masterNode.id;\n }\n detailNode.data = masterNode.data;\n detailNode.level = masterNode.level + 1;\n var defaultDetailRowHeight = 200;\n var rowHeight = this.gridOptionsWrapper.getRowHeightForNode(detailNode).height;\n detailNode.rowHeight = rowHeight ? rowHeight : defaultDetailRowHeight;\n masterNode.detailNode = detailNode;\n return detailNode;\n };\n __decorate([\n Autowired('rowModel')\n ], ExpandListener.prototype, \"serverSideRowModel\", void 0);\n __decorate([\n Autowired('ssrmStoreFactory')\n ], ExpandListener.prototype, \"storeFactory\", void 0);\n __decorate([\n Autowired('beans')\n ], ExpandListener.prototype, \"beans\", void 0);\n __decorate([\n PostConstruct\n ], ExpandListener.prototype, \"postConstruct\", null);\n ExpandListener = __decorate([\n Bean('ssrmExpandListener')\n ], ExpandListener);\n return ExpandListener;\n}(BeanStub));\nexport { ExpandListener };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { _, Autowired, Bean, BeanStub, Constants, Events, PostConstruct } from \"@ag-grid-community/core\";\nvar SortListener = /** @class */ (function (_super) {\n __extends(SortListener, _super);\n function SortListener() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SortListener.prototype.postConstruct = function () {\n // only want to be active if SSRM active, otherwise would be interfering with other row models\n if (!this.gridOptionsWrapper.isRowModelServerSide()) {\n return;\n }\n this.addManagedListener(this.eventService, Events.EVENT_SORT_CHANGED, this.onSortChanged.bind(this));\n };\n SortListener.prototype.extractSortModel = function () {\n var sortModel = this.sortController.getSortModel();\n // when using tree data we just return the sort model with the 'ag-Grid-AutoColumn' as is, i.e not broken out\n // into it's constitute group columns as they are not defined up front and can vary per node.\n if (this.gridOptionsWrapper.isTreeData()) {\n return sortModel;\n }\n // it autoCol is active, we don't want to send this to the server. instead we want to\n // send the\n this.replaceAutoGroupColumnWithActualRowGroupColumns(sortModel);\n this.removeMultiColumnPrefixOnColumnIds(sortModel);\n return sortModel;\n };\n SortListener.prototype.removeMultiColumnPrefixOnColumnIds = function (sortModel) {\n if (this.gridOptionsWrapper.isGroupMultiAutoColumn()) {\n var multiColumnPrefix = Constants.GROUP_AUTO_COLUMN_ID + \"-\";\n for (var i = 0; i < sortModel.length; ++i) {\n if (sortModel[i].colId.indexOf(multiColumnPrefix) > -1) {\n sortModel[i].colId = sortModel[i].colId.substr(multiColumnPrefix.length);\n }\n }\n }\n };\n SortListener.prototype.replaceAutoGroupColumnWithActualRowGroupColumns = function (sortModel) {\n // find index of auto group column in sort model\n var autoGroupSortModel = sortModel.find(function (sm) { return sm.colId == Constants.GROUP_AUTO_COLUMN_ID; });\n // replace auto column with individual group columns\n if (autoGroupSortModel) {\n // remove auto group column\n var autoGroupIndex = sortModel.indexOf(autoGroupSortModel);\n _.removeFromArray(sortModel, autoGroupSortModel);\n var isNotInSortModel = function (col) { return sortModel.filter(function (sm) { return sm.colId === col.getColId(); }).length == 0; };\n var mapColumnToSortModel = function (col) { return ({ colId: col.getId(), sort: autoGroupSortModel.sort }); };\n var newModels = this.columnModel.getRowGroupColumns()\n .filter(isNotInSortModel)\n .map(mapColumnToSortModel);\n _.insertArrayIntoArray(sortModel, newModels, autoGroupIndex);\n }\n };\n SortListener.prototype.onSortChanged = function () {\n var storeParams = this.serverSideRowModel.getParams();\n if (!storeParams) {\n return;\n } // params is undefined if no datasource set\n var newSortModel = this.extractSortModel();\n var oldSortModel = storeParams.sortModel;\n var changedColumns = this.findChangedColumnsInSort(newSortModel, oldSortModel);\n var valueColChanged = this.listenerUtils.isSortingWithValueColumn(changedColumns);\n var secondaryColChanged = this.listenerUtils.isSortingWithSecondaryColumn(changedColumns);\n var alwaysReset = this.gridOptionsWrapper.isServerSideSortingAlwaysResets();\n var params = {\n valueColChanged: valueColChanged,\n secondaryColChanged: secondaryColChanged,\n alwaysReset: alwaysReset,\n changedColumns: changedColumns\n };\n this.serverSideRowModel.refreshAfterSort(newSortModel, params);\n };\n // returns back all the cols that were effected by the sorting. eg if we were sorting by col A,\n // and now we are sorting by col B, the list of impacted cols should be A and B. so if a cache\n // is impacted by sorting on A or B then it needs to be refreshed. this includes where the cache\n // was previously sorted by A and then the A sort now needs to be cleared.\n SortListener.prototype.findChangedColumnsInSort = function (newSortModel, oldSortModel) {\n var allColsInBothSorts = [];\n [newSortModel, oldSortModel].forEach(function (sortModel) {\n if (sortModel) {\n var ids = sortModel.map(function (sm) { return sm.colId; });\n allColsInBothSorts = allColsInBothSorts.concat(ids);\n }\n });\n var differentSorts = function (oldSortItem, newSortItem) {\n var oldSort = oldSortItem ? oldSortItem.sort : null;\n var newSort = newSortItem ? newSortItem.sort : null;\n return oldSort !== newSort;\n };\n var differentIndexes = function (oldSortItem, newSortItem) {\n var oldIndex = oldSortItem ? oldSortModel.indexOf(oldSortItem) : -1;\n var newIndex = newSortItem ? newSortModel.indexOf(newSortItem) : -1;\n return oldIndex !== newIndex;\n };\n return allColsInBothSorts.filter(function (colId) {\n var oldSortItem = oldSortModel.find(function (sm) { return sm.colId === colId; });\n var newSortItem = newSortModel.find(function (sm) { return sm.colId === colId; });\n return differentSorts(oldSortItem, newSortItem) || differentIndexes(oldSortItem, newSortItem);\n });\n };\n __decorate([\n Autowired('sortController')\n ], SortListener.prototype, \"sortController\", void 0);\n __decorate([\n Autowired('columnModel')\n ], SortListener.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('rowModel')\n ], SortListener.prototype, \"serverSideRowModel\", void 0);\n __decorate([\n Autowired('ssrmListenerUtils')\n ], SortListener.prototype, \"listenerUtils\", void 0);\n __decorate([\n PostConstruct\n ], SortListener.prototype, \"postConstruct\", null);\n SortListener = __decorate([\n Bean('ssrmSortService')\n ], SortListener);\n return SortListener;\n}(BeanStub));\nexport { SortListener };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Bean, BeanStub, Events, PostConstruct } from \"@ag-grid-community/core\";\nvar FilterListener = /** @class */ (function (_super) {\n __extends(FilterListener, _super);\n function FilterListener() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FilterListener.prototype.postConstruct = function () {\n // only want to be active if SSRM active, otherwise would be interfering with other row models\n if (!this.gridOptionsWrapper.isRowModelServerSide()) {\n return;\n }\n this.addManagedListener(this.eventService, Events.EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));\n };\n FilterListener.prototype.onFilterChanged = function () {\n var storeParams = this.serverSideRowModel.getParams();\n if (!storeParams) {\n return;\n } // params is undefined if no datasource set\n var newModel = this.filterManager.getFilterModel();\n var oldModel = storeParams ? storeParams.filterModel : {};\n var changedColumns = this.findChangedColumns(newModel, oldModel);\n var valueColChanged = this.listenerUtils.isSortingWithValueColumn(changedColumns);\n var secondaryColChanged = this.listenerUtils.isSortingWithSecondaryColumn(changedColumns);\n var alwaysReset = this.gridOptionsWrapper.isServerSideFilteringAlwaysResets();\n var params = {\n valueColChanged: valueColChanged,\n secondaryColChanged: secondaryColChanged,\n alwaysReset: alwaysReset,\n changedColumns: changedColumns\n };\n this.serverSideRowModel.refreshAfterFilter(newModel, params);\n };\n FilterListener.prototype.findChangedColumns = function (oldModel, newModel) {\n var allColKeysMap = {};\n Object.keys(oldModel).forEach(function (key) { return allColKeysMap[key] = true; });\n Object.keys(newModel).forEach(function (key) { return allColKeysMap[key] = true; });\n var res = [];\n Object.keys(allColKeysMap).forEach(function (key) {\n var oldJson = JSON.stringify(oldModel[key]);\n var newJson = JSON.stringify(newModel[key]);\n var filterChanged = oldJson != newJson;\n if (filterChanged) {\n res.push(key);\n }\n });\n return res;\n };\n __decorate([\n Autowired('rowModel')\n ], FilterListener.prototype, \"serverSideRowModel\", void 0);\n __decorate([\n Autowired('filterManager')\n ], FilterListener.prototype, \"filterManager\", void 0);\n __decorate([\n Autowired('ssrmListenerUtils')\n ], FilterListener.prototype, \"listenerUtils\", void 0);\n __decorate([\n PostConstruct\n ], FilterListener.prototype, \"postConstruct\", null);\n FilterListener = __decorate([\n Bean('ssrmFilterListener')\n ], FilterListener);\n return FilterListener;\n}(BeanStub));\nexport { FilterListener };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nimport { Autowired, NumberSequence, PostConstruct, PreDestroy, Qualifier, RowNodeBlock } from \"@ag-grid-community/core\";\nvar PartialStoreBlock = /** @class */ (function (_super) {\n __extends(PartialStoreBlock, _super);\n function PartialStoreBlock(blockNumber, parentRowNode, ssrmParams, storeParams, parentStore) {\n var _this = _super.call(this, blockNumber) || this;\n _this.ssrmParams = ssrmParams;\n _this.storeParams = storeParams;\n _this.parentRowNode = parentRowNode;\n // we don't need to calculate these now, as the inputs don't change,\n // however it makes the code easier to read if we work them out up front\n _this.startRow = blockNumber * storeParams.cacheBlockSize;\n _this.parentStore = parentStore;\n _this.level = parentRowNode.level + 1;\n _this.groupLevel = ssrmParams.rowGroupCols ? _this.level < ssrmParams.rowGroupCols.length : undefined;\n _this.leafGroup = ssrmParams.rowGroupCols ? _this.level === ssrmParams.rowGroupCols.length - 1 : false;\n return _this;\n }\n PartialStoreBlock.prototype.postConstruct = function () {\n this.usingTreeData = this.gridOptionsWrapper.isTreeData();\n if (!this.usingTreeData && this.groupLevel) {\n var groupColVo = this.ssrmParams.rowGroupCols[this.level];\n this.groupField = groupColVo.field;\n this.rowGroupColumn = this.columnModel.getRowGroupColumns()[this.level];\n }\n this.nodeIdPrefix = this.blockUtils.createNodeIdPrefix(this.parentRowNode);\n this.setData([]);\n };\n PartialStoreBlock.prototype.isDisplayIndexInBlock = function (displayIndex) {\n return displayIndex >= this.displayIndexStart && displayIndex < this.displayIndexEnd;\n };\n PartialStoreBlock.prototype.isBlockBefore = function (displayIndex) {\n return displayIndex >= this.displayIndexEnd;\n };\n PartialStoreBlock.prototype.getDisplayIndexStart = function () {\n return this.displayIndexStart;\n };\n PartialStoreBlock.prototype.getDisplayIndexEnd = function () {\n return this.displayIndexEnd;\n };\n PartialStoreBlock.prototype.getBlockHeightPx = function () {\n return this.blockHeightPx;\n };\n PartialStoreBlock.prototype.getBlockTopPx = function () {\n return this.blockTopPx;\n };\n PartialStoreBlock.prototype.isGroupLevel = function () {\n return this.groupLevel;\n };\n PartialStoreBlock.prototype.getGroupField = function () {\n return this.groupField;\n };\n PartialStoreBlock.prototype.prefixId = function (id) {\n if (this.nodeIdPrefix != null) {\n return this.nodeIdPrefix + '-' + id;\n }\n else {\n return id.toString();\n }\n };\n PartialStoreBlock.prototype.getBlockStateJson = function () {\n return {\n id: this.prefixId(this.getId()),\n state: {\n blockNumber: this.getId(),\n startRow: this.startRow,\n endRow: this.startRow + this.storeParams.cacheBlockSize,\n pageStatus: this.getState()\n }\n };\n };\n PartialStoreBlock.prototype.isAnyNodeOpen = function () {\n var openNodeCount = this.rowNodes.filter(function (node) { return node.expanded; }).length;\n return openNodeCount > 0;\n };\n // this method is repeated, see forEachRowNode, why?\n PartialStoreBlock.prototype.forEachNode = function (callback, sequence, includeChildren, filterAndSort) {\n if (sequence === void 0) { sequence = new NumberSequence(); }\n this.rowNodes.forEach(function (rowNode) {\n callback(rowNode, sequence.next());\n // this will only every happen for server side row model, as infinite\n // row model doesn't have groups\n if (includeChildren && rowNode.childStore) {\n var childStore = rowNode.childStore;\n if (filterAndSort) {\n childStore.forEachNodeDeepAfterFilterAndSort(callback, sequence);\n }\n else {\n childStore.forEachNodeDeep(callback, sequence);\n }\n }\n });\n };\n PartialStoreBlock.prototype.forEachNodeDeep = function (callback, sequence) {\n this.forEachNode(callback, sequence, true, false);\n };\n PartialStoreBlock.prototype.forEachNodeAfterFilterAndSort = function (callback, sequence) {\n this.forEachNode(callback, sequence, true, true);\n };\n PartialStoreBlock.prototype.forEachNodeShallow = function (callback, sequence) {\n this.forEachNode(callback, sequence, false, false);\n };\n PartialStoreBlock.prototype.getLastAccessed = function () {\n return this.lastAccessed;\n };\n PartialStoreBlock.prototype.getRowUsingLocalIndex = function (rowIndex) {\n return this.rowNodes[rowIndex - this.startRow];\n };\n PartialStoreBlock.prototype.touchLastAccessed = function () {\n this.lastAccessed = this.ssrmParams.lastAccessedSequence.next();\n };\n PartialStoreBlock.prototype.processServerFail = function () {\n this.parentStore.onBlockLoadFailed(this);\n };\n PartialStoreBlock.prototype.retryLoads = function () {\n if (this.getState() === RowNodeBlock.STATE_FAILED) {\n this.setStateWaitingToLoad();\n this.rowNodeBlockLoader.checkBlockToLoad();\n this.setData();\n }\n this.forEachNodeShallow(function (node) {\n if (node.childStore) {\n node.childStore.retryLoads();\n }\n });\n };\n PartialStoreBlock.prototype.processServerResult = function (params) {\n this.parentStore.onBlockLoaded(this, params);\n };\n PartialStoreBlock.prototype.setData = function (rows, failedLoad) {\n if (rows === void 0) { rows = []; }\n if (failedLoad === void 0) { failedLoad = false; }\n this.destroyRowNodes();\n var storeRowCount = this.parentStore.getRowCount();\n var startRow = this.getId() * this.storeParams.cacheBlockSize;\n var endRow = Math.min(startRow + this.storeParams.cacheBlockSize, storeRowCount);\n var rowsToCreate = endRow - startRow;\n // when using autoHeight, we default the row heights to a height to fill the old height of the block.\n // we only ever do this to autoHeight, as we could be setting invalid heights (especially if different\n // number of rows in teh block due to a filter, less rows would mean bigger rows), and autoHeight is\n // the only pattern that will automatically correct this.\n var autoRowHeightActive = this.columnModel.isAutoRowHeightActive();\n var cachedBlockHeight = autoRowHeightActive ? this.parentStore.getCachedBlockHeight(this.getId()) : undefined;\n var cachedRowHeight = cachedBlockHeight ? Math.round(cachedBlockHeight / rowsToCreate) : undefined;\n for (var i = 0; i < rowsToCreate; i++) {\n var rowNode = this.blockUtils.createRowNode({\n field: this.groupField,\n group: this.groupLevel,\n leafGroup: this.leafGroup,\n level: this.level,\n parent: this.parentRowNode,\n rowGroupColumn: this.rowGroupColumn,\n rowHeight: cachedRowHeight\n });\n var dataLoadedForThisRow = i < rows.length;\n if (dataLoadedForThisRow) {\n var data = rows[i];\n var defaultId = this.prefixId(this.startRow + i);\n this.blockUtils.setDataIntoRowNode(rowNode, data, defaultId, cachedRowHeight);\n var newId = rowNode.id;\n this.parentStore.removeDuplicateNode(newId);\n this.nodeManager.addRowNode(rowNode);\n this.allNodesMap[rowNode.id] = rowNode;\n this.blockUtils.checkOpenByDefault(rowNode);\n }\n this.rowNodes.push(rowNode);\n if (failedLoad) {\n rowNode.failedLoad = true;\n }\n }\n };\n // to safeguard the grid against duplicate nodes, when a row is loaded, we check\n // for another row in the same cache. if another row does exist, we delete it.\n // this covers for when user refreshes the store (which typically happens after a\n // data change) and the same row ends up coming back in a different block, and the\n // new block finishes refreshing before the old block has finished refreshing.\n PartialStoreBlock.prototype.removeDuplicateNode = function (id) {\n var rowNode = this.allNodesMap[id];\n if (!rowNode) {\n return;\n }\n this.blockUtils.destroyRowNode(rowNode);\n var index = this.rowNodes.indexOf(rowNode);\n var stubRowNode = this.blockUtils.createRowNode({ field: this.groupField, group: this.groupLevel, leafGroup: this.leafGroup,\n level: this.level, parent: this.parentRowNode, rowGroupColumn: this.rowGroupColumn });\n this.rowNodes[index] = stubRowNode;\n };\n PartialStoreBlock.prototype.refresh = function () {\n if (this.getState() !== RowNodeBlock.STATE_WAITING_TO_LOAD) {\n this.setStateWaitingToLoad();\n }\n };\n PartialStoreBlock.prototype.destroyRowNodes = function () {\n this.blockUtils.destroyRowNodes(this.rowNodes);\n this.rowNodes = [];\n this.allNodesMap = {};\n };\n PartialStoreBlock.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('ServerSideBlock');\n };\n PartialStoreBlock.prototype.getRowUsingDisplayIndex = function (displayRowIndex) {\n this.touchLastAccessed();\n var res = this.blockUtils.binarySearchForDisplayIndex(displayRowIndex, this.rowNodes);\n return res;\n };\n PartialStoreBlock.prototype.loadFromDatasource = function () {\n this.storeUtils.loadFromDatasource({\n startRow: this.startRow,\n endRow: this.startRow + this.storeParams.cacheBlockSize,\n parentNode: this.parentRowNode,\n storeParams: this.ssrmParams,\n successCallback: this.pageLoaded.bind(this, this.getVersion()),\n success: this.success.bind(this, this.getVersion()),\n failCallback: this.pageLoadFailed.bind(this, this.getVersion()),\n fail: this.pageLoadFailed.bind(this, this.getVersion())\n });\n };\n PartialStoreBlock.prototype.isPixelInRange = function (pixel) {\n return pixel >= this.blockTopPx && pixel < (this.blockTopPx + this.blockHeightPx);\n };\n PartialStoreBlock.prototype.getRowBounds = function (index) {\n var e_1, _a;\n this.touchLastAccessed();\n var res;\n try {\n for (var _b = __values(this.rowNodes), _c = _b.next(); !_c.done; _c = _b.next()) {\n var rowNode = _c.value;\n res = this.blockUtils.extractRowBounds(rowNode, index);\n if (res != null) {\n break;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return res;\n };\n PartialStoreBlock.prototype.getRowIndexAtPixel = function (pixel) {\n var e_2, _a;\n this.touchLastAccessed();\n var res = null;\n try {\n for (var _b = __values(this.rowNodes), _c = _b.next(); !_c.done; _c = _b.next()) {\n var rowNode = _c.value;\n res = this.blockUtils.getIndexAtPixel(rowNode, pixel);\n if (res != null) {\n break;\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_2) throw e_2.error; }\n }\n return res;\n };\n PartialStoreBlock.prototype.clearDisplayIndexes = function () {\n var _this = this;\n this.displayIndexEnd = undefined;\n this.displayIndexStart = undefined;\n this.rowNodes.forEach(function (rowNode) { return _this.blockUtils.clearDisplayIndex(rowNode); });\n };\n PartialStoreBlock.prototype.setDisplayIndexes = function (displayIndexSeq, nextRowTop) {\n var _this = this;\n this.displayIndexStart = displayIndexSeq.peek();\n this.blockTopPx = nextRowTop.value;\n this.rowNodes.forEach(function (rowNode) { return _this.blockUtils.setDisplayIndex(rowNode, displayIndexSeq, nextRowTop); });\n this.displayIndexEnd = displayIndexSeq.peek();\n this.blockHeightPx = nextRowTop.value - this.blockTopPx;\n };\n __decorate([\n Autowired('columnModel')\n ], PartialStoreBlock.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('ssrmStoreUtils')\n ], PartialStoreBlock.prototype, \"storeUtils\", void 0);\n __decorate([\n Autowired('ssrmBlockUtils')\n ], PartialStoreBlock.prototype, \"blockUtils\", void 0);\n __decorate([\n Autowired('ssrmNodeManager')\n ], PartialStoreBlock.prototype, \"nodeManager\", void 0);\n __decorate([\n Autowired('rowNodeBlockLoader')\n ], PartialStoreBlock.prototype, \"rowNodeBlockLoader\", void 0);\n __decorate([\n PostConstruct\n ], PartialStoreBlock.prototype, \"postConstruct\", null);\n __decorate([\n PreDestroy\n ], PartialStoreBlock.prototype, \"destroyRowNodes\", null);\n __decorate([\n __param(0, Qualifier('loggerFactory'))\n ], PartialStoreBlock.prototype, \"setBeans\", null);\n return PartialStoreBlock;\n}(RowNodeBlock));\nexport { PartialStoreBlock };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { _, Autowired, BeanStub, Events, NumberSequence, PostConstruct, PreDestroy, Qualifier, ServerSideTransactionResultStatus } from \"@ag-grid-community/core\";\nimport { PartialStoreBlock } from \"../blocks/partialStoreBlock\";\nvar FindResult;\n(function (FindResult) {\n FindResult[FindResult[\"FOUND\"] = 0] = \"FOUND\";\n FindResult[FindResult[\"CONTINUE_FIND\"] = 1] = \"CONTINUE_FIND\";\n FindResult[FindResult[\"BREAK_FIND\"] = 2] = \"BREAK_FIND\";\n})(FindResult || (FindResult = {}));\nvar PartialStore = /** @class */ (function (_super) {\n __extends(PartialStore, _super);\n function PartialStore(ssrmParams, storeParams, parentRowNode) {\n var _this = _super.call(this) || this;\n _this.blocks = {};\n _this.blockHeights = {};\n _this.lastRowIndexKnown = false;\n // this will always be zero for the top level cache only,\n // all the other ones change as the groups open and close\n _this.displayIndexStart = 0;\n _this.displayIndexEnd = 0; // not sure if setting this one to zero is necessary\n _this.cacheTopPixel = 0;\n _this.info = {};\n _this.ssrmParams = ssrmParams;\n _this.storeParams = storeParams;\n _this.parentRowNode = parentRowNode;\n _this.rowCount = PartialStore.INITIAL_ROW_COUNT;\n return _this;\n }\n PartialStore.prototype.postConstruct = function () {\n this.defaultRowHeight = this.gridOptionsWrapper.getRowHeightAsNumber();\n };\n PartialStore.prototype.destroyAllBlocks = function () {\n var _this = this;\n this.getBlocksInOrder().forEach(function (block) { return _this.destroyBlock(block); });\n };\n PartialStore.prototype.setBeans = function (loggerFactory) {\n this.logger = loggerFactory.create('ServerSideCache');\n };\n PartialStore.prototype.getRowCount = function () {\n return this.rowCount;\n };\n PartialStore.prototype.isLastRowIndexKnown = function () {\n return this.lastRowIndexKnown;\n };\n PartialStore.prototype.retryLoads = function () {\n this.getBlocksInOrder().forEach(function (block) { return block.retryLoads(); });\n };\n PartialStore.prototype.onBlockLoadFailed = function (block) {\n block.setData([], true);\n this.fireCacheUpdatedEvent();\n };\n PartialStore.prototype.onBlockLoaded = function (block, params) {\n this.logger.log(\"onPageLoaded: page = \" + block.getId() + \", lastRow = \" + params.rowCount);\n if (params.storeInfo) {\n Object.assign(this.info, params.storeInfo);\n }\n if (!params.rowData) {\n var message_1 = 'AG Grid: \"params.rowData\" is missing from Server-Side Row Model success() callback. Please use the \"rowData\" attribute. If no data is returned, set an empty list.';\n _.doOnce(function () { return console.warn(message_1, params); }, 'InfiniteStore.noData');\n }\n var finalRowCount = params.rowCount != null && params.rowCount >= 0 ? params.rowCount : undefined;\n // if we are not active, then we ignore all events, otherwise we could end up getting the\n // grid to refresh even though we are no longer the active cache\n if (!this.isAlive()) {\n return;\n }\n this.checkRowCount(block, finalRowCount);\n block.setData(params.rowData);\n // if the virtualRowCount is shortened, then it's possible blocks exist that are no longer\n // in the valid range. so we must remove these. this can happen if the datasource returns a\n // result and sets lastRow to something less than virtualRowCount (can happen if user scrolls\n // down, server reduces dataset size).\n this.destroyAllBlocksPastVirtualRowCount();\n this.fireCacheUpdatedEvent();\n };\n PartialStore.prototype.purgeBlocksIfNeeded = function (blockToExclude) {\n var _this = this;\n // we exclude checking for the page just created, as this has yet to be accessed and hence\n // the lastAccessed stamp will not be updated for the first time yet\n var blocksForPurging = this.getBlocksInOrder().filter(function (b) { return b != blockToExclude; });\n var lastAccessedComparator = function (a, b) { return b.getLastAccessed() - a.getLastAccessed(); };\n blocksForPurging.sort(lastAccessedComparator);\n // we remove (maxBlocksInCache - 1) as we already excluded the 'just created' page.\n // in other words, after the splice operation below, we have taken out the blocks\n // we want to keep, which means we are left with blocks that we can potentially purge\n var maxBlocksProvided = this.storeParams.maxBlocksInCache > 0;\n var blocksToKeep = maxBlocksProvided ? this.storeParams.maxBlocksInCache - 1 : null;\n var emptyBlocksToKeep = PartialStore.MAX_EMPTY_BLOCKS_TO_KEEP - 1;\n blocksForPurging.forEach(function (block, index) {\n var purgeBecauseBlockEmpty = block.getState() === PartialStoreBlock.STATE_WAITING_TO_LOAD && index >= emptyBlocksToKeep;\n var purgeBecauseCacheFull = maxBlocksProvided ? index >= blocksToKeep : false;\n if (purgeBecauseBlockEmpty || purgeBecauseCacheFull) {\n // we never purge blocks if they are open, as purging them would mess up with\n // our indexes, it would be very messy to restore the purged block to it's\n // previous state if it had open children.\n if (block.isAnyNodeOpen()) {\n return;\n }\n // if the block currently has rows been displayed, then don't remove it either.\n // this can happen if user has maxBlocks=2, and blockSize=5 (thus 10 max rows in cache)\n // but the screen is showing 20 rows, so at least 4 blocks are needed.\n if (_this.isBlockCurrentlyDisplayed(block)) {\n return;\n }\n // don't want to loose keyboard focus, so keyboard navigation can continue. so keep focused blocks.\n if (_this.isBlockFocused(block)) {\n return;\n }\n // at this point, block is not needed, and no open nodes, so burn baby burn\n _this.destroyBlock(block);\n }\n });\n };\n PartialStore.prototype.isBlockFocused = function (block) {\n var focusedCell = this.focusService.getFocusCellToUseAfterRefresh();\n if (!focusedCell) {\n return false;\n }\n if (focusedCell.rowPinned != null) {\n return false;\n }\n var blockIndexStart = block.getDisplayIndexStart();\n var blockIndexEnd = block.getDisplayIndexEnd();\n if (blockIndexEnd == null || blockIndexStart == null) {\n return false;\n }\n var hasFocus = focusedCell.rowIndex >= blockIndexStart && focusedCell.rowIndex < blockIndexEnd;\n return hasFocus;\n };\n PartialStore.prototype.isBlockCurrentlyDisplayed = function (block) {\n var startIndex = block.getDisplayIndexStart();\n var endIndex = block.getDisplayIndexEnd() - 1;\n return this.rowRenderer.isRangeInRenderedViewport(startIndex, endIndex);\n };\n PartialStore.prototype.removeDuplicateNode = function (id) {\n this.getBlocksInOrder().forEach(function (block) { return block.removeDuplicateNode(id); });\n };\n PartialStore.prototype.checkRowCount = function (block, lastRow) {\n // if client provided a last row, we always use it, as it could change between server calls\n // if user deleted data and then called refresh on the grid.\n if (typeof lastRow === 'number' && lastRow >= 0) {\n this.rowCount = lastRow;\n this.lastRowIndexKnown = true;\n }\n else if (!this.lastRowIndexKnown) {\n // otherwise, see if we need to add some virtual rows\n var lastRowIndex = (block.getId() + 1) * this.storeParams.cacheBlockSize;\n var lastRowIndexPlusOverflow = lastRowIndex + PartialStore.OVERFLOW_SIZE;\n if (this.rowCount < lastRowIndexPlusOverflow) {\n this.rowCount = lastRowIndexPlusOverflow;\n }\n }\n };\n PartialStore.prototype.forEachNodeDeep = function (callback, sequence) {\n if (sequence === void 0) { sequence = new NumberSequence(); }\n this.getBlocksInOrder().forEach(function (block) { return block.forEachNodeDeep(callback, sequence); });\n };\n PartialStore.prototype.forEachNodeDeepAfterFilterAndSort = function (callback, sequence) {\n if (sequence === void 0) { sequence = new NumberSequence(); }\n this.getBlocksInOrder().forEach(function (block) { return block.forEachNodeAfterFilterAndSort(callback, sequence); });\n };\n PartialStore.prototype.getBlocksInOrder = function () {\n // get all page id's as NUMBERS (not strings, as we need to sort as numbers) and in descending order\n var blockComparator = function (a, b) { return a.getId() - b.getId(); };\n var blocks = _.getAllValuesInObject(this.blocks).sort(blockComparator);\n return blocks;\n };\n PartialStore.prototype.destroyBlock = function (block) {\n delete this.blocks[block.getId()];\n this.destroyBean(block);\n this.rowNodeBlockLoader.removeBlock(block);\n };\n // gets called 1) row count changed 2) cache purged 3) items inserted\n PartialStore.prototype.fireCacheUpdatedEvent = function () {\n // this results in row model firing ModelUpdated.\n // server side row model also updates the row indexes first\n var event = {\n type: Events.EVENT_STORE_UPDATED\n };\n this.eventService.dispatchEvent(event);\n };\n PartialStore.prototype.destroyAllBlocksPastVirtualRowCount = function () {\n var _this = this;\n var blocksToDestroy = [];\n this.getBlocksInOrder().forEach(function (block) {\n var startRow = block.getId() * _this.storeParams.cacheBlockSize;\n if (startRow >= _this.rowCount) {\n blocksToDestroy.push(block);\n }\n });\n if (blocksToDestroy.length > 0) {\n blocksToDestroy.forEach(function (block) { return _this.destroyBlock(block); });\n }\n };\n PartialStore.prototype.refreshStore = function (purge) {\n var noBlocksToRefresh = this.getRowCount() == 0;\n if (noBlocksToRefresh || purge) {\n this.resetStore();\n }\n else {\n this.refreshBlocks();\n }\n this.fireCacheUpdatedEvent();\n };\n PartialStore.prototype.refreshBlocks = function () {\n this.getBlocksInOrder().forEach(function (block) {\n block.refresh();\n });\n this.lastRowIndexKnown = false;\n this.rowNodeBlockLoader.checkBlockToLoad();\n };\n PartialStore.prototype.resetStore = function () {\n this.destroyAllBlocks();\n this.lastRowIndexKnown = false;\n // if zero rows in the cache, we need to get the SSRM to start asking for rows again.\n // otherwise if set to zero rows last time, and we don't update the row count, then after\n // the purge there will still be zero rows, meaning the SSRM won't request any rows.\n // to kick things off, at least one row needs to be asked for.\n if (this.columnModel.isAutoRowHeightActive || this.rowCount === 0) {\n this.rowCount = PartialStore.INITIAL_ROW_COUNT;\n }\n };\n PartialStore.prototype.getRowNodesInRange = function (firstInRange, lastInRange) {\n var result = [];\n var lastBlockId = -1;\n var inActiveRange = false;\n // if only one node passed, we start the selection at the top\n if (_.missing(firstInRange)) {\n inActiveRange = true;\n }\n var foundGapInSelection = false;\n this.getBlocksInOrder().forEach(function (block) {\n if (foundGapInSelection) {\n return;\n }\n if (inActiveRange && (lastBlockId + 1 !== block.getId())) {\n foundGapInSelection = true;\n return;\n }\n lastBlockId = block.getId();\n block.forEachNodeShallow(function (rowNode) {\n var hitFirstOrLast = rowNode === firstInRange || rowNode === lastInRange;\n if (inActiveRange || hitFirstOrLast) {\n result.push(rowNode);\n }\n if (hitFirstOrLast) {\n inActiveRange = !inActiveRange;\n }\n });\n });\n // inActiveRange will be still true if we never hit the second rowNode\n var invalidRange = foundGapInSelection || inActiveRange;\n return invalidRange ? [] : result;\n };\n PartialStore.prototype.findBlockAndExecute = function (matchBlockFunc, blockFoundFunc, blockNotFoundFunc) {\n var blockFound = false;\n var breakSearch = false;\n var lastBlock = null;\n var res;\n this.getBlocksInOrder().forEach(function (block) {\n if (blockFound || breakSearch) {\n return;\n }\n var comparatorResult = matchBlockFunc(block);\n if (comparatorResult == FindResult.FOUND) {\n res = blockFoundFunc(block);\n blockFound = true;\n }\n else if (comparatorResult == FindResult.CONTINUE_FIND) {\n lastBlock = block;\n }\n else if (comparatorResult == FindResult.BREAK_FIND) {\n breakSearch = true;\n }\n });\n if (!blockFound) {\n res = blockNotFoundFunc(lastBlock);\n }\n return res;\n };\n PartialStore.prototype.getRowBounds = function (index) {\n var _this = this;\n var matchBlockFunc = function (block) {\n if (block.isDisplayIndexInBlock(index)) {\n return FindResult.FOUND;\n }\n else {\n return block.isBlockBefore(index) ? FindResult.CONTINUE_FIND : FindResult.BREAK_FIND;\n }\n };\n var blockFoundFunc = function (foundBlock) {\n return foundBlock.getRowBounds(index);\n };\n var blockNotFoundFunc = function (previousBlock) {\n var nextRowTop;\n var nextRowIndex;\n if (previousBlock !== null) {\n nextRowTop = previousBlock.getBlockTopPx() + previousBlock.getBlockHeightPx();\n nextRowIndex = previousBlock.getDisplayIndexEnd();\n }\n else {\n nextRowTop = _this.cacheTopPixel;\n nextRowIndex = _this.displayIndexStart;\n }\n var rowsBetween = index - nextRowIndex;\n return {\n rowHeight: _this.defaultRowHeight,\n rowTop: nextRowTop + rowsBetween * _this.defaultRowHeight\n };\n };\n return this.findBlockAndExecute(matchBlockFunc, blockFoundFunc, blockNotFoundFunc);\n };\n PartialStore.prototype.getRowIndexAtPixel = function (pixel) {\n var _this = this;\n var matchBlockFunc = function (block) {\n if (block.isPixelInRange(pixel)) {\n return FindResult.FOUND;\n }\n else {\n return block.getBlockTopPx() < pixel ? FindResult.CONTINUE_FIND : FindResult.BREAK_FIND;\n }\n };\n var blockFoundFunc = function (foundBlock) {\n return foundBlock.getRowIndexAtPixel(pixel);\n };\n var blockNotFoundFunc = function (previousBlock) {\n var nextRowTop;\n var nextRowIndex;\n if (previousBlock) {\n nextRowTop = previousBlock.getBlockTopPx() + previousBlock.getBlockHeightPx();\n nextRowIndex = previousBlock.getDisplayIndexEnd();\n }\n else {\n nextRowTop = _this.cacheTopPixel;\n nextRowIndex = _this.displayIndexStart;\n }\n // we start at the last loaded block before this block, and go down\n // block by block, adding in the block sizes (using cached sizes if available)\n // until we get to a block that does should have the pixel\n var blockSize = _this.storeParams.cacheBlockSize;\n var defaultBlockHeight = _this.defaultRowHeight * blockSize;\n var nextBlockId = previousBlock ? (previousBlock.getId() + 1) : 0;\n var getBlockDetails = function (id) {\n var cachedBlockHeight = _this.getCachedBlockHeight(id);\n var blockHeight = cachedBlockHeight != null ? cachedBlockHeight : defaultBlockHeight;\n var pixelInBlock = pixel <= (blockHeight + nextRowTop);\n return {\n height: blockHeight, pixelInBlock: pixelInBlock\n };\n };\n var blockDetails = getBlockDetails(nextBlockId);\n while (!blockDetails.pixelInBlock) {\n nextRowTop += blockDetails.height;\n nextRowIndex += blockSize;\n nextBlockId++;\n blockDetails = getBlockDetails(nextBlockId);\n }\n var pixelsBetween = pixel - nextRowTop;\n var rowHeight = blockDetails.height / blockSize;\n var rowsBetween = Math.floor(pixelsBetween / rowHeight) | 0;\n return nextRowIndex + rowsBetween;\n };\n var result = this.findBlockAndExecute(matchBlockFunc, blockFoundFunc, blockNotFoundFunc);\n var lastAllowedIndex = this.getDisplayIndexEnd() - 1;\n result = Math.min(result, lastAllowedIndex);\n return result;\n };\n PartialStore.prototype.clearDisplayIndexes = function () {\n this.displayIndexStart = undefined;\n this.displayIndexEnd = undefined;\n this.getBlocksInOrder().forEach(function (block) { return block.clearDisplayIndexes(); });\n };\n PartialStore.prototype.setDisplayIndexes = function (displayIndexSeq, nextRowTop) {\n var _this = this;\n this.displayIndexStart = displayIndexSeq.peek();\n this.cacheTopPixel = nextRowTop.value;\n var lastBlockId = -1;\n var blockSize = this.storeParams.cacheBlockSize;\n this.getBlocksInOrder().forEach(function (currentBlock) {\n // if we skipped blocks, then we need to skip the row indexes. we assume that all missing\n // blocks are made up of closed RowNodes only (if they were groups), as we never expire from\n // the cache if any row nodes are open.\n var blockId = currentBlock.getId();\n var blocksSkippedCount = blockId - lastBlockId - 1;\n var rowsSkippedCount = blocksSkippedCount * blockSize;\n if (rowsSkippedCount > 0) {\n displayIndexSeq.skip(rowsSkippedCount);\n }\n for (var i = 1; i <= blocksSkippedCount; i++) {\n var blockToAddId = blockId - i;\n if (_.exists(_this.blockHeights[blockToAddId])) {\n nextRowTop.value += _this.blockHeights[blockToAddId];\n }\n else {\n nextRowTop.value += blockSize * _this.defaultRowHeight;\n }\n }\n lastBlockId = blockId;\n currentBlock.setDisplayIndexes(displayIndexSeq, nextRowTop);\n _this.blockHeights[blockId] = currentBlock.getBlockHeightPx();\n });\n // if any blocks missing at the end, need to increase the row index for them also\n // eg if block size = 10, we have total rows of 25 (indexes 0 .. 24), but first 2 blocks loaded (because\n // last row was ejected from cache), then:\n // lastVisitedRow = 19, virtualRowCount = 25, rows not accounted for = 5 (24 - 19)\n var lastVisitedRow = ((lastBlockId + 1) * blockSize) - 1;\n var rowCount = this.getRowCount();\n var rowsNotAccountedFor = rowCount - lastVisitedRow - 1;\n if (rowsNotAccountedFor > 0) {\n displayIndexSeq.skip(rowsNotAccountedFor);\n nextRowTop.value += rowsNotAccountedFor * this.defaultRowHeight;\n }\n this.displayIndexEnd = displayIndexSeq.peek();\n this.cacheHeightPixels = nextRowTop.value - this.cacheTopPixel;\n };\n // gets called in a) init() above and b) by the grid\n PartialStore.prototype.getRowUsingDisplayIndex = function (displayRowIndex, dontCreateBlock) {\n var _this = this;\n if (dontCreateBlock === void 0) { dontCreateBlock = false; }\n // this can happen if asking for a row that doesn't exist in the model,\n // eg if a cell range is selected, and the user filters so rows no longer exists\n if (!this.isDisplayIndexInStore(displayRowIndex)) {\n return undefined;\n }\n var matchBlockFunc = function (block) {\n if (block.isDisplayIndexInBlock(displayRowIndex)) {\n return FindResult.FOUND;\n }\n else {\n return block.isBlockBefore(displayRowIndex) ? FindResult.CONTINUE_FIND : FindResult.BREAK_FIND;\n }\n };\n var blockFoundFunc = function (foundBlock) {\n return foundBlock.getRowUsingDisplayIndex(displayRowIndex);\n };\n var blockNotFoundFunc = function (previousBlock) {\n if (dontCreateBlock) {\n return;\n }\n var blockNumber;\n var displayIndexStart;\n var nextRowTop;\n var blockSize = _this.storeParams.cacheBlockSize;\n // because missing blocks are always fully closed, we can work out\n // the start index of the block we want by hopping from the closest block,\n // as we know the row count in closed blocks is equal to the page size\n if (previousBlock) {\n blockNumber = previousBlock.getId() + 1;\n displayIndexStart = previousBlock.getDisplayIndexEnd();\n nextRowTop = previousBlock.getBlockHeightPx() + previousBlock.getBlockTopPx();\n var isInRange = function () {\n return displayRowIndex >= displayIndexStart && displayRowIndex < (displayIndexStart + blockSize);\n };\n while (!isInRange()) {\n displayIndexStart += blockSize;\n var cachedBlockHeight = _this.blockHeights[blockNumber];\n if (_.exists(cachedBlockHeight)) {\n nextRowTop += cachedBlockHeight;\n }\n else {\n nextRowTop += _this.defaultRowHeight * blockSize;\n }\n blockNumber++;\n }\n }\n else {\n var localIndex = displayRowIndex - _this.displayIndexStart;\n blockNumber = Math.floor(localIndex / blockSize);\n displayIndexStart = _this.displayIndexStart + (blockNumber * blockSize);\n nextRowTop = _this.cacheTopPixel + (blockNumber * blockSize * _this.defaultRowHeight);\n }\n _this.logger.log(\"block missing, rowIndex = \" + displayRowIndex + \", creating #\" + blockNumber + \", displayIndexStart = \" + displayIndexStart);\n var newBlock = _this.createBlock(blockNumber, displayIndexStart, { value: nextRowTop });\n return newBlock.getRowUsingDisplayIndex(displayRowIndex);\n };\n return this.findBlockAndExecute(matchBlockFunc, blockFoundFunc, blockNotFoundFunc);\n };\n PartialStore.prototype.getTopLevelRowDisplayedIndex = function (topLevelIndex) {\n var blockSize = this.storeParams.cacheBlockSize;\n var blockId = Math.floor(topLevelIndex / blockSize);\n var matchBlockFunc = function (block) {\n if (block.getId() === blockId) {\n return FindResult.FOUND;\n }\n return block.getId() < blockId ? FindResult.CONTINUE_FIND : FindResult.BREAK_FIND;\n };\n var blockFoundFunc = function (foundBlock) {\n var rowNode = foundBlock.getRowUsingLocalIndex(topLevelIndex);\n return rowNode.rowIndex;\n };\n var blockNotFoundFunc = function (previousBlock) {\n if (!previousBlock) {\n return topLevelIndex;\n }\n // note: the local index is the same as the top level index, two terms for same thing\n //\n // get index of the last row before this row\n // eg if blocksize = 100, then:\n // last row of first block is 99 (100 * 1) -1;\n // last row of second block is 199 (100 * 2) -1;\n var lastRowTopLevelIndex = (blockSize * (previousBlock.getId() + 1)) - 1;\n // get the last top level node in the block before the wanted block. this will be the last\n // loaded displayed top level node.\n var lastRowNode = previousBlock.getRowUsingLocalIndex(lastRowTopLevelIndex);\n // we want the index of the last displayed node, not just the top level node, so if the last top level node\n // is open, we get the index of the last displayed child node.\n var lastDisplayedNodeIndexInBlockBefore;\n if (lastRowNode.expanded && lastRowNode.childStore) {\n var serverSideCache = lastRowNode.childStore;\n lastDisplayedNodeIndexInBlockBefore = serverSideCache.getDisplayIndexEnd() - 1;\n }\n else if (lastRowNode.expanded && lastRowNode.detailNode) {\n lastDisplayedNodeIndexInBlockBefore = lastRowNode.detailNode.rowIndex;\n }\n else {\n lastDisplayedNodeIndexInBlockBefore = lastRowNode.rowIndex;\n }\n // we are guaranteed no rows are open. so the difference between the topTopIndex will be the\n // same as the difference between the displayed index\n var indexDiff = topLevelIndex - lastRowTopLevelIndex;\n return lastDisplayedNodeIndexInBlockBefore + indexDiff;\n };\n return this.findBlockAndExecute(matchBlockFunc, blockFoundFunc, blockNotFoundFunc);\n };\n PartialStore.prototype.addStoreStates = function (result) {\n result.push({\n type: 'partial',\n route: this.parentRowNode.getGroupKeys(),\n rowCount: this.rowCount,\n lastRowIndexKnown: this.lastRowIndexKnown,\n info: this.info,\n maxBlocksInCache: this.storeParams.maxBlocksInCache,\n cacheBlockSize: this.storeParams.cacheBlockSize\n });\n this.forEachChildStoreShallow(function (childStore) { return childStore.addStoreStates(result); });\n };\n PartialStore.prototype.getCachedBlockHeight = function (blockNumber) {\n return this.blockHeights[blockNumber];\n };\n PartialStore.prototype.createBlock = function (blockNumber, displayIndex, nextRowTop) {\n var block = this.createBean(new PartialStoreBlock(blockNumber, this.parentRowNode, this.ssrmParams, this.storeParams, this));\n block.setDisplayIndexes(new NumberSequence(displayIndex), nextRowTop);\n this.blocks[block.getId()] = block;\n this.purgeBlocksIfNeeded(block);\n this.rowNodeBlockLoader.addBlock(block);\n return block;\n };\n PartialStore.prototype.getDisplayIndexEnd = function () {\n return this.displayIndexEnd;\n };\n PartialStore.prototype.isDisplayIndexInStore = function (displayIndex) {\n if (this.getRowCount() === 0) {\n return false;\n }\n return displayIndex >= this.displayIndexStart && displayIndex < this.displayIndexEnd;\n };\n PartialStore.prototype.applyTransaction = function (transaction) {\n return { status: ServerSideTransactionResultStatus.StoreWrongType };\n };\n PartialStore.prototype.getChildStore = function (keys) {\n var _this = this;\n var findNodeCallback = function (key) {\n var nextNode = null;\n _this.getBlocksInOrder().forEach(function (block) {\n block.forEachNodeShallow(function (rowNode) {\n if (rowNode.key === key) {\n nextNode = rowNode;\n }\n }, new NumberSequence());\n });\n return nextNode;\n };\n return this.storeUtils.getChildStore(keys, this, findNodeCallback);\n };\n PartialStore.prototype.isPixelInRange = function (pixel) {\n if (this.getRowCount() === 0) {\n return false;\n }\n return pixel >= this.cacheTopPixel && pixel < (this.cacheTopPixel + this.cacheHeightPixels);\n };\n PartialStore.prototype.refreshAfterFilter = function (params) {\n this.resetStore();\n };\n PartialStore.prototype.refreshAfterSort = function (params) {\n if (this.storeUtils.isServerRefreshNeeded(this.parentRowNode, this.ssrmParams.rowGroupCols, params)) {\n this.resetStore();\n return;\n }\n // call refreshAfterSort on children, as we did not purge.\n // if we did purge, no need to do this as all children were destroyed\n this.forEachChildStoreShallow(function (store) { return store.refreshAfterSort(params); });\n };\n PartialStore.prototype.forEachChildStoreShallow = function (callback) {\n this.getBlocksInOrder().forEach(function (block) {\n if (block.isGroupLevel()) {\n var innerCallback = function (rowNode) {\n var nextCache = rowNode.childStore;\n if (nextCache) {\n callback(nextCache);\n }\n };\n block.forEachNodeShallow(innerCallback, new NumberSequence());\n }\n });\n };\n // this property says how many empty blocks should be in a cache, eg if scrolls down fast and creates 10\n // blocks all for loading, the grid will only load the last 2 - it will assume the blocks the user quickly\n // scrolled over are not needed to be loaded.\n PartialStore.MAX_EMPTY_BLOCKS_TO_KEEP = 2;\n PartialStore.INITIAL_ROW_COUNT = 1;\n PartialStore.OVERFLOW_SIZE = 1;\n __decorate([\n Autowired('rowRenderer')\n ], PartialStore.prototype, \"rowRenderer\", void 0);\n __decorate([\n Autowired('rowNodeBlockLoader')\n ], PartialStore.prototype, \"rowNodeBlockLoader\", void 0);\n __decorate([\n Autowired('ssrmStoreUtils')\n ], PartialStore.prototype, \"storeUtils\", void 0);\n __decorate([\n Autowired(\"focusService\")\n ], PartialStore.prototype, \"focusService\", void 0);\n __decorate([\n Autowired(\"columnModel\")\n ], PartialStore.prototype, \"columnModel\", void 0);\n __decorate([\n PostConstruct\n ], PartialStore.prototype, \"postConstruct\", null);\n __decorate([\n PreDestroy\n ], PartialStore.prototype, \"destroyAllBlocks\", null);\n __decorate([\n __param(0, Qualifier('loggerFactory'))\n ], PartialStore.prototype, \"setBeans\", null);\n return PartialStore;\n}(BeanStub));\nexport { PartialStore };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { _, Autowired, Events, NumberSequence, PostConstruct, PreDestroy, RowNodeBlock, ServerSideTransactionResultStatus } from \"@ag-grid-community/core\";\nvar FullStore = /** @class */ (function (_super) {\n __extends(FullStore, _super);\n function FullStore(ssrmParams, storeParams, parentRowNode) {\n var _this = \n // finite block represents a cache with just one block, thus 0 is the id, it's the first block\n _super.call(this, 0) || this;\n _this.nodeIdSequence = new NumberSequence();\n _this.info = {};\n _this.ssrmParams = ssrmParams;\n _this.parentRowNode = parentRowNode;\n _this.level = parentRowNode.level + 1;\n _this.groupLevel = ssrmParams.rowGroupCols ? _this.level < ssrmParams.rowGroupCols.length : undefined;\n _this.leafGroup = ssrmParams.rowGroupCols ? _this.level === ssrmParams.rowGroupCols.length - 1 : false;\n return _this;\n }\n FullStore.prototype.postConstruct = function () {\n var _this = this;\n this.usingTreeData = this.gridOptionsWrapper.isTreeData();\n this.nodeIdPrefix = this.blockUtils.createNodeIdPrefix(this.parentRowNode);\n if (!this.usingTreeData && this.groupLevel) {\n var groupColVo = this.ssrmParams.rowGroupCols[this.level];\n this.groupField = groupColVo.field;\n this.rowGroupColumn = this.columnModel.getRowGroupColumns()[this.level];\n }\n this.initialiseRowNodes();\n this.rowNodeBlockLoader.addBlock(this);\n this.addDestroyFunc(function () { return _this.rowNodeBlockLoader.removeBlock(_this); });\n };\n FullStore.prototype.destroyRowNodes = function () {\n this.blockUtils.destroyRowNodes(this.allRowNodes);\n this.allRowNodes = [];\n this.nodesAfterSort = [];\n this.nodesAfterFilter = [];\n this.allNodesMap = {};\n };\n FullStore.prototype.initialiseRowNodes = function (loadingRowsCount, failedLoad) {\n if (loadingRowsCount === void 0) { loadingRowsCount = 1; }\n if (failedLoad === void 0) { failedLoad = false; }\n this.destroyRowNodes();\n for (var i = 0; i < loadingRowsCount; i++) {\n var loadingRowNode = this.blockUtils.createRowNode({ field: this.groupField, group: this.groupLevel, leafGroup: this.leafGroup,\n level: this.level, parent: this.parentRowNode, rowGroupColumn: this.rowGroupColumn });\n if (failedLoad) {\n loadingRowNode.failedLoad = true;\n }\n this.allRowNodes.push(loadingRowNode);\n this.nodesAfterFilter.push(loadingRowNode);\n this.nodesAfterSort.push(loadingRowNode);\n }\n };\n FullStore.prototype.getBlockStateJson = function () {\n return {\n id: this.nodeIdPrefix ? this.nodeIdPrefix : '',\n state: this.getState()\n };\n };\n FullStore.prototype.loadFromDatasource = function () {\n this.storeUtils.loadFromDatasource({\n startRow: undefined,\n endRow: undefined,\n parentNode: this.parentRowNode,\n storeParams: this.ssrmParams,\n successCallback: this.pageLoaded.bind(this, this.getVersion()),\n success: this.success.bind(this, this.getVersion()),\n failCallback: this.pageLoadFailed.bind(this, this.getVersion()),\n fail: this.pageLoadFailed.bind(this, this.getVersion())\n });\n };\n FullStore.prototype.getStartRow = function () {\n return 0; // always zero as not in a cache\n };\n FullStore.prototype.getEndRow = function () {\n return this.nodesAfterSort.length;\n };\n FullStore.prototype.createDataNode = function (data, index) {\n var rowNode = this.blockUtils.createRowNode({ field: this.groupField, group: this.groupLevel, leafGroup: this.leafGroup,\n level: this.level, parent: this.parentRowNode, rowGroupColumn: this.rowGroupColumn });\n if (index != null) {\n _.insertIntoArray(this.allRowNodes, rowNode, index);\n }\n else {\n this.allRowNodes.push(rowNode);\n }\n var defaultId = this.prefixId(this.nodeIdSequence.next());\n this.blockUtils.setDataIntoRowNode(rowNode, data, defaultId, undefined);\n this.nodeManager.addRowNode(rowNode);\n this.blockUtils.checkOpenByDefault(rowNode);\n this.allNodesMap[rowNode.id] = rowNode;\n return rowNode;\n };\n FullStore.prototype.prefixId = function (id) {\n if (this.nodeIdPrefix) {\n return this.nodeIdPrefix + '-' + id;\n }\n else {\n return id.toString();\n }\n };\n FullStore.prototype.processServerFail = function () {\n this.initialiseRowNodes(1, true);\n this.fireStoreUpdatedEvent();\n this.flushAsyncTransactions();\n };\n FullStore.prototype.processServerResult = function (params) {\n if (!this.isAlive()) {\n return;\n }\n if (params.storeInfo) {\n Object.assign(this.info, params.storeInfo);\n }\n var nodesToRecycle = this.allRowNodes.length > 0 ? this.allNodesMap : undefined;\n this.allRowNodes = [];\n this.nodesAfterSort = [];\n this.nodesAfterFilter = [];\n this.allNodesMap = {};\n if (!params.rowData) {\n var message_1 = 'AG Grid: \"params.data\" is missing from Server-Side Row Model success() callback. Please use the \"data\" attribute. If no data is returned, set an empty list.';\n _.doOnce(function () { return console.warn(message_1, params); }, 'FullStore.noData');\n }\n this.createOrRecycleNodes(nodesToRecycle, params.rowData);\n if (nodesToRecycle) {\n this.blockUtils.destroyRowNodes(_.getAllValuesInObject(nodesToRecycle));\n }\n this.filterAndSortNodes();\n this.fireStoreUpdatedEvent();\n this.flushAsyncTransactions();\n };\n FullStore.prototype.createOrRecycleNodes = function (nodesToRecycle, rowData) {\n var _this = this;\n if (!rowData) {\n return;\n }\n var lookupNodeToRecycle = function (data) {\n if (!nodesToRecycle) {\n return undefined;\n }\n var getRowIdFunc = _this.gridOptionsWrapper.getRowIdFunc();\n if (!getRowIdFunc) {\n return undefined;\n }\n var parentKeys = _this.parentRowNode.getGroupKeys();\n var level = _this.level;\n var id = getRowIdFunc({\n data: data,\n parentKeys: parentKeys.length > 0 ? parentKeys : undefined,\n level: level,\n api: _this.gridApi,\n columnApi: _this.columnApi\n });\n var foundNode = nodesToRecycle[id];\n if (!foundNode) {\n return undefined;\n }\n delete nodesToRecycle[id];\n return foundNode;\n };\n var recycleNode = function (rowNode, dataItem) {\n _this.allNodesMap[rowNode.id] = rowNode;\n _this.blockUtils.updateDataIntoRowNode(rowNode, dataItem);\n _this.allRowNodes.push(rowNode);\n };\n rowData.forEach(function (dataItem) {\n var nodeToRecycle = lookupNodeToRecycle(dataItem);\n if (nodeToRecycle) {\n recycleNode(nodeToRecycle, dataItem);\n }\n else {\n _this.createDataNode(dataItem);\n }\n });\n };\n FullStore.prototype.flushAsyncTransactions = function () {\n var _this = this;\n // we want to update the store with any outstanding transactions straight away,\n // as otherwise if waitTimeMillis is large (eg 5s), then the user could be looking\n // at old data for a few seconds before the transactions is applied, which isn't what\n // you would expect when we advertise 'transaction is applied when data is loaded'.\n // we do this in a timeout as flushAsyncTransactions expects the grid to be in a settled\n // state, not in the middle of loading rows! keeps the VM Turns more simple and deterministic.\n window.setTimeout(function () { return _this.transactionManager.flushAsyncTransactions(); }, 0);\n };\n FullStore.prototype.filterAndSortNodes = function () {\n this.filterRowNodes();\n this.sortRowNodes();\n };\n FullStore.prototype.sortRowNodes = function () {\n var sortOptions = this.sortController.getSortOptions();\n var noSortApplied = !sortOptions || sortOptions.length == 0;\n // if we reset after sort, it means the sorting is done on the server\n var sortDoneOnServer = this.gridOptionsWrapper.isServerSideSortingAlwaysResets();\n if (noSortApplied || sortDoneOnServer) {\n this.nodesAfterSort = this.nodesAfterFilter;\n return;\n }\n this.nodesAfterSort = this.rowNodeSorter.doFullSort(this.nodesAfterFilter, sortOptions);\n };\n FullStore.prototype.filterRowNodes = function () {\n var _this = this;\n // if we reset after filter, it means the filtering is done on the server\n var filterDoneOnServer = this.gridOptionsWrapper.isServerSideFilteringAlwaysResets();\n // filtering for InFullStore only works at lowest level details.\n // reason is the logic for group filtering was to difficult to work out how it should work at time of writing.\n var groupLevel = this.groupLevel;\n var skipFilter = filterDoneOnServer || groupLevel;\n if (skipFilter) {\n this.nodesAfterFilter = this.allRowNodes;\n return;\n }\n this.nodesAfterFilter = this.allRowNodes.filter(function (rowNode) { return _this.filterManager.doesRowPassFilter({ rowNode: rowNode }); });\n };\n FullStore.prototype.clearDisplayIndexes = function () {\n var _this = this;\n this.displayIndexStart = undefined;\n this.displayIndexEnd = undefined;\n this.allRowNodes.forEach(function (rowNode) { return _this.blockUtils.clearDisplayIndex(rowNode); });\n };\n FullStore.prototype.getDisplayIndexEnd = function () {\n return this.displayIndexEnd;\n };\n FullStore.prototype.isDisplayIndexInStore = function (displayIndex) {\n if (this.getRowCount() === 0) {\n return false;\n }\n return displayIndex >= this.displayIndexStart && displayIndex < this.displayIndexEnd;\n };\n FullStore.prototype.setDisplayIndexes = function (displayIndexSeq, nextRowTop) {\n var _this = this;\n this.displayIndexStart = displayIndexSeq.peek();\n this.topPx = nextRowTop.value;\n var visibleNodeIds = {};\n // set on all visible nodes\n this.nodesAfterSort.forEach(function (rowNode) {\n _this.blockUtils.setDisplayIndex(rowNode, displayIndexSeq, nextRowTop);\n visibleNodeIds[rowNode.id] = true;\n });\n // and clear on all non-visible nodes\n this.allRowNodes.forEach(function (rowNode) {\n if (!visibleNodeIds[rowNode.id]) {\n _this.blockUtils.clearDisplayIndex(rowNode);\n }\n });\n this.displayIndexEnd = displayIndexSeq.peek();\n this.heightPx = nextRowTop.value - this.topPx;\n };\n FullStore.prototype.forEachNodeDeep = function (callback, sequence) {\n if (sequence === void 0) { sequence = new NumberSequence(); }\n this.allRowNodes.forEach(function (rowNode) {\n callback(rowNode, sequence.next());\n var childCache = rowNode.childStore;\n if (childCache) {\n childCache.forEachNodeDeep(callback, sequence);\n }\n });\n };\n FullStore.prototype.forEachNodeDeepAfterFilterAndSort = function (callback, sequence) {\n if (sequence === void 0) { sequence = new NumberSequence(); }\n this.nodesAfterSort.forEach(function (rowNode) {\n callback(rowNode, sequence.next());\n var childCache = rowNode.childStore;\n if (childCache) {\n childCache.forEachNodeDeepAfterFilterAndSort(callback, sequence);\n }\n });\n };\n FullStore.prototype.getRowUsingDisplayIndex = function (displayRowIndex) {\n // this can happen if asking for a row that doesn't exist in the model,\n // eg if a cell range is selected, and the user filters so rows no longer exists\n if (!this.isDisplayIndexInStore(displayRowIndex)) {\n return undefined;\n }\n var res = this.blockUtils.binarySearchForDisplayIndex(displayRowIndex, this.nodesAfterSort);\n return res;\n };\n FullStore.prototype.getRowBounds = function (index) {\n for (var i = 0; i < this.nodesAfterSort.length; i++) {\n var rowNode = this.nodesAfterSort[i];\n var res = this.blockUtils.extractRowBounds(rowNode, index);\n if (res) {\n return res;\n }\n }\n return null;\n };\n FullStore.prototype.isPixelInRange = function (pixel) {\n return pixel >= this.topPx && pixel < (this.topPx + this.heightPx);\n };\n FullStore.prototype.getRowIndexAtPixel = function (pixel) {\n var _this = this;\n // if pixel before block, return first row\n var pixelBeforeThisStore = pixel <= this.topPx;\n if (pixelBeforeThisStore) {\n var firstNode = this.nodesAfterSort[0];\n return firstNode.rowIndex;\n }\n // if pixel after store, return last row, however the last\n // row could be a child store\n var pixelAfterThisStore = pixel >= (this.topPx + this.heightPx);\n if (pixelAfterThisStore) {\n var lastRowNode = this.nodesAfterSort[this.nodesAfterSort.length - 1];\n var lastRowNodeBottomPx = lastRowNode.rowTop + lastRowNode.rowHeight;\n if (pixel >= lastRowNodeBottomPx && lastRowNode.expanded) {\n if (lastRowNode.childStore && lastRowNode.childStore.getRowCount() > 0) {\n return lastRowNode.childStore.getRowIndexAtPixel(pixel);\n }\n if (lastRowNode.detailNode) {\n return lastRowNode.detailNode.rowIndex;\n }\n }\n return lastRowNode.rowIndex;\n }\n var res = null;\n this.nodesAfterSort.forEach(function (rowNode) {\n var res2 = _this.blockUtils.getIndexAtPixel(rowNode, pixel);\n if (res2 != null) {\n res = res2;\n }\n });\n var pixelIsPastLastRow = res == null;\n if (pixelIsPastLastRow) {\n return this.displayIndexEnd - 1;\n }\n return res;\n };\n FullStore.prototype.getChildStore = function (keys) {\n var _this = this;\n return this.storeUtils.getChildStore(keys, this, function (key) {\n var rowNode = _this.allRowNodes.find(function (currentRowNode) { return currentRowNode.key === key; });\n return rowNode;\n });\n };\n FullStore.prototype.forEachChildStoreShallow = function (callback) {\n this.allRowNodes.forEach(function (rowNode) {\n var childStore = rowNode.childStore;\n if (childStore) {\n callback(childStore);\n }\n });\n };\n FullStore.prototype.refreshAfterFilter = function (params) {\n if (params.alwaysReset || this.gridOptionsWrapper.isTreeData()) {\n this.refreshStore(true);\n return;\n }\n this.filterAndSortNodes();\n this.forEachChildStoreShallow(function (store) { return store.refreshAfterFilter(params); });\n };\n FullStore.prototype.refreshAfterSort = function (params) {\n if (params.alwaysReset) {\n this.refreshStore(true);\n return;\n }\n this.sortRowNodes();\n this.forEachChildStoreShallow(function (store) { return store.refreshAfterSort(params); });\n };\n FullStore.prototype.applyTransaction = function (transaction) {\n // we only apply transactions to loaded state\n switch (this.getState()) {\n case RowNodeBlock.STATE_FAILED:\n return { status: ServerSideTransactionResultStatus.StoreLoadingFailed };\n case RowNodeBlock.STATE_LOADING:\n return { status: ServerSideTransactionResultStatus.StoreLoading };\n case RowNodeBlock.STATE_WAITING_TO_LOAD:\n return { status: ServerSideTransactionResultStatus.StoreWaitingToLoad };\n }\n var applyCallback = this.gridOptionsWrapper.getIsApplyServerSideTransactionFunc();\n if (applyCallback) {\n var params = {\n transaction: transaction,\n parentNode: this.parentRowNode,\n storeInfo: this.info\n };\n var apply = applyCallback(params);\n if (!apply) {\n return { status: ServerSideTransactionResultStatus.Cancelled };\n }\n }\n var res = {\n status: ServerSideTransactionResultStatus.Applied,\n remove: [],\n update: [],\n add: []\n };\n var nodesToUnselect = [];\n this.executeAdd(transaction, res);\n this.executeRemove(transaction, res, nodesToUnselect);\n this.executeUpdate(transaction, res, nodesToUnselect);\n this.filterAndSortNodes();\n this.updateSelection(nodesToUnselect);\n return res;\n };\n FullStore.prototype.updateSelection = function (nodesToUnselect) {\n var selectionChanged = nodesToUnselect.length > 0;\n if (selectionChanged) {\n nodesToUnselect.forEach(function (rowNode) {\n rowNode.setSelected(false, false, true);\n });\n var event_1 = {\n type: Events.EVENT_SELECTION_CHANGED,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi()\n };\n this.eventService.dispatchEvent(event_1);\n }\n };\n FullStore.prototype.executeAdd = function (rowDataTran, rowNodeTransaction) {\n var _this = this;\n var add = rowDataTran.add, addIndex = rowDataTran.addIndex;\n if (_.missingOrEmpty(add)) {\n return;\n }\n var useIndex = typeof addIndex === 'number' && addIndex >= 0;\n if (useIndex) {\n // items get inserted in reverse order for index insertion\n add.reverse().forEach(function (item) {\n var newRowNode = _this.createDataNode(item, addIndex);\n rowNodeTransaction.add.push(newRowNode);\n });\n }\n else {\n add.forEach(function (item) {\n var newRowNode = _this.createDataNode(item);\n rowNodeTransaction.add.push(newRowNode);\n });\n }\n };\n FullStore.prototype.executeRemove = function (rowDataTran, rowNodeTransaction, nodesToUnselect) {\n var _this = this;\n var remove = rowDataTran.remove;\n if (remove == null) {\n return;\n }\n var rowIdsRemoved = {};\n remove.forEach(function (item) {\n var rowNode = _this.lookupRowNode(item);\n if (!rowNode) {\n return;\n }\n // do delete - setting 'suppressFinishActions = true' to ensure EVENT_SELECTION_CHANGED is not raised for\n // each row node updated, instead it is raised once by the calling code if any selected nodes exist.\n if (rowNode.isSelected()) {\n nodesToUnselect.push(rowNode);\n }\n // so row renderer knows to fade row out (and not reposition it)\n rowNode.clearRowTopAndRowIndex();\n // NOTE: were we could remove from allLeaveChildren, however _.removeFromArray() is expensive, especially\n // if called multiple times (eg deleting lots of rows) and if allLeafChildren is a large list\n rowIdsRemoved[rowNode.id] = true;\n // _.removeFromArray(this.rootNode.allLeafChildren, rowNode);\n delete _this.allNodesMap[rowNode.id];\n rowNodeTransaction.remove.push(rowNode);\n _this.nodeManager.removeNode(rowNode);\n });\n this.allRowNodes = this.allRowNodes.filter(function (rowNode) { return !rowIdsRemoved[rowNode.id]; });\n };\n FullStore.prototype.executeUpdate = function (rowDataTran, rowNodeTransaction, nodesToUnselect) {\n var _this = this;\n var update = rowDataTran.update;\n if (update == null) {\n return;\n }\n update.forEach(function (item) {\n var rowNode = _this.lookupRowNode(item);\n if (!rowNode) {\n return;\n }\n rowNode.updateData(item);\n if (!rowNode.selectable && rowNode.isSelected()) {\n nodesToUnselect.push(rowNode);\n }\n rowNodeTransaction.update.push(rowNode);\n });\n };\n FullStore.prototype.lookupRowNode = function (data) {\n var getRowIdFunc = this.gridOptionsWrapper.getRowIdFunc();\n var rowNode;\n if (getRowIdFunc != null) {\n // find rowNode using id\n var level = this.level;\n var parentKeys = this.parentRowNode.getGroupKeys();\n var id = getRowIdFunc({\n data: data,\n parentKeys: parentKeys.length > 0 ? parentKeys : undefined,\n level: level,\n api: this.gridApi,\n columnApi: this.columnApi\n });\n rowNode = this.allNodesMap[id];\n if (!rowNode) {\n console.error(\"AG Grid: could not find row id=\" + id + \", data item was not found for this id\");\n return null;\n }\n }\n else {\n // find rowNode using object references\n rowNode = this.allRowNodes.find(function (currentRowNode) { return currentRowNode.data === data; });\n if (!rowNode) {\n console.error(\"AG Grid: could not find data item as object was not found\", data);\n return null;\n }\n }\n return rowNode;\n };\n FullStore.prototype.addStoreStates = function (result) {\n result.push({\n type: 'full',\n route: this.parentRowNode.getGroupKeys(),\n rowCount: this.allRowNodes.length,\n info: this.info\n });\n this.forEachChildStoreShallow(function (childStore) { return childStore.addStoreStates(result); });\n };\n FullStore.prototype.refreshStore = function (purge) {\n if (purge) {\n var loadingRowsToShow = this.nodesAfterSort ? this.nodesAfterSort.length : 1;\n this.initialiseRowNodes(loadingRowsToShow);\n }\n this.scheduleLoad();\n this.fireStoreUpdatedEvent();\n };\n FullStore.prototype.retryLoads = function () {\n if (this.getState() === RowNodeBlock.STATE_FAILED) {\n this.initialiseRowNodes(1);\n this.scheduleLoad();\n }\n this.forEachChildStoreShallow(function (store) { return store.retryLoads(); });\n };\n FullStore.prototype.scheduleLoad = function () {\n this.setStateWaitingToLoad();\n this.rowNodeBlockLoader.checkBlockToLoad();\n };\n // gets called 1) row count changed 2) cache purged 3) items inserted\n FullStore.prototype.fireStoreUpdatedEvent = function () {\n // this results in row model firing ModelUpdated.\n // server side row model also updates the row indexes first\n var event = {\n type: Events.EVENT_STORE_UPDATED\n };\n this.eventService.dispatchEvent(event);\n };\n FullStore.prototype.getRowCount = function () {\n return this.nodesAfterSort.length;\n };\n FullStore.prototype.getTopLevelRowDisplayedIndex = function (topLevelIndex) {\n var rowNode = this.nodesAfterSort[topLevelIndex];\n return rowNode.rowIndex;\n };\n FullStore.prototype.isLastRowIndexKnown = function () {\n return this.getState() == RowNodeBlock.STATE_LOADED;\n };\n FullStore.prototype.getRowNodesInRange = function (firstInRange, lastInRange) {\n var result = [];\n var inActiveRange = false;\n // if only one node passed, we start the selection at the top\n if (_.missing(firstInRange)) {\n inActiveRange = true;\n }\n this.nodesAfterSort.forEach(function (rowNode) {\n var hitFirstOrLast = rowNode === firstInRange || rowNode === lastInRange;\n if (inActiveRange || hitFirstOrLast) {\n result.push(rowNode);\n }\n if (hitFirstOrLast) {\n inActiveRange = !inActiveRange;\n }\n });\n // inActiveRange will be still true if we never hit the second rowNode\n var invalidRange = inActiveRange;\n return invalidRange ? [] : result;\n };\n __decorate([\n Autowired('ssrmStoreUtils')\n ], FullStore.prototype, \"storeUtils\", void 0);\n __decorate([\n Autowired('ssrmBlockUtils')\n ], FullStore.prototype, \"blockUtils\", void 0);\n __decorate([\n Autowired('columnModel')\n ], FullStore.prototype, \"columnModel\", void 0);\n __decorate([\n Autowired('rowNodeBlockLoader')\n ], FullStore.prototype, \"rowNodeBlockLoader\", void 0);\n __decorate([\n Autowired('rowNodeSorter')\n ], FullStore.prototype, \"rowNodeSorter\", void 0);\n __decorate([\n Autowired('sortController')\n ], FullStore.prototype, \"sortController\", void 0);\n __decorate([\n Autowired('ssrmNodeManager')\n ], FullStore.prototype, \"nodeManager\", void 0);\n __decorate([\n Autowired('filterManager')\n ], FullStore.prototype, \"filterManager\", void 0);\n __decorate([\n Autowired('ssrmTransactionManager')\n ], FullStore.prototype, \"transactionManager\", void 0);\n __decorate([\n Autowired('columnApi')\n ], FullStore.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('gridApi')\n ], FullStore.prototype, \"gridApi\", void 0);\n __decorate([\n PostConstruct\n ], FullStore.prototype, \"postConstruct\", null);\n __decorate([\n PreDestroy\n ], FullStore.prototype, \"destroyRowNodes\", null);\n return FullStore;\n}(RowNodeBlock));\nexport { FullStore };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { _, Autowired, Bean } from \"@ag-grid-community/core\";\nimport { PartialStore } from \"./partialStore\";\nimport { FullStore } from \"./fullStore\";\nvar StoreFactory = /** @class */ (function () {\n function StoreFactory() {\n }\n StoreFactory.prototype.createStore = function (ssrmParams, parentNode) {\n var storeParams = this.getStoreParams(ssrmParams, parentNode);\n var CacheClass = storeParams.storeType === 'partial' ? PartialStore : FullStore;\n return new CacheClass(ssrmParams, storeParams, parentNode);\n };\n StoreFactory.prototype.getStoreParams = function (ssrmParams, parentNode) {\n var userStoreParams = this.getLevelSpecificParams(parentNode);\n // if user provided overrideParams, we take storeType from there if it exists\n var storeType = this.getStoreType(userStoreParams);\n var cacheBlockSize = this.getBlockSize(storeType, userStoreParams);\n var maxBlocksInCache = this.getMaxBlocksInCache(storeType, ssrmParams, userStoreParams);\n var storeParams = {\n storeType: storeType,\n cacheBlockSize: cacheBlockSize,\n maxBlocksInCache: maxBlocksInCache\n };\n return storeParams;\n };\n StoreFactory.prototype.getMaxBlocksInCache = function (storeType, ssrmParams, userStoreParams) {\n if (storeType == 'full') {\n return undefined;\n }\n var maxBlocksInCache = (userStoreParams && userStoreParams.maxBlocksInCache != null)\n ? userStoreParams.maxBlocksInCache\n : this.gridOptionsWrapper.getMaxBlocksInCache();\n var maxBlocksActive = maxBlocksInCache != null && maxBlocksInCache >= 0;\n if (!maxBlocksActive) {\n return undefined;\n }\n if (ssrmParams.dynamicRowHeight) {\n var message_1 = 'AG Grid: Server Side Row Model does not support Dynamic Row Height and Cache Purging. ' +\n 'Either a) remove getRowHeight() callback or b) remove maxBlocksInCache property. Purging has been disabled.';\n _.doOnce(function () { return console.warn(message_1); }, 'storeFactory.maxBlocksInCache.dynamicRowHeight');\n return undefined;\n }\n if (this.columnModel.isAutoRowHeightActive()) {\n var message_2 = 'AG Grid: Server Side Row Model does not support Auto Row Height and Cache Purging. ' +\n 'Either a) remove colDef.autoHeight or b) remove maxBlocksInCache property. Purging has been disabled.';\n _.doOnce(function () { return console.warn(message_2); }, 'storeFactory.maxBlocksInCache.autoRowHeightActive');\n return undefined;\n }\n return maxBlocksInCache;\n };\n StoreFactory.prototype.getBlockSize = function (storeType, userStoreParams) {\n if (storeType == 'full') {\n return undefined;\n }\n var blockSize = (userStoreParams && userStoreParams.cacheBlockSize != null)\n ? userStoreParams.cacheBlockSize\n : this.gridOptionsWrapper.getCacheBlockSize();\n if (blockSize != null && blockSize > 0) {\n return blockSize;\n }\n else {\n return 100;\n }\n };\n StoreFactory.prototype.getLevelSpecificParams = function (parentNode) {\n var callback = this.gridOptionsWrapper.getServerSideStoreParamsFunc();\n if (!callback) {\n return undefined;\n }\n var params = {\n level: parentNode.level + 1,\n parentRowNode: parentNode.level >= 0 ? parentNode : undefined,\n rowGroupColumns: this.columnModel.getRowGroupColumns(),\n pivotColumns: this.columnModel.getPivotColumns(),\n pivotMode: this.columnModel.isPivotMode()\n };\n return callback(params);\n };\n StoreFactory.prototype.getStoreType = function (storeParams) {\n var storeType = (storeParams && storeParams.storeType != null)\n ? storeParams.storeType\n : this.gridOptionsWrapper.getServerSideStoreType();\n switch (storeType) {\n case 'partial':\n case 'full':\n return storeType;\n case null:\n case undefined:\n return 'full';\n default:\n var serverTypes = ['full', 'partial'];\n var types = serverTypes.join(', ');\n console.warn(\"AG Grid: invalid Server Side Store Type \" + storeType + \", valid types are [\" + types + \"]\");\n return 'partial';\n }\n };\n __decorate([\n Autowired('gridOptionsWrapper')\n ], StoreFactory.prototype, \"gridOptionsWrapper\", void 0);\n __decorate([\n Autowired('columnModel')\n ], StoreFactory.prototype, \"columnModel\", void 0);\n StoreFactory = __decorate([\n Bean('ssrmStoreFactory')\n ], StoreFactory);\n return StoreFactory;\n}());\nexport { StoreFactory };\n","var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Bean } from \"@ag-grid-community/core\";\nvar ListenerUtils = /** @class */ (function () {\n function ListenerUtils() {\n }\n ListenerUtils.prototype.isSortingWithValueColumn = function (changedColumnsInSort) {\n var valueColIds = this.columnModel.getValueColumns().map(function (col) { return col.getColId(); });\n for (var i = 0; i < changedColumnsInSort.length; i++) {\n if (valueColIds.indexOf(changedColumnsInSort[i]) > -1) {\n return true;\n }\n }\n return false;\n };\n ListenerUtils.prototype.isSortingWithSecondaryColumn = function (changedColumnsInSort) {\n if (!this.columnModel.getSecondaryColumns()) {\n return false;\n }\n var secondaryColIds = this.columnModel.getSecondaryColumns().map(function (col) { return col.getColId(); });\n for (var i = 0; i < changedColumnsInSort.length; i++) {\n if (secondaryColIds.indexOf(changedColumnsInSort[i]) > -1) {\n return true;\n }\n }\n return false;\n };\n __decorate([\n Autowired('columnModel')\n ], ListenerUtils.prototype, \"columnModel\", void 0);\n ListenerUtils = __decorate([\n Bean('ssrmListenerUtils')\n ], ListenerUtils);\n return ListenerUtils;\n}());\nexport { ListenerUtils };\n","import { ModuleNames } from \"@ag-grid-community/core\";\nimport { EnterpriseCoreModule } from \"@ag-grid-enterprise/core\";\nimport { ServerSideRowModel } from \"./serverSideRowModel/serverSideRowModel\";\nimport { StoreUtils } from \"./serverSideRowModel/stores/storeUtils\";\nimport { BlockUtils } from \"./serverSideRowModel/blocks/blockUtils\";\nimport { NodeManager } from \"./serverSideRowModel/nodeManager\";\nimport { TransactionManager } from \"./serverSideRowModel/transactionManager\";\nimport { ExpandListener } from \"./serverSideRowModel/listeners/expandListener\";\nimport { SortListener } from \"./serverSideRowModel/listeners/sortListener\";\nimport { FilterListener } from \"./serverSideRowModel/listeners/filterListener\";\nimport { StoreFactory } from \"./serverSideRowModel/stores/storeFactory\";\nimport { ListenerUtils } from \"./serverSideRowModel/listeners/listenerUtils\";\nexport var ServerSideRowModelModule = {\n moduleName: ModuleNames.ServerSideRowModelModule,\n rowModels: { serverSide: ServerSideRowModel },\n beans: [ExpandListener, SortListener, StoreUtils, BlockUtils, NodeManager, TransactionManager,\n FilterListener, StoreFactory, ListenerUtils],\n dependantModules: [\n EnterpriseCoreModule\n ]\n};\n","import { _ } from '@ag-grid-community/core';\nvar NULL_SUBSTITUTE = '____';\nvar ClientSideValuesExtractor = /** @class */ (function () {\n function ClientSideValuesExtractor(rowModel, filterParams, caseFormat) {\n this.rowModel = rowModel;\n this.filterParams = filterParams;\n this.caseFormat = caseFormat;\n }\n ClientSideValuesExtractor.prototype.extractUniqueValues = function (predicate) {\n var _this = this;\n var values = {};\n var keyCreator = this.filterParams.colDef.keyCreator;\n var addValue = function (value) {\n // NOTE: We don't care about the keys later on (only values in the dictionary are\n // returned), so as long as we use a non-conflicting key for the `null` value this\n // will behave correctly.\n var valueKey = value != null ? _this.caseFormat(value) : NULL_SUBSTITUTE;\n if (valueKey && values[valueKey] == null) {\n values[valueKey] = value;\n }\n };\n this.rowModel.forEachLeafNode(function (node) {\n // only pull values from rows that have data. this means we skip filler group nodes.\n if (!node.data || !predicate(node)) {\n return;\n }\n var _a = _this.filterParams, api = _a.api, colDef = _a.colDef, column = _a.column, columnApi = _a.columnApi, context = _a.context;\n var value = _this.filterParams.valueGetter({\n api: api,\n colDef: colDef,\n column: column,\n columnApi: columnApi,\n context: context,\n data: node.data,\n getValue: function (field) { return node.data[field]; },\n node: node,\n });\n if (keyCreator) {\n var params = {\n value: value,\n colDef: _this.filterParams.colDef,\n column: _this.filterParams.column,\n node: node,\n data: node.data,\n api: _this.filterParams.api,\n columnApi: _this.filterParams.columnApi,\n context: _this.filterParams.context\n };\n value = keyCreator(params);\n }\n value = _.makeNull(value);\n if (value != null && Array.isArray(value)) {\n value.forEach(function (x) {\n var formatted = _.toStringOrNull(_.makeNull(x));\n addValue(formatted);\n });\n }\n else {\n addValue(_.toStringOrNull(value));\n }\n });\n return _.values(values);\n };\n return ClientSideValuesExtractor;\n}());\nexport { ClientSideValuesExtractor };\n","import { Constants, AgPromise, TextFilter, EventService, _ } from '@ag-grid-community/core';\nimport { ClientSideValuesExtractor } from '../clientSideValueExtractor';\nexport var SetFilterModelValuesType;\n(function (SetFilterModelValuesType) {\n SetFilterModelValuesType[SetFilterModelValuesType[\"PROVIDED_LIST\"] = 0] = \"PROVIDED_LIST\";\n SetFilterModelValuesType[SetFilterModelValuesType[\"PROVIDED_CALLBACK\"] = 1] = \"PROVIDED_CALLBACK\";\n SetFilterModelValuesType[SetFilterModelValuesType[\"TAKEN_FROM_GRID_VALUES\"] = 2] = \"TAKEN_FROM_GRID_VALUES\";\n})(SetFilterModelValuesType || (SetFilterModelValuesType = {}));\nvar NULL_SUBSTITUTE = '____';\nvar SetValueModel = /** @class */ (function () {\n function SetValueModel(filterParams, setIsLoading, valueFormatterService, translate, caseFormat) {\n var _this = this;\n this.filterParams = filterParams;\n this.setIsLoading = setIsLoading;\n this.valueFormatterService = valueFormatterService;\n this.translate = translate;\n this.caseFormat = caseFormat;\n this.localEventService = new EventService();\n this.miniFilterText = null;\n // The lookup for a set is much faster than the lookup for an array, especially when the length of the array is\n // thousands of records long, so where lookups are important we use a set.\n /** Values provided to the filter for use. */\n this.providedValues = null;\n /** All possible values for the filter, sorted if required. */\n this.allValues = [];\n /** Remaining values when filters from other columns have been applied. */\n this.availableValues = new Set();\n /** All values that are currently displayed, after the mini-filter has been applied. */\n this.displayedValues = [];\n /** Values that have been selected for this filter. */\n this.selectedValues = new Set();\n this.initialised = false;\n var column = filterParams.column, colDef = filterParams.colDef, textFormatter = filterParams.textFormatter, doesRowPassOtherFilter = filterParams.doesRowPassOtherFilter, suppressSorting = filterParams.suppressSorting, comparator = filterParams.comparator, rowModel = filterParams.rowModel, values = filterParams.values, caseSensitive = filterParams.caseSensitive;\n this.column = column;\n this.formatter = textFormatter || TextFilter.DEFAULT_FORMATTER;\n this.doesRowPassOtherFilters = doesRowPassOtherFilter;\n this.suppressSorting = suppressSorting || false;\n this.comparator = comparator || colDef.comparator || _.defaultComparator;\n if (rowModel.getType() === Constants.ROW_MODEL_TYPE_CLIENT_SIDE) {\n this.clientSideValuesExtractor = new ClientSideValuesExtractor(rowModel, this.filterParams, this.caseFormat);\n }\n if (values == null) {\n this.valuesType = SetFilterModelValuesType.TAKEN_FROM_GRID_VALUES;\n }\n else {\n this.valuesType = Array.isArray(values) ?\n SetFilterModelValuesType.PROVIDED_LIST :\n SetFilterModelValuesType.PROVIDED_CALLBACK;\n this.providedValues = values;\n }\n this.updateAllValues().then(function (updatedValues) { return _this.resetSelectionState(updatedValues || []); });\n }\n SetValueModel.prototype.addEventListener = function (eventType, listener, async) {\n this.localEventService.addEventListener(eventType, listener, async);\n };\n SetValueModel.prototype.removeEventListener = function (eventType, listener, async) {\n this.localEventService.removeEventListener(eventType, listener, async);\n };\n /**\n * Re-fetches the values used in the filter from the value source.\n * If keepSelection is false, the filter selection will be reset to everything selected,\n * otherwise the current selection will be preserved.\n */\n SetValueModel.prototype.refreshValues = function () {\n var currentModel = this.getModel();\n this.updateAllValues();\n // ensure model is updated for new values\n return this.setModel(currentModel);\n };\n /**\n * Overrides the current values being used for the set filter.\n * If keepSelection is false, the filter selection will be reset to everything selected,\n * otherwise the current selection will be preserved.\n */\n SetValueModel.prototype.overrideValues = function (valuesToUse) {\n var _this = this;\n return new AgPromise(function (resolve) {\n // wait for any existing values to be populated before overriding\n _this.allValuesPromise.then(function () {\n _this.valuesType = SetFilterModelValuesType.PROVIDED_LIST;\n _this.providedValues = valuesToUse;\n _this.refreshValues().then(function () { return resolve(); });\n });\n });\n };\n SetValueModel.prototype.refreshAfterAnyFilterChanged = function () {\n var _this = this;\n return this.showAvailableOnly() ?\n this.allValuesPromise.then(function (values) { return _this.updateAvailableValues(values || []); }) :\n AgPromise.resolve();\n };\n SetValueModel.prototype.isInitialised = function () {\n return this.initialised;\n };\n SetValueModel.prototype.updateAllValues = function () {\n var _this = this;\n this.allValuesPromise = new AgPromise(function (resolve) {\n switch (_this.valuesType) {\n case SetFilterModelValuesType.TAKEN_FROM_GRID_VALUES:\n case SetFilterModelValuesType.PROVIDED_LIST: {\n var values = _this.valuesType === SetFilterModelValuesType.TAKEN_FROM_GRID_VALUES ?\n _this.getValuesFromRows(false) :\n _.values(_this.uniqueValues(_.toStrings(_this.providedValues) || []));\n var sortedValues = _this.sortValues(values || []);\n _this.allValues = sortedValues;\n resolve(sortedValues);\n break;\n }\n case SetFilterModelValuesType.PROVIDED_CALLBACK: {\n _this.setIsLoading(true);\n var callback_1 = _this.providedValues;\n var _a = _this.filterParams, columnApi = _a.columnApi, api = _a.api, context = _a.context, column = _a.column, colDef = _a.colDef;\n var params_1 = {\n success: function (values) {\n var processedValues = _.values(_this.uniqueValues(_.toStrings(values) || []));\n _this.setIsLoading(false);\n var sortedValues = _this.sortValues(processedValues || []);\n _this.allValues = sortedValues;\n resolve(sortedValues);\n },\n colDef: colDef,\n column: column,\n columnApi: columnApi,\n api: api,\n context: context,\n };\n window.setTimeout(function () { return callback_1(params_1); }, 0);\n break;\n }\n default:\n throw new Error('Unrecognised valuesType');\n }\n });\n this.allValuesPromise.then(function (values) { return _this.updateAvailableValues(values || []); }).then(function () { return _this.initialised = true; });\n return this.allValuesPromise;\n };\n SetValueModel.prototype.setValuesType = function (value) {\n this.valuesType = value;\n };\n SetValueModel.prototype.getValuesType = function () {\n return this.valuesType;\n };\n SetValueModel.prototype.isValueAvailable = function (value) {\n return this.availableValues.has(value);\n };\n SetValueModel.prototype.showAvailableOnly = function () {\n return this.valuesType === SetFilterModelValuesType.TAKEN_FROM_GRID_VALUES;\n };\n SetValueModel.prototype.updateAvailableValues = function (allValues) {\n var availableValues = this.showAvailableOnly() ? this.sortValues(this.getValuesFromRows(true)) : allValues;\n this.availableValues = _.convertToSet(availableValues);\n this.localEventService.dispatchEvent({ type: SetValueModel.EVENT_AVAILABLE_VALUES_CHANGED });\n this.updateDisplayedValues();\n };\n SetValueModel.prototype.sortValues = function (values) {\n if (this.suppressSorting) {\n return values;\n }\n if (!this.filterParams.excelMode || values.indexOf(null) < 0) {\n return values.sort(this.comparator);\n }\n // ensure the blank value always appears last\n return values.filter(function (v) { return v != null; }).sort(this.comparator).concat(null);\n };\n SetValueModel.prototype.getValuesFromRows = function (removeUnavailableValues) {\n var _this = this;\n if (removeUnavailableValues === void 0) { removeUnavailableValues = false; }\n if (!this.clientSideValuesExtractor) {\n console.error('AG Grid: Set Filter cannot initialise because you are using a row model that does not contain all rows in the browser. Either use a different filter type, or configure Set Filter such that you provide it with values');\n return [];\n }\n var predicate = function (node) { return (!removeUnavailableValues || _this.doesRowPassOtherFilters(node)); };\n return this.clientSideValuesExtractor.extractUniqueValues(predicate);\n };\n /** Sets mini filter value. Returns true if it changed from last value, otherwise false. */\n SetValueModel.prototype.setMiniFilter = function (value) {\n value = _.makeNull(value);\n if (this.miniFilterText === value) {\n //do nothing if filter has not changed\n return false;\n }\n this.miniFilterText = value;\n this.updateDisplayedValues();\n return true;\n };\n SetValueModel.prototype.getMiniFilter = function () {\n return this.miniFilterText;\n };\n SetValueModel.prototype.updateDisplayedValues = function () {\n var _this = this;\n // if no filter, just display all available values\n if (this.miniFilterText == null) {\n this.displayedValues = _.values(this.availableValues);\n return;\n }\n // if filter present, we filter down the list\n this.displayedValues = [];\n // to allow for case insensitive searches, upper-case both filter text and value\n var formattedFilterText = this.caseFormat(this.formatter(this.miniFilterText) || '');\n var matchesFilter = function (valueToCheck) {\n return valueToCheck != null && _this.caseFormat(valueToCheck).indexOf(formattedFilterText) >= 0;\n };\n this.availableValues.forEach(function (value) {\n if (value == null) {\n if (_this.filterParams.excelMode && matchesFilter(_this.translate('blanks'))) {\n _this.displayedValues.push(value);\n }\n }\n else {\n var textFormatterValue = _this.formatter(value);\n // TODO: should this be applying the text formatter *after* the value formatter?\n var valueFormatterValue = _this.valueFormatterService.formatValue(_this.column, null, null, textFormatterValue, _this.filterParams.valueFormatter, false);\n if (matchesFilter(textFormatterValue) || matchesFilter(valueFormatterValue)) {\n _this.displayedValues.push(value);\n }\n }\n });\n };\n SetValueModel.prototype.getDisplayedValueCount = function () {\n return this.displayedValues.length;\n };\n SetValueModel.prototype.getDisplayedValue = function (index) {\n return this.displayedValues[index];\n };\n SetValueModel.prototype.hasSelections = function () {\n return this.filterParams.defaultToNothingSelected ?\n this.selectedValues.size > 0 :\n this.allValues.length !== this.selectedValues.size;\n };\n SetValueModel.prototype.getValues = function () {\n return this.allValues.slice();\n };\n SetValueModel.prototype.selectAllMatchingMiniFilter = function (clearExistingSelection) {\n var _this = this;\n if (clearExistingSelection === void 0) { clearExistingSelection = false; }\n if (this.miniFilterText == null) {\n // ensure everything is selected\n this.selectedValues = _.convertToSet(this.allValues);\n }\n else {\n // ensure everything that matches the mini filter is selected\n if (clearExistingSelection) {\n this.selectedValues.clear();\n }\n this.displayedValues.forEach(function (value) { return _this.selectedValues.add(value); });\n }\n };\n SetValueModel.prototype.deselectAllMatchingMiniFilter = function () {\n var _this = this;\n if (this.miniFilterText == null) {\n // ensure everything is deselected\n this.selectedValues.clear();\n }\n else {\n // ensure everything that matches the mini filter is deselected\n this.displayedValues.forEach(function (value) { return _this.selectedValues.delete(value); });\n }\n };\n SetValueModel.prototype.selectValue = function (value) {\n this.selectedValues.add(value);\n };\n SetValueModel.prototype.deselectValue = function (value) {\n if (this.filterParams.excelMode && this.isEverythingVisibleSelected()) {\n // ensure we're starting from the correct \"everything selected\" state\n this.resetSelectionState(this.displayedValues);\n }\n this.selectedValues.delete(value);\n };\n SetValueModel.prototype.isValueSelected = function (value) {\n return this.selectedValues.has(value);\n };\n SetValueModel.prototype.isEverythingVisibleSelected = function () {\n var _this = this;\n return this.displayedValues.filter(function (it) { return _this.isValueSelected(it); }).length === this.displayedValues.length;\n };\n SetValueModel.prototype.isNothingVisibleSelected = function () {\n var _this = this;\n return this.displayedValues.filter(function (it) { return _this.isValueSelected(it); }).length === 0;\n };\n SetValueModel.prototype.getModel = function () {\n return this.hasSelections() ? _.values(this.selectedValues) : null;\n };\n SetValueModel.prototype.setModel = function (model) {\n var _this = this;\n return this.allValuesPromise.then(function (values) {\n if (model == null) {\n _this.resetSelectionState(values || []);\n }\n else {\n // select all values from the model that exist in the filter\n _this.selectedValues.clear();\n var allValues_1 = _this.uniqueValues(values || []);\n model.forEach(function (value) {\n var allValue = allValues_1[_this.uniqueKey(value)];\n if (allValue !== undefined) {\n _this.selectedValues.add(allValue);\n }\n });\n }\n });\n };\n SetValueModel.prototype.uniqueValues = function (values) {\n var _this = this;\n // Honour case-sensitivity setting for matching purposes here, preserving original casing\n // in the selectedValues output.\n var uniqueValues = {};\n (values || []).forEach(function (rawValue) {\n var value = _.makeNull(rawValue);\n var key = _this.uniqueKey(value);\n if (uniqueValues[key] === undefined) {\n uniqueValues[key] = value;\n }\n });\n return uniqueValues;\n };\n SetValueModel.prototype.uniqueKey = function (v) {\n return v == null ? NULL_SUBSTITUTE : this.caseFormat(v);\n };\n SetValueModel.prototype.resetSelectionState = function (values) {\n if (this.filterParams.defaultToNothingSelected) {\n this.selectedValues.clear();\n }\n else {\n this.selectedValues = _.convertToSet(values || []);\n }\n };\n SetValueModel.EVENT_AVAILABLE_VALUES_CHANGED = 'availableValuesChanged';\n return SetValueModel;\n}());\nexport { SetValueModel };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Component, PostConstruct, RefSelector, } from '@ag-grid-community/core';\nvar SetFilterListItem = /** @class */ (function (_super) {\n __extends(SetFilterListItem, _super);\n function SetFilterListItem(value, params, translate, isSelected) {\n var _this = _super.call(this, SetFilterListItem.TEMPLATE) || this;\n _this.value = value;\n _this.params = params;\n _this.translate = translate;\n _this.isSelected = isSelected;\n return _this;\n }\n SetFilterListItem.prototype.init = function () {\n var _this = this;\n this.render();\n this.eCheckbox.setValue(this.isSelected, true);\n this.eCheckbox.setDisabled(!!this.params.readOnly);\n if (!!this.params.readOnly) {\n // Don't add event listeners if we're read-only.\n return;\n }\n this.eCheckbox.onValueChange(function (value) {\n var parsedValue = value || false;\n _this.isSelected = parsedValue;\n var event = {\n type: SetFilterListItem.EVENT_SELECTION_CHANGED,\n isSelected: parsedValue,\n };\n _this.dispatchEvent(event);\n });\n };\n SetFilterListItem.prototype.toggleSelected = function () {\n if (!!this.params.readOnly) {\n return;\n }\n this.isSelected = !this.isSelected;\n this.eCheckbox.setValue(this.isSelected);\n };\n SetFilterListItem.prototype.render = function () {\n var column = this.params.column;\n var value = this.value;\n var formattedValue = null;\n if (typeof value === 'function') {\n value = value();\n }\n else {\n formattedValue = this.getFormattedValue(this.params, column, value);\n }\n if (this.params.showTooltips) {\n var tooltipValue = formattedValue != null ? formattedValue : value;\n this.setTooltip(tooltipValue);\n }\n var params = {\n value: value,\n valueFormatted: formattedValue,\n api: this.gridOptionsWrapper.getApi(),\n columnApi: this.gridOptionsWrapper.getColumnApi(),\n context: this.gridOptionsWrapper.getContext(),\n colDef: this.params.colDef,\n column: this.params.column,\n };\n this.renderCell(params);\n };\n SetFilterListItem.prototype.getTooltipParams = function () {\n var res = _super.prototype.getTooltipParams.call(this);\n res.location = 'setFilterValue';\n res.colDef = this.getComponentHolder();\n return res;\n };\n SetFilterListItem.prototype.getFormattedValue = function (filterParams, column, value) {\n var formatter = filterParams && filterParams.valueFormatter;\n return this.valueFormatterService.formatValue(column, null, null, value, formatter, false);\n };\n SetFilterListItem.prototype.renderCell = function (params) {\n var _this = this;\n var compDetails = this.userComponentFactory.getSetFilterCellRendererDetails(this.params, params);\n var cellRendererPromise = compDetails ? compDetails.newAgStackInstance() : undefined;\n if (cellRendererPromise == null) {\n var valueToRender = params.valueFormatted == null ? params.value : params.valueFormatted;\n this.eCheckbox.setLabel(valueToRender == null ? this.translate('blanks') : valueToRender);\n return;\n }\n cellRendererPromise.then(function (component) {\n if (component) {\n _this.eCheckbox.setLabel(component.getGui());\n _this.addDestroyFunc(function () { return _this.destroyBean(component); });\n }\n });\n };\n SetFilterListItem.prototype.getComponentHolder = function () {\n return this.params.column.getColDef();\n };\n SetFilterListItem.EVENT_SELECTION_CHANGED = 'selectionChanged';\n SetFilterListItem.TEMPLATE = \"\\n
    \\n \\n
    \";\n __decorate([\n Autowired('valueFormatterService')\n ], SetFilterListItem.prototype, \"valueFormatterService\", void 0);\n __decorate([\n Autowired('userComponentFactory')\n ], SetFilterListItem.prototype, \"userComponentFactory\", void 0);\n __decorate([\n RefSelector('eCheckbox')\n ], SetFilterListItem.prototype, \"eCheckbox\", void 0);\n __decorate([\n PostConstruct\n ], SetFilterListItem.prototype, \"init\", null);\n return SetFilterListItem;\n}(Component));\nexport { SetFilterListItem };\n","export var DEFAULT_LOCALE_TEXT = {\n loadingOoo: 'Loading...',\n blanks: '(Blanks)',\n searchOoo: 'Search...',\n selectAll: '(Select All)',\n selectAllSearchResults: '(Select All Search Results)',\n noMatches: 'No matches.'\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Constants, Events, ProvidedFilter, RefSelector, VirtualList, AgPromise, KeyCode, PositionableFeature, _, } from '@ag-grid-community/core';\nimport { SetFilterModelValuesType, SetValueModel } from './setValueModel';\nimport { SetFilterListItem } from './setFilterListItem';\nimport { DEFAULT_LOCALE_TEXT } from './localeText';\nvar SetFilter = /** @class */ (function (_super) {\n __extends(SetFilter, _super);\n function SetFilter() {\n var _this = _super.call(this, 'setFilter') || this;\n _this.valueModel = null;\n _this.setFilterParams = null;\n _this.virtualList = null;\n _this.caseSensitive = false;\n // To make the filtering super fast, we store the values in an object, and check for the boolean value.\n // Although Set would be a more natural choice of data structure, its performance across browsers is\n // significantly worse than using an object: https://jsbench.me/hdk91jbw1h/\n _this.appliedModelValues = null;\n return _this;\n }\n SetFilter.prototype.postConstruct = function () {\n _super.prototype.postConstruct.call(this);\n this.positionableFeature = new PositionableFeature(this.eSetFilterList, { forcePopupParentAsOffsetParent: true });\n this.createBean(this.positionableFeature);\n };\n // unlike the simple filters, nothing in the set filter UI shows/hides.\n // maybe this method belongs in abstractSimpleFilter???\n SetFilter.prototype.updateUiVisibility = function () { };\n SetFilter.prototype.createBodyTemplate = function () {\n return /* html */ \"\\n
    \\n
    \" + this.translateForSetFilter('loadingOoo') + \"
    \\n \\n
    \" + this.translateForSetFilter('noMatches') + \"
    \\n
    \\n
    \";\n };\n SetFilter.prototype.handleKeyDown = function (e) {\n _super.prototype.handleKeyDown.call(this, e);\n if (e.defaultPrevented) {\n return;\n }\n switch (e.key) {\n case KeyCode.SPACE:\n this.handleKeySpace(e);\n break;\n case KeyCode.ENTER:\n this.handleKeyEnter(e);\n break;\n }\n };\n SetFilter.prototype.handleKeySpace = function (e) {\n var eDocument = this.gridOptionsWrapper.getDocument();\n if (!this.eSetFilterList.contains(eDocument.activeElement) || !this.virtualList) {\n return;\n }\n var currentItem = this.virtualList.getLastFocusedRow();\n if (currentItem == null) {\n return;\n }\n var component = this.virtualList.getComponentAt(currentItem);\n if (component == null) {\n return;\n }\n e.preventDefault();\n var readOnly = (this.setFilterParams || {}).readOnly;\n if (!!readOnly) {\n return;\n }\n component.toggleSelected();\n };\n SetFilter.prototype.handleKeyEnter = function (e) {\n if (!this.setFilterParams) {\n return;\n }\n var _a = this.setFilterParams || {}, excelMode = _a.excelMode, readOnly = _a.readOnly;\n if (!excelMode || !!readOnly) {\n return;\n }\n e.preventDefault();\n // in Excel Mode, hitting Enter is the same as pressing the Apply button\n this.onBtApply(false, false, e);\n if (this.setFilterParams.excelMode === 'mac') {\n // in Mac version, select all the input text\n this.eMiniFilter.getInputElement().select();\n }\n };\n SetFilter.prototype.getCssIdentifier = function () {\n return 'set-filter';\n };\n SetFilter.prototype.setModelAndRefresh = function (values) {\n var _this = this;\n return this.valueModel ? this.valueModel.setModel(values).then(function () { return _this.refresh(); }) : AgPromise.resolve();\n };\n SetFilter.prototype.resetUiToDefaults = function () {\n this.setMiniFilter(null);\n return this.setModelAndRefresh(null);\n };\n SetFilter.prototype.setModelIntoUi = function (model) {\n this.setMiniFilter(null);\n var values = model == null ? null : model.values;\n return this.setModelAndRefresh(values);\n };\n SetFilter.prototype.getModelFromUi = function () {\n if (!this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n var values = this.valueModel.getModel();\n if (!values) {\n return null;\n }\n return { values: values, filterType: this.getFilterType() };\n };\n SetFilter.prototype.getFilterType = function () {\n return 'set';\n };\n SetFilter.prototype.getValueModel = function () {\n return this.valueModel;\n };\n SetFilter.prototype.areModelsEqual = function (a, b) {\n // both are missing\n if (a == null && b == null) {\n return true;\n }\n return a != null && b != null && _.areEqual(a.values, b.values);\n };\n SetFilter.prototype.setParams = function (params) {\n var _this = this;\n this.applyExcelModeOptions(params);\n _super.prototype.setParams.call(this, params);\n this.setFilterParams = params;\n this.caseSensitive = params.caseSensitive || false;\n this.valueModel = new SetValueModel(params, function (loading) { return _this.showOrHideLoadingScreen(loading); }, this.valueFormatterService, function (key) { return _this.translateForSetFilter(key); }, function (v) { return _this.caseFormat(v); });\n this.initialiseFilterBodyUi();\n if (params.rowModel.getType() === Constants.ROW_MODEL_TYPE_CLIENT_SIDE &&\n !params.values) {\n this.addEventListenersForDataChanges();\n }\n };\n SetFilter.prototype.applyExcelModeOptions = function (params) {\n // apply default options to match Excel behaviour, unless they have already been specified\n if (params.excelMode === 'windows') {\n if (!params.buttons) {\n params.buttons = ['apply', 'cancel'];\n }\n if (params.closeOnApply == null) {\n params.closeOnApply = true;\n }\n }\n else if (params.excelMode === 'mac') {\n if (!params.buttons) {\n params.buttons = ['reset'];\n }\n if (params.applyMiniFilterWhileTyping == null) {\n params.applyMiniFilterWhileTyping = true;\n }\n if (params.debounceMs == null) {\n params.debounceMs = 500;\n }\n }\n };\n SetFilter.prototype.addEventListenersForDataChanges = function () {\n var _this = this;\n this.addManagedListener(this.eventService, Events.EVENT_ROW_DATA_UPDATED, function () { return _this.syncAfterDataChange(); });\n this.addManagedListener(this.eventService, Events.EVENT_CELL_VALUE_CHANGED, function (event) {\n // only interested in changes to do with this column\n if (_this.setFilterParams && event.column === _this.setFilterParams.column) {\n _this.syncAfterDataChange();\n }\n });\n };\n SetFilter.prototype.syncAfterDataChange = function (refreshValues) {\n var _this = this;\n if (refreshValues === void 0) { refreshValues = true; }\n if (!this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n var promise = AgPromise.resolve();\n if (refreshValues) {\n promise = this.valueModel.refreshValues();\n }\n return promise.then(function () {\n _this.refresh();\n _this.onBtApply(false, true);\n });\n };\n SetFilter.prototype.showOrHideLoadingScreen = function (isLoading) {\n _.setDisplayed(this.eFilterLoading, isLoading);\n };\n SetFilter.prototype.initialiseFilterBodyUi = function () {\n this.initVirtualList();\n this.initMiniFilter();\n };\n SetFilter.prototype.initVirtualList = function () {\n var _this = this;\n if (!this.setFilterParams) {\n throw new Error('Set filter params have not been provided.');\n }\n if (!this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n var filterListName = translate('ariaFilterList', 'Filter List');\n var virtualList = this.virtualList = this.createBean(new VirtualList('filter', 'listbox', filterListName));\n var eSetFilterList = this.getRefElement('eSetFilterList');\n if (eSetFilterList) {\n eSetFilterList.appendChild(virtualList.getGui());\n }\n var cellHeight = this.setFilterParams.cellHeight;\n if (cellHeight != null) {\n virtualList.setRowHeight(cellHeight);\n }\n virtualList.setComponentCreator(function (value) { return _this.createSetListItem(value); });\n var model;\n if (this.setFilterParams.suppressSelectAll) {\n model = new ModelWrapper(this.valueModel);\n }\n else {\n model = new ModelWrapperWithSelectAll(this.valueModel, function () { return _this.isSelectAllSelected(); });\n }\n virtualList.setModel(model);\n };\n SetFilter.prototype.getSelectAllLabel = function () {\n if (!this.setFilterParams) {\n throw new Error('Set filter params have not been provided.');\n }\n if (!this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n var key = this.valueModel.getMiniFilter() == null || !this.setFilterParams.excelMode ?\n 'selectAll' : 'selectAllSearchResults';\n return this.translateForSetFilter(key);\n };\n SetFilter.prototype.createSetListItem = function (value) {\n var _this = this;\n if (!this.setFilterParams) {\n throw new Error('Set filter params have not been provided.');\n }\n if (!this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n var listItem;\n if (value === SetFilter.SELECT_ALL_VALUE) {\n listItem = this.createBean(new SetFilterListItem(function () { return _this.getSelectAllLabel(); }, this.setFilterParams, function (key) { return _this.translateForSetFilter(key); }, this.isSelectAllSelected()));\n listItem.addEventListener(SetFilterListItem.EVENT_SELECTION_CHANGED, function (e) { return _this.onSelectAll(e.isSelected); });\n return listItem;\n }\n listItem = this.createBean(new SetFilterListItem(value, this.setFilterParams, function (key) { return _this.translateForSetFilter(key); }, this.valueModel.isValueSelected(value)));\n listItem.addEventListener(SetFilterListItem.EVENT_SELECTION_CHANGED, function (e) { return _this.onItemSelected(value, e.isSelected); });\n return listItem;\n };\n SetFilter.prototype.initMiniFilter = function () {\n var _this = this;\n if (!this.setFilterParams) {\n throw new Error('Set filter params have not been provided.');\n }\n if (!this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n var _a = this, eMiniFilter = _a.eMiniFilter, gridOptionsWrapper = _a.gridOptionsWrapper;\n var translate = gridOptionsWrapper.getLocaleTextFunc();\n eMiniFilter.setDisplayed(!this.setFilterParams.suppressMiniFilter);\n eMiniFilter.setValue(this.valueModel.getMiniFilter());\n eMiniFilter.onValueChange(function () { return _this.onMiniFilterInput(); });\n eMiniFilter.setInputAriaLabel(translate('ariaSearchFilterValues', 'Search filter values'));\n this.addManagedListener(eMiniFilter.getInputElement(), 'keypress', function (e) { return _this.onMiniFilterKeyPress(e); });\n };\n // we need to have the GUI attached before we can draw the virtual rows, as the\n // virtual row logic needs info about the GUI state\n SetFilter.prototype.afterGuiAttached = function (params) {\n if (!this.setFilterParams) {\n throw new Error('Set filter params have not been provided.');\n }\n _super.prototype.afterGuiAttached.call(this, params);\n this.refreshVirtualList();\n if (this.setFilterParams.excelMode) {\n this.resetUiToActiveModel();\n }\n var eMiniFilter = this.eMiniFilter;\n eMiniFilter.setInputPlaceholder(this.translateForSetFilter('searchOoo'));\n if (!params || !params.suppressFocus) {\n eMiniFilter.getFocusableElement().focus();\n }\n var resizable = !!(params && params.container === 'floatingFilter');\n var resizableObject;\n if (this.gridOptionsWrapper.isEnableRtl()) {\n resizableObject = { bottom: true, bottomLeft: true, left: true };\n }\n else {\n resizableObject = { bottom: true, bottomRight: true, right: true };\n }\n if (resizable) {\n this.positionableFeature.restoreLastSize();\n this.positionableFeature.setResizable(resizableObject);\n }\n else {\n this.positionableFeature.removeSizeFromEl();\n this.positionableFeature.setResizable(false);\n }\n };\n SetFilter.prototype.applyModel = function () {\n var _this = this;\n if (!this.setFilterParams) {\n throw new Error('Set filter params have not been provided.');\n }\n if (!this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n if (this.setFilterParams.excelMode && this.valueModel.isEverythingVisibleSelected()) {\n // In Excel, if the filter is applied with all visible values selected, then any active filter on the\n // column is removed. This ensures the filter is removed in this situation.\n this.valueModel.selectAllMatchingMiniFilter();\n }\n var result = _super.prototype.applyModel.call(this);\n // keep appliedModelValues in sync with the applied model\n var appliedModel = this.getModel();\n if (appliedModel) {\n this.appliedModelValues = appliedModel.values.reduce(function (values, value) {\n values[_this.caseFormat(String(value))] = true;\n return values;\n }, {});\n }\n else {\n this.appliedModelValues = null;\n }\n return result;\n };\n SetFilter.prototype.isModelValid = function (model) {\n return this.setFilterParams && this.setFilterParams.excelMode ? model == null || model.values.length > 0 : true;\n };\n SetFilter.prototype.doesFilterPass = function (params) {\n var _this = this;\n if (!this.setFilterParams || !this.valueModel || !this.appliedModelValues) {\n return true;\n }\n var node = params.node, data = params.data;\n var _a = this.setFilterParams, valueGetter = _a.valueGetter, keyCreator = _a.colDef.keyCreator, api = _a.api, colDef = _a.colDef, column = _a.column, columnApi = _a.columnApi, context = _a.context;\n var value = valueGetter({\n api: api,\n colDef: colDef,\n column: column,\n columnApi: columnApi,\n context: context,\n data: data,\n getValue: function (field) { return data[field]; },\n node: node,\n });\n if (keyCreator) {\n var keyParams = {\n value: value,\n colDef: colDef,\n column: column,\n node: node,\n data: data,\n api: api,\n columnApi: columnApi,\n context: context,\n };\n value = keyCreator(keyParams);\n }\n value = _.makeNull(value);\n if (Array.isArray(value)) {\n return value.some(function (v) { return _this.appliedModelValues[_this.caseFormat(String(_.makeNull(v)))] === true; });\n }\n // Comparing against a value performs better than just checking for undefined\n // https://jsbench.me/hdk91jbw1h/\n return this.appliedModelValues[this.caseFormat(String(value))] === true;\n };\n SetFilter.prototype.onNewRowsLoaded = function () {\n if (!this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n var valuesType = this.valueModel.getValuesType();\n this.syncAfterDataChange(valuesType === SetFilterModelValuesType.TAKEN_FROM_GRID_VALUES);\n };\n //noinspection JSUnusedGlobalSymbols\n /**\n * Public method provided so the user can change the value of the filter once\n * the filter has been already started\n * @param options The options to use.\n */\n SetFilter.prototype.setFilterValues = function (options) {\n var _this = this;\n if (!this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n this.valueModel.overrideValues(options).then(function () {\n _this.refresh();\n _this.onUiChanged();\n });\n };\n //noinspection JSUnusedGlobalSymbols\n /**\n * Public method provided so the user can reset the values of the filter once that it has started.\n */\n SetFilter.prototype.resetFilterValues = function () {\n if (!this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n this.valueModel.setValuesType(SetFilterModelValuesType.TAKEN_FROM_GRID_VALUES);\n this.syncAfterDataChange(true);\n };\n SetFilter.prototype.refreshFilterValues = function () {\n var _this = this;\n if (!this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n // the model is still being initialised\n if (!this.valueModel.isInitialised()) {\n return;\n }\n this.valueModel.refreshValues().then(function () {\n _this.refresh();\n _this.onUiChanged();\n });\n };\n SetFilter.prototype.onAnyFilterChanged = function () {\n var _this = this;\n // don't block the current action when updating the values for this filter\n setTimeout(function () {\n if (!_this.isAlive()) {\n return;\n }\n if (!_this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n _this.valueModel.refreshAfterAnyFilterChanged().then(function () { return _this.refresh(); });\n }, 0);\n };\n SetFilter.prototype.onMiniFilterInput = function () {\n if (!this.setFilterParams) {\n throw new Error('Set filter params have not been provided.');\n }\n if (!this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n if (!this.valueModel.setMiniFilter(this.eMiniFilter.getValue())) {\n return;\n }\n var _a = this.setFilterParams || {}, applyMiniFilterWhileTyping = _a.applyMiniFilterWhileTyping, readOnly = _a.readOnly;\n if (!readOnly && applyMiniFilterWhileTyping) {\n this.filterOnAllVisibleValues(false);\n }\n else {\n this.updateUiAfterMiniFilterChange();\n }\n };\n SetFilter.prototype.updateUiAfterMiniFilterChange = function () {\n if (!this.setFilterParams) {\n throw new Error('Set filter params have not been provided.');\n }\n if (!this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n var _a = this.setFilterParams || {}, excelMode = _a.excelMode, readOnly = _a.readOnly;\n if (excelMode == null || !!readOnly) {\n this.refresh();\n }\n else if (this.valueModel.getMiniFilter() == null) {\n this.resetUiToActiveModel();\n }\n else {\n this.valueModel.selectAllMatchingMiniFilter(true);\n this.refresh();\n this.onUiChanged();\n }\n this.showOrHideResults();\n };\n SetFilter.prototype.showOrHideResults = function () {\n if (!this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n var hideResults = this.valueModel.getMiniFilter() != null && this.valueModel.getDisplayedValueCount() < 1;\n _.setDisplayed(this.eNoMatches, hideResults);\n _.setDisplayed(this.eSetFilterList, !hideResults);\n };\n SetFilter.prototype.resetUiToActiveModel = function () {\n var _this = this;\n if (!this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n this.eMiniFilter.setValue(null, true);\n this.valueModel.setMiniFilter(null);\n this.setModelIntoUi(this.getModel()).then(function () { return _this.onUiChanged(false, 'prevent'); });\n };\n SetFilter.prototype.onMiniFilterKeyPress = function (e) {\n var _a = this.setFilterParams || {}, excelMode = _a.excelMode, readOnly = _a.readOnly;\n if (e.key === KeyCode.ENTER && !excelMode && !readOnly) {\n this.filterOnAllVisibleValues();\n }\n };\n SetFilter.prototype.filterOnAllVisibleValues = function (applyImmediately) {\n if (applyImmediately === void 0) { applyImmediately = true; }\n var readOnly = (this.setFilterParams || {}).readOnly;\n if (!this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n if (!!readOnly) {\n throw new Error('Unable to filter in readOnly mode.');\n }\n this.valueModel.selectAllMatchingMiniFilter(true);\n this.refresh();\n this.onUiChanged(false, applyImmediately ? 'immediately' : 'debounce');\n this.showOrHideResults();\n };\n SetFilter.prototype.focusRowIfAlive = function (rowIndex) {\n var _this = this;\n if (rowIndex == null) {\n return;\n }\n window.setTimeout(function () {\n if (!_this.virtualList) {\n throw new Error('Virtual list has not been created.');\n }\n if (_this.isAlive()) {\n _this.virtualList.focusRow(rowIndex);\n }\n }, 0);\n };\n SetFilter.prototype.onSelectAll = function (isSelected) {\n if (!this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n if (!this.virtualList) {\n throw new Error('Virtual list has not been created.');\n }\n if (isSelected) {\n this.valueModel.selectAllMatchingMiniFilter();\n }\n else {\n this.valueModel.deselectAllMatchingMiniFilter();\n }\n var focusedRow = this.virtualList.getLastFocusedRow();\n this.refresh();\n this.onUiChanged();\n this.focusRowIfAlive(focusedRow);\n };\n SetFilter.prototype.onItemSelected = function (value, isSelected) {\n if (!this.valueModel) {\n throw new Error('Value model has not been created.');\n }\n if (!this.virtualList) {\n throw new Error('Virtual list has not been created.');\n }\n if (isSelected) {\n this.valueModel.selectValue(value);\n }\n else {\n this.valueModel.deselectValue(value);\n }\n var focusedRow = this.virtualList.getLastFocusedRow();\n this.refresh();\n this.onUiChanged();\n this.focusRowIfAlive(focusedRow);\n };\n SetFilter.prototype.setMiniFilter = function (newMiniFilter) {\n this.eMiniFilter.setValue(newMiniFilter);\n this.onMiniFilterInput();\n };\n SetFilter.prototype.getMiniFilter = function () {\n return this.valueModel ? this.valueModel.getMiniFilter() : null;\n };\n SetFilter.prototype.refresh = function () {\n if (!this.virtualList) {\n throw new Error('Virtual list has not been created.');\n }\n this.virtualList.refresh();\n };\n SetFilter.prototype.getValues = function () {\n return this.valueModel ? this.valueModel.getValues() : [];\n };\n SetFilter.prototype.refreshVirtualList = function () {\n if (this.setFilterParams && this.setFilterParams.refreshValuesOnOpen) {\n this.refreshFilterValues();\n }\n else {\n this.refresh();\n }\n };\n SetFilter.prototype.translateForSetFilter = function (key) {\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n return translate(key, DEFAULT_LOCALE_TEXT[key]);\n };\n SetFilter.prototype.isSelectAllSelected = function () {\n if (!this.setFilterParams || !this.valueModel) {\n return false;\n }\n if (!this.setFilterParams.defaultToNothingSelected) {\n // everything selected by default\n if (this.valueModel.hasSelections() && this.valueModel.isNothingVisibleSelected()) {\n return false;\n }\n if (this.valueModel.isEverythingVisibleSelected()) {\n return true;\n }\n }\n else {\n // nothing selected by default\n if (this.valueModel.hasSelections() && this.valueModel.isEverythingVisibleSelected()) {\n return true;\n }\n if (this.valueModel.isNothingVisibleSelected()) {\n return false;\n }\n }\n // returning `undefined` means the checkbox status is indeterminate.\n return undefined;\n };\n SetFilter.prototype.destroy = function () {\n if (this.virtualList != null) {\n this.virtualList.destroy();\n this.virtualList = null;\n }\n _super.prototype.destroy.call(this);\n };\n SetFilter.prototype.caseFormat = function (valueToFormat) {\n if (valueToFormat == null || typeof valueToFormat !== 'string') {\n return valueToFormat;\n }\n return this.caseSensitive ? valueToFormat : valueToFormat.toUpperCase();\n };\n SetFilter.SELECT_ALL_VALUE = '__AG_SELECT_ALL__';\n __decorate([\n RefSelector('eMiniFilter')\n ], SetFilter.prototype, \"eMiniFilter\", void 0);\n __decorate([\n RefSelector('eFilterLoading')\n ], SetFilter.prototype, \"eFilterLoading\", void 0);\n __decorate([\n RefSelector('eSetFilterList')\n ], SetFilter.prototype, \"eSetFilterList\", void 0);\n __decorate([\n RefSelector('eFilterNoMatches')\n ], SetFilter.prototype, \"eNoMatches\", void 0);\n __decorate([\n Autowired('valueFormatterService')\n ], SetFilter.prototype, \"valueFormatterService\", void 0);\n return SetFilter;\n}(ProvidedFilter));\nexport { SetFilter };\nvar ModelWrapper = /** @class */ (function () {\n function ModelWrapper(model) {\n this.model = model;\n }\n ModelWrapper.prototype.getRowCount = function () {\n return this.model.getDisplayedValueCount();\n };\n ModelWrapper.prototype.getRow = function (index) {\n return this.model.getDisplayedValue(index);\n };\n ModelWrapper.prototype.isRowSelected = function (index) {\n return this.model.isValueSelected(this.getRow(index));\n };\n return ModelWrapper;\n}());\nvar ModelWrapperWithSelectAll = /** @class */ (function () {\n function ModelWrapperWithSelectAll(model, isSelectAllSelected) {\n this.model = model;\n this.isSelectAllSelected = isSelectAllSelected;\n }\n ModelWrapperWithSelectAll.prototype.getRowCount = function () {\n return this.model.getDisplayedValueCount() + 1;\n };\n ModelWrapperWithSelectAll.prototype.getRow = function (index) {\n return index === 0 ? SetFilter.SELECT_ALL_VALUE : this.model.getDisplayedValue(index - 1);\n };\n ModelWrapperWithSelectAll.prototype.isRowSelected = function (index) {\n return index === 0 ? this.isSelectAllSelected() : this.model.isValueSelected(this.getRow(index));\n };\n return ModelWrapperWithSelectAll;\n}());\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Component, RefSelector, } from '@ag-grid-community/core';\nimport { SetFilter } from './setFilter';\nimport { SetValueModel } from './setValueModel';\nimport { DEFAULT_LOCALE_TEXT } from './localeText';\nvar SetFloatingFilterComp = /** @class */ (function (_super) {\n __extends(SetFloatingFilterComp, _super);\n function SetFloatingFilterComp() {\n var _this = _super.call(this, /* html */ \"\\n
    \\n \\n
    \") || this;\n _this.availableValuesListenerAdded = false;\n return _this;\n }\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to override destroy() just to make the method public.\n SetFloatingFilterComp.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n SetFloatingFilterComp.prototype.init = function (params) {\n var displayName = this.columnModel.getDisplayNameForColumn(params.column, 'header', true);\n var translate = this.gridOptionsWrapper.getLocaleTextFunc();\n this.eFloatingFilterText\n .setDisabled(true)\n .setInputAriaLabel(displayName + \" \" + translate('ariaFilterInput', 'Filter Input'))\n .addGuiEventListener('click', function () { return params.showParentFilter(); });\n this.params = params;\n };\n SetFloatingFilterComp.prototype.onParentModelChanged = function (parentModel) {\n this.updateFloatingFilterText(parentModel);\n };\n SetFloatingFilterComp.prototype.parentSetFilterInstance = function (cb) {\n this.params.parentFilterInstance(function (filter) {\n if (!(filter instanceof SetFilter)) {\n throw new Error('AG Grid - SetFloatingFilter expects SetFilter as it\\'s parent');\n }\n cb(filter);\n });\n };\n SetFloatingFilterComp.prototype.addAvailableValuesListener = function () {\n var _this = this;\n this.parentSetFilterInstance(function (setFilter) {\n var setValueModel = setFilter.getValueModel();\n if (!setValueModel) {\n return;\n }\n // unlike other filters, what we show in the floating filter can be different, even\n // if another filter changes. this is due to how set filter restricts its values based\n // on selections in other filters, e.g. if you filter Language to English, then the set filter\n // on Country will only show English speaking countries. Thus the list of items to show\n // in the floating filter can change.\n _this.addManagedListener(setValueModel, SetValueModel.EVENT_AVAILABLE_VALUES_CHANGED, function () { return _this.updateFloatingFilterText(); });\n });\n this.availableValuesListenerAdded = true;\n };\n SetFloatingFilterComp.prototype.updateFloatingFilterText = function (parentModel) {\n var _this = this;\n if (!this.availableValuesListenerAdded) {\n this.addAvailableValuesListener();\n }\n this.parentSetFilterInstance(function (setFilter) {\n var values = (parentModel || setFilter.getModel() || {}).values;\n var valueModel = setFilter.getValueModel();\n if (values == null || valueModel == null) {\n _this.eFloatingFilterText.setValue('');\n return;\n }\n var localeTextFunc = _this.gridOptionsWrapper.getLocaleTextFunc();\n var availableValues = values.filter(function (v) { return valueModel.isValueAvailable(v); });\n // format all the values, if a formatter is provided\n var formattedValues = availableValues.map(function (value) {\n var _a = _this.params, column = _a.column, filterParams = _a.filterParams;\n var formattedValue = _this.valueFormatterService.formatValue(column, null, null, value, filterParams.valueFormatter, false);\n var valueToRender = formattedValue != null ? formattedValue : value;\n return valueToRender == null ? localeTextFunc('blanks', DEFAULT_LOCALE_TEXT.blanks) : valueToRender;\n });\n var arrayToDisplay = formattedValues.length > 10 ? formattedValues.slice(0, 10).concat('...') : formattedValues;\n var valuesString = \"(\" + formattedValues.length + \") \" + arrayToDisplay.join(',');\n _this.eFloatingFilterText.setValue(valuesString);\n });\n };\n __decorate([\n RefSelector('eFloatingFilterText')\n ], SetFloatingFilterComp.prototype, \"eFloatingFilterText\", void 0);\n __decorate([\n Autowired('valueFormatterService')\n ], SetFloatingFilterComp.prototype, \"valueFormatterService\", void 0);\n __decorate([\n Autowired('columnModel')\n ], SetFloatingFilterComp.prototype, \"columnModel\", void 0);\n return SetFloatingFilterComp;\n}(Component));\nexport { SetFloatingFilterComp };\n","import { ModuleNames } from '@ag-grid-community/core';\nimport { EnterpriseCoreModule } from '@ag-grid-enterprise/core';\nimport { SetFilter } from './setFilter/setFilter';\nimport { SetFloatingFilterComp } from './setFilter/setFloatingFilter';\nexport var SetFilterModule = {\n moduleName: ModuleNames.SetFilterModule,\n beans: [],\n userComponents: [\n { componentName: 'agSetColumnFilter', componentClass: SetFilter },\n { componentName: 'agSetColumnFloatingFilter', componentClass: SetFloatingFilterComp },\n ],\n dependantModules: [\n EnterpriseCoreModule\n ]\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Bean, BeanStub } from '@ag-grid-community/core';\nvar StatusBarService = /** @class */ (function (_super) {\n __extends(StatusBarService, _super);\n // tslint:disable-next-line\n function StatusBarService() {\n var _this = _super.call(this) || this;\n _this.allComponents = {};\n return _this;\n }\n StatusBarService.prototype.registerStatusPanel = function (key, component) {\n this.allComponents[key] = component;\n };\n StatusBarService.prototype.getStatusPanel = function (key) {\n return this.allComponents[key];\n };\n StatusBarService = __decorate([\n Bean('statusBarService')\n ], StatusBarService);\n return StatusBarService;\n}(BeanStub));\nexport { StatusBarService };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Component, PostConstruct, AgPromise, RefSelector } from '@ag-grid-community/core';\nvar StatusBar = /** @class */ (function (_super) {\n __extends(StatusBar, _super);\n function StatusBar() {\n return _super.call(this, StatusBar.TEMPLATE) || this;\n }\n StatusBar.prototype.postConstruct = function () {\n if (this.gridOptions.statusBar && this.gridOptions.statusBar.statusPanels) {\n var leftStatusPanelComponents = this.gridOptions.statusBar.statusPanels\n .filter(function (componentConfig) { return componentConfig.align === 'left'; });\n this.createAndRenderComponents(leftStatusPanelComponents, this.eStatusBarLeft);\n var centerStatusPanelComponents = this.gridOptions.statusBar.statusPanels\n .filter(function (componentConfig) { return componentConfig.align === 'center'; });\n this.createAndRenderComponents(centerStatusPanelComponents, this.eStatusBarCenter);\n var rightStatusPanelComponents = this.gridOptions.statusBar.statusPanels\n .filter(function (componentConfig) { return (!componentConfig.align || componentConfig.align === 'right'); });\n this.createAndRenderComponents(rightStatusPanelComponents, this.eStatusBarRight);\n }\n else {\n this.setDisplayed(false);\n }\n };\n StatusBar.prototype.createAndRenderComponents = function (statusBarComponents, ePanelComponent) {\n var _this = this;\n var componentDetails = [];\n statusBarComponents.forEach(function (componentConfig) {\n var params = {\n api: _this.gridOptionsWrapper.getApi(),\n columnApi: _this.gridOptionsWrapper.getColumnApi(),\n context: _this.gridOptionsWrapper.getContext()\n };\n var compDetails = _this.userComponentFactory.getStatusPanelCompDetails(componentConfig, params);\n var promise = compDetails.newAgStackInstance();\n if (!promise) {\n return;\n }\n componentDetails.push({\n // default to the component name if no key supplied\n key: componentConfig.key || componentConfig.statusPanel,\n promise: promise\n });\n });\n AgPromise.all(componentDetails.map(function (details) { return details.promise; }))\n .then(function () {\n componentDetails.forEach(function (componentDetail) {\n componentDetail.promise.then(function (component) {\n var destroyFunc = function () {\n _this.getContext().destroyBean(component);\n };\n if (_this.isAlive()) {\n _this.statusBarService.registerStatusPanel(componentDetail.key, component);\n ePanelComponent.appendChild(component.getGui());\n _this.addDestroyFunc(destroyFunc);\n }\n else {\n destroyFunc();\n }\n });\n });\n });\n };\n StatusBar.TEMPLATE = \"
    \\n
    \\n
    \\n
    \\n
    \";\n __decorate([\n Autowired('gridOptions')\n ], StatusBar.prototype, \"gridOptions\", void 0);\n __decorate([\n Autowired('userComponentFactory')\n ], StatusBar.prototype, \"userComponentFactory\", void 0);\n __decorate([\n Autowired('statusBarService')\n ], StatusBar.prototype, \"statusBarService\", void 0);\n __decorate([\n RefSelector('eStatusBarLeft')\n ], StatusBar.prototype, \"eStatusBarLeft\", void 0);\n __decorate([\n RefSelector('eStatusBarCenter')\n ], StatusBar.prototype, \"eStatusBarCenter\", void 0);\n __decorate([\n RefSelector('eStatusBarRight')\n ], StatusBar.prototype, \"eStatusBarRight\", void 0);\n __decorate([\n PostConstruct\n ], StatusBar.prototype, \"postConstruct\", null);\n return StatusBar;\n}(Component));\nexport { StatusBar };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, RefSelector } from '@ag-grid-community/core';\nvar NameValueComp = /** @class */ (function (_super) {\n __extends(NameValueComp, _super);\n function NameValueComp() {\n return _super.call(this, NameValueComp.TEMPLATE) || this;\n }\n NameValueComp.prototype.setLabel = function (key, defaultValue) {\n // we want to hide until the first value comes in\n this.setDisplayed(false);\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n this.eLabel.innerHTML = localeTextFunc(key, defaultValue);\n };\n NameValueComp.prototype.setValue = function (value) {\n this.eValue.innerHTML = value;\n };\n NameValueComp.TEMPLATE = \"
    \\n : \\n \\n
    \";\n __decorate([\n RefSelector('eLabel')\n ], NameValueComp.prototype, \"eLabel\", void 0);\n __decorate([\n RefSelector('eValue')\n ], NameValueComp.prototype, \"eValue\", void 0);\n return NameValueComp;\n}(Component));\nexport { NameValueComp };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Events, PostConstruct, _ } from '@ag-grid-community/core';\nimport { NameValueComp } from \"./nameValueComp\";\nvar TotalAndFilteredRowsComp = /** @class */ (function (_super) {\n __extends(TotalAndFilteredRowsComp, _super);\n function TotalAndFilteredRowsComp() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TotalAndFilteredRowsComp.prototype.postConstruct = function () {\n // this component is only really useful with client side row model\n if (this.gridApi.getModel().getType() !== 'clientSide') {\n console.warn(\"AG Grid: agTotalAndFilteredRowCountComponent should only be used with the client side row model.\");\n return;\n }\n this.setLabel('totalAndFilteredRows', 'Rows');\n this.addCssClass('ag-status-panel');\n this.addCssClass('ag-status-panel-total-and-filtered-row-count');\n this.setDisplayed(true);\n this.addManagedListener(this.eventService, Events.EVENT_MODEL_UPDATED, this.onDataChanged.bind(this));\n this.onDataChanged();\n };\n TotalAndFilteredRowsComp.prototype.onDataChanged = function () {\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var thousandSeparator = localeTextFunc('thousandSeparator', ',');\n var decimalSeparator = localeTextFunc('decimalSeparator', '.');\n var rowCount = _.formatNumberCommas(this.getFilteredRowCountValue(), thousandSeparator, decimalSeparator);\n var totalRowCount = _.formatNumberCommas(this.getTotalRowCount(), thousandSeparator, decimalSeparator);\n if (rowCount === totalRowCount) {\n this.setValue(rowCount);\n }\n else {\n var localeTextFunc_1 = this.gridOptionsWrapper.getLocaleTextFunc();\n this.setValue(rowCount + \" \" + localeTextFunc_1('of', 'of') + \" \" + totalRowCount);\n }\n };\n TotalAndFilteredRowsComp.prototype.getFilteredRowCountValue = function () {\n var filteredRowCount = 0;\n this.gridApi.forEachNodeAfterFilter(function (node) {\n if (!node.group) {\n filteredRowCount++;\n }\n });\n return filteredRowCount;\n };\n TotalAndFilteredRowsComp.prototype.getTotalRowCount = function () {\n var totalRowCount = 0;\n this.gridApi.forEachNode(function (node) {\n if (!node.group) {\n totalRowCount++;\n }\n });\n return totalRowCount;\n };\n TotalAndFilteredRowsComp.prototype.init = function () { };\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to override destroy() just to make the method public.\n TotalAndFilteredRowsComp.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Autowired('gridApi')\n ], TotalAndFilteredRowsComp.prototype, \"gridApi\", void 0);\n __decorate([\n PostConstruct\n ], TotalAndFilteredRowsComp.prototype, \"postConstruct\", null);\n return TotalAndFilteredRowsComp;\n}(NameValueComp));\nexport { TotalAndFilteredRowsComp };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Events, PostConstruct, _ } from '@ag-grid-community/core';\nimport { NameValueComp } from \"./nameValueComp\";\nvar FilteredRowsComp = /** @class */ (function (_super) {\n __extends(FilteredRowsComp, _super);\n function FilteredRowsComp() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FilteredRowsComp.prototype.postConstruct = function () {\n this.setLabel('filteredRows', 'Filtered');\n // this component is only really useful with client side row model\n if (this.gridApi.getModel().getType() !== 'clientSide') {\n console.warn(\"AG Grid: agFilteredRowCountComponent should only be used with the client side row model.\");\n return;\n }\n this.addCssClass('ag-status-panel');\n this.addCssClass('ag-status-panel-filtered-row-count');\n this.setDisplayed(true);\n var listener = this.onDataChanged.bind(this);\n this.addManagedListener(this.eventService, Events.EVENT_MODEL_UPDATED, listener);\n listener();\n };\n FilteredRowsComp.prototype.onDataChanged = function () {\n var totalRowCountValue = this.getTotalRowCountValue();\n var filteredRowCountValue = this.getFilteredRowCountValue();\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var thousandSeparator = localeTextFunc('thousandSeparator', ',');\n var decimalSeparator = localeTextFunc('decimalSeparator', '.');\n this.setValue(_.formatNumberCommas(filteredRowCountValue, thousandSeparator, decimalSeparator));\n this.setDisplayed(totalRowCountValue !== filteredRowCountValue);\n };\n FilteredRowsComp.prototype.getTotalRowCountValue = function () {\n var totalRowCount = 0;\n this.gridApi.forEachNode(function (node) { return totalRowCount += 1; });\n return totalRowCount;\n };\n FilteredRowsComp.prototype.getFilteredRowCountValue = function () {\n var filteredRowCount = 0;\n this.gridApi.forEachNodeAfterFilter(function (node) {\n if (!node.group) {\n filteredRowCount += 1;\n }\n });\n return filteredRowCount;\n };\n FilteredRowsComp.prototype.init = function () { };\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to override destroy() just to make the method public.\n FilteredRowsComp.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Autowired('gridApi')\n ], FilteredRowsComp.prototype, \"gridApi\", void 0);\n __decorate([\n PostConstruct\n ], FilteredRowsComp.prototype, \"postConstruct\", null);\n return FilteredRowsComp;\n}(NameValueComp));\nexport { FilteredRowsComp };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Events, PostConstruct, _ } from '@ag-grid-community/core';\nimport { NameValueComp } from \"./nameValueComp\";\nvar TotalRowsComp = /** @class */ (function (_super) {\n __extends(TotalRowsComp, _super);\n function TotalRowsComp() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TotalRowsComp.prototype.postConstruct = function () {\n this.setLabel('totalRows', 'Total Rows');\n // this component is only really useful with client side row model\n if (this.gridApi.getModel().getType() !== 'clientSide') {\n console.warn(\"AG Grid: agTotalRowCountComponent should only be used with the client side row model.\");\n return;\n }\n this.addCssClass('ag-status-panel');\n this.addCssClass('ag-status-panel-total-row-count');\n this.setDisplayed(true);\n this.addManagedListener(this.eventService, Events.EVENT_MODEL_UPDATED, this.onDataChanged.bind(this));\n this.onDataChanged();\n };\n TotalRowsComp.prototype.onDataChanged = function () {\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var thousandSeparator = localeTextFunc('thousandSeparator', ',');\n var decimalSeparator = localeTextFunc('decimalSeparator', '.');\n this.setValue(_.formatNumberCommas(this.getRowCountValue(), thousandSeparator, decimalSeparator));\n };\n TotalRowsComp.prototype.getRowCountValue = function () {\n var totalRowCount = 0;\n this.gridApi.forEachLeafNode(function (node) { return totalRowCount += 1; });\n return totalRowCount;\n };\n TotalRowsComp.prototype.init = function () {\n };\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to override destroy() just to make the method public.\n TotalRowsComp.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Autowired('gridApi')\n ], TotalRowsComp.prototype, \"gridApi\", void 0);\n __decorate([\n PostConstruct\n ], TotalRowsComp.prototype, \"postConstruct\", null);\n return TotalRowsComp;\n}(NameValueComp));\nexport { TotalRowsComp };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Events, PostConstruct, _ } from '@ag-grid-community/core';\nimport { NameValueComp } from \"./nameValueComp\";\nvar SelectedRowsComp = /** @class */ (function (_super) {\n __extends(SelectedRowsComp, _super);\n function SelectedRowsComp() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SelectedRowsComp.prototype.postConstruct = function () {\n if (!this.isValidRowModel()) {\n console.warn(\"AG Grid: agSelectedRowCountComponent should only be used with the client and server side row model.\");\n return;\n }\n this.setLabel('selectedRows', 'Selected');\n this.addCssClass('ag-status-panel');\n this.addCssClass('ag-status-panel-selected-row-count');\n var selectedRowCount = this.gridApi.getSelectedRows().length;\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var thousandSeparator = localeTextFunc('thousandSeparator', ',');\n var decimalSeparator = localeTextFunc('decimalSeparator', '.');\n this.setValue(_.formatNumberCommas(selectedRowCount, thousandSeparator, decimalSeparator));\n this.setDisplayed(selectedRowCount > 0);\n var eventListener = this.onRowSelectionChanged.bind(this);\n this.addManagedListener(this.eventService, Events.EVENT_MODEL_UPDATED, eventListener);\n this.addManagedListener(this.eventService, Events.EVENT_SELECTION_CHANGED, eventListener);\n };\n SelectedRowsComp.prototype.isValidRowModel = function () {\n // this component is only really useful with client or server side rowmodels\n var rowModelType = this.gridApi.getModel().getType();\n return rowModelType === 'clientSide' || rowModelType === 'serverSide';\n };\n SelectedRowsComp.prototype.onRowSelectionChanged = function () {\n var selectedRowCount = this.gridApi.getSelectedRows().length;\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var thousandSeparator = localeTextFunc('thousandSeparator', ',');\n var decimalSeparator = localeTextFunc('decimalSeparator', '.');\n this.setValue(_.formatNumberCommas(selectedRowCount, thousandSeparator, decimalSeparator));\n this.setDisplayed(selectedRowCount > 0);\n };\n SelectedRowsComp.prototype.init = function () {\n };\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to override destroy() just to make the method public.\n SelectedRowsComp.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Autowired('gridApi')\n ], SelectedRowsComp.prototype, \"gridApi\", void 0);\n __decorate([\n PostConstruct\n ], SelectedRowsComp.prototype, \"postConstruct\", null);\n return SelectedRowsComp;\n}(NameValueComp));\nexport { SelectedRowsComp };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Component, Events, PostConstruct, RefSelector, _, Optional } from '@ag-grid-community/core';\nvar AggregationComp = /** @class */ (function (_super) {\n __extends(AggregationComp, _super);\n function AggregationComp() {\n return _super.call(this, AggregationComp.TEMPLATE) || this;\n }\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to override destroy() just to make the method public.\n AggregationComp.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n AggregationComp.prototype.postConstruct = function () {\n if (!this.isValidRowModel()) {\n console.warn(\"AG Grid: agAggregationComponent should only be used with the client and server side row model.\");\n return;\n }\n this.avgAggregationComp.setLabel('avg', 'Average');\n this.countAggregationComp.setLabel('count', 'Count');\n this.minAggregationComp.setLabel('min', 'Min');\n this.maxAggregationComp.setLabel('max', 'Max');\n this.sumAggregationComp.setLabel('sum', 'Sum');\n this.addManagedListener(this.eventService, Events.EVENT_RANGE_SELECTION_CHANGED, this.onRangeSelectionChanged.bind(this));\n this.addManagedListener(this.eventService, Events.EVENT_MODEL_UPDATED, this.onRangeSelectionChanged.bind(this));\n };\n AggregationComp.prototype.isValidRowModel = function () {\n // this component is only really useful with client or server side rowmodels\n var rowModelType = this.gridApi.getModel().getType();\n return rowModelType === 'clientSide' || rowModelType === 'serverSide';\n };\n AggregationComp.prototype.init = function () {\n };\n AggregationComp.prototype.setAggregationComponentValue = function (aggFuncName, value, visible) {\n var statusBarValueComponent = this.getAggregationValueComponent(aggFuncName);\n if (_.exists(statusBarValueComponent) && statusBarValueComponent) {\n var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();\n var thousandSeparator = localeTextFunc('thousandSeparator', ',');\n var decimalSeparator = localeTextFunc('decimalSeparator', '.');\n statusBarValueComponent.setValue(_.formatNumberTwoDecimalPlacesAndCommas(value, thousandSeparator, decimalSeparator));\n statusBarValueComponent.setDisplayed(visible);\n }\n };\n AggregationComp.prototype.getAggregationValueComponent = function (aggFuncName) {\n // converts user supplied agg name to our reference - eg: sum => sumAggregationComp\n var refComponentName = aggFuncName + \"AggregationComp\";\n // if the user has specified the agAggregationPanelComp but no aggFuncs we show the all\n // if the user has specified the agAggregationPanelComp and aggFuncs, then we only show the aggFuncs listed\n var statusBarValueComponent = null;\n var aggregationPanelConfig = _.exists(this.gridOptions.statusBar) && this.gridOptions.statusBar ? this.gridOptions.statusBar.statusPanels.find(function (panel) { return panel.statusPanel === 'agAggregationComponent'; }) : null;\n if (_.exists(aggregationPanelConfig) && aggregationPanelConfig) {\n // a little defensive here - if no statusPanelParams show it, if componentParams we also expect aggFuncs\n if (!_.exists(aggregationPanelConfig.statusPanelParams) ||\n (_.exists(aggregationPanelConfig.statusPanelParams) &&\n _.exists(aggregationPanelConfig.statusPanelParams.aggFuncs) &&\n _.exists(aggregationPanelConfig.statusPanelParams.aggFuncs.find(function (func) { return func === aggFuncName; })))) {\n statusBarValueComponent = this[refComponentName];\n }\n }\n else {\n // components not specified - assume we can show this component\n statusBarValueComponent = this[refComponentName];\n }\n // either we can't find it (which would indicate a typo or similar user side), or the user has deliberately\n // not listed the component in aggFuncs\n return statusBarValueComponent;\n };\n AggregationComp.prototype.onRangeSelectionChanged = function () {\n var _this = this;\n var cellRanges = this.rangeService ? this.rangeService.getCellRanges() : undefined;\n var sum = 0;\n var count = 0;\n var numberCount = 0;\n var min = null;\n var max = null;\n var cellsSoFar = {};\n if (cellRanges && !_.missingOrEmpty(cellRanges)) {\n cellRanges.forEach(function (cellRange) {\n var currentRow = _this.rangeService.getRangeStartRow(cellRange);\n var lastRow = _this.rangeService.getRangeEndRow(cellRange);\n while (true) {\n var finishedAllRows = _.missing(currentRow) || !currentRow || _this.rowPositionUtils.before(lastRow, currentRow);\n if (finishedAllRows || !currentRow || !cellRange.columns) {\n break;\n }\n cellRange.columns.forEach(function (col) {\n if (currentRow === null) {\n return;\n }\n // we only want to include each cell once, in case a cell is in multiple ranges\n var cellId = _this.cellPositionUtils.createId({\n rowPinned: currentRow.rowPinned,\n column: col,\n rowIndex: currentRow.rowIndex\n });\n if (cellsSoFar[cellId]) {\n return;\n }\n cellsSoFar[cellId] = true;\n var rowNode = _this.rowRenderer.getRowNode(currentRow);\n if (_.missing(rowNode)) {\n return;\n }\n var value = _this.valueService.getValue(col, rowNode);\n // if empty cell, skip it, doesn't impact count or anything\n if (_.missing(value) || value === '') {\n return;\n }\n // see if value is wrapped, can happen when doing count() or avg() functions\n if (value.value) {\n value = value.value;\n }\n if (typeof value === 'string') {\n value = Number(value);\n }\n if (typeof value === 'number' && !isNaN(value)) {\n sum += value;\n if (max === null || value > max) {\n max = value;\n }\n if (min === null || value < min) {\n min = value;\n }\n numberCount++;\n }\n count++;\n });\n currentRow = _this.cellNavigationService.getRowBelow(currentRow);\n }\n });\n }\n var gotResult = count > 1;\n var gotNumberResult = numberCount > 1;\n // we show count even if no numbers\n this.setAggregationComponentValue('count', count, gotResult);\n // show if numbers found\n this.setAggregationComponentValue('sum', sum, gotNumberResult);\n this.setAggregationComponentValue('min', min, gotNumberResult);\n this.setAggregationComponentValue('max', max, gotNumberResult);\n this.setAggregationComponentValue('avg', (sum / numberCount), gotNumberResult);\n };\n AggregationComp.TEMPLATE = \"
    \\n \\n \\n \\n \\n \\n
    \";\n __decorate([\n Optional('rangeService')\n ], AggregationComp.prototype, \"rangeService\", void 0);\n __decorate([\n Autowired('valueService')\n ], AggregationComp.prototype, \"valueService\", void 0);\n __decorate([\n Autowired('cellNavigationService')\n ], AggregationComp.prototype, \"cellNavigationService\", void 0);\n __decorate([\n Autowired('rowRenderer')\n ], AggregationComp.prototype, \"rowRenderer\", void 0);\n __decorate([\n Autowired('gridOptions')\n ], AggregationComp.prototype, \"gridOptions\", void 0);\n __decorate([\n Autowired('gridApi')\n ], AggregationComp.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('cellPositionUtils')\n ], AggregationComp.prototype, \"cellPositionUtils\", void 0);\n __decorate([\n Autowired('rowPositionUtils')\n ], AggregationComp.prototype, \"rowPositionUtils\", void 0);\n __decorate([\n RefSelector('sumAggregationComp')\n ], AggregationComp.prototype, \"sumAggregationComp\", void 0);\n __decorate([\n RefSelector('countAggregationComp')\n ], AggregationComp.prototype, \"countAggregationComp\", void 0);\n __decorate([\n RefSelector('minAggregationComp')\n ], AggregationComp.prototype, \"minAggregationComp\", void 0);\n __decorate([\n RefSelector('maxAggregationComp')\n ], AggregationComp.prototype, \"maxAggregationComp\", void 0);\n __decorate([\n RefSelector('avgAggregationComp')\n ], AggregationComp.prototype, \"avgAggregationComp\", void 0);\n __decorate([\n PostConstruct\n ], AggregationComp.prototype, \"postConstruct\", null);\n return AggregationComp;\n}(Component));\nexport { AggregationComp };\n","import { ModuleNames } from \"@ag-grid-community/core\";\nimport { EnterpriseCoreModule } from \"@ag-grid-enterprise/core\";\nimport { StatusBarService } from \"./statusBar/statusBarService\";\nimport { StatusBar } from \"./statusBar/statusBar\";\nimport { NameValueComp } from \"./statusBar/providedPanels/nameValueComp\";\nimport { TotalAndFilteredRowsComp } from \"./statusBar/providedPanels/totalAndFilteredRowsComp\";\nimport { FilteredRowsComp } from \"./statusBar/providedPanels/filteredRowsComp\";\nimport { TotalRowsComp } from \"./statusBar/providedPanels/totalRowsComp\";\nimport { SelectedRowsComp } from \"./statusBar/providedPanels/selectedRowsComp\";\nimport { AggregationComp } from \"./statusBar/providedPanels/aggregationComp\";\nexport var StatusBarModule = {\n moduleName: ModuleNames.StatusBarModule,\n beans: [StatusBarService],\n agStackComponents: [\n { componentName: 'AgStatusBar', componentClass: StatusBar },\n { componentName: 'AgNameValue', componentClass: NameValueComp },\n ],\n userComponents: [\n { componentName: 'agAggregationComponent', componentClass: AggregationComp },\n { componentName: 'agSelectedRowCountComponent', componentClass: SelectedRowsComp },\n { componentName: 'agTotalRowCountComponent', componentClass: TotalRowsComp },\n { componentName: 'agFilteredRowCountComponent', componentClass: FilteredRowsComp },\n { componentName: 'agTotalAndFilteredRowCountComponent', componentClass: TotalAndFilteredRowsComp }\n ],\n dependantModules: [\n EnterpriseCoreModule\n ]\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { _, Autowired, Bean, BeanStub, Constants, Events, PostConstruct, PreDestroy, RowNode } from \"@ag-grid-community/core\";\nvar ViewportRowModel = /** @class */ (function (_super) {\n __extends(ViewportRowModel, _super);\n function ViewportRowModel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // rowRenderer tells us these\n _this.firstRow = -1;\n _this.lastRow = -1;\n // datasource tells us this\n _this.rowCount = -1;\n _this.rowNodesByIndex = {};\n return _this;\n }\n // we don't implement as lazy row heights is not supported in this row model\n ViewportRowModel.prototype.ensureRowHeightsValid = function (startPixel, endPixel, startLimitIndex, endLimitIndex) { return false; };\n ViewportRowModel.prototype.init = function () {\n this.rowHeight = this.gridOptionsWrapper.getRowHeightAsNumber();\n this.addManagedListener(this.eventService, Events.EVENT_VIEWPORT_CHANGED, this.onViewportChanged.bind(this));\n };\n ViewportRowModel.prototype.start = function () {\n if (this.gridOptionsWrapper.getViewportDatasource()) {\n this.setViewportDatasource(this.gridOptionsWrapper.getViewportDatasource());\n }\n };\n ViewportRowModel.prototype.isLastRowIndexKnown = function () {\n return true;\n };\n ViewportRowModel.prototype.destroyDatasource = function () {\n if (!this.viewportDatasource) {\n return;\n }\n if (this.viewportDatasource.destroy) {\n this.viewportDatasource.destroy();\n }\n this.rowRenderer.datasourceChanged();\n this.firstRow = -1;\n this.lastRow = -1;\n };\n ViewportRowModel.prototype.calculateFirstRow = function (firstRenderedRow) {\n var bufferSize = this.gridOptionsWrapper.getViewportRowModelBufferSize();\n var pageSize = this.gridOptionsWrapper.getViewportRowModelPageSize();\n var afterBuffer = firstRenderedRow - bufferSize;\n if (afterBuffer < 0) {\n return 0;\n }\n return Math.floor(afterBuffer / pageSize) * pageSize;\n };\n ViewportRowModel.prototype.calculateLastRow = function (lastRenderedRow) {\n if (lastRenderedRow === -1) {\n return lastRenderedRow;\n }\n var bufferSize = this.gridOptionsWrapper.getViewportRowModelBufferSize();\n var pageSize = this.gridOptionsWrapper.getViewportRowModelPageSize();\n var afterBuffer = lastRenderedRow + bufferSize;\n var result = Math.ceil(afterBuffer / pageSize) * pageSize;\n var lastRowIndex = this.rowCount - 1;\n return Math.min(result, lastRowIndex);\n };\n ViewportRowModel.prototype.onViewportChanged = function (event) {\n var newFirst = this.calculateFirstRow(event.firstRow);\n var newLast = this.calculateLastRow(event.lastRow);\n if (this.firstRow !== newFirst || this.lastRow !== newLast) {\n this.firstRow = newFirst;\n this.lastRow = newLast;\n this.purgeRowsNotInViewport();\n if (this.viewportDatasource) {\n this.viewportDatasource.setViewportRange(this.firstRow, this.lastRow);\n }\n }\n };\n ViewportRowModel.prototype.purgeRowsNotInViewport = function () {\n var _this = this;\n Object.keys(this.rowNodesByIndex).forEach(function (indexStr) {\n var index = parseInt(indexStr, 10);\n if (index < _this.firstRow || index > _this.lastRow) {\n delete _this.rowNodesByIndex[index];\n }\n });\n };\n ViewportRowModel.prototype.setViewportDatasource = function (viewportDatasource) {\n this.destroyDatasource();\n this.viewportDatasource = viewportDatasource;\n this.rowCount = 0;\n if (!viewportDatasource.init) {\n console.warn('AG Grid: viewport is missing init method.');\n }\n else {\n viewportDatasource.init({\n setRowCount: this.setRowCount.bind(this),\n setRowData: this.setRowData.bind(this),\n getRow: this.getRow.bind(this)\n });\n }\n };\n ViewportRowModel.prototype.getType = function () {\n return Constants.ROW_MODEL_TYPE_VIEWPORT;\n };\n ViewportRowModel.prototype.getRow = function (rowIndex) {\n if (!this.rowNodesByIndex[rowIndex]) {\n this.rowNodesByIndex[rowIndex] = this.createBlankRowNode(rowIndex);\n }\n return this.rowNodesByIndex[rowIndex];\n };\n ViewportRowModel.prototype.getRowNode = function (id) {\n var result;\n this.forEachNode(function (rowNode) {\n if (rowNode.id === id) {\n result = rowNode;\n }\n });\n return result;\n };\n ViewportRowModel.prototype.getRowCount = function () {\n return this.rowCount;\n };\n ViewportRowModel.prototype.getRowIndexAtPixel = function (pixel) {\n if (this.rowHeight !== 0) { // avoid divide by zero error\n return Math.floor(pixel / this.rowHeight);\n }\n return 0;\n };\n ViewportRowModel.prototype.getRowBounds = function (index) {\n return {\n rowHeight: this.rowHeight,\n rowTop: this.rowHeight * index\n };\n };\n ViewportRowModel.prototype.getTopLevelRowCount = function () {\n return this.getRowCount();\n };\n ViewportRowModel.prototype.getTopLevelRowDisplayedIndex = function (topLevelIndex) {\n return topLevelIndex;\n };\n ViewportRowModel.prototype.isEmpty = function () {\n return this.rowCount > 0;\n };\n ViewportRowModel.prototype.isRowsToRender = function () {\n return this.rowCount > 0;\n };\n ViewportRowModel.prototype.getNodesInRangeForSelection = function (firstInRange, lastInRange) {\n var firstIndex = _.missing(firstInRange) ? 0 : firstInRange.rowIndex;\n var lastIndex = lastInRange.rowIndex;\n var firstNodeOutOfRange = firstIndex < this.firstRow || firstIndex > this.lastRow;\n var lastNodeOutOfRange = lastIndex < this.firstRow || lastIndex > this.lastRow;\n if (firstNodeOutOfRange || lastNodeOutOfRange) {\n return [];\n }\n var result = [];\n var startIndex = firstIndex <= lastIndex ? firstIndex : lastIndex;\n var endIndex = firstIndex <= lastIndex ? lastIndex : firstIndex;\n for (var i = startIndex; i <= endIndex; i++) {\n result.push(this.rowNodesByIndex[i]);\n }\n return result;\n };\n ViewportRowModel.prototype.forEachNode = function (callback) {\n var _this = this;\n var callbackCount = 0;\n Object.keys(this.rowNodesByIndex).forEach(function (indexStr) {\n var index = parseInt(indexStr, 10);\n var rowNode = _this.rowNodesByIndex[index];\n callback(rowNode, callbackCount);\n callbackCount++;\n });\n };\n ViewportRowModel.prototype.setRowData = function (rowData) {\n var _this = this;\n _.iterateObject(rowData, function (indexStr, dataItem) {\n var index = parseInt(indexStr, 10);\n // we should never keep rows that we didn't specifically ask for, this\n // guarantees the contract we have with the server.\n if (index >= _this.firstRow && index <= _this.lastRow) {\n var rowNode = _this.rowNodesByIndex[index];\n // the abnormal case is we requested a row even though the grid didn't need it\n // as a result of the paging and buffer (ie the row is off screen), in which\n // case we need to create a new node now\n if (_.missing(rowNode)) {\n rowNode = _this.createBlankRowNode(index);\n _this.rowNodesByIndex[index] = rowNode;\n }\n // now we deffo have a row node, so set in the details\n // if the grid already asked for this row (the normal case), then we would\n // of put a placeholder node in place.\n rowNode.setDataAndId(dataItem, index.toString());\n }\n });\n };\n ViewportRowModel.prototype.createBlankRowNode = function (rowIndex) {\n var rowNode = new RowNode(this.beans);\n rowNode.setRowHeight(this.rowHeight);\n rowNode.setRowTop(this.rowHeight * rowIndex);\n rowNode.setRowIndex(rowIndex);\n return rowNode;\n };\n ViewportRowModel.prototype.setRowCount = function (rowCount, keepRenderedRows) {\n if (keepRenderedRows === void 0) { keepRenderedRows = false; }\n if (rowCount === this.rowCount) {\n return;\n }\n this.rowCount = rowCount;\n var event = {\n type: Events.EVENT_MODEL_UPDATED,\n api: this.gridApi,\n columnApi: this.columnApi,\n newData: false,\n newPage: false,\n keepRenderedRows: keepRenderedRows,\n animate: false\n };\n this.eventService.dispatchEvent(event);\n };\n ViewportRowModel.prototype.isRowPresent = function (rowNode) {\n return false;\n };\n __decorate([\n Autowired('gridApi')\n ], ViewportRowModel.prototype, \"gridApi\", void 0);\n __decorate([\n Autowired('columnApi')\n ], ViewportRowModel.prototype, \"columnApi\", void 0);\n __decorate([\n Autowired('rowRenderer')\n ], ViewportRowModel.prototype, \"rowRenderer\", void 0);\n __decorate([\n Autowired('beans')\n ], ViewportRowModel.prototype, \"beans\", void 0);\n __decorate([\n PostConstruct\n ], ViewportRowModel.prototype, \"init\", null);\n __decorate([\n PreDestroy\n ], ViewportRowModel.prototype, \"destroyDatasource\", null);\n ViewportRowModel = __decorate([\n Bean('rowModel')\n ], ViewportRowModel);\n return ViewportRowModel;\n}(BeanStub));\nexport { ViewportRowModel };\n","import { ModuleNames } from \"@ag-grid-community/core\";\nimport { EnterpriseCoreModule } from \"@ag-grid-enterprise/core\";\nimport { ViewportRowModel } from \"./viewportRowModel/viewportRowModel\";\nexport var ViewportRowModelModule = {\n moduleName: ModuleNames.ViewportRowModelModule,\n rowModels: { viewport: ViewportRowModel },\n dependantModules: [\n EnterpriseCoreModule\n ]\n};\n","// For small data structs like a bounding box, objects are superior to arrays\n// in terms of performance (by 3-4% in Chrome 71, Safari 12 and by 20% in Firefox 64).\n// They are also self descriptive and harder to abuse.\n// For example, one has to do:\n// `ctx.strokeRect(bbox.x, bbox.y, bbox.width, bbox.height);`\n// rather than become enticed by the much slower:\n// `ctx.strokeRect(...bbox);`\n// https://jsperf.com/array-vs-object-create-access\nvar BBox = /** @class */ (function () {\n function BBox(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n BBox.prototype.isValid = function () {\n return isFinite(this.x) && isFinite(this.y) && isFinite(this.width) && isFinite(this.height);\n };\n BBox.prototype.dilate = function (value) {\n this.x -= value;\n this.y -= value;\n this.width += value * 2;\n this.height += value * 2;\n };\n BBox.prototype.containsPoint = function (x, y) {\n return x >= this.x && x <= (this.x + this.width)\n && y >= this.y && y <= (this.y + this.height);\n };\n BBox.prototype.render = function (ctx, params) {\n if (params === void 0) { params = BBox.noParams; }\n ctx.save();\n if (params.resetTransform) {\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n }\n ctx.strokeStyle = params.strokeStyle || 'cyan';\n ctx.lineWidth = params.lineWidth || 1;\n ctx.strokeRect(this.x, this.y, this.width, this.height);\n if (params.label) {\n ctx.fillStyle = params.fillStyle || 'black';\n ctx.textBaseline = 'bottom';\n ctx.fillText(params.label, this.x, this.y);\n }\n ctx.restore();\n };\n BBox.noParams = {};\n return BBox;\n}());\nexport { BBox };\n","var __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nimport { BBox } from \"./bbox\";\n/**\n * As of Jan 8, 2019, Firefox still doesn't implement\n * `getTransform(): DOMMatrix;`\n * `setTransform(transform?: DOMMatrix2DInit)`\n * in the `CanvasRenderingContext2D`.\n * Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=928150\n * IE11 and Edge 44 also don't have the support.\n * Thus this class, to keep track of the current transform and\n * combine transformations.\n * Standards:\n * https://html.spec.whatwg.org/dev/canvas.html\n * https://www.w3.org/TR/geometry-1/\n */\nvar Matrix = /** @class */ (function () {\n function Matrix(elements) {\n if (elements === void 0) { elements = [1, 0, 0, 1, 0, 0]; }\n this.elements = elements;\n }\n Matrix.prototype.setElements = function (elements) {\n var e = this.elements;\n // `this.elements = elements.slice()` is 4-5 times slower\n // (in Chrome 71 and FF 64) than manually copying elements,\n // since slicing allocates new memory.\n // The performance of passing parameters individually\n // vs as an array is about the same in both browsers, so we\n // go with a single (array of elements) parameter, because\n // `setElements(elements)` and `setElements([a, b, c, d, e, f])`\n // calls give us roughly the same performance, versus\n // `setElements(...elements)` and `setElements(a, b, c, d, e, f)`,\n // where the spread operator causes a 20-30x performance drop\n // (30x when compiled to ES5's `.apply(this, elements)`\n // 20x when used natively).\n e[0] = elements[0];\n e[1] = elements[1];\n e[2] = elements[2];\n e[3] = elements[3];\n e[4] = elements[4];\n e[5] = elements[5];\n return this;\n };\n Matrix.prototype.setIdentityElements = function () {\n var e = this.elements;\n e[0] = 1;\n e[1] = 0;\n e[2] = 0;\n e[3] = 1;\n e[4] = 0;\n e[5] = 0;\n return this;\n };\n Object.defineProperty(Matrix.prototype, \"identity\", {\n get: function () {\n var e = this.elements;\n return e[0] === 1 && e[1] === 0 && e[2] === 0 &&\n e[3] === 1 && e[4] === 0 && e[5] === 0;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"a\", {\n get: function () {\n return this.elements[0];\n },\n set: function (value) {\n this.elements[0] = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"b\", {\n get: function () {\n return this.elements[1];\n },\n set: function (value) {\n this.elements[1] = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"c\", {\n get: function () {\n return this.elements[2];\n },\n set: function (value) {\n this.elements[2] = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"d\", {\n get: function () {\n return this.elements[3];\n },\n set: function (value) {\n this.elements[3] = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"e\", {\n get: function () {\n return this.elements[4];\n },\n set: function (value) {\n this.elements[4] = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"f\", {\n get: function () {\n return this.elements[5];\n },\n set: function (value) {\n this.elements[5] = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Performs the AxB matrix multiplication and saves the result\n * to `C`, if given, or to `A` otherwise.\n */\n Matrix.prototype.AxB = function (A, B, C) {\n var _a = __read(A, 6), m11 = _a[0], m12 = _a[1], m21 = _a[2], m22 = _a[3], m31 = _a[4], m32 = _a[5];\n var _b = __read(B, 6), o11 = _b[0], o12 = _b[1], o21 = _b[2], o22 = _b[3], o31 = _b[4], o32 = _b[5];\n C = C || A;\n C[0] = m11 * o11 + m21 * o12;\n C[1] = m12 * o11 + m22 * o12;\n C[2] = m11 * o21 + m21 * o22;\n C[3] = m12 * o21 + m22 * o22;\n C[4] = m11 * o31 + m21 * o32 + m31;\n C[5] = m12 * o31 + m22 * o32 + m32;\n };\n /**\n * The `other` matrix gets post-multiplied to the current matrix.\n * Returns the current matrix.\n * @param other\n */\n Matrix.prototype.multiplySelf = function (other) {\n this.AxB(this.elements, other.elements);\n return this;\n };\n /**\n * The `other` matrix gets post-multiplied to the current matrix.\n * Returns a new matrix.\n * @param other\n */\n Matrix.prototype.multiply = function (other) {\n var elements = new Array(6);\n this.AxB(this.elements, other.elements, elements);\n return new Matrix(elements);\n };\n Matrix.prototype.preMultiplySelf = function (other) {\n this.AxB(other.elements, this.elements, this.elements);\n return this;\n };\n /**\n * Returns the inverse of this matrix as a new matrix.\n */\n Matrix.prototype.inverse = function () {\n var _a = __read(this.elements, 6), a = _a[0], b = _a[1], c = _a[2], d = _a[3], e = _a[4], f = _a[5];\n var rD = 1 / (a * d - b * c); // reciprocal of determinant\n a *= rD;\n b *= rD;\n c *= rD;\n d *= rD;\n return new Matrix([d, -b, -c, a, c * f - d * e, b * e - a * f]);\n };\n /**\n * Save the inverse of this matrix to the given matrix.\n */\n Matrix.prototype.inverseTo = function (other) {\n var _a = __read(this.elements, 6), a = _a[0], b = _a[1], c = _a[2], d = _a[3], e = _a[4], f = _a[5];\n var rD = 1 / (a * d - b * c); // reciprocal of determinant\n a *= rD;\n b *= rD;\n c *= rD;\n d *= rD;\n other.setElements([d, -b, -c, a, c * f - d * e, b * e - a * f]);\n return this;\n };\n Matrix.prototype.invertSelf = function () {\n var elements = this.elements;\n var _a = __read(elements, 6), a = _a[0], b = _a[1], c = _a[2], d = _a[3], e = _a[4], f = _a[5];\n var rD = 1 / (a * d - b * c); // reciprocal of determinant\n a *= rD;\n b *= rD;\n c *= rD;\n d *= rD;\n elements[0] = d;\n elements[1] = -b;\n elements[2] = -c;\n elements[3] = a;\n elements[4] = c * f - d * e;\n elements[5] = b * e - a * f;\n return this;\n };\n Matrix.prototype.clone = function () {\n return new Matrix(this.elements.slice());\n };\n Matrix.prototype.transformPoint = function (x, y) {\n var e = this.elements;\n return {\n x: x * e[0] + y * e[2] + e[4],\n y: x * e[1] + y * e[3] + e[5]\n };\n };\n Matrix.prototype.transformBBox = function (bbox, radius, target) {\n if (radius === void 0) { radius = 0; }\n var elements = this.elements;\n var xx = elements[0];\n var xy = elements[1];\n var yx = elements[2];\n var yy = elements[3];\n var h_w = bbox.width * 0.5;\n var h_h = bbox.height * 0.5;\n var cx = bbox.x + h_w;\n var cy = bbox.y + h_h;\n var w, h;\n if (radius) {\n h_w -= radius;\n h_h -= radius;\n var sx = Math.sqrt(xx * xx + yx * yx);\n var sy = Math.sqrt(xy * xy + yy * yy);\n w = Math.abs(h_w * xx) + Math.abs(h_h * yx) + Math.abs(sx * radius);\n h = Math.abs(h_w * xy) + Math.abs(h_h * yy) + Math.abs(sy * radius);\n }\n else {\n w = Math.abs(h_w * xx) + Math.abs(h_h * yx);\n h = Math.abs(h_w * xy) + Math.abs(h_h * yy);\n }\n if (!target) {\n target = new BBox(0, 0, 0, 0);\n }\n target.x = cx * xx + cy * yx + elements[4] - w;\n target.y = cx * xy + cy * yy + elements[5] - h;\n target.width = w + w;\n target.height = h + h;\n return target;\n };\n Matrix.prototype.toContext = function (ctx) {\n // It's fair to say that matrix multiplications are not cheap.\n // However, updating path definitions on every frame isn't either, so\n // it may be cheaper to just translate paths. It's also fair to\n // say, that most paths will have to be re-rendered anyway, say\n // rectangle paths in a bar chart, where an animation would happen when\n // the data set changes and existing bars are morphed into new ones.\n // Or a pie chart, where old sectors are also morphed into new ones.\n // Same for the line chart. The only plausible case where translating\n // existing paths would be enough, is the scatter chart, where marker\n // icons, typically circles, stay the same size. But if circle radii\n // are bound to some data points, even circle paths would have to be\n // updated. And thus it makes sense to optimize for fewer matrix\n // transforms, where transform matrices of paths are mostly identity\n // matrices and `x`/`y`, `centerX`/`centerY` and similar properties\n // are used to define a path at specific coordinates. And only groups\n // are used to collectively apply a transform to a set of nodes.\n // If the matrix is mostly identity (95% of the time),\n // the `if (this.isIdentity)` check can make this call 3-4 times\n // faster on average: https://jsperf.com/matrix-check-first-vs-always-set\n if (this.identity) {\n return;\n }\n var e = this.elements;\n ctx.transform(e[0], e[1], e[2], e[3], e[4], e[5]);\n };\n Matrix.flyweight = function (elements) {\n if (elements) {\n if (elements instanceof Matrix) {\n Matrix.matrix.setElements(elements.elements);\n }\n else {\n Matrix.matrix.setElements(elements);\n }\n }\n else {\n Matrix.matrix.setIdentityElements();\n }\n return Matrix.matrix;\n };\n Matrix.matrix = new Matrix();\n return Matrix;\n}());\nexport { Matrix };\n","export function createId(instance) {\n var constructor = instance.constructor;\n var className = constructor.className;\n if (!className) {\n throw new Error(\"The \" + constructor + \" is missing the 'className' property.\");\n }\n return className + '-' + (constructor.id = (constructor.id || 0) + 1);\n}\n","var __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nimport { Matrix } from \"./matrix\";\nimport { createId } from \"../util/id\";\nexport var PointerEvents;\n(function (PointerEvents) {\n PointerEvents[PointerEvents[\"All\"] = 0] = \"All\";\n PointerEvents[PointerEvents[\"None\"] = 1] = \"None\";\n})(PointerEvents || (PointerEvents = {}));\n/**\n * Abstract scene graph node.\n * Each node can have zero or one parent and belong to zero or one scene.\n */\nvar Node = /** @class */ (function () {\n function Node() {\n /**\n * Unique node ID in the form `ClassName-NaturalNumber`.\n */\n this.id = createId(this);\n /**\n * Some number to identify this node, typically within a `Group` node.\n * Usually this will be some enum value used as a selector.\n */\n this.tag = NaN;\n /**\n * To simplify the type system (especially in Selections) we don't have the `Parent` node\n * (one that has children). Instead, we mimic HTML DOM, where any node can have children.\n * But we still need to distinguish regular leaf nodes from container leafs somehow.\n */\n this.isContainerNode = false;\n this._children = [];\n // Used to check for duplicate nodes.\n this.childSet = {}; // new Set()\n // These matrices may need to have package level visibility\n // for performance optimization purposes.\n this.matrix = new Matrix();\n this.inverseMatrix = new Matrix();\n this._dirtyTransform = false;\n this._scalingX = 1;\n this._scalingY = 1;\n /**\n * The center of scaling.\n * The default value of `null` means the scaling center will be\n * determined automatically, as the center of the bounding box\n * of a node.\n */\n this._scalingCenterX = null;\n this._scalingCenterY = null;\n this._rotationCenterX = null;\n this._rotationCenterY = null;\n /**\n * Rotation angle in radians.\n * The value is set as is. No normalization to the [-180, 180) or [0, 360)\n * interval is performed.\n */\n this._rotation = 0;\n this._translationX = 0;\n this._translationY = 0;\n /**\n * Each time a property of the node that effects how it renders changes\n * the `dirty` property of the node should be set to `true`. The change\n * to the `dirty` property of the node will propagate up to its parents\n * and eventually to the scene, at which point an animation frame callback\n * will be scheduled to rerender the scene and its nodes and reset the `dirty`\n * flags of all nodes and the {@link Scene._dirty | Scene} back to `false`.\n * Since changes to node properties are not rendered immediately, it's possible\n * to change as many properties on as many nodes as needed and the rendering\n * will still only happen once in the next animation frame callback.\n * The animation frame callback is only scheduled if it hasn't been already.\n */\n this._dirty = true;\n this._visible = true;\n this.pointerEvents = PointerEvents.All;\n }\n /**\n * This is meaningfully faster than `instanceof` and should be the preferred way\n * of checking inside loops.\n * @param node\n */\n Node.isNode = function (node) {\n return node ? node.matrix !== undefined : false;\n };\n Node.prototype._setScene = function (value) {\n this._scene = value;\n var children = this.children;\n var n = children.length;\n for (var i = 0; i < n; i++) {\n children[i]._setScene(value);\n }\n };\n Object.defineProperty(Node.prototype, \"scene\", {\n get: function () {\n return this._scene;\n },\n enumerable: true,\n configurable: true\n });\n Node.prototype._setParent = function (value) {\n this._parent = value;\n };\n Object.defineProperty(Node.prototype, \"parent\", {\n get: function () {\n return this._parent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"children\", {\n get: function () {\n return this._children;\n },\n enumerable: true,\n configurable: true\n });\n Node.prototype.countChildren = function (depth) {\n if (depth === void 0) { depth = Node.MAX_SAFE_INTEGER; }\n if (depth <= 0) {\n return 0;\n }\n var children = this.children;\n var n = children.length;\n var size = n;\n for (var i = 0; i < n; i++) {\n size += children[i].countChildren(depth - 1);\n }\n return size;\n };\n /**\n * Appends one or more new node instances to this parent.\n * If one needs to:\n * - move a child to the end of the list of children\n * - move a child from one parent to another (including parents in other scenes)\n * one should use the {@link insertBefore} method instead.\n * @param nodes A node or nodes to append.\n */\n Node.prototype.append = function (nodes) {\n // Passing a single parameter to an open-ended version of `append`\n // would be 30-35% slower than this.\n if (Node.isNode(nodes)) {\n nodes = [nodes];\n }\n // The function takes an array rather than having open-ended\n // arguments like `...nodes: Node[]` because the latter is\n // transpiled to a function where the `arguments` object\n // is copied to a temporary array inside a loop.\n // So an array is created either way. And if we already have\n // an array of nodes we want to add, we have to use the prohibitively\n // expensive spread operator to pass it to the function,\n // and, on top of that, the copy of the `arguments` is still made.\n var n = nodes.length;\n for (var i = 0; i < n; i++) {\n var node = nodes[i];\n if (node.parent) {\n throw new Error(node + \" already belongs to another parent: \" + node.parent + \".\");\n }\n if (node.scene) {\n throw new Error(node + \" already belongs a scene: \" + node.scene + \".\");\n }\n if (this.childSet[node.id]) {\n // Cast to `any` to avoid `Property 'name' does not exist on type 'Function'`.\n throw new Error(\"Duplicate \" + node.constructor.name + \" node: \" + node);\n }\n this._children.push(node);\n this.childSet[node.id] = true;\n node._setParent(this);\n node._setScene(this.scene);\n }\n this.dirty = true;\n };\n Node.prototype.appendChild = function (node) {\n if (node.parent) {\n throw new Error(node + \" already belongs to another parent: \" + node.parent + \".\");\n }\n if (node.scene) {\n throw new Error(node + \" already belongs to a scene: \" + node.scene + \".\");\n }\n if (this.childSet[node.id]) {\n // Cast to `any` to avoid `Property 'name' does not exist on type 'Function'`.\n throw new Error(\"Duplicate \" + node.constructor.name + \" node: \" + node);\n }\n this._children.push(node);\n this.childSet[node.id] = true;\n node._setParent(this);\n node._setScene(this.scene);\n this.dirty = true;\n return node;\n };\n Node.prototype.removeChild = function (node) {\n if (node.parent === this) {\n var i = this.children.indexOf(node);\n if (i >= 0) {\n this._children.splice(i, 1);\n delete this.childSet[node.id];\n node._setParent();\n node._setScene();\n this.dirty = true;\n return node;\n }\n }\n throw new Error(\"The node to be removed is not a child of this node.\");\n };\n /**\n * Inserts the node `node` before the existing child node `nextNode`.\n * If `nextNode` is null, insert `node` at the end of the list of children.\n * If the `node` belongs to another parent, it is first removed.\n * Returns the `node`.\n * @param node\n * @param nextNode\n */\n Node.prototype.insertBefore = function (node, nextNode) {\n var parent = node.parent;\n if (node.parent) {\n node.parent.removeChild(node);\n }\n if (nextNode && nextNode.parent === this) {\n var i = this.children.indexOf(nextNode);\n if (i >= 0) {\n this._children.splice(i, 0, node);\n this.childSet[node.id] = true;\n node._setParent(this);\n node._setScene(this.scene);\n }\n else {\n throw new Error(nextNode + \" has \" + parent + \" as the parent, \"\n + \"but is not in its list of children.\");\n }\n this.dirty = true;\n }\n else {\n this.append(node);\n }\n return node;\n };\n Object.defineProperty(Node.prototype, \"nextSibling\", {\n get: function () {\n var parent = this.parent;\n if (parent) {\n var children = parent.children;\n var index = children.indexOf(this);\n if (index >= 0 && index <= children.length - 1) {\n return children[index + 1];\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Node.prototype.transformPoint = function (x, y) {\n var matrix = Matrix.flyweight(this.matrix);\n var parent = this.parent;\n while (parent) {\n matrix.preMultiplySelf(parent.matrix);\n parent = parent.parent;\n }\n return matrix.invertSelf().transformPoint(x, y);\n };\n Node.prototype.inverseTransformPoint = function (x, y) {\n var matrix = Matrix.flyweight(this.matrix);\n var parent = this.parent;\n while (parent) {\n matrix.preMultiplySelf(parent.matrix);\n parent = parent.parent;\n }\n return matrix.transformPoint(x, y);\n };\n Object.defineProperty(Node.prototype, \"dirtyTransform\", {\n get: function () {\n return this._dirtyTransform;\n },\n set: function (value) {\n this._dirtyTransform = value;\n if (value) {\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"scalingX\", {\n get: function () {\n return this._scalingX;\n },\n set: function (value) {\n if (this._scalingX !== value) {\n this._scalingX = value;\n this.dirtyTransform = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"scalingY\", {\n get: function () {\n return this._scalingY;\n },\n set: function (value) {\n if (this._scalingY !== value) {\n this._scalingY = value;\n this.dirtyTransform = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"scalingCenterX\", {\n get: function () {\n return this._scalingCenterX;\n },\n set: function (value) {\n if (this._scalingCenterX !== value) {\n this._scalingCenterX = value;\n this.dirtyTransform = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"scalingCenterY\", {\n get: function () {\n return this._scalingCenterY;\n },\n set: function (value) {\n if (this._scalingCenterY !== value) {\n this._scalingCenterY = value;\n this.dirtyTransform = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"rotationCenterX\", {\n get: function () {\n return this._rotationCenterX;\n },\n set: function (value) {\n if (this._rotationCenterX !== value) {\n this._rotationCenterX = value;\n this.dirtyTransform = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"rotationCenterY\", {\n get: function () {\n return this._rotationCenterY;\n },\n set: function (value) {\n if (this._rotationCenterY !== value) {\n this._rotationCenterY = value;\n this.dirtyTransform = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"rotation\", {\n get: function () {\n return this._rotation;\n },\n set: function (value) {\n if (this._rotation !== value) {\n this._rotation = value;\n this.dirtyTransform = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"rotationDeg\", {\n get: function () {\n return this.rotation / Math.PI * 180;\n },\n /**\n * For performance reasons the rotation angle's internal representation\n * is in radians. Therefore, don't expect to get the same number you set.\n * Even with integer angles about a quarter of them from 0 to 359 cannot\n * be converted to radians and back without precision loss.\n * For example:\n *\n * node.rotationDeg = 11;\n * console.log(node.rotationDeg); // 10.999999999999998\n *\n * @param value Rotation angle in degrees.\n */\n set: function (value) {\n this.rotation = value / 180 * Math.PI;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"translationX\", {\n get: function () {\n return this._translationX;\n },\n set: function (value) {\n if (this._translationX !== value) {\n this._translationX = value;\n this.dirtyTransform = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"translationY\", {\n get: function () {\n return this._translationY;\n },\n set: function (value) {\n if (this._translationY !== value) {\n this._translationY = value;\n this.dirtyTransform = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Node.prototype.containsPoint = function (x, y) {\n return false;\n };\n /**\n * Hit testing method.\n * Recursively checks if the given point is inside this node or any of its children.\n * Returns the first matching node or `undefined`.\n * Nodes that render later (show on top) are hit tested first.\n * @param x\n * @param y\n */\n Node.prototype.pickNode = function (x, y) {\n if (!this.visible || this.pointerEvents === PointerEvents.None || !this.containsPoint(x, y)) {\n return;\n }\n var children = this.children;\n if (children.length) {\n // Nodes added later should be hit-tested first,\n // as they are rendered on top of the previously added nodes.\n for (var i = children.length - 1; i >= 0; i--) {\n var hit = children[i].pickNode(x, y);\n if (hit) {\n return hit;\n }\n }\n }\n else if (!this.isContainerNode) { // a leaf node, but not a container leaf\n return this;\n }\n };\n Node.prototype.computeBBox = function () { return; };\n Node.prototype.computeBBoxCenter = function () {\n var bbox = this.computeBBox && this.computeBBox();\n if (bbox) {\n return [\n bbox.x + bbox.width * 0.5,\n bbox.y + bbox.height * 0.5\n ];\n }\n return [0, 0];\n };\n Node.prototype.computeTransformMatrix = function () {\n // TODO: transforms without center of scaling and rotation correspond directly\n // to `setAttribute('transform', 'translate(tx, ty) rotate(rDeg) scale(sx, sy)')`\n // in SVG. Our use cases will mostly require positioning elements (rects, circles)\n // within a group, rotating groups at right angles (e.g. for axis) and translating\n // groups. We shouldn't even need `scale(1, -1)` (invert vertically), since this\n // can be done using D3-like scales already by inverting the output range.\n // So for now, just assume that centers of scaling and rotation are at the origin.\n // const [bbcx, bbcy] = this.computeBBoxCenter();\n var _a = __read([0, 0], 2), bbcx = _a[0], bbcy = _a[1];\n var sx = this.scalingX;\n var sy = this.scalingY;\n var scx;\n var scy;\n if (sx === 1 && sy === 1) {\n scx = 0;\n scy = 0;\n }\n else {\n scx = this.scalingCenterX === null ? bbcx : this.scalingCenterX;\n scy = this.scalingCenterY === null ? bbcy : this.scalingCenterY;\n }\n var r = this.rotation;\n var cos = Math.cos(r);\n var sin = Math.sin(r);\n var rcx;\n var rcy;\n if (r === 0) {\n rcx = 0;\n rcy = 0;\n }\n else {\n rcx = this.rotationCenterX === null ? bbcx : this.rotationCenterX;\n rcy = this.rotationCenterY === null ? bbcy : this.rotationCenterY;\n }\n var tx = this.translationX;\n var ty = this.translationY;\n // The transform matrix `M` is a result of the following transformations:\n // 1) translate the center of scaling to the origin\n // 2) scale\n // 3) translate back\n // 4) translate the center of rotation to the origin\n // 5) rotate\n // 6) translate back\n // 7) translate\n // (7) (6) (5) (4) (3) (2) (1)\n // | 1 0 tx | | 1 0 rcx | | cos -sin 0 | | 1 0 -rcx | | 1 0 scx | | sx 0 0 | | 1 0 -scx |\n // M = | 0 1 ty | * | 0 1 rcy | * | sin cos 0 | * | 0 1 -rcy | * | 0 1 scy | * | 0 sy 0 | * | 0 1 -scy |\n // | 0 0 1 | | 0 0 1 | | 0 0 1 | | 0 0 1 | | 0 0 1 | | 0 0 0 | | 0 0 1 |\n // Translation after steps 1-4 above:\n var tx4 = scx * (1 - sx) - rcx;\n var ty4 = scy * (1 - sy) - rcy;\n this.dirtyTransform = false;\n this.matrix.setElements([\n cos * sx, sin * sx,\n -sin * sy, cos * sy,\n cos * tx4 - sin * ty4 + rcx + tx,\n sin * tx4 + cos * ty4 + rcy + ty\n ]).inverseTo(this.inverseMatrix);\n };\n Object.defineProperty(Node.prototype, \"dirty\", {\n get: function () {\n return this._dirty;\n },\n set: function (value) {\n // TODO: check if we are already dirty (e.g. if (this._dirty !== value))\n // if we are, then all parents and the scene have been\n // notified already, and we are doing redundant work\n // (but test if this is indeed the case)\n this._dirty = value;\n if (value) {\n if (this.parent) {\n this.parent.dirty = true;\n }\n else if (this.scene) {\n this.scene.dirty = true;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Node.prototype, \"visible\", {\n get: function () {\n return this._visible;\n },\n set: function (value) {\n if (this._visible !== value) {\n this._visible = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Node.MAX_SAFE_INTEGER = Math.pow(2, 53) - 1; // Number.MAX_SAFE_INTEGER\n return Node;\n}());\nexport { Node };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Node } from \"./node\";\nimport { BBox } from \"./bbox\";\nimport { Matrix } from \"./matrix\";\nvar Group = /** @class */ (function (_super) {\n __extends(Group, _super);\n function Group() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.isContainerNode = true;\n _this._opacity = 1;\n return _this;\n }\n Object.defineProperty(Group.prototype, \"opacity\", {\n get: function () {\n return this._opacity;\n },\n set: function (value) {\n value = Math.min(1, Math.max(0, value));\n if (this._opacity !== value) {\n this._opacity = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n // We consider a group to be boundless, thus any point belongs to it.\n Group.prototype.containsPoint = function (x, y) {\n return true;\n };\n Group.prototype.computeBBox = function () {\n var left = Infinity;\n var right = -Infinity;\n var top = Infinity;\n var bottom = -Infinity;\n if (this.dirtyTransform) {\n this.computeTransformMatrix();\n }\n this.children.forEach(function (child) {\n if (!child.visible) {\n return;\n }\n var bbox = child.computeBBox();\n if (!bbox) {\n return;\n }\n if (!(child instanceof Group)) {\n if (child.dirtyTransform) {\n child.computeTransformMatrix();\n }\n var matrix = Matrix.flyweight(child.matrix);\n var parent_1 = child.parent;\n while (parent_1) {\n matrix.preMultiplySelf(parent_1.matrix);\n parent_1 = parent_1.parent;\n }\n matrix.transformBBox(bbox, 0, bbox);\n }\n var x = bbox.x;\n var y = bbox.y;\n if (x < left) {\n left = x;\n }\n if (y < top) {\n top = y;\n }\n if (x + bbox.width > right) {\n right = x + bbox.width;\n }\n if (y + bbox.height > bottom) {\n bottom = y + bbox.height;\n }\n });\n return new BBox(left, top, right - left, bottom - top);\n };\n Group.prototype.render = function (ctx) {\n // A group can have `scaling`, `rotation`, `translation` properties\n // that are applied to the canvas context before children are rendered,\n // so all children can be transformed at once.\n if (this.dirtyTransform) {\n this.computeTransformMatrix();\n }\n this.matrix.toContext(ctx);\n var children = this.children;\n var n = children.length;\n ctx.globalAlpha *= this.opacity;\n for (var i = 0; i < n; i++) {\n var child = children[i];\n if (child.visible) {\n ctx.save();\n child.render(ctx);\n ctx.restore();\n }\n }\n // debug\n // this.computeBBox().render(ctx, {\n // label: this.id,\n // resetTransform: true,\n // fillStyle: 'rgba(0, 0, 0, 0.5)'\n // });\n };\n Group.className = 'Group';\n return Group;\n}(Node));\nexport { Group };\n","/**\n * Creates a new object with a `parent` as its prototype\n * and copies properties from the `child` into it.\n * @param parent\n * @param child\n */\nexport function chainObjects(parent, child) {\n var obj = Object.create(parent);\n for (var prop in child) {\n if (child.hasOwnProperty(prop)) {\n obj[prop] = child[prop];\n }\n }\n return obj;\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Node } from \"../node\";\nimport { chainObjects } from \"../../util/object\";\nvar Shape = /** @class */ (function (_super) {\n __extends(Shape, _super);\n function Shape() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.lastInstanceId = 0;\n _this._fillOpacity = 1;\n _this._strokeOpacity = 1;\n _this._fill = Shape.defaultStyles.fill;\n /**\n * Note that `strokeStyle = null` means invisible stroke,\n * while `lineWidth = 0` means no stroke, and sometimes this can mean different things.\n * For example, a rect shape with an invisible stroke may not align to the pixel grid\n * properly because the stroke affects the rules of alignment, and arc shapes forming\n * a pie chart will have a gap between them if they have an invisible stroke, whereas\n * there would be not gap if there was no stroke at all.\n * The preferred way of making the stroke invisible is setting the `lineWidth` to zero,\n * unless specific looks that is achieved by having an invisible stroke is desired.\n */\n _this._stroke = Shape.defaultStyles.stroke;\n _this._strokeWidth = Shape.defaultStyles.strokeWidth;\n _this._lineDash = Shape.defaultStyles.lineDash;\n _this._lineDashOffset = Shape.defaultStyles.lineDashOffset;\n _this._lineCap = Shape.defaultStyles.lineCap;\n _this._lineJoin = Shape.defaultStyles.lineJoin;\n _this._opacity = Shape.defaultStyles.opacity;\n _this.onShadowChange = function () {\n _this.dirty = true;\n };\n _this._fillShadow = Shape.defaultStyles.fillShadow;\n _this._strokeShadow = Shape.defaultStyles.strokeShadow;\n return _this;\n }\n /**\n * Creates a light-weight instance of the given shape (that serves as a template).\n * The created instance only stores the properites set on the instance itself\n * and the rest of the properties come via the prototype chain from the template.\n * This can greatly reduce memory usage in cases where one has many simular shapes,\n * for example, circles of different size, position and color. The exact memory usage\n * reduction will depend on the size of the template and the number of own properties\n * set on its lightweight instances, but will typically be around an order of magnitude\n * or more.\n *\n * Note: template shapes are not supposed to be part of the scene graph (they should not\n * have a parent).\n *\n * @param template\n */\n Shape.createInstance = function (template) {\n var shape = Object.create(template);\n shape._setParent(undefined);\n shape.id = template.id + '-Instance-' + String(++template.lastInstanceId);\n return shape;\n };\n /**\n * Restores the default styles introduced by this subclass.\n */\n Shape.prototype.restoreOwnStyles = function () {\n var styles = this.constructor.defaultStyles;\n var keys = Object.getOwnPropertyNames(styles);\n // getOwnPropertyNames is about 2.5 times faster than\n // for..in with the hasOwnProperty check and in this\n // case, where most properties are inherited, can be\n // more then an order of magnitude faster.\n for (var i = 0, n = keys.length; i < n; i++) {\n var key = keys[i];\n this[key] = styles[key];\n }\n };\n Shape.prototype.restoreAllStyles = function () {\n var styles = this.constructor.defaultStyles;\n for (var property in styles) {\n this[property] = styles[property];\n }\n };\n /**\n * Restores the base class default styles that have been overridden by this subclass.\n */\n Shape.prototype.restoreOverriddenStyles = function () {\n var styles = this.constructor.defaultStyles;\n var protoStyles = Object.getPrototypeOf(styles);\n for (var property in styles) {\n if (styles.hasOwnProperty(property) && protoStyles.hasOwnProperty(property)) {\n this[property] = styles[property];\n }\n }\n };\n Object.defineProperty(Shape.prototype, \"fillOpacity\", {\n get: function () {\n return this._fillOpacity;\n },\n set: function (value) {\n if (this._fillOpacity !== value) {\n this._fillOpacity = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Shape.prototype, \"strokeOpacity\", {\n get: function () {\n return this._strokeOpacity;\n },\n set: function (value) {\n if (this._strokeOpacity !== value) {\n this._strokeOpacity = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Shape.prototype, \"fill\", {\n get: function () {\n return this._fill;\n },\n set: function (value) {\n if (this._fill !== value) {\n this._fill = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Shape.prototype, \"stroke\", {\n get: function () {\n return this._stroke;\n },\n set: function (value) {\n if (this._stroke !== value) {\n this._stroke = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Shape.prototype, \"strokeWidth\", {\n get: function () {\n return this._strokeWidth;\n },\n set: function (value) {\n if (this._strokeWidth !== value) {\n this._strokeWidth = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Shape.prototype, \"alignment\", {\n // An offset value to align to the pixel grid.\n get: function () {\n return Math.floor(this.strokeWidth) % 2 / 2;\n },\n enumerable: true,\n configurable: true\n });\n // Returns the aligned `start` or `length` value.\n // For example: `start` could be `y` and `length` could be `height` of a rectangle.\n Shape.prototype.align = function (alignment, start, length) {\n if (length != undefined) {\n return Math.floor(length) + Math.floor(start % 1 + length % 1);\n }\n return Math.floor(start) + alignment;\n };\n Object.defineProperty(Shape.prototype, \"lineDash\", {\n get: function () {\n return this._lineDash;\n },\n set: function (value) {\n var oldValue = this._lineDash;\n if (oldValue !== value) {\n if (oldValue && value && oldValue.length === value.length) {\n var identical = true;\n var n = value.length;\n for (var i = 0; i < n; i++) {\n if (oldValue[i] !== value[i]) {\n identical = false;\n break;\n }\n }\n if (identical) {\n return;\n }\n }\n this._lineDash = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Shape.prototype, \"lineDashOffset\", {\n get: function () {\n return this._lineDashOffset;\n },\n set: function (value) {\n if (this._lineDashOffset !== value) {\n this._lineDashOffset = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Shape.prototype, \"lineCap\", {\n get: function () {\n return this._lineCap;\n },\n set: function (value) {\n if (this._lineCap !== value) {\n this._lineCap = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Shape.prototype, \"lineJoin\", {\n get: function () {\n return this._lineJoin;\n },\n set: function (value) {\n if (this._lineJoin !== value) {\n this._lineJoin = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Shape.prototype, \"opacity\", {\n get: function () {\n return this._opacity;\n },\n set: function (value) {\n value = Math.min(1, Math.max(0, value));\n if (this._opacity !== value) {\n this._opacity = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Shape.prototype, \"fillShadow\", {\n get: function () {\n return this._fillShadow;\n },\n set: function (value) {\n var oldValue = this._fillShadow;\n if (oldValue !== value) {\n if (oldValue) {\n oldValue.removeEventListener('change', this.onShadowChange);\n }\n if (value) {\n value.addEventListener('change', this.onShadowChange);\n }\n this._fillShadow = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Shape.prototype, \"strokeShadow\", {\n get: function () {\n return this._strokeShadow;\n },\n set: function (value) {\n var oldValue = this._strokeShadow;\n if (oldValue !== value) {\n if (oldValue) {\n oldValue.removeEventListener('change', this.onShadowChange);\n }\n if (value) {\n value.addEventListener('change', this.onShadowChange);\n }\n this._strokeShadow = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Shape.prototype.fillStroke = function (ctx) {\n if (!this.scene) {\n return;\n }\n var pixelRatio = this.scene.canvas.pixelRatio || 1;\n var globalAlpha = ctx.globalAlpha;\n if (this.fill) {\n ctx.fillStyle = this.fill;\n ctx.globalAlpha = globalAlpha * this.opacity * this.fillOpacity;\n // The canvas context scaling (depends on the device's pixel ratio)\n // has no effect on shadows, so we have to account for the pixel ratio\n // manually here.\n var fillShadow = this.fillShadow;\n if (fillShadow && fillShadow.enabled) {\n ctx.shadowColor = fillShadow.color;\n ctx.shadowOffsetX = fillShadow.xOffset * pixelRatio;\n ctx.shadowOffsetY = fillShadow.yOffset * pixelRatio;\n ctx.shadowBlur = fillShadow.blur * pixelRatio;\n }\n ctx.fill();\n }\n ctx.shadowColor = 'rgba(0, 0, 0, 0)';\n if (this.stroke && this.strokeWidth) {\n ctx.strokeStyle = this.stroke;\n ctx.globalAlpha = globalAlpha * this.opacity * this.strokeOpacity;\n ctx.lineWidth = this.strokeWidth;\n if (this.lineDash) {\n ctx.setLineDash(this.lineDash);\n }\n if (this.lineDashOffset) {\n ctx.lineDashOffset = this.lineDashOffset;\n }\n if (this.lineCap) {\n ctx.lineCap = this.lineCap;\n }\n if (this.lineJoin) {\n ctx.lineJoin = this.lineJoin;\n }\n var strokeShadow = this.strokeShadow;\n if (strokeShadow && strokeShadow.enabled) {\n ctx.shadowColor = strokeShadow.color;\n ctx.shadowOffsetX = strokeShadow.xOffset * pixelRatio;\n ctx.shadowOffsetY = strokeShadow.yOffset * pixelRatio;\n ctx.shadowBlur = strokeShadow.blur * pixelRatio;\n }\n ctx.stroke();\n }\n };\n Shape.prototype.containsPoint = function (x, y) {\n return this.isPointInPath(x, y);\n };\n /**\n * Defaults for style properties. Note that properties that affect the position\n * and shape of the node are not considered style properties, for example:\n * `x`, `y`, `width`, `height`, `radius`, `rotation`, etc.\n * Can be used to reset to the original styling after some custom styling\n * has been applied (using the `restoreOwnStyles` and `restoreAllStyles` methods).\n * These static defaults are meant to be inherited by subclasses.\n */\n Shape.defaultStyles = chainObjects({}, {\n fill: 'black',\n stroke: undefined,\n strokeWidth: 0,\n lineDash: undefined,\n lineDashOffset: 0,\n lineCap: undefined,\n lineJoin: undefined,\n opacity: 1,\n fillShadow: undefined,\n strokeShadow: undefined\n });\n return Shape;\n}(Node));\nexport { Shape };\n","// @ts-ignore Suppress tsc error: Property 'sign' does not exist on type 'Math'\nvar sign = Math.sign ? Math.sign : function (x) {\n x = +x;\n if (x === 0 || isNaN(x)) {\n return x;\n }\n return x > 0 ? 1 : -1;\n};\n/**\n * Finds the roots of a parametric linear equation in `t`,\n * where `t` lies in the interval of `[0,1]`.\n */\nexport function linearRoot(a, b) {\n var t = -b / a;\n return (a !== 0 && t >= 0 && t <= 1) ? [t] : [];\n}\n/**\n * Finds the roots of a parametric quadratic equation in `t`,\n * where `t` lies in the interval of `[0,1]`.\n */\nexport function quadraticRoots(a, b, c) {\n if (a === 0) {\n return linearRoot(b, c);\n }\n var D = b * b - 4 * a * c; // The polynomial's discriminant.\n var roots = [];\n if (D === 0) { // A single real root.\n var t = -b / (2 * a);\n if (t >= 0 && t <= 1) {\n roots.push(t);\n }\n }\n else if (D > 0) { // A pair of distinct real roots.\n var rD = Math.sqrt(D);\n var t1 = (-b - rD) / (2 * a);\n var t2 = (-b + rD) / (2 * a);\n if (t1 >= 0 && t1 <= 1) {\n roots.push(t1);\n }\n if (t2 >= 0 && t2 <= 1) {\n roots.push(t2);\n }\n }\n // else -> Complex roots.\n return roots;\n}\n/**\n * Finds the roots of a parametric cubic equation in `t`,\n * where `t` lies in the interval of `[0,1]`.\n * Returns an array of parametric intersection locations along the cubic,\n * excluding out-of-bounds intersections (before or after the end point\n * or in the imaginary plane).\n * An adaptation of http://www.particleincell.com/blog/2013/cubic-line-intersection/\n */\nexport function cubicRoots(a, b, c, d) {\n if (a === 0) {\n return quadraticRoots(b, c, d);\n }\n var A = b / a;\n var B = c / a;\n var C = d / a;\n var Q = (3 * B - A * A) / 9;\n var R = (9 * A * B - 27 * C - 2 * A * A * A) / 54;\n var D = Q * Q * Q + R * R; // The polynomial's discriminant.\n var third = 1 / 3;\n var roots = [];\n if (D >= 0) { // Complex or duplicate roots.\n var rD = Math.sqrt(D);\n var S = sign(R + rD) * Math.pow(Math.abs(R + rD), third);\n var T = sign(R - rD) * Math.pow(Math.abs(R - rD), third);\n var Im = Math.abs(Math.sqrt(3) * (S - T) / 2); // Complex part of the root pair.\n var t = -third * A + (S + T); // A real root.\n if (t >= 0 && t <= 1) {\n roots.push(t);\n }\n if (Im === 0) {\n var t_1 = -third * A - (S + T) / 2; // The real part of a complex root.\n if (t_1 >= 0 && t_1 <= 1) {\n roots.push(t_1);\n }\n }\n }\n else { // Distinct real roots.\n var theta = Math.acos(R / Math.sqrt(-Q * Q * Q));\n var thirdA = third * A;\n var twoSqrtQ = 2 * Math.sqrt(-Q);\n var t1 = twoSqrtQ * Math.cos(third * theta) - thirdA;\n var t2 = twoSqrtQ * Math.cos(third * (theta + 2 * Math.PI)) - thirdA;\n var t3 = twoSqrtQ * Math.cos(third * (theta + 4 * Math.PI)) - thirdA;\n if (t1 >= 0 && t1 <= 1) {\n roots.push(t1);\n }\n if (t2 >= 0 && t2 <= 1) {\n roots.push(t2);\n }\n if (t3 >= 0 && t3 <= 1) {\n roots.push(t3);\n }\n }\n return roots;\n}\n","import { cubicRoots } from \"./polyRoots\";\n/**\n * Returns the intersection point for the given pair of line segments, or null,\n * if the segments are parallel or don't intersect.\n * Based on http://paulbourke.net/geometry/pointlineplane/\n */\nexport function segmentIntersection(ax1, ay1, ax2, ay2, bx1, by1, bx2, by2) {\n var d = (ax2 - ax1) * (by2 - by1) - (ay2 - ay1) * (bx2 - bx1);\n if (d === 0) { // The lines are parallel.\n return null;\n }\n var ua = ((bx2 - bx1) * (ay1 - by1) - (ax1 - bx1) * (by2 - by1)) / d;\n var ub = ((ax2 - ax1) * (ay1 - by1) - (ay2 - ay1) * (ax1 - bx1)) / d;\n if (ua >= 0 && ua <= 1 && ub >= 0 && ub <= 1) {\n return {\n x: ax1 + ua * (ax2 - ax1),\n y: ay1 + ua * (ay2 - ay1)\n };\n }\n return null; // The intersection point is outside either or both segments.\n}\n/**\n * Returns intersection points of the given cubic curve and the line segment.\n * Takes in x/y components of cubic control points and line segment start/end points\n * as parameters.\n */\nexport function cubicSegmentIntersections(px1, py1, px2, py2, px3, py3, px4, py4, x1, y1, x2, y2) {\n var intersections = [];\n // Find line equation coefficients.\n var A = y1 - y2;\n var B = x2 - x1;\n var C = x1 * (y2 - y1) - y1 * (x2 - x1);\n // Find cubic Bezier curve equation coefficients from control points.\n var bx = bezierCoefficients(px1, px2, px3, px4);\n var by = bezierCoefficients(py1, py2, py3, py4);\n var a = A * bx[0] + B * by[0]; // t^3\n var b = A * bx[1] + B * by[1]; // t^2\n var c = A * bx[2] + B * by[2]; // t\n var d = A * bx[3] + B * by[3] + C; // 1\n var roots = cubicRoots(a, b, c, d);\n // Verify that the roots are within bounds of the linear segment.\n for (var i = 0; i < roots.length; i++) {\n var t = roots[i];\n var tt = t * t;\n var ttt = t * tt;\n // Find the cartesian plane coordinates for the parametric root `t`.\n var x = bx[0] * ttt + bx[1] * tt + bx[2] * t + bx[3];\n var y = by[0] * ttt + by[1] * tt + by[2] * t + by[3];\n // The parametric cubic roots we found are intersection points\n // with an infinite line, and so the x/y coordinates above are as well.\n // Make sure the x/y is also within the bounds of the given segment.\n var s = void 0;\n if (x1 !== x2) {\n s = (x - x1) / (x2 - x1);\n }\n else { // the line is vertical\n s = (y - y1) / (y2 - y1);\n }\n if (s >= 0 && s <= 1) {\n intersections.push({ x: x, y: y });\n }\n }\n return intersections;\n}\n/**\n * Returns the given coordinates vector multiplied by the coefficient matrix\n * of the parametric cubic Bézier equation.\n */\nexport function bezierCoefficients(P1, P2, P3, P4) {\n return [\n -P1 + 3 * P2 - 3 * P3 + P4,\n 3 * P1 - 6 * P2 + 3 * P3,\n -3 * P1 + 3 * P2,\n P1 // | 1 0 0 0| |P4|\n ];\n}\n","import { cubicSegmentIntersections, segmentIntersection } from \"./intersection\";\nvar Path2D = /** @class */ (function () {\n function Path2D() {\n // The methods of this class will likely be called many times per animation frame,\n // and any allocation can trigger a GC cycle during animation, so we attempt\n // to minimize the number of allocations.\n this.commands = [];\n this.params = [];\n this._closedPath = false;\n }\n Path2D.prototype.moveTo = function (x, y) {\n if (this.xy) {\n this.xy[0] = x;\n this.xy[1] = y;\n }\n else {\n this.xy = [x, y];\n }\n this.commands.push('M');\n this.params.push(x, y);\n };\n Path2D.prototype.lineTo = function (x, y) {\n if (this.xy) {\n this.commands.push('L');\n this.params.push(x, y);\n this.xy[0] = x;\n this.xy[1] = y;\n }\n else {\n this.moveTo(x, y);\n }\n };\n Path2D.prototype.rect = function (x, y, width, height) {\n this.moveTo(x, y);\n this.lineTo(x + width, y);\n this.lineTo(x + width, y + height);\n this.lineTo(x, y + height);\n this.closePath();\n };\n /**\n * Adds an arc segment to the path definition.\n * https://www.w3.org/TR/SVG11/paths.html#PathDataEllipticalArcCommands\n * @param rx The major-axis radius.\n * @param ry The minor-axis radius.\n * @param rotation The x-axis rotation, expressed in radians.\n * @param fA The large arc flag. `1` to use angle > π.\n * @param fS The sweep flag. `1` for the arc that goes to `x`/`y` clockwise.\n * @param x2 The x coordinate to arc to.\n * @param y2 The y coordinate to arc to.\n */\n Path2D.prototype.arcTo = function (rx, ry, rotation, fA, fS, x2, y2) {\n // Convert from endpoint to center parametrization:\n // https://www.w3.org/TR/SVG/implnote.html#ArcImplementationNotes\n var xy = this.xy;\n if (!xy) {\n return;\n }\n if (rx < 0) {\n rx = -rx;\n }\n if (ry < 0) {\n ry = -ry;\n }\n var x1 = xy[0];\n var y1 = xy[1];\n var hdx = (x1 - x2) / 2;\n var hdy = (y1 - y2) / 2;\n var sinPhi = Math.sin(rotation);\n var cosPhi = Math.cos(rotation);\n var xp = cosPhi * hdx + sinPhi * hdy;\n var yp = -sinPhi * hdx + cosPhi * hdy;\n var ratX = xp / rx;\n var ratY = yp / ry;\n var lambda = ratX * ratX + ratY * ratY;\n var cx = (x1 + x2) / 2;\n var cy = (y1 + y2) / 2;\n var cpx = 0;\n var cpy = 0;\n if (lambda >= 1) {\n lambda = Math.sqrt(lambda);\n rx *= lambda;\n ry *= lambda;\n // me gives lambda == cpx == cpy == 0;\n }\n else {\n lambda = Math.sqrt(1 / lambda - 1);\n if (fA === fS) {\n lambda = -lambda;\n }\n cpx = lambda * rx * ratY;\n cpy = -lambda * ry * ratX;\n cx += cosPhi * cpx - sinPhi * cpy;\n cy += sinPhi * cpx + cosPhi * cpy;\n }\n var theta1 = Math.atan2((yp - cpy) / ry, (xp - cpx) / rx);\n var deltaTheta = Math.atan2((-yp - cpy) / ry, (-xp - cpx) / rx) - theta1;\n // if (fS) {\n // if (deltaTheta <= 0) {\n // deltaTheta += Math.PI * 2;\n // }\n // }\n // else {\n // if (deltaTheta >= 0) {\n // deltaTheta -= Math.PI * 2;\n // }\n // }\n this.cubicArc(cx, cy, rx, ry, rotation, theta1, theta1 + deltaTheta, 1 - fS);\n };\n /**\n * Approximates an elliptical arc with up to four cubic Bézier curves.\n * @param commands The string array to write SVG command letters to.\n * @param params The number array to write SVG command parameters (cubic control points) to.\n * @param cx The x-axis coordinate for the ellipse's center.\n * @param cy The y-axis coordinate for the ellipse's center.\n * @param rx The ellipse's major-axis radius.\n * @param ry The ellipse's minor-axis radius.\n * @param phi The rotation for this ellipse, expressed in radians.\n * @param theta1 The starting angle, measured clockwise from the positive x-axis and expressed in radians.\n * @param theta2 The ending angle, measured clockwise from the positive x-axis and expressed in radians.\n * @param anticlockwise The arc control points are always placed clockwise from `theta1` to `theta2`,\n * even when `theta1 > theta2`, unless this flag is set to `1`.\n */\n Path2D.cubicArc = function (commands, params, cx, cy, rx, ry, phi, theta1, theta2, anticlockwise) {\n if (anticlockwise) {\n var temp = theta1;\n theta1 = theta2;\n theta2 = temp;\n }\n var start = params.length;\n // See https://pomax.github.io/bezierinfo/#circles_cubic\n // Arc of unit circle (start angle = 0, end angle <= π/2) in cubic Bézier coordinates:\n // S = [1, 0]\n // C1 = [1, f]\n // C2 = [cos(θ) + f * sin(θ), sin(θ) - f * cos(θ)]\n // E = [cos(θ), sin(θ)]\n // f = 4/3 * tan(θ/4)\n var f90 = 0.5522847498307935; // f for θ = π/2 is 4/3 * (Math.sqrt(2) - 1)\n var sinTheta1 = Math.sin(theta1);\n var cosTheta1 = Math.cos(theta1);\n var sinPhi = Math.sin(phi);\n var cosPhi = Math.cos(phi);\n var rightAngle = Math.PI / 2;\n // Since we know how to draw an arc of a unit circle with a cubic Bézier,\n // to draw an elliptical arc with arbitrary rotation and radii we:\n // 1) rotate the Bézier coordinates that represent a circular arc by θ\n // 2) scale the circular arc separately along the x/y axes, making it elliptical\n // 3) rotate elliptical arc by φ\n // |cos(φ) -sin(φ)| |sx 0| |cos(θ) -sin(θ)| -> |xx xy|\n // |sin(φ) cos(φ)| | 0 sy| |sin(θ) cos(θ)| -> |yx yy|\n var xx = cosPhi * cosTheta1 * rx - sinPhi * sinTheta1 * ry;\n var yx = sinPhi * cosTheta1 * rx + cosPhi * sinTheta1 * ry;\n var xy = -cosPhi * sinTheta1 * rx - sinPhi * cosTheta1 * ry;\n var yy = -sinPhi * sinTheta1 * rx + cosPhi * cosTheta1 * ry;\n // TODO: what if delta between θ1 and θ2 is greater than 2π?\n // Always draw clockwise from θ1 to θ2.\n theta2 -= theta1;\n if (theta2 < 0) {\n theta2 += Math.PI * 2;\n }\n // Multiplying each point [x, y] by:\n // |xx xy cx| |x|\n // |yx yy cy| |y|\n // | 0 0 1| |1|\n // TODO: This move command may be redundant, if we are already at this point.\n // The coordinates of the point calculated here may differ ever so slightly\n // because of precision error.\n commands.push('M');\n params.push(xx + cx, yx + cy);\n while (theta2 >= rightAngle) {\n theta2 -= rightAngle;\n commands.push('C');\n // Temp workaround for https://bugs.chromium.org/p/chromium/issues/detail?id=993330\n // Revert this commit when fixed ^^.\n var lastX = xy + cx;\n params.push(xx + xy * f90 + cx, yx + yy * f90 + cy, xx * f90 + xy + cx, yx * f90 + yy + cy, Math.abs(lastX) < 1e-8 ? 0 : lastX, yy + cy);\n // Prepend π/2 rotation matrix.\n // |xx xy| | 0 1| -> | xy -xx|\n // |yx yy| |-1 0| -> | yy -yx|\n // [xx, yx, xy, yy] = [xy, yy, -xx, -yx];\n // Compared to swapping with a temp variable, destructuring is:\n // - 10% faster in Chrome 70\n // - 99% slower in Firefox 63\n // Temp variable solution is 45% faster in FF than Chrome.\n // https://jsperf.com/multi-swap\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1165569\n var temp = xx;\n xx = xy;\n xy = -temp;\n temp = yx;\n yx = yy;\n yy = -temp;\n }\n if (theta2) {\n var f = 4 / 3 * Math.tan(theta2 / 4);\n var sinPhi2 = Math.sin(theta2);\n var cosPhi2 = Math.cos(theta2);\n var C2x = cosPhi2 + f * sinPhi2;\n var C2y = sinPhi2 - f * cosPhi2;\n commands.push('C');\n // Temp workaround for https://bugs.chromium.org/p/chromium/issues/detail?id=993330\n // Revert this commit when fixed ^^.\n var lastX = xx * cosPhi2 + xy * sinPhi2 + cx;\n params.push(xx + xy * f + cx, yx + yy * f + cy, xx * C2x + xy * C2y + cx, yx * C2x + yy * C2y + cy, Math.abs(lastX) < 1e-8 ? 0 : lastX, yx * cosPhi2 + yy * sinPhi2 + cy);\n }\n if (anticlockwise) {\n for (var i = start, j = params.length - 2; i < j; i += 2, j -= 2) {\n var temp = params[i];\n params[i] = params[j];\n params[j] = temp;\n temp = params[i + 1];\n params[i + 1] = params[j + 1];\n params[j + 1] = temp;\n }\n }\n };\n Path2D.prototype.cubicArc = function (cx, cy, rx, ry, phi, theta1, theta2, anticlockwise) {\n var commands = this.commands;\n var params = this.params;\n var start = commands.length;\n Path2D.cubicArc(commands, params, cx, cy, rx, ry, phi, theta1, theta2, anticlockwise);\n var x = params[params.length - 2];\n var y = params[params.length - 1];\n if (this.xy) {\n commands[start] = 'L';\n this.xy[0] = x;\n this.xy[1] = y;\n }\n else {\n this.xy = [x, y];\n }\n };\n /**\n * Returns the `[x, y]` coordinates of the curve at `t`.\n * @param points `(n + 1) * 2` control point coordinates for a Bézier curve of n-th order.\n * @param t\n */\n Path2D.prototype.deCasteljau = function (points, t) {\n var n = points.length;\n if (n < 2 || n % 2 === 1) {\n throw new Error('Fewer than two points or not an even count.');\n }\n else if (n === 2 || t === 0) {\n return points.slice(0, 2);\n }\n else if (t === 1) {\n return points.slice(-2);\n }\n else {\n var newPoints = [];\n var last = n - 2;\n for (var i = 0; i < last; i += 2) {\n newPoints.push((1 - t) * points[i] + t * points[i + 2], // x\n (1 - t) * points[i + 1] + t * points[i + 3] // y\n );\n }\n return this.deCasteljau(newPoints, t);\n }\n };\n /**\n * Approximates the given curve using `n` line segments.\n * @param points `(n + 1) * 2` control point coordinates for a Bézier curve of n-th order.\n * @param n\n */\n Path2D.prototype.approximateCurve = function (points, n) {\n var xy = this.deCasteljau(points, 0);\n this.moveTo(xy[0], xy[1]);\n var step = 1 / n;\n for (var t = step; t <= 1; t += step) {\n var xy_1 = this.deCasteljau(points, t);\n this.lineTo(xy_1[0], xy_1[1]);\n }\n };\n /**\n * Adds a quadratic curve segment to the path definition.\n * Note: the given quadratic segment is converted and stored as a cubic one.\n * @param cx x-component of the curve's control point\n * @param cy y-component of the curve's control point\n * @param x x-component of the end point\n * @param y y-component of the end point\n */\n Path2D.prototype.quadraticCurveTo = function (cx, cy, x, y) {\n if (!this.xy) {\n this.moveTo(cx, cy);\n }\n // See https://pomax.github.io/bezierinfo/#reordering\n this.cubicCurveTo((this.xy[0] + 2 * cx) / 3, (this.xy[1] + 2 * cy) / 3, // 1/3 start + 2/3 control\n (2 * cx + x) / 3, (2 * cy + y) / 3, // 2/3 control + 1/3 end\n x, y);\n };\n Path2D.prototype.cubicCurveTo = function (cx1, cy1, cx2, cy2, x, y) {\n if (!this.xy) {\n this.moveTo(cx1, cy1);\n }\n this.commands.push('C');\n this.params.push(cx1, cy1, cx2, cy2, x, y);\n this.xy[0] = x;\n this.xy[1] = y;\n };\n Object.defineProperty(Path2D.prototype, \"closedPath\", {\n get: function () {\n return this._closedPath;\n },\n enumerable: true,\n configurable: true\n });\n Path2D.prototype.closePath = function () {\n if (this.xy) {\n this.xy = undefined;\n this.commands.push('Z');\n this._closedPath = true;\n }\n };\n Path2D.prototype.clear = function () {\n this.commands.length = 0;\n this.params.length = 0;\n this.xy = undefined;\n this._closedPath = false;\n };\n Path2D.prototype.isPointInPath = function (x, y) {\n var commands = this.commands;\n var params = this.params;\n var cn = commands.length;\n // Hit testing using ray casting method, where the ray's origin is some point\n // outside the path. In this case, an offscreen point that is remote enough, so that\n // even if the path itself is large and is partially offscreen, the ray's origin\n // will likely be outside the path anyway. To test if the given point is inside the\n // path or not, we cast a ray from the origin to the given point and check the number\n // of intersections of this segment with the path. If the number of intersections is\n // even, then the ray both entered and exited the path an equal number of times,\n // therefore the point is outside the path, and inside the path, if the number of\n // intersections is odd. Since the path is compound, we check if the ray segment\n // intersects with each of the path's segments, which can be either a line segment\n // (one or no intersection points) or a Bézier curve segment (up to 3 intersection\n // points).\n var ox = -10000;\n var oy = -10000;\n // the starting point of the current path\n var sx = NaN;\n var sy = NaN;\n // the previous point of the current path\n var px = 0;\n var py = 0;\n var intersectionCount = 0;\n for (var ci = 0, pi = 0; ci < cn; ci++) {\n switch (commands[ci]) {\n case 'M':\n if (!isNaN(sx)) {\n if (segmentIntersection(sx, sy, px, py, ox, oy, x, y)) {\n intersectionCount++;\n }\n }\n sx = px = params[pi++];\n sy = py = params[pi++];\n break;\n case 'L':\n if (segmentIntersection(px, py, px = params[pi++], py = params[pi++], ox, oy, x, y)) {\n intersectionCount++;\n }\n break;\n case 'C':\n intersectionCount += cubicSegmentIntersections(px, py, params[pi++], params[pi++], params[pi++], params[pi++], px = params[pi++], py = params[pi++], ox, oy, x, y).length;\n break;\n case 'Z':\n if (!isNaN(sx)) {\n if (segmentIntersection(sx, sy, px, py, ox, oy, x, y)) {\n intersectionCount++;\n }\n }\n break;\n }\n }\n return intersectionCount % 2 === 1;\n };\n Path2D.fromString = function (value) {\n var path = new Path2D();\n path.setFromString(value);\n return path;\n };\n /**\n * Split the SVG path at command letters,\n * then extract the command letter and parameters from each substring.\n * @param value\n */\n Path2D.parseSvgPath = function (value) {\n return value.trim().split(Path2D.splitCommandsRe).map(function (part) {\n var strParams = part.match(Path2D.matchParamsRe);\n return {\n command: part.substr(0, 1),\n params: strParams ? strParams.map(parseFloat) : []\n };\n });\n };\n Path2D.prettifySvgPath = function (value) {\n return Path2D.parseSvgPath(value).map(function (d) { return d.command + d.params.join(','); }).join('\\n');\n };\n /**\n * See https://www.w3.org/TR/SVG11/paths.html\n * @param value\n */\n Path2D.prototype.setFromString = function (value) {\n var _this = this;\n this.clear();\n var parts = Path2D.parseSvgPath(value);\n // Current point.\n var x;\n var y;\n // Last control point. Used to calculate the reflection point\n // for `S`, `s`, `T`, `t` commands.\n var cpx;\n var cpy;\n var lastCommand;\n function checkQuadraticCP() {\n if (!lastCommand.match(Path2D.quadraticCommandRe)) {\n cpx = x;\n cpy = y;\n }\n }\n function checkCubicCP() {\n if (!lastCommand.match(Path2D.cubicCommandRe)) {\n cpx = x;\n cpy = y;\n }\n }\n // But that will make compiler complain about x/y, cpx/cpy\n // being used without being set first.\n parts.forEach(function (part) {\n var p = part.params;\n var n = p.length;\n var i = 0;\n switch (part.command) {\n case 'M':\n _this.moveTo(x = p[i++], y = p[i++]);\n while (i < n) {\n _this.lineTo(x = p[i++], y = p[i++]);\n }\n break;\n case 'm':\n _this.moveTo(x += p[i++], y += p[i++]);\n while (i < n) {\n _this.lineTo(x += p[i++], y += p[i++]);\n }\n break;\n case 'L':\n while (i < n) {\n _this.lineTo(x = p[i++], y = p[i++]);\n }\n break;\n case 'l':\n while (i < n) {\n _this.lineTo(x += p[i++], y += p[i++]);\n }\n break;\n case 'C':\n while (i < n) {\n _this.cubicCurveTo(p[i++], p[i++], cpx = p[i++], cpy = p[i++], x = p[i++], y = p[i++]);\n }\n break;\n case 'c':\n while (i < n) {\n _this.cubicCurveTo(x + p[i++], y + p[i++], cpx = x + p[i++], cpy = y + p[i++], x += p[i++], y += p[i++]);\n }\n break;\n case 'S':\n checkCubicCP();\n while (i < n) {\n _this.cubicCurveTo(x + x - cpx, y + y - cpy, cpx = p[i++], cpy = p[i++], x = p[i++], y = p[i++]);\n }\n break;\n case 's':\n checkCubicCP();\n while (i < n) {\n _this.cubicCurveTo(x + x - cpx, y + y - cpy, cpx = x + p[i++], cpy = y + p[i++], x += p[i++], y += p[i++]);\n }\n break;\n case 'Q':\n while (i < n) {\n _this.quadraticCurveTo(cpx = p[i++], cpy = p[i++], x = p[i++], y = p[i++]);\n }\n break;\n case 'q':\n while (i < n) {\n _this.quadraticCurveTo(cpx = x + p[i++], cpy = y + p[i++], x += p[i++], y += p[i++]);\n }\n break;\n case 'T':\n checkQuadraticCP();\n while (i < n) {\n _this.quadraticCurveTo(cpx = x + x - cpx, cpy = y + y - cpy, x = p[i++], y = p[i++]);\n }\n break;\n case 't':\n checkQuadraticCP();\n while (i < n) {\n _this.quadraticCurveTo(cpx = x + x - cpx, cpy = y + y - cpy, x += p[i++], y += p[i++]);\n }\n break;\n case 'A':\n while (i < n) {\n _this.arcTo(p[i++], p[i++], p[i++] * Math.PI / 180, p[i++], p[i++], x = p[i++], y = p[i++]);\n }\n break;\n case 'a':\n while (i < n) {\n _this.arcTo(p[i++], p[i++], p[i++] * Math.PI / 180, p[i++], p[i++], x += p[i++], y += p[i++]);\n }\n break;\n case 'Z':\n case 'z':\n _this.closePath();\n break;\n case 'H':\n while (i < n) {\n _this.lineTo(x = p[i++], y);\n }\n break;\n case 'h':\n while (i < n) {\n _this.lineTo(x += p[i++], y);\n }\n break;\n case 'V':\n while (i < n) {\n _this.lineTo(x, y = p[i++]);\n }\n break;\n case 'v':\n while (i < n) {\n _this.lineTo(x, y += p[i++]);\n }\n break;\n }\n lastCommand = part.command;\n });\n };\n Path2D.prototype.toString = function () {\n var c = this.commands;\n var p = this.params;\n var cn = c.length;\n var out = [];\n for (var ci = 0, pi = 0; ci < cn; ci++) {\n switch (c[ci]) {\n case 'M':\n out.push('M' + p[pi++] + ',' + p[pi++]);\n break;\n case 'L':\n out.push('L' + p[pi++] + ',' + p[pi++]);\n break;\n case 'C':\n out.push('C' + p[pi++] + ',' + p[pi++] + ' ' +\n p[pi++] + ',' + p[pi++] + ' ' +\n p[pi++] + ',' + p[pi++]);\n break;\n case 'Z':\n out.push('Z');\n break;\n }\n }\n return out.join('');\n };\n Path2D.prototype.toPrettyString = function () {\n return Path2D.prettifySvgPath(this.toString());\n };\n Path2D.prototype.toSvg = function () {\n return Path2D.xmlDeclaration + \"\\n\\n \\n\";\n };\n Path2D.prototype.toDebugSvg = function () {\n var d = Path2D.prettifySvgPath(this.toString());\n return Path2D.xmlDeclaration + \"\\n\\n \\n\";\n };\n /**\n * Returns an array of sub-paths of this Path,\n * where each sub-path is represented exclusively by cubic segments.\n */\n Path2D.prototype.toCubicPaths = function () {\n // Each sub-path is an array of `(n * 3 + 1) * 2` numbers,\n // where `n` is the number of segments.\n var paths = [];\n var params = this.params;\n // current path\n var path;\n // the starting point of the current path\n var sx;\n var sy;\n // the previous point of the current path\n var px;\n var py;\n var i = 0; // current parameter\n this.commands.forEach(function (command) {\n switch (command) {\n case 'M':\n path = [\n sx = px = params[i++],\n sy = py = params[i++]\n ];\n paths.push(path);\n break;\n case 'L':\n var x = params[i++];\n var y = params[i++];\n // Place control points along the line `a + (b - a) * t`\n // at t = 1/3 and 2/3:\n path.push((px + px + x) / 3, (py + py + y) / 3, (px + x + x) / 3, (py + y + y) / 3, px = x, py = y);\n break;\n case 'C':\n path.push(params[i++], params[i++], params[i++], params[i++], px = params[i++], py = params[i++]);\n break;\n case 'Z':\n path.push((px + px + sx) / 3, (py + py + sy) / 3, (px + sx + sx) / 3, (py + sy + sy) / 3, px = sx, py = sy);\n break;\n }\n });\n return paths;\n };\n Path2D.cubicPathToString = function (path) {\n var n = path.length;\n if (!(n % 2 === 0 && (n / 2 - 1) / 2 >= 1)) {\n throw new Error('Invalid path.');\n }\n return 'M' + path.slice(0, 2).join(',') + 'C' + path.slice(2).join(',');\n };\n Path2D.splitCommandsRe = /(?=[AaCcHhLlMmQqSsTtVvZz])/g;\n Path2D.matchParamsRe = /-?[0-9]*\\.?\\d+/g;\n Path2D.quadraticCommandRe = /[QqTt]/;\n Path2D.cubicCommandRe = /[CcSs]/;\n Path2D.xmlDeclaration = '';\n Path2D.xmlns = 'http://www.w3.org/2000/svg';\n return Path2D;\n}());\nexport { Path2D };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Shape } from \"./shape\";\nimport { Path2D } from \"../path2D\";\nvar Path = /** @class */ (function (_super) {\n __extends(Path, _super);\n function Path() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * Declare a path to retain for later rendering and hit testing\n * using custom Path2D class. Think of it as a TypeScript version\n * of the native Path2D (with some differences) that works in all browsers.\n */\n _this.path = new Path2D();\n /**\n * The path only has to be updated when certain attributes change.\n * For example, if transform attributes (such as `translationX`)\n * are changed, we don't have to update the path. The `dirtyPath` flag\n * is how we keep track if the path has to be updated or not.\n */\n _this._dirtyPath = true;\n /**\n * Path definition in SVG path syntax:\n * https://www.w3.org/TR/SVG11/paths.html#DAttribute\n */\n _this._svgPath = '';\n return _this;\n }\n Object.defineProperty(Path.prototype, \"dirtyPath\", {\n get: function () {\n return this._dirtyPath;\n },\n set: function (value) {\n if (this._dirtyPath !== value) {\n this._dirtyPath = value;\n if (value) {\n this.dirty = true;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Path.prototype, \"svgPath\", {\n get: function () {\n return this._svgPath;\n },\n set: function (value) {\n if (this._svgPath !== value) {\n this._svgPath = value;\n this.path.setFromString(value);\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Path.prototype.isPointInPath = function (x, y) {\n var point = this.transformPoint(x, y);\n return this.path.closedPath && this.path.isPointInPath(point.x, point.y);\n };\n Path.prototype.isPointInStroke = function (x, y) {\n return false;\n };\n Path.prototype.updatePath = function () { };\n Path.prototype.render = function (ctx) {\n var scene = this.scene;\n if (this.dirtyTransform) {\n this.computeTransformMatrix();\n }\n // if (scene.debug.renderBoundingBoxes) {\n // const bbox = this.computeBBox();\n // if (bbox) {\n // this.matrix.transformBBox(bbox).render(ctx);\n // }\n // }\n this.matrix.toContext(ctx);\n if (this.dirtyPath) {\n this.updatePath();\n this.dirtyPath = false;\n }\n scene.appendPath(this.path);\n this.fillStroke(ctx);\n this.dirty = false;\n };\n Path.className = 'Path';\n return Path;\n}(Shape));\nexport { Path };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Shape } from \"./shape\";\nimport { chainObjects } from \"../../util/object\";\nimport { BBox } from \"../bbox\";\nvar Line = /** @class */ (function (_super) {\n __extends(Line, _super);\n function Line() {\n var _this = _super.call(this) || this;\n _this._x1 = 0;\n _this._y1 = 0;\n _this._x2 = 0;\n _this._y2 = 0;\n _this.restoreOwnStyles();\n return _this;\n }\n Object.defineProperty(Line.prototype, \"x1\", {\n get: function () {\n // TODO: Investigate getter performance further in the context\n // of the scene graph.\n // In isolated benchmarks using a getter has the same\n // performance as a direct property access in Firefox 64.\n // But in Chrome 71 the getter is 60% slower than direct access.\n // Direct read is 4.5+ times slower in Chrome than it is in Firefox.\n // Property access and direct read have the same performance\n // in Safari 12, which is 2+ times faster than Firefox at this.\n // https://jsperf.com/es5-getters-setters-versus-getter-setter-methods/18\n // This is a know Chrome issue. They say it's not a regression, since\n // the behavior is observed since M60, but jsperf.com history shows the\n // 10x slowdown happened between Chrome 48 and Chrome 57.\n // https://bugs.chromium.org/p/chromium/issues/detail?id=908743\n return this._x1;\n },\n set: function (value) {\n if (this._x1 !== value) {\n this._x1 = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Line.prototype, \"y1\", {\n get: function () {\n return this._y1;\n },\n set: function (value) {\n if (this._y1 !== value) {\n this._y1 = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Line.prototype, \"x2\", {\n get: function () {\n return this._x2;\n },\n set: function (value) {\n if (this._x2 !== value) {\n this._x2 = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Line.prototype, \"y2\", {\n get: function () {\n return this._y2;\n },\n set: function (value) {\n if (this._y2 !== value) {\n this._y2 = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Line.prototype.computeBBox = function () {\n return new BBox(this.x1, this.y1, this.x2 - this.x1, this.y2 - this.y1);\n };\n Line.prototype.isPointInPath = function (x, y) {\n return false;\n };\n Line.prototype.isPointInStroke = function (x, y) {\n return false;\n };\n Line.prototype.render = function (ctx) {\n if (this.dirtyTransform) {\n this.computeTransformMatrix();\n }\n this.matrix.toContext(ctx);\n var x1 = this.x1;\n var y1 = this.y1;\n var x2 = this.x2;\n var y2 = this.y2;\n // Align to the pixel grid if the line is strictly vertical\n // or horizontal (but not both, i.e. a dot).\n if (x1 === x2) {\n var x = Math.round(x1) + Math.floor(this.strokeWidth) % 2 / 2;\n x1 = x;\n x2 = x;\n }\n else if (y1 === y2) {\n var y = Math.round(y1) + Math.floor(this.strokeWidth) % 2 / 2;\n y1 = y;\n y2 = y;\n }\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y2);\n this.fillStroke(ctx);\n this.dirty = false;\n };\n Line.className = 'Line';\n Line.defaultStyles = chainObjects(Shape.defaultStyles, {\n fill: undefined,\n strokeWidth: 1\n });\n return Line;\n}(Shape));\nexport { Line };\n","var __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\n/**\n * Maps a discrete domain to a continuous numeric range.\n * See https://github.com/d3/d3-scale#band-scales for more info.\n */\nvar BandScale = /** @class */ (function () {\n function BandScale() {\n this.type = 'band';\n /**\n * Maps datum to its index in the {@link domain} array.\n * Used to check for duplicate datums (not allowed).\n */\n this.index = new Map();\n /**\n * The output range values for datum at each index.\n */\n this.ordinalRange = [];\n /**\n * Contains unique datums only. Since `{}` is used in place of `Map`\n * for IE11 compatibility, the datums are converted `toString` before\n * the uniqueness check.\n */\n this._domain = [];\n this._range = [0, 1];\n this._bandwidth = 1;\n /**\n * The ratio of the range that is reserved for space between bands.\n */\n this._paddingInner = 0;\n /**\n * The ratio of the range that is reserved for space before the first\n * and after the last band.\n */\n this._paddingOuter = 0;\n this._round = false;\n /**\n * How the leftover range is distributed.\n * `0.5` - equal distribution of space before the first and after the last band,\n * with bands effectively centered within the range.\n */\n this._align = 0.5;\n }\n Object.defineProperty(BandScale.prototype, \"domain\", {\n get: function () {\n return this._domain;\n },\n set: function (values) {\n var domain = this._domain;\n domain.length = 0;\n this.index = new Map();\n var index = this.index;\n // In case one wants to have duplicate domain values, for example, two 'Italy' categories,\n // one should use objects rather than strings for domain values like so:\n // { toString: () => 'Italy' }\n // { toString: () => 'Italy' }\n values.forEach(function (value) {\n if (index.get(value) === undefined) {\n index.set(value, domain.push(value) - 1);\n }\n });\n this.rescale();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BandScale.prototype, \"range\", {\n get: function () {\n return this._range;\n },\n set: function (values) {\n this._range[0] = values[0];\n this._range[1] = values[1];\n this.rescale();\n },\n enumerable: true,\n configurable: true\n });\n BandScale.prototype.ticks = function () {\n return this._domain;\n };\n BandScale.prototype.convert = function (d) {\n var i = this.index.get(d);\n if (i === undefined) {\n return NaN;\n }\n var r = this.ordinalRange[i];\n if (r === undefined) {\n return NaN;\n }\n return r;\n };\n Object.defineProperty(BandScale.prototype, \"bandwidth\", {\n get: function () {\n return this._bandwidth;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BandScale.prototype, \"padding\", {\n get: function () {\n return this._paddingInner;\n },\n set: function (value) {\n value = Math.max(0, Math.min(1, value));\n this._paddingInner = value;\n this._paddingOuter = value;\n this.rescale();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BandScale.prototype, \"paddingInner\", {\n get: function () {\n return this._paddingInner;\n },\n set: function (value) {\n this._paddingInner = Math.max(0, Math.min(1, value)); // [0, 1]\n this.rescale();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BandScale.prototype, \"paddingOuter\", {\n get: function () {\n return this._paddingOuter;\n },\n set: function (value) {\n this._paddingOuter = Math.max(0, Math.min(1, value)); // [0, 1]\n this.rescale();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BandScale.prototype, \"round\", {\n get: function () {\n return this._round;\n },\n set: function (value) {\n this._round = value;\n this.rescale();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BandScale.prototype, \"align\", {\n get: function () {\n return this._align;\n },\n set: function (value) {\n this._align = Math.max(0, Math.min(1, value)); // [0, 1]\n this.rescale();\n },\n enumerable: true,\n configurable: true\n });\n BandScale.prototype.rescale = function () {\n var _a;\n var n = this._domain.length;\n if (!n) {\n return;\n }\n var _b = __read(this._range, 2), a = _b[0], b = _b[1];\n var reversed = b < a;\n if (reversed) {\n _a = __read([b, a], 2), a = _a[0], b = _a[1];\n }\n var step = (b - a) / Math.max(1, n - this._paddingInner + this._paddingOuter * 2);\n if (this._round) {\n step = Math.floor(step);\n }\n a += (b - a - step * (n - this._paddingInner)) * this._align;\n this._bandwidth = step * (1 - this._paddingInner);\n if (this._round) {\n a = Math.round(a);\n this._bandwidth = Math.round(this._bandwidth);\n }\n var values = [];\n for (var i = 0; i < n; i++) {\n values.push(a + step * i);\n }\n this.ordinalRange = reversed ? values.reverse() : values;\n };\n return BandScale;\n}());\nexport { BandScale };\n","import { Node } from \"./node\";\nvar EnterNode = /** @class */ (function () {\n function EnterNode(parent, datum) {\n this.next = null;\n this.scene = parent.scene;\n this.parent = parent;\n this.datum = datum;\n }\n EnterNode.prototype.appendChild = function (node) {\n // This doesn't work without the `strict: true` in the `tsconfig.json`,\n // so we must have two `if` checks below, instead of this single one.\n // if (this.next && !Node.isNode(this.next)) {\n // throw new Error(`${this.next} is not a Node.`);\n // }\n if (this.next === null) {\n return this.parent.insertBefore(node, null);\n }\n if (!Node.isNode(this.next)) {\n throw new Error(this.next + \" is not a Node.\");\n }\n return this.parent.insertBefore(node, this.next);\n };\n EnterNode.prototype.insertBefore = function (node, nextNode) {\n return this.parent.insertBefore(node, nextNode);\n };\n return EnterNode;\n}());\nexport { EnterNode };\n/**\n * G - type of the selected node(s).\n * GDatum - type of the datum of the selected node(s).\n * P - type of the parent node(s).\n * PDatum - type of the datum of the parent node(s).\n */\nvar Selection = /** @class */ (function () {\n function Selection(groups, parents) {\n this.groups = groups;\n this.parents = parents;\n }\n Selection.select = function (node) {\n return new Selection([[typeof node === 'function' ? node() : node]], [undefined]);\n };\n Selection.selectAll = function (nodes) {\n return new Selection([nodes == null ? [] : nodes], [undefined]);\n };\n /**\n * Creates new nodes, appends them to the nodes of this selection and returns them\n * as a new selection. The created nodes inherit the datums and the parents of the nodes\n * they replace.\n * @param Class The constructor function to use to create the new nodes.\n */\n Selection.prototype.append = function (Class) {\n return this.select(function (node) {\n return node.appendChild(new Class());\n });\n };\n /**\n * Same as the {@link append}, but accepts a custom creator function with the\n * {@link NodeSelector} signature rather than a constructor function.\n * @param creator\n */\n Selection.prototype.appendFn = function (creator) {\n return this.select(function (node, data, index, group) {\n return node.appendChild(creator(node, data, index, group));\n });\n };\n /**\n * Runs the given selector that returns a single node for every node in each group.\n * The original nodes are then replaced by the nodes returned by the selector\n * and returned as a new selection.\n * The selected nodes inherit the datums and the parents of the original nodes.\n */\n Selection.prototype.select = function (selector) {\n var groups = this.groups;\n var numGroups = groups.length;\n var subgroups = [];\n for (var j = 0; j < numGroups; j++) {\n var group = groups[j];\n var groupSize = group.length;\n var subgroup = subgroups[j] = new Array(groupSize);\n for (var i = 0; i < groupSize; i++) {\n var node = group[i];\n if (node) {\n var subnode = selector(node, node.datum, i, group);\n if (subnode) {\n subnode.datum = node.datum;\n }\n subgroup[i] = subnode;\n }\n // else this can be a group of the `enter` selection,\n // for example, with no nodes at the i-th position,\n // only nodes at the end of the group\n }\n }\n return new Selection(subgroups, this.parents);\n };\n /**\n * Same as {@link select}, but uses the given {@param Class} (constructor) as a selector.\n * @param Class The constructor function to use to find matching nodes.\n */\n Selection.prototype.selectByClass = function (Class) {\n return this.select(function (node) {\n if (Node.isNode(node)) {\n var children = node.children;\n var n = children.length;\n for (var i = 0; i < n; i++) {\n var child = children[i];\n if (child instanceof Class) {\n return child;\n }\n }\n }\n });\n };\n Selection.prototype.selectByTag = function (tag) {\n return this.select(function (node) {\n if (Node.isNode(node)) {\n var children = node.children;\n var n = children.length;\n for (var i = 0; i < n; i++) {\n var child = children[i];\n if (child.tag === tag) {\n return child;\n }\n }\n }\n });\n };\n Selection.prototype.selectAllByClass = function (Class) {\n return this.selectAll(function (node) {\n var nodes = [];\n if (Node.isNode(node)) {\n var children = node.children;\n var n = children.length;\n for (var i = 0; i < n; i++) {\n var child = children[i];\n if (child instanceof Class) {\n nodes.push(child);\n }\n }\n }\n return nodes;\n });\n };\n Selection.prototype.selectAllByTag = function (tag) {\n return this.selectAll(function (node) {\n var nodes = [];\n if (Node.isNode(node)) {\n var children = node.children;\n var n = children.length;\n for (var i = 0; i < n; i++) {\n var child = children[i];\n if (child.tag === tag) {\n nodes.push(child);\n }\n }\n }\n return nodes;\n });\n };\n Selection.prototype.selectNone = function () {\n return [];\n };\n /**\n * Runs the given selector that returns a group of nodes for every node in each group.\n * The original nodes are then replaced by the groups of nodes returned by the selector\n * and returned as a new selection. The original nodes become the parent nodes for each\n * group in the new selection. The selected nodes do not inherit the datums of the original nodes.\n * If called without any parameters, creates a new selection with an empty group for each\n * node in this selection.\n */\n Selection.prototype.selectAll = function (selectorAll) {\n if (!selectorAll) {\n selectorAll = this.selectNone;\n }\n // Each subgroup is populated with the selector (run on each group node) results.\n var subgroups = [];\n // In the new selection that we return, subgroups become groups,\n // and group nodes become parents.\n var parents = [];\n var groups = this.groups;\n var groupCount = groups.length;\n for (var j = 0; j < groupCount; j++) {\n var group = groups[j];\n var groupLength = group.length;\n for (var i = 0; i < groupLength; i++) {\n var node = group[i];\n if (node) {\n subgroups.push(selectorAll(node, node.datum, i, group));\n parents.push(node);\n }\n }\n }\n return new Selection(subgroups, parents);\n };\n /**\n * Runs the given callback for every node in this selection and returns this selection.\n * @param cb\n */\n Selection.prototype.each = function (cb) {\n var groups = this.groups;\n var numGroups = groups.length;\n for (var j = 0; j < numGroups; j++) {\n var group = groups[j];\n var groupSize = group.length;\n for (var i = 0; i < groupSize; i++) {\n var node = group[i];\n if (node) {\n cb(node, node.datum, i, group);\n }\n }\n }\n return this;\n };\n Selection.prototype.remove = function () {\n return this.each(function (node) {\n if (Node.isNode(node)) {\n var parent_1 = node.parent;\n if (parent_1) {\n parent_1.removeChild(node);\n }\n }\n });\n };\n Selection.prototype.merge = function (other) {\n var groups0 = this.groups;\n var groups1 = other.groups;\n var m0 = groups0.length;\n var m1 = groups1.length;\n var m = Math.min(m0, m1);\n var merges = new Array(m0);\n var j = 0;\n for (; j < m; j++) {\n var group0 = groups0[j];\n var group1 = groups1[j];\n var n = group0.length;\n var merge = merges[j] = new Array(n);\n for (var i = 0; i < n; i++) {\n var node = group0[i] || group1[i];\n merge[i] = node || undefined;\n }\n }\n for (; j < m0; j++) {\n merges[j] = groups0[j];\n }\n return new Selection(merges, this.parents);\n };\n /**\n * Return the first non-null element in this selection.\n * If the selection is empty, returns null.\n */\n Selection.prototype.node = function () {\n var groups = this.groups;\n var numGroups = groups.length;\n for (var j = 0; j < numGroups; j++) {\n var group = groups[j];\n var groupSize = group.length;\n for (var i = 0; i < groupSize; i++) {\n var node = group[i];\n if (node) {\n return node;\n }\n }\n }\n return null;\n };\n Selection.prototype.attr = function (name, value) {\n this.each(function (node) {\n node[name] = value;\n });\n return this;\n };\n Selection.prototype.attrFn = function (name, value) {\n this.each(function (node, datum, index, group) {\n node[name] = value(node, datum, index, group);\n });\n return this;\n };\n /**\n * Invokes the given function once, passing in this selection.\n * Returns this selection. Facilitates method chaining.\n * @param cb\n */\n Selection.prototype.call = function (cb) {\n cb(this);\n return this;\n };\n Object.defineProperty(Selection.prototype, \"size\", {\n /**\n * Returns the total number of nodes in this selection.\n */\n get: function () {\n var size = 0;\n this.each(function () { return size++; });\n return size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Selection.prototype, \"data\", {\n /**\n * Returns the array of data for the selected elements.\n */\n get: function () {\n var data = [];\n this.each(function (_, datum) { return data.push(datum); });\n return data;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Selection.prototype, \"enter\", {\n get: function () {\n return new Selection(this.enterGroups ? this.enterGroups : [[]], this.parents);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Selection.prototype, \"exit\", {\n get: function () {\n return new Selection(this.exitGroups ? this.exitGroups : [[]], this.parents);\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Binds the given value to each selected node and returns this selection\n * with its {@link GDatum} type changed to the type of the given value.\n * This method doesn't compute a join and doesn't affect indexes or the enter and exit selections.\n * This method can also be used to clear bound data.\n * @param value\n */\n Selection.prototype.setDatum = function (value) {\n return this.each(function (node) {\n node.datum = value;\n });\n };\n Object.defineProperty(Selection.prototype, \"datum\", {\n /**\n * Returns the bound datum for the first non-null element in the selection.\n * This is generally useful only if you know the selection contains exactly one element.\n */\n get: function () {\n var node = this.node();\n return node ? node.datum : null;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Binds the specified array of values with the selected nodes, returning a new selection\n * that represents the _update_ selection: the nodes successfully bound to the values.\n * Also defines the {@link enter} and {@link exit} selections on the returned selection,\n * which can be used to add or remove the nodes to correspond to the new data.\n * The `values` is an array of values of a particular type, or a function that returns\n * an array of values for each group.\n * When values are assigned to the nodes, they are stored in the {@link Node.datum} property.\n * @param values\n * @param key\n */\n Selection.prototype.setData = function (values, key) {\n if (typeof values !== 'function') {\n var data_1 = values;\n values = function () { return data_1; };\n }\n var groups = this.groups;\n var parents = this.parents;\n var numGroups = groups.length;\n var updateGroups = new Array(numGroups);\n var enterGroups = new Array(numGroups);\n var exitGroups = new Array(numGroups);\n for (var j = 0; j < numGroups; j++) {\n var group = groups[j];\n var parent_2 = parents[j];\n if (!parent_2) {\n throw new Error(\"Group #\" + j + \" has no parent: \" + group);\n }\n var groupSize = group.length;\n var data = values(parent_2, parent_2.datum, j, parents);\n var dataSize = data.length;\n var enterGroup = enterGroups[j] = new Array(dataSize);\n var updateGroup = updateGroups[j] = new Array(dataSize);\n var exitGroup = exitGroups[j] = new Array(groupSize);\n if (key) {\n this.bindKey(parent_2, group, enterGroup, updateGroup, exitGroup, data, key);\n }\n else {\n this.bindIndex(parent_2, group, enterGroup, updateGroup, exitGroup, data);\n }\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0; i0 < dataSize; i0++) {\n var previous = enterGroup[i0];\n if (previous) {\n if (i0 >= i1) {\n i1 = i0 + 1;\n }\n var next = void 0;\n while (!(next = updateGroup[i1]) && i1 < dataSize) {\n i1++;\n }\n previous.next = next || null;\n }\n }\n }\n var result = new Selection(updateGroups, parents);\n result.enterGroups = enterGroups;\n result.exitGroups = exitGroups;\n return result;\n };\n Selection.prototype.bindIndex = function (parent, group, enter, update, exit, data) {\n var groupSize = group.length;\n var dataSize = data.length;\n var i = 0;\n for (; i < dataSize; i++) {\n var node = group[i];\n if (node) {\n node.datum = data[i];\n update[i] = node;\n }\n else { // more datums than group nodes\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n // more group nodes than datums\n for (; i < groupSize; i++) {\n var node = group[i];\n if (node) {\n exit[i] = node;\n }\n }\n };\n Selection.prototype.bindKey = function (parent, group, enter, update, exit, data, key) {\n var groupSize = group.length;\n var dataSize = data.length;\n var keyValues = new Array(groupSize);\n var nodeByKeyValue = {};\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (var i = 0; i < groupSize; i++) {\n var node = group[i];\n if (node) {\n var keyValue = keyValues[i] = Selection.keyPrefix + key(node, node.datum, i, group);\n if (keyValue in nodeByKeyValue) {\n exit[i] = node;\n }\n else {\n nodeByKeyValue[keyValue] = node;\n }\n }\n }\n // Compute the key for each datum.\n // If there is a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (var i = 0; i < dataSize; i++) {\n var keyValue = Selection.keyPrefix + key(parent, data[i], i, data);\n var node = nodeByKeyValue[keyValue];\n if (node) {\n update[i] = node;\n node.datum = data[i];\n nodeByKeyValue[keyValue] = undefined;\n }\n else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n // Add any remaining nodes that were not bound to data to exit.\n for (var i = 0; i < groupSize; i++) {\n var node = group[i];\n if (node && (nodeByKeyValue[keyValues[i]] === node)) {\n exit[i] = node;\n }\n }\n };\n Selection.keyPrefix = '$'; // Protect against keys like '__proto__'.\n return Selection;\n}());\nexport { Selection };\n","/**\n * Wraps the native Canvas element and overrides its CanvasRenderingContext2D to\n * provide resolution independent rendering based on `window.devicePixelRatio`.\n */\nvar HdpiCanvas = /** @class */ (function () {\n // The width/height attributes of the Canvas element default to\n // 300/150 according to w3.org.\n function HdpiCanvas(document, width, height) {\n if (document === void 0) { document = window.document; }\n if (width === void 0) { width = 600; }\n if (height === void 0) { height = 300; }\n this._container = undefined;\n // `NaN` is deliberate here, so that overrides are always applied\n // and the `resetTransform` inside the `resize` method works in IE11.\n this._pixelRatio = NaN;\n this._width = 100;\n this._height = 100;\n this.document = document;\n this.element = document.createElement('canvas');\n this.context = this.element.getContext('2d');\n this.element.style.userSelect = 'none';\n this.element.style.display = 'block';\n this.setPixelRatio();\n this.resize(width, height);\n }\n Object.defineProperty(HdpiCanvas.prototype, \"container\", {\n get: function () {\n return this._container;\n },\n set: function (value) {\n if (this._container !== value) {\n this.remove();\n if (value) {\n value.appendChild(this.element);\n }\n this._container = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n HdpiCanvas.prototype.remove = function () {\n var parentNode = this.element.parentNode;\n if (parentNode != null) {\n parentNode.removeChild(this.element);\n }\n };\n HdpiCanvas.prototype.destroy = function () {\n this.element.remove();\n this._canvas = undefined;\n Object.freeze(this);\n };\n HdpiCanvas.prototype.toImage = function () {\n var img = this.document.createElement('img');\n img.src = this.getDataURL();\n return img;\n };\n HdpiCanvas.prototype.getDataURL = function (type) {\n return this.element.toDataURL(type);\n };\n /**\n * @param fileName The name of the file upon save. The `.png` extension is going to be added automatically.\n */\n HdpiCanvas.prototype.download = function (fileName) {\n fileName = ((fileName || '').trim() || 'image') + '.png';\n // Chart images saved as JPEG are a few times larger at 50% quality than PNG images,\n // so we don't support saving to JPEG.\n var type = 'image/png';\n var dataUrl = this.getDataURL(type);\n var document = this.document;\n var a = document.createElement('a');\n a.href = dataUrl;\n a.download = fileName;\n a.style.display = 'none';\n document.body.appendChild(a); // required for the `click` to work in Firefox\n a.click();\n document.body.removeChild(a);\n };\n Object.defineProperty(HdpiCanvas.prototype, \"pixelRatio\", {\n get: function () {\n return this._pixelRatio;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Changes the pixel ratio of the Canvas element to the given value,\n * or uses the window.devicePixelRatio (default), then resizes the Canvas\n * element accordingly (default).\n */\n HdpiCanvas.prototype.setPixelRatio = function (ratio) {\n var pixelRatio = ratio || window.devicePixelRatio;\n if (pixelRatio === this.pixelRatio) {\n return;\n }\n HdpiCanvas.overrideScale(this.context, pixelRatio);\n this._pixelRatio = pixelRatio;\n this.resize(this.width, this.height);\n };\n Object.defineProperty(HdpiCanvas.prototype, \"pixelated\", {\n get: function () {\n return this.element.style.imageRendering === 'pixelated';\n },\n set: function (value) {\n this.element.style.imageRendering = value ? 'pixelated' : 'auto';\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(HdpiCanvas.prototype, \"width\", {\n get: function () {\n return this._width;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(HdpiCanvas.prototype, \"height\", {\n get: function () {\n return this._height;\n },\n enumerable: true,\n configurable: true\n });\n HdpiCanvas.prototype.resize = function (width, height) {\n if (!(width > 0 && height > 0)) {\n return;\n }\n var _a = this, element = _a.element, context = _a.context, pixelRatio = _a.pixelRatio;\n element.width = Math.round(width * pixelRatio);\n element.height = Math.round(height * pixelRatio);\n element.style.width = width + 'px';\n element.style.height = height + 'px';\n context.resetTransform();\n this._width = width;\n this._height = height;\n };\n Object.defineProperty(HdpiCanvas, \"textMeasuringContext\", {\n get: function () {\n if (this._textMeasuringContext) {\n return this._textMeasuringContext;\n }\n var canvas = document.createElement('canvas');\n return this._textMeasuringContext = canvas.getContext('2d');\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(HdpiCanvas, \"svgText\", {\n get: function () {\n if (this._svgText) {\n return this._svgText;\n }\n var xmlns = 'http://www.w3.org/2000/svg';\n var svg = document.createElementNS(xmlns, 'svg');\n svg.setAttribute('width', '100');\n svg.setAttribute('height', '100');\n // Add a descriptive class name in case someone sees this SVG element\n // in devtools and wonders about its purpose:\n if (svg.classList) {\n svg.classList.add('text-measuring-svg');\n }\n else {\n svg.setAttribute('class', 'text-measuring-svg');\n }\n svg.style.position = 'absolute';\n svg.style.top = '-1000px';\n svg.style.visibility = 'hidden';\n var svgText = document.createElementNS(xmlns, 'text');\n svgText.setAttribute('x', '0');\n svgText.setAttribute('y', '30');\n svgText.setAttribute('text', 'black');\n svg.appendChild(svgText);\n document.body.appendChild(svg);\n this._svgText = svgText;\n return svgText;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(HdpiCanvas, \"has\", {\n get: function () {\n if (this._has) {\n return this._has;\n }\n var isChrome = navigator.userAgent.indexOf('Chrome') > -1;\n var isFirefox = navigator.userAgent.indexOf('Firefox') > -1;\n var isSafari = !isChrome && navigator.userAgent.indexOf('Safari') > -1;\n return this._has = Object.freeze({\n textMetrics: this.textMeasuringContext.measureText('test').actualBoundingBoxDescent !== undefined\n // Firefox implemented advanced TextMetrics object in v74:\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1102584\n // but it's buggy, so we'll keed using the SVG for text measurement in Firefox for now.\n && !isFirefox && !isSafari,\n getTransform: this.textMeasuringContext.getTransform !== undefined\n });\n },\n enumerable: true,\n configurable: true\n });\n HdpiCanvas.measureText = function (text, font, textBaseline, textAlign) {\n var ctx = this.textMeasuringContext;\n ctx.font = font;\n ctx.textBaseline = textBaseline;\n ctx.textAlign = textAlign;\n return ctx.measureText(text);\n };\n /**\n * Returns the width and height of the measured text.\n * @param text The single-line text to measure.\n * @param font The font shorthand string.\n */\n HdpiCanvas.getTextSize = function (text, font) {\n if (this.has.textMetrics) {\n var ctx = this.textMeasuringContext;\n ctx.font = font;\n var metrics = ctx.measureText(text);\n return {\n width: metrics.width,\n height: metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent\n };\n }\n else {\n return this.measureSvgText(text, font);\n }\n };\n HdpiCanvas.measureSvgText = function (text, font) {\n var cache = this.textSizeCache;\n var fontCache = cache[font];\n // Note: consider not caching the size of numeric strings.\n // For example: if (isNaN(+text)) { // skip\n if (fontCache) {\n var size_1 = fontCache[text];\n if (size_1) {\n return size_1;\n }\n }\n else {\n cache[font] = {};\n }\n var svgText = this.svgText;\n svgText.style.font = font;\n svgText.textContent = text;\n // `getBBox` returns an instance of `SVGRect` with the same `width` and `height`\n // measurements as `DOMRect` instance returned by the `getBoundingClientRect`.\n // But the `SVGRect` instance has half the properties of the `DOMRect`,\n // so we use the `getBBox` method.\n var bbox = svgText.getBBox();\n var size = {\n width: bbox.width,\n height: bbox.height\n };\n cache[font][text] = size;\n return size;\n };\n HdpiCanvas.overrideScale = function (ctx, scale) {\n var depth = 0;\n var overrides = {\n save: function () {\n this.$save();\n depth++;\n },\n restore: function () {\n if (depth > 0) {\n this.$restore();\n depth--;\n }\n },\n setTransform: function (a, b, c, d, e, f) {\n this.$setTransform(a * scale, b * scale, c * scale, d * scale, e * scale, f * scale);\n },\n resetTransform: function () {\n // As of Jan 8, 2019, `resetTransform` is still an \"experimental technology\",\n // and doesn't work in IE11 and Edge 44.\n this.$setTransform(scale, 0, 0, scale, 0, 0);\n this.save();\n depth = 0;\n // The scale above will be impossible to restore,\n // because we override the `ctx.restore` above and\n // check `depth` there.\n }\n };\n for (var name_1 in overrides) {\n if (overrides.hasOwnProperty(name_1)) {\n // Save native methods under prefixed names,\n // if this hasn't been done by the previous overrides already.\n if (!ctx['$' + name_1]) {\n ctx['$' + name_1] = ctx[name_1];\n }\n // Replace native methods with overrides,\n // or previous overrides with the new ones.\n ctx[name_1] = overrides[name_1];\n }\n }\n };\n HdpiCanvas.textSizeCache = {};\n return HdpiCanvas;\n}());\nexport { HdpiCanvas };\n","var __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nimport { HdpiCanvas } from \"../canvas/hdpiCanvas\";\nimport { createId } from \"../util/id\";\nvar Scene = /** @class */ (function () {\n // As a rule of thumb, constructors with no parameters are preferred.\n // A few exceptions are:\n // - we absolutely need to know something at construction time (document)\n // - knowing something at construction time meaningfully improves performance (width, height)\n function Scene(document, width, height) {\n var _this = this;\n if (document === void 0) { document = window.document; }\n this.id = createId(this);\n this._dirty = false;\n this.animationFrameId = 0;\n this._root = null;\n this.debug = {\n renderFrameIndex: false,\n renderBoundingBoxes: false\n };\n this._frameIndex = 0;\n this.render = function () {\n var _a;\n var _b = _this, ctx = _b.ctx, root = _b.root, pendingSize = _b.pendingSize;\n _this.animationFrameId = 0;\n if (pendingSize) {\n (_a = _this.canvas).resize.apply(_a, __spread(pendingSize));\n _this.pendingSize = undefined;\n }\n if (root && !root.visible) {\n _this.dirty = false;\n return;\n }\n // start with a blank canvas, clear previous drawing\n ctx.clearRect(0, 0, _this.width, _this.height);\n if (root) {\n ctx.save();\n if (root.visible) {\n root.render(ctx);\n }\n ctx.restore();\n }\n _this._frameIndex++;\n if (_this.debug.renderFrameIndex) {\n ctx.fillStyle = 'white';\n ctx.fillRect(0, 0, 40, 15);\n ctx.fillStyle = 'black';\n ctx.fillText(_this.frameIndex.toString(), 2, 10);\n }\n _this.dirty = false;\n };\n this.canvas = new HdpiCanvas(document, width, height);\n this.ctx = this.canvas.context;\n }\n Object.defineProperty(Scene.prototype, \"container\", {\n get: function () {\n return this.canvas.container;\n },\n set: function (value) {\n this.canvas.container = value;\n },\n enumerable: true,\n configurable: true\n });\n Scene.prototype.download = function (fileName) {\n this.canvas.download(fileName);\n };\n Scene.prototype.getDataURL = function (type) {\n return this.canvas.getDataURL(type);\n };\n Object.defineProperty(Scene.prototype, \"width\", {\n get: function () {\n return this.pendingSize ? this.pendingSize[0] : this.canvas.width;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Scene.prototype, \"height\", {\n get: function () {\n return this.pendingSize ? this.pendingSize[1] : this.canvas.height;\n },\n enumerable: true,\n configurable: true\n });\n Scene.prototype.resize = function (width, height) {\n width = Math.round(width);\n height = Math.round(height);\n if (width === this.width && height === this.height) {\n return;\n }\n this.pendingSize = [width, height];\n this.dirty = true;\n };\n Object.defineProperty(Scene.prototype, \"dirty\", {\n get: function () {\n return this._dirty;\n },\n set: function (dirty) {\n if (dirty && !this._dirty) {\n this.animationFrameId = requestAnimationFrame(this.render);\n }\n this._dirty = dirty;\n },\n enumerable: true,\n configurable: true\n });\n Scene.prototype.cancelRender = function () {\n if (this.animationFrameId) {\n cancelAnimationFrame(this.animationFrameId);\n this.animationFrameId = 0;\n this._dirty = false;\n }\n };\n Object.defineProperty(Scene.prototype, \"root\", {\n get: function () {\n return this._root;\n },\n set: function (node) {\n if (node === this._root) {\n return;\n }\n if (this._root) {\n this._root._setScene();\n }\n this._root = node;\n if (node) {\n // If `node` is the root node of another scene ...\n if (node.parent === null && node.scene && node.scene !== this) {\n node.scene.root = null;\n }\n node._setScene(this);\n }\n this.dirty = true;\n },\n enumerable: true,\n configurable: true\n });\n Scene.prototype.appendPath = function (path) {\n var ctx = this.ctx;\n var commands = path.commands;\n var params = path.params;\n var n = commands.length;\n var j = 0;\n ctx.beginPath();\n for (var i = 0; i < n; i++) {\n switch (commands[i]) {\n case 'M':\n ctx.moveTo(params[j++], params[j++]);\n break;\n case 'L':\n ctx.lineTo(params[j++], params[j++]);\n break;\n case 'C':\n ctx.bezierCurveTo(params[j++], params[j++], params[j++], params[j++], params[j++], params[j++]);\n break;\n case 'Z':\n ctx.closePath();\n break;\n }\n }\n };\n Object.defineProperty(Scene.prototype, \"frameIndex\", {\n get: function () {\n return this._frameIndex;\n },\n enumerable: true,\n configurable: true\n });\n Scene.className = 'Scene';\n return Scene;\n}());\nexport { Scene };\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};\nvar Observable = /** @class */ (function () {\n function Observable() {\n // Note that these maps can't be specified generically, so they are kept untyped.\n // Some methods in this class only need generics in their signatures, the generics inside the methods\n // are just for clarity. The generics in signatures allow for static type checking of user provided\n // listeners and for type inference, so that the users wouldn't have to specify the type of parameters\n // of their inline lambdas.\n this.allPropertyListeners = new Map(); // property name => property change listener => scopes\n this.allEventListeners = new Map(); // event type => event listener => scopes\n }\n Observable.prototype.addPropertyListener = function (name, listener, scope) {\n if (scope === void 0) { scope = this; }\n var allPropertyListeners = this.allPropertyListeners;\n var propertyListeners = allPropertyListeners.get(name);\n if (!propertyListeners) {\n propertyListeners = new Map();\n allPropertyListeners.set(name, propertyListeners);\n }\n if (!propertyListeners.has(listener)) {\n var scopes_1 = new Set();\n propertyListeners.set(listener, scopes_1);\n }\n var scopes = propertyListeners.get(listener);\n if (scopes) {\n scopes.add(scope);\n }\n };\n Observable.prototype.removePropertyListener = function (name, listener, scope) {\n if (scope === void 0) { scope = this; }\n var allPropertyListeners = this.allPropertyListeners;\n var propertyListeners = allPropertyListeners.get(name);\n if (propertyListeners) {\n if (listener) {\n var scopes = propertyListeners.get(listener);\n if (scopes) {\n scopes.delete(scope);\n if (!scopes.size) {\n propertyListeners.delete(listener);\n }\n }\n }\n else {\n propertyListeners.clear();\n }\n }\n };\n Observable.prototype.notifyPropertyListeners = function (name, oldValue, value) {\n var _this = this;\n var allPropertyListeners = this.allPropertyListeners;\n var propertyListeners = allPropertyListeners.get(name);\n if (propertyListeners) {\n propertyListeners.forEach(function (scopes, listener) {\n scopes.forEach(function (scope) { return listener.call(scope, { type: name, source: _this, value: value, oldValue: oldValue }); });\n });\n }\n };\n Observable.prototype.addEventListener = function (type, listener, scope) {\n if (scope === void 0) { scope = this; }\n var allEventListeners = this.allEventListeners;\n var eventListeners = allEventListeners.get(type);\n if (!eventListeners) {\n eventListeners = new Map();\n allEventListeners.set(type, eventListeners);\n }\n if (!eventListeners.has(listener)) {\n var scopes_2 = new Set();\n eventListeners.set(listener, scopes_2);\n }\n var scopes = eventListeners.get(listener);\n if (scopes) {\n scopes.add(scope);\n }\n };\n Observable.prototype.removeEventListener = function (type, listener, scope) {\n if (scope === void 0) { scope = this; }\n var allEventListeners = this.allEventListeners;\n var eventListeners = allEventListeners.get(type);\n if (eventListeners) {\n if (listener) {\n var scopes = eventListeners.get(listener);\n if (scopes) {\n scopes.delete(scope);\n if (!scopes.size) {\n eventListeners.delete(listener);\n }\n }\n }\n else {\n eventListeners.clear();\n }\n }\n };\n Observable.prototype.notifyEventListeners = function (types) {\n var _this = this;\n var allEventListeners = this.allEventListeners;\n types.forEach(function (type) {\n var listeners = allEventListeners.get(type);\n if (listeners) {\n listeners.forEach(function (scopes, listener) {\n scopes.forEach(function (scope) { return listener.call(scope, { type: type, source: _this }); });\n });\n }\n });\n };\n // 'source' is added automatically and is always the object this method belongs to.\n Observable.prototype.fireEvent = function (event) {\n var _this = this;\n var listeners = this.allEventListeners.get(event.type);\n if (listeners) {\n listeners.forEach(function (scopes, listener) {\n scopes.forEach(function (scope) { return listener.call(scope, __assign(__assign({}, event), { source: _this })); });\n });\n }\n };\n Observable.privateKeyPrefix = '_';\n return Observable;\n}());\nexport { Observable };\nexport function reactive() {\n var events = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n events[_i] = arguments[_i];\n }\n var debug = events.indexOf('debugger') >= 0;\n return function (target, key) {\n // `target` is either a constructor (static member) or prototype (instance member)\n var privateKey = Observable.privateKeyPrefix + key;\n var privateKeyEvents = privateKey + 'Events';\n if (!target[key]) {\n if (events) {\n target[privateKeyEvents] = events;\n }\n Object.defineProperty(target, key, {\n set: function (value) {\n var oldValue = this[privateKey];\n // This is a way to stop inside the setter by adding the special\n // 'debugger' event to a reactive property, for example:\n // @reactive('layoutChange', 'debugger') title?: Caption;\n if (debug) { // DO NOT REMOVE\n debugger;\n }\n if (value !== oldValue || (typeof value === 'object' && value !== null)) {\n this[privateKey] = value;\n this.notifyPropertyListeners(key, oldValue, value);\n var events_1 = this[privateKeyEvents];\n if (events_1) {\n this.notifyEventListeners(events_1);\n }\n }\n },\n get: function () {\n return this[privateKey];\n },\n enumerable: true,\n configurable: true\n });\n }\n };\n}\n","var Padding = /** @class */ (function () {\n function Padding(top, right, bottom, left) {\n if (top === void 0) { top = 0; }\n if (right === void 0) { right = top; }\n if (bottom === void 0) { bottom = top; }\n if (left === void 0) { left = right; }\n this.top = top;\n this.right = right;\n this.bottom = bottom;\n this.left = left;\n }\n Padding.prototype.clear = function () {\n this.top = this.right = this.bottom = this.left = 0;\n };\n return Padding;\n}());\nexport { Padding };\n","// Simplified version of https://github.com/plotly/fast-isnumeric\n// that doesn't treat number strings with leading/trailing whitespace as numbers.\nexport function isNumber(value) {\n var type = typeof value;\n if (type === 'string') {\n return false;\n }\n else if (type !== 'number') {\n return false;\n }\n // value - value is going to be:\n // - zero, for any finite number\n // - NaN, for NaN, Infinity, -Infinity\n return value - value < 1;\n}\nexport function isNumberObject(value) {\n return !!value && value.hasOwnProperty('valueOf') && isNumber(value.valueOf());\n}\nexport function isNumeric(value) {\n return isNumber(value) || isNumberObject(value);\n}\nexport function isDate(value) {\n return value instanceof Date && !isNaN(+value);\n}\nexport function isString(value) {\n return typeof value === 'string';\n}\nexport function isStringObject(value) {\n return !!value && value.hasOwnProperty('toString') && isString(value.toString());\n}\nexport function isDiscrete(value) {\n return isString(value) || isStringObject(value);\n}\nexport function isContinuous(value) {\n return isNumeric(value) || isDate(value);\n}\nexport function isComparable(value) {\n return isContinuous(value) || isDiscrete(value) && value >= value;\n}\n","export default function (a, b) {\n a = +a;\n b = +b;\n return function (t) { return a * (1 - t) + b * t; };\n}\n","var __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar Color = /** @class */ (function () {\n /**\n * Every color component should be in the [0, 1] range.\n * Some easing functions (such as elastic easing) can overshoot the target value by some amount.\n * So, when animating colors, if the source or target color components are already near\n * or at the edge of the allowed [0, 1] range, it is possible for the intermediate color\n * component value to end up outside of that range mid-animation. For this reason the constructor\n * performs range checking/constraining.\n * @param r Red component.\n * @param g Green component.\n * @param b Blue component.\n * @param a Alpha (opacity) component.\n */\n function Color(r, g, b, a) {\n if (a === void 0) { a = 1; }\n // NaN is treated as 0.\n this.r = Math.min(1, Math.max(0, r || 0));\n this.g = Math.min(1, Math.max(0, g || 0));\n this.b = Math.min(1, Math.max(0, b || 0));\n this.a = Math.min(1, Math.max(0, a || 0));\n }\n /**\n * The given string can be in one of the following formats:\n * - #rgb\n * - #rrggbb\n * - rgb(r, g, b)\n * - rgba(r, g, b, a)\n * - CSS color name such as 'white', 'orange', 'cyan', etc.\n * @param str\n */\n Color.fromString = function (str) {\n // hexadecimal notation\n if (str.indexOf('#') >= 0) { // there can be some leading whitespace\n return Color.fromHexString(str);\n }\n // color name\n var hex = Color.nameToHex[str];\n if (hex) {\n return Color.fromHexString(hex);\n }\n // rgb(a) notation\n if (str.indexOf('rgb') >= 0) {\n return Color.fromRgbaString(str);\n }\n throw new Error(\"Invalid color string: '\" + str + \"'\");\n };\n // See https://drafts.csswg.org/css-color/#hex-notation\n Color.parseHex = function (input) {\n input = input.replace(/ /g, '').slice(1);\n var parts;\n switch (input.length) {\n case 6:\n case 8:\n parts = [];\n for (var i = 0; i < input.length; i += 2) {\n parts.push(parseInt(\"\" + input[i] + input[i + 1], 16));\n }\n break;\n case 3:\n case 4:\n parts = input.split('').map(function (p) { return parseInt(p, 16); }).map(function (p) { return p + p * 16; });\n break;\n }\n if (parts.length >= 3) {\n if (parts.every(function (p) { return p >= 0; })) {\n if (parts.length === 3) {\n parts.push(255);\n }\n return parts;\n }\n }\n };\n Color.fromHexString = function (str) {\n var values = Color.parseHex(str);\n if (values) {\n var _a = __read(values, 4), r = _a[0], g = _a[1], b = _a[2], a = _a[3];\n return new Color(r / 255, g / 255, b / 255, a / 255);\n }\n throw new Error(\"Malformed hexadecimal color string: '\" + str + \"'\");\n };\n Color.stringToRgba = function (str) {\n // Find positions of opening and closing parentheses.\n var _a = __read([NaN, NaN], 2), po = _a[0], pc = _a[1];\n for (var i = 0; i < str.length; i++) {\n var c = str[i];\n if (!po && c === '(') {\n po = i;\n }\n else if (c === ')') {\n pc = i;\n break;\n }\n }\n var contents = po && pc && str.substring(po + 1, pc);\n if (!contents) {\n return;\n }\n var parts = contents.split(',');\n var rgba = [];\n for (var i = 0; i < parts.length; i++) {\n var part = parts[i];\n var value = parseFloat(part);\n if (isNaN(value)) {\n return;\n }\n if (part.indexOf('%') >= 0) { // percentage r, g, or b value\n value = Math.max(0, Math.min(100, value));\n value /= 100;\n }\n else {\n if (i === 3) { // alpha component\n value = Math.max(0, Math.min(1, value));\n }\n else { // absolute r, g, or b value\n value = Math.max(0, Math.min(255, value));\n value /= 255;\n }\n }\n rgba.push(value);\n }\n return rgba;\n };\n Color.fromRgbaString = function (str) {\n var rgba = Color.stringToRgba(str);\n if (rgba) {\n if (rgba.length === 3) {\n return new Color(rgba[0], rgba[1], rgba[2]);\n }\n else if (rgba.length === 4) {\n return new Color(rgba[0], rgba[1], rgba[2], rgba[3]);\n }\n }\n throw new Error(\"Malformed rgb/rgba color string: '\" + str + \"'\");\n };\n Color.fromArray = function (arr) {\n if (arr.length === 4) {\n return new Color(arr[0], arr[1], arr[2], arr[3]);\n }\n if (arr.length === 3) {\n return new Color(arr[0], arr[1], arr[2]);\n }\n throw new Error('The given array should contain 3 or 4 color components (numbers).');\n };\n Color.fromHSB = function (h, s, b, alpha) {\n if (alpha === void 0) { alpha = 1; }\n var rgb = Color.HSBtoRGB(h, s, b);\n return new Color(rgb[0], rgb[1], rgb[2], alpha);\n };\n Color.padHex = function (str) {\n // Can't use `padStart(2, '0')` here because of IE.\n return str.length === 1 ? '0' + str : str;\n };\n Color.prototype.toHexString = function () {\n var hex = '#'\n + Color.padHex(Math.round(this.r * 255).toString(16))\n + Color.padHex(Math.round(this.g * 255).toString(16))\n + Color.padHex(Math.round(this.b * 255).toString(16));\n if (this.a < 1) {\n hex += Color.padHex(Math.round(this.a * 255).toString(16));\n }\n return hex;\n };\n Color.prototype.toRgbaString = function (fractionDigits) {\n if (fractionDigits === void 0) { fractionDigits = 3; }\n var components = [\n Math.round(this.r * 255),\n Math.round(this.g * 255),\n Math.round(this.b * 255)\n ];\n var k = Math.pow(10, fractionDigits);\n if (this.a !== 1) {\n components.push(Math.round(this.a * k) / k);\n return \"rgba(\" + components.join(', ') + \")\";\n }\n return \"rgb(\" + components.join(', ') + \")\";\n };\n Color.prototype.toString = function () {\n if (this.a === 1) {\n return this.toHexString();\n }\n return this.toRgbaString();\n };\n Color.prototype.toHSB = function () {\n return Color.RGBtoHSB(this.r, this.g, this.b);\n };\n /**\n * Converts the given RGB triple to an array of HSB (HSV) components.\n * The hue component will be `NaN` for achromatic colors.\n */\n Color.RGBtoHSB = function (r, g, b) {\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n var S = max !== 0 ? (max - min) / max : 0;\n var H = NaN;\n // min == max, means all components are the same\n // and the color is a shade of gray with no hue (H is NaN)\n if (min !== max) {\n var delta = max - min;\n var rc = (max - r) / delta;\n var gc = (max - g) / delta;\n var bc = (max - b) / delta;\n if (r === max) {\n H = bc - gc;\n }\n else if (g === max) {\n H = 2.0 + rc - bc;\n }\n else {\n H = 4.0 + gc - rc;\n }\n H /= 6.0;\n if (H < 0) {\n H = H + 1.0;\n }\n }\n return [H * 360, S, max];\n };\n /**\n * Converts the given HSB (HSV) triple to an array of RGB components.\n */\n Color.HSBtoRGB = function (H, S, B) {\n if (isNaN(H)) {\n H = 0;\n }\n H = (((H % 360) + 360) % 360) / 360; // normalize hue to [0, 360] interval, then scale to [0, 1]\n var r = 0;\n var g = 0;\n var b = 0;\n if (S === 0) {\n r = g = b = B;\n }\n else {\n var h = (H - Math.floor(H)) * 6;\n var f = h - Math.floor(h);\n var p = B * (1 - S);\n var q = B * (1 - S * f);\n var t = B * (1 - (S * (1 - f)));\n switch (h >> 0) { // discard the floating point part of the number\n case 0:\n r = B;\n g = t;\n b = p;\n break;\n case 1:\n r = q;\n g = B;\n b = p;\n break;\n case 2:\n r = p;\n g = B;\n b = t;\n break;\n case 3:\n r = p;\n g = q;\n b = B;\n break;\n case 4:\n r = t;\n g = p;\n b = B;\n break;\n case 5:\n r = B;\n g = p;\n b = q;\n break;\n }\n }\n return [r, g, b];\n };\n Color.prototype.derive = function (hueShift, saturationFactor, brightnessFactor, opacityFactor) {\n var hsb = Color.RGBtoHSB(this.r, this.g, this.b);\n var b = hsb[2];\n if (b == 0 && brightnessFactor > 1.0) {\n b = 0.05;\n }\n var h = (((hsb[0] + hueShift) % 360) + 360) % 360;\n var s = Math.max(Math.min(hsb[1] * saturationFactor, 1.0), 0.0);\n b = Math.max(Math.min(b * brightnessFactor, 1.0), 0.0);\n var a = Math.max(Math.min(this.a * opacityFactor, 1.0), 0.0);\n var rgba = Color.HSBtoRGB(h, s, b);\n rgba.push(a);\n return Color.fromArray(rgba);\n };\n Color.prototype.brighter = function () {\n return this.derive(0, 1.0, 1.0 / 0.7, 1.0);\n };\n Color.prototype.darker = function () {\n return this.derive(0, 1.0, 0.7, 1.0);\n };\n /**\n * CSS Color Module Level 4:\n * https://drafts.csswg.org/css-color/#named-colors\n */\n Color.nameToHex = Object.freeze({\n aliceblue: '#F0F8FF',\n antiquewhite: '#FAEBD7',\n aqua: '#00FFFF',\n aquamarine: '#7FFFD4',\n azure: '#F0FFFF',\n beige: '#F5F5DC',\n bisque: '#FFE4C4',\n black: '#000000',\n blanchedalmond: '#FFEBCD',\n blue: '#0000FF',\n blueviolet: '#8A2BE2',\n brown: '#A52A2A',\n burlywood: '#DEB887',\n cadetblue: '#5F9EA0',\n chartreuse: '#7FFF00',\n chocolate: '#D2691E',\n coral: '#FF7F50',\n cornflowerblue: '#6495ED',\n cornsilk: '#FFF8DC',\n crimson: '#DC143C',\n cyan: '#00FFFF',\n darkblue: '#00008B',\n darkcyan: '#008B8B',\n darkgoldenrod: '#B8860B',\n darkgray: '#A9A9A9',\n darkgreen: '#006400',\n darkgrey: '#A9A9A9',\n darkkhaki: '#BDB76B',\n darkmagenta: '#8B008B',\n darkolivegreen: '#556B2F',\n darkorange: '#FF8C00',\n darkorchid: '#9932CC',\n darkred: '#8B0000',\n darksalmon: '#E9967A',\n darkseagreen: '#8FBC8F',\n darkslateblue: '#483D8B',\n darkslategray: '#2F4F4F',\n darkslategrey: '#2F4F4F',\n darkturquoise: '#00CED1',\n darkviolet: '#9400D3',\n deeppink: '#FF1493',\n deepskyblue: '#00BFFF',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1E90FF',\n firebrick: '#B22222',\n floralwhite: '#FFFAF0',\n forestgreen: '#228B22',\n fuchsia: '#FF00FF',\n gainsboro: '#DCDCDC',\n ghostwhite: '#F8F8FF',\n gold: '#FFD700',\n goldenrod: '#DAA520',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#ADFF2F',\n grey: '#808080',\n honeydew: '#F0FFF0',\n hotpink: '#FF69B4',\n indianred: '#CD5C5C',\n indigo: '#4B0082',\n ivory: '#FFFFF0',\n khaki: '#F0E68C',\n lavender: '#E6E6FA',\n lavenderblush: '#FFF0F5',\n lawngreen: '#7CFC00',\n lemonchiffon: '#FFFACD',\n lightblue: '#ADD8E6',\n lightcoral: '#F08080',\n lightcyan: '#E0FFFF',\n lightgoldenrodyellow: '#FAFAD2',\n lightgray: '#D3D3D3',\n lightgreen: '#90EE90',\n lightgrey: '#D3D3D3',\n lightpink: '#FFB6C1',\n lightsalmon: '#FFA07A',\n lightseagreen: '#20B2AA',\n lightskyblue: '#87CEFA',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#B0C4DE',\n lightyellow: '#FFFFE0',\n lime: '#00FF00',\n limegreen: '#32CD32',\n linen: '#FAF0E6',\n magenta: '#FF00FF',\n maroon: '#800000',\n mediumaquamarine: '#66CDAA',\n mediumblue: '#0000CD',\n mediumorchid: '#BA55D3',\n mediumpurple: '#9370DB',\n mediumseagreen: '#3CB371',\n mediumslateblue: '#7B68EE',\n mediumspringgreen: '#00FA9A',\n mediumturquoise: '#48D1CC',\n mediumvioletred: '#C71585',\n midnightblue: '#191970',\n mintcream: '#F5FFFA',\n mistyrose: '#FFE4E1',\n moccasin: '#FFE4B5',\n navajowhite: '#FFDEAD',\n navy: '#000080',\n oldlace: '#FDF5E6',\n olive: '#808000',\n olivedrab: '#6B8E23',\n orange: '#FFA500',\n orangered: '#FF4500',\n orchid: '#DA70D6',\n palegoldenrod: '#EEE8AA',\n palegreen: '#98FB98',\n paleturquoise: '#AFEEEE',\n palevioletred: '#DB7093',\n papayawhip: '#FFEFD5',\n peachpuff: '#FFDAB9',\n peru: '#CD853F',\n pink: '#FFC0CB',\n plum: '#DDA0DD',\n powderblue: '#B0E0E6',\n purple: '#800080',\n rebeccapurple: '#663399',\n red: '#FF0000',\n rosybrown: '#BC8F8F',\n royalblue: '#4169E1',\n saddlebrown: '#8B4513',\n salmon: '#FA8072',\n sandybrown: '#F4A460',\n seagreen: '#2E8B57',\n seashell: '#FFF5EE',\n sienna: '#A0522D',\n silver: '#C0C0C0',\n skyblue: '#87CEEB',\n slateblue: '#6A5ACD',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#FFFAFA',\n springgreen: '#00FF7F',\n steelblue: '#4682B4',\n tan: '#D2B48C',\n teal: '#008080',\n thistle: '#D8BFD8',\n tomato: '#FF6347',\n turquoise: '#40E0D0',\n violet: '#EE82EE',\n wheat: '#F5DEB3',\n white: '#FFFFFF',\n whitesmoke: '#F5F5F5',\n yellow: '#FFFF00',\n yellowgreen: '#9ACD32'\n });\n return Color;\n}());\nexport { Color };\n","import number from \"./number\";\nimport { Color } from \"../util/color\";\nexport default function (a, b) {\n if (typeof a === 'string') {\n try {\n a = Color.fromString(a);\n }\n catch (e) {\n a = Color.fromArray([0, 0, 0]);\n }\n }\n if (typeof b === 'string') {\n try {\n b = Color.fromString(b);\n }\n catch (e) {\n b = Color.fromArray([0, 0, 0]);\n }\n }\n var red = number(a.r, b.r);\n var green = number(a.g, b.g);\n var blue = number(a.b, b.b);\n var alpha = number(a.a, b.a);\n return function (t) {\n return Color.fromArray([red(t), green(t), blue(t), alpha(t)]).toRgbaString();\n };\n}\n","import constant from \"./constant\";\nimport number from \"./number\";\nimport date from \"./date\";\nimport array from \"./array\";\nimport object from \"./object\";\nimport color from \"./color\";\nimport { Color } from \"../util/color\";\nexport default function (a, b) {\n var t = typeof b;\n var c;\n if (b == null || t === 'boolean') {\n return constant(b);\n }\n if (t === 'number') {\n return number(a, b);\n }\n if (t === 'string') {\n try {\n c = Color.fromString(b);\n b = c;\n return color(a, b);\n }\n catch (e) {\n // return string(a, b);\n }\n }\n if (b instanceof Color) {\n return color(a, b);\n }\n if (b instanceof Date) {\n return date(a, b);\n }\n if (Array.isArray(b)) {\n return array(a, b);\n }\n if (typeof b.valueOf !== 'function' && typeof b.toString !== 'function' || isNaN(b)) {\n return object(a, b);\n }\n return number(a, b);\n}\n","export default (function (x) { return function () { return x; }; });\n","export default function (a, b) {\n var date = new Date;\n var msA = +a;\n var msB = +b;\n return function (t) {\n date.setTime(msA * (1 - t) + msB * t);\n return date;\n };\n}\n","import value from \"./value\";\nexport default function (a, b) {\n var nb = b ? b.length : 0;\n var na = a ? Math.min(nb, a.length) : 0;\n var x = new Array(na);\n var c = new Array(nb);\n var i;\n for (i = 0; i < na; ++i) {\n x[i] = value(a[i], b[i]);\n }\n for (; i < nb; ++i) {\n c[i] = b[i];\n }\n return function (t) {\n for (i = 0; i < na; ++i) {\n c[i] = x[i](t);\n }\n return c;\n };\n}\n","import value from \"./value\";\nexport default function (a, b) {\n var i = {};\n var c = {};\n var k;\n if (a === null || typeof a !== 'object') {\n a = {};\n }\n if (b === null || typeof b !== 'object') {\n b = {};\n }\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n }\n else {\n c[k] = b[k];\n }\n }\n return function (t) {\n for (k in i) {\n c[k] = i[k](t);\n }\n return c;\n };\n}\n","var __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nimport interpolateValue from \"../interpolate/value\";\nimport interpolateNumber from \"../interpolate/number\";\nexport var constant = function (x) { return function () { return x; }; };\nexport var identity = function (x) { return x; };\nfunction clamper(domain) {\n var _a;\n var a = domain[0];\n var b = domain[domain.length - 1];\n if (a > b) {\n _a = __read([b, a], 2), a = _a[0], b = _a[1];\n }\n return function (x) { return Math.max(a, Math.min(b, x)); };\n}\nvar ContinuousScale = /** @class */ (function () {\n function ContinuousScale() {\n /**\n * The output value of the scale for `undefined` or `NaN` input values.\n */\n this.unknown = undefined;\n this._clamp = identity;\n this._domain = [0, 1];\n this._range = [0, 1];\n this.transform = identity; // transforms domain value\n this.untransform = identity; // untransforms domain value\n this._interpolate = interpolateValue;\n this.rescale();\n }\n Object.defineProperty(ContinuousScale.prototype, \"clamp\", {\n get: function () {\n return this._clamp !== identity;\n },\n set: function (value) {\n this._clamp = value ? clamper(this.domain) : identity;\n },\n enumerable: true,\n configurable: true\n });\n ContinuousScale.prototype.setDomain = function (values) {\n this._domain = Array.prototype.map.call(values, function (v) { return +v; });\n if (this._clamp !== identity) {\n this._clamp = clamper(this.domain);\n }\n this.rescale();\n };\n ContinuousScale.prototype.getDomain = function () {\n return this._domain.slice();\n };\n Object.defineProperty(ContinuousScale.prototype, \"domain\", {\n get: function () {\n return this.getDomain();\n },\n set: function (values) {\n this.setDomain(values);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ContinuousScale.prototype, \"range\", {\n get: function () {\n return this._range.slice();\n },\n set: function (values) {\n this._range = Array.prototype.slice.call(values);\n this.rescale();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ContinuousScale.prototype, \"interpolate\", {\n get: function () {\n return this._interpolate;\n },\n set: function (value) {\n this._interpolate = value;\n this.rescale();\n },\n enumerable: true,\n configurable: true\n });\n ContinuousScale.prototype.rescale = function () {\n this.piecewise = this.bimap;\n this.output = undefined;\n this.input = undefined;\n };\n /**\n * Returns a function that converts `x` in `[a, b]` to `t` in `[0, 1]`. Non-clamping.\n * @param a\n * @param b\n */\n ContinuousScale.prototype.normalize = function (a, b) {\n return (b -= (a = +a))\n ? function (x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n };\n ContinuousScale.prototype.bimap = function (domain, range, interpolate) {\n var x0 = domain[0];\n var x1 = domain[1];\n var y0 = range[0];\n var y1 = range[1];\n var xt;\n var ty;\n if (x1 < x0) {\n xt = this.normalize(x1, x0);\n ty = interpolate(y1, y0);\n }\n else {\n xt = this.normalize(x0, x1);\n ty = interpolate(y0, y1);\n }\n return function (x) { return ty(xt(x)); }; // domain value x --> t in [0, 1] --> range value y\n };\n ContinuousScale.prototype.convert = function (x) {\n x = +x;\n if (isNaN(x)) {\n return this.unknown;\n }\n else {\n if (!this.output) {\n this.output = this.piecewise(this.domain.map(this.transform), this.range, this.interpolate);\n }\n return this.output(this.transform(this._clamp(x)));\n }\n };\n ContinuousScale.prototype.invert = function (y) {\n if (!this.input) {\n this.input = this.piecewise(this.range, this.domain.map(this.transform), interpolateNumber);\n }\n return this._clamp(this.untransform(this.input(y)));\n };\n return ContinuousScale;\n}());\nexport default ContinuousScale;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nexport default function (a, b, count) {\n var step = tickStep(a, b, count);\n a = Math.ceil(a / step) * step;\n b = Math.floor(b / step) * step + step / 2;\n // Add half a step here so that the array returned by `range` includes the last tick.\n return range(a, b, step);\n}\nvar e10 = Math.sqrt(50);\nvar e5 = Math.sqrt(10);\nvar e2 = Math.sqrt(2);\nexport function tickStep(a, b, count) {\n var rawStep = Math.abs(b - a) / Math.max(0, count);\n var step = Math.pow(10, Math.floor(Math.log(rawStep) / Math.LN10)); // = Math.log10(rawStep)\n var error = rawStep / step;\n if (error >= e10) {\n step *= 10;\n }\n else if (error >= e5) {\n step *= 5;\n }\n else if (error >= e2) {\n step *= 2;\n }\n return b < a ? -step : step;\n}\nexport function tickIncrement(a, b, count) {\n var rawStep = (b - a) / Math.max(0, count);\n var power = Math.floor(Math.log(rawStep) / Math.LN10);\n var error = rawStep / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\nvar NumericTicks = /** @class */ (function (_super) {\n __extends(NumericTicks, _super);\n function NumericTicks(fractionDigits, elements) {\n var _this = _super.call(this) || this;\n if (elements) {\n for (var i = 0, n = elements.length; i < n; i++) {\n _this[i] = elements[i];\n }\n }\n _this.fractionDigits = fractionDigits;\n return _this;\n }\n return NumericTicks;\n}(Array));\nexport { NumericTicks };\nfunction range(a, b, step) {\n if (step === void 0) { step = 1; }\n var absStep = Math.abs(step);\n var fractionDigits = (absStep > 0 && absStep < 1)\n ? Math.abs(Math.floor(Math.log(absStep) / Math.LN10))\n : 0;\n var f = Math.pow(10, fractionDigits);\n var n = Math.max(0, Math.ceil((b - a) / step)) || 0;\n var values = new NumericTicks(fractionDigits);\n for (var i = 0; i < n; i++) {\n var value = a + step * i;\n values[i] = Math.round(value * f) / f;\n }\n return values;\n}\n","import { tickStep } from './ticks';\nfunction formatDefault(x, p) {\n var xs = x.toPrecision(p);\n out: for (var n = xs.length, i = 1, i0 = -1, i1 = 0; i < n; ++i) {\n switch (xs[i]) {\n case '.':\n i0 = i1 = i;\n break;\n case '0':\n if (i0 === 0) {\n i0 = i;\n }\n i1 = i;\n break;\n case 'e': break out;\n default:\n if (i0 > 0) {\n i0 = 0;\n }\n break;\n }\n }\n return i0 > 0 ? xs.slice(0, i0) + xs.slice(i1 + 1) : xs;\n}\nvar formatTypes = {\n '': formatDefault,\n // Multiply by 100, and then decimal notation with a percent sign.\n '%': function (x, p) { return (x * 100).toFixed(p); },\n // Binary notation, rounded to integer.\n 'b': function (x) { return Math.round(x).toString(2); },\n // Converts the integer to the corresponding unicode character before printing.\n 'c': function (x) { return String(x); },\n // Decimal notation, rounded to integer.\n 'd': formatDecimal,\n // Exponent notation.\n 'e': function (x, p) { return x.toExponential(p); },\n // Fixed point notation.\n 'f': function (x, p) { return x.toFixed(p); },\n // Either decimal or exponent notation, rounded to significant digits.\n 'g': function (x, p) { return x.toPrecision(p); },\n // Octal notation, rounded to integer.\n 'o': function (x) { return Math.round(x).toString(8); },\n // Multiply by 100, round to significant digits, and then decimal notation with a percent sign.\n 'p': function (x, p) { return formatRounded(x * 100, p); },\n // Decimal notation, rounded to significant digits.\n 'r': formatRounded,\n // Decimal notation with a SI prefix, rounded to significant digits.\n 's': formatPrefixAuto,\n // Hexadecimal notation, using upper-case letters, rounded to integer.\n 'X': function (x) { return Math.round(x).toString(16).toUpperCase(); },\n // Hexadecimal notation, using lower-case letters, rounded to integer.\n 'x': function (x) { return Math.round(x).toString(16); }\n};\nvar prefixes = ['y', 'z', 'a', 'f', 'p', 'n', '\\xB5', 'm', '', 'k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y'];\n/**\n * [[fill]align][sign][#][0][width][grouping_option][.precision][type]\n */\nvar FormatSpecifier = /** @class */ (function () {\n function FormatSpecifier(specifier) {\n if (specifier instanceof FormatSpecifier) {\n this.fill = specifier.fill;\n this.align = specifier.align;\n this.sign = specifier.sign;\n this.symbol = specifier.symbol;\n this.zero = specifier.zero;\n this.width = specifier.width;\n this.comma = specifier.comma;\n this.precision = specifier.precision;\n this.trim = specifier.trim;\n this.type = specifier.type;\n this.string = specifier.string;\n }\n else {\n this.fill = specifier.fill === undefined ? ' ' : String(specifier.fill);\n this.align = specifier.align === undefined ? '>' : String(specifier.align);\n this.sign = specifier.sign === undefined ? '-' : String(specifier.sign);\n this.symbol = specifier.symbol === undefined ? '' : String(specifier.symbol);\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? '' : String(specifier.type);\n this.string = specifier.string;\n }\n }\n return FormatSpecifier;\n}());\nexport { FormatSpecifier };\n// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar formatRegEx = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\nvar interpolateRegEx = /(#\\{(.*?)\\})/g;\nexport function makeFormatSpecifier(specifier) {\n if (specifier instanceof FormatSpecifier) {\n return new FormatSpecifier(specifier);\n }\n var found = false;\n var string = specifier.replace(interpolateRegEx, function () {\n if (!found) {\n specifier = arguments[2];\n found = true;\n }\n return '#{}';\n });\n var match = formatRegEx.exec(specifier);\n if (!match) {\n throw new Error(\"Invalid format: \" + specifier);\n }\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10],\n string: found ? string : undefined\n });\n}\nexport function tickFormat(start, stop, count, specifier) {\n var step = tickStep(start, stop, count);\n var formatSpecifier = makeFormatSpecifier(specifier == undefined ? ',f' : specifier);\n var precision;\n switch (formatSpecifier.type) {\n case 's': {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (formatSpecifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) {\n formatSpecifier.precision = precision;\n }\n return formatPrefix(formatSpecifier, value);\n }\n case '':\n case 'e':\n case 'g':\n case 'p':\n case 'r': {\n if (formatSpecifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) {\n formatSpecifier.precision = precision - +(formatSpecifier.type === 'e');\n }\n break;\n }\n case 'f':\n case '%': {\n if (formatSpecifier.precision == null && !isNaN(precision = precisionFixed(step))) {\n formatSpecifier.precision = precision - +(formatSpecifier.type === '%') * 2;\n }\n break;\n }\n }\n return format(formatSpecifier);\n}\nvar prefixExponent;\nfunction formatPrefixAuto(x, p) {\n if (p === void 0) { p = 0; }\n var d = formatDecimalParts(x, p);\n if (!d) {\n return String(x);\n }\n var coefficient = d[0];\n var exponent = d[1];\n prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3;\n var i = exponent - prefixExponent + 1;\n var n = coefficient.length;\n if (i === n) {\n return coefficient;\n }\n else {\n if (i > n) {\n return coefficient + new Array(i - n + 1).join('0');\n }\n if (i > 0) {\n return coefficient.slice(0, i) + '.' + coefficient.slice(i);\n }\n else {\n var parts = formatDecimalParts(x, Math.max(0, p + i - 1));\n return '0.' + new Array(1 - i).join('0') + parts[0]; // less than 1y!\n }\n }\n}\nfunction formatDecimal(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString('en').replace(/,/g, '')\n : x.toString(10);\n}\nfunction formatGroup(grouping, thousands) {\n return function (value, width) {\n var t = [];\n var i = value.length;\n var j = 0;\n var g = grouping[0];\n var length = 0;\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) {\n g = Math.max(1, width - length);\n }\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) {\n break;\n }\n g = grouping[j = (j + 1) % grouping.length];\n }\n return t.reverse().join(thousands);\n };\n}\nexport function formatNumerals(numerals) {\n return function (value) { return value.replace(/[0-9]/g, function (i) { return numerals[+i]; }); };\n}\n// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nfunction formatTrim(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1 = 0; i < n; ++i) {\n switch (s[i]) {\n case '.':\n i0 = i1 = i;\n break;\n case '0':\n if (i0 === 0) {\n i0 = i;\n }\n i1 = i;\n break;\n default:\n if (!+s[i]) {\n break out;\n }\n if (i0 > 0) {\n i0 = 0;\n }\n break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\nfunction formatRounded(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) {\n return String(x);\n }\n var coefficient = d[0];\n var exponent = d[1];\n if (exponent < 0) {\n return '0.' + new Array(-exponent).join('0') + coefficient;\n }\n else {\n if (coefficient.length > exponent + 1) {\n return coefficient.slice(0, exponent + 1) + '.' + coefficient.slice(exponent + 1);\n }\n else {\n return coefficient + new Array(exponent - coefficient.length + 2).join('0');\n }\n }\n}\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns ['123', 0].\nexport function formatDecimalParts(x, p) {\n var sx = p ? x.toExponential(p - 1) : x.toExponential();\n var i = sx.indexOf('e');\n if (i < 0) { // NaN, ±Infinity\n return undefined;\n }\n var coefficient = sx.slice(0, i);\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +sx.slice(i + 1)\n ];\n}\nfunction identity(x) {\n return x;\n}\nexport var formatDefaultLocale;\nexport var format;\nexport var formatPrefix;\ndefaultLocale({\n thousands: ',',\n grouping: [3],\n currency: ['$', '']\n});\nfunction defaultLocale(definition) {\n formatDefaultLocale = formatLocale(definition);\n format = formatDefaultLocale.format;\n formatPrefix = formatDefaultLocale.formatPrefix;\n}\nfunction exponent(x) {\n var parts = formatDecimalParts(Math.abs(x));\n if (parts) {\n return parts[1];\n }\n return NaN;\n}\nfunction precisionFixed(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\nfunction precisionPrefix(step, value) {\n var x = Math.floor(exponent(value) / 3);\n x = Math.min(8, x);\n x = Math.max(-8, x);\n return Math.max(0, x * 3 - exponent(Math.abs(step)));\n}\nfunction precisionRound(step, max) {\n step = Math.abs(step);\n max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\nexport function formatLocale(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined\n ? identity\n : formatGroup(Array.prototype.map.call(locale.grouping, Number), String(locale.thousands));\n var currencyPrefix = locale.currency === undefined ? '' : String(locale.currency[0]);\n var currencySuffix = locale.currency === undefined ? '' : String(locale.currency[1]);\n var decimal = locale.decimal === undefined ? '.' : String(locale.decimal);\n var numerals = locale.numerals === undefined\n ? identity\n : formatNumerals(Array.prototype.map.call(locale.numerals, String));\n var percent = locale.percent === undefined ? '%' : String(locale.percent);\n var minus = locale.minus === undefined ? '\\u2212' : String(locale.minus);\n var nan = locale.nan === undefined ? 'NaN' : String(locale.nan);\n function newFormat(specifier) {\n var formatSpecifier = makeFormatSpecifier(specifier);\n var fill = formatSpecifier.fill;\n var align = formatSpecifier.align;\n var sign = formatSpecifier.sign;\n var symbol = formatSpecifier.symbol;\n var zero = formatSpecifier.zero;\n var width = formatSpecifier.width;\n var comma = formatSpecifier.comma;\n var precision = formatSpecifier.precision;\n var trim = formatSpecifier.trim;\n var type = formatSpecifier.type;\n // The 'n' type is an alias for ',g'.\n if (type === 'n') {\n comma = true;\n type = 'g';\n }\n else if (!formatTypes[type]) { // The '' type, and any invalid type, is an alias for '.12~g'.\n if (precision === undefined) {\n precision = 12;\n }\n trim = true;\n type = 'g';\n }\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === '0' && align === '=')) {\n zero = true;\n fill = '0';\n align = '=';\n }\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === '$' ? currencyPrefix : symbol === '#' && /[boxX]/.test(type) ? '0' + type.toLowerCase() : '';\n var suffix = symbol === '$' ? currencySuffix : /[%p]/.test(type) ? percent : '';\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type];\n var maybeSuffix = /[defgprs%]/.test(type);\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n if (precision === undefined) {\n precision = 6;\n }\n else if (/[gprs]/.test(type)) {\n precision = Math.max(1, Math.min(21, precision));\n }\n else {\n precision = Math.max(0, Math.min(20, precision));\n }\n function format(x) {\n var valuePrefix = prefix;\n var valueSuffix = suffix;\n var value;\n if (type === 'c') {\n valueSuffix = formatType(+x) + valueSuffix;\n value = '';\n }\n else {\n var nx = +x;\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = x < 0 || 1 / nx < 0;\n // Perform the initial formatting.\n value = isNaN(nx) ? nan : formatType(Math.abs(nx), precision);\n // Trim insignificant zeros.\n if (trim) {\n value = formatTrim(value);\n }\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== '+') {\n valueNegative = false;\n }\n // Compute the prefix and suffix.\n var signPrefix = valueNegative\n ? (sign === '(' ? sign : minus)\n : (sign === '-' || sign === '(' ? '' : sign);\n var signSuffix = valueNegative && sign === '(' ? ')' : '';\n valuePrefix = signPrefix + valuePrefix;\n valueSuffix = (type === 's' ? prefixes[8 + prefixExponent / 3] : '') + valueSuffix + signSuffix;\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n for (var i = 0, n = value.length; i < n; i++) {\n var c = value.charCodeAt(i);\n if (48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n // If the fill character is not '0', grouping is applied before padding.\n if (comma && !zero) {\n value = group(value, Infinity);\n }\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length;\n var padding = length < width ? new Array(width - length + 1).join(fill) : '';\n // If the fill character is '0', grouping is applied after padding.\n if (comma && zero) {\n value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity);\n padding = '';\n }\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case '<':\n value = valuePrefix + value + valueSuffix + padding;\n break;\n case '=':\n value = valuePrefix + padding + value + valueSuffix;\n break;\n case '^':\n value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length);\n break;\n default:\n value = padding + valuePrefix + value + valueSuffix;\n break;\n }\n var string = formatSpecifier.string;\n if (string) {\n return string.replace(interpolateRegEx, function () { return numerals(value); });\n }\n return numerals(value);\n }\n return format;\n }\n function formatPrefix(specifier, value) {\n var formatSpecifier = makeFormatSpecifier(specifier);\n formatSpecifier.type = 'f';\n var f = newFormat(formatSpecifier);\n var e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3;\n var k = Math.pow(10, -e);\n var prefix = prefixes[8 + e / 3];\n return function (value) {\n return f(k * +value) + prefix;\n };\n }\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport ContinuousScale from \"./continuousScale\";\nimport ticks, { tickIncrement } from \"../util/ticks\";\nimport { tickFormat } from \"../util/numberFormat\";\n/**\n * Maps continuous domain to a continuous range.\n */\nvar LinearScale = /** @class */ (function (_super) {\n __extends(LinearScale, _super);\n function LinearScale() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'linear';\n return _this;\n }\n LinearScale.prototype.ticks = function (count) {\n if (count === void 0) { count = 10; }\n var d = this._domain;\n return ticks(d[0], d[d.length - 1], count);\n };\n /**\n * Extends the domain so that it starts and ends on nice round values.\n * @param count Tick count.\n */\n LinearScale.prototype.nice = function (count) {\n if (count === void 0) { count = 10; }\n var d = this.domain;\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var step;\n if (stop < start) {\n step = start;\n start = stop;\n stop = step;\n step = i0;\n i0 = i1;\n i1 = step;\n }\n step = tickIncrement(start, stop, count);\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = tickIncrement(start, stop, count);\n }\n else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = tickIncrement(start, stop, count);\n }\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n this.domain = d;\n }\n else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n this.domain = d;\n }\n };\n LinearScale.prototype.tickFormat = function (count, specifier) {\n var d = this.domain;\n return tickFormat(d[0], d[d.length - 1], count == undefined ? 10 : count, specifier);\n };\n return LinearScale;\n}(ContinuousScale));\nexport { LinearScale };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar t0 = new Date;\nvar t1 = new Date;\n/**\n * The interval methods don't mutate Date parameters.\n */\nvar TimeInterval = /** @class */ (function () {\n function TimeInterval(floor, offset) {\n this._floor = floor;\n this._offset = offset;\n }\n /**\n * Returns a new date representing the latest interval boundary date before or equal to date.\n * For example, `day.floor(date)` typically returns 12:00 AM local time on the given date.\n * @param date\n */\n TimeInterval.prototype.floor = function (date) {\n date = new Date(+date);\n this._floor(date);\n return date;\n };\n /**\n * Returns a new date representing the earliest interval boundary date after or equal to date.\n * @param date\n */\n TimeInterval.prototype.ceil = function (date) {\n date = new Date(+date - 1);\n this._floor(date);\n this._offset(date, 1);\n this._floor(date);\n return date;\n };\n /**\n * Returns a new date representing the closest interval boundary date to date.\n * @param date\n */\n TimeInterval.prototype.round = function (date) {\n var d0 = this.floor(date);\n var d1 = this.ceil(date);\n var ms = +date;\n return ms - d0.getTime() < d1.getTime() - ms ? d0 : d1;\n };\n /**\n * Returns a new date equal to date plus step intervals.\n * @param date\n * @param step\n */\n TimeInterval.prototype.offset = function (date, step) {\n if (step === void 0) { step = 1; }\n date = new Date(+date);\n this._offset(date, Math.floor(step));\n return date;\n };\n /**\n * Returns an array of dates representing every interval boundary after or equal to start (inclusive) and before stop (exclusive).\n * @param start\n * @param stop\n * @param step\n */\n TimeInterval.prototype.range = function (start, stop, step) {\n if (step === void 0) { step = 1; }\n var range = [];\n start = this.ceil(start);\n step = Math.floor(step);\n if (start > stop || step <= 0) {\n return range;\n }\n var previous;\n do {\n previous = new Date(+start);\n range.push(previous);\n this._offset(start, step);\n this._floor(start);\n } while (previous < start && start < stop);\n return range;\n };\n // Returns an interval that is a subset of this interval.\n // For example, to create an interval that return 1st, 11th, 21st and 31st of each month:\n // day.filter(date => (date.getDate() - 1) % 10 === 0)\n TimeInterval.prototype.filter = function (test) {\n var _this = this;\n var floor = function (date) {\n if (date >= date) {\n while (_this._floor(date), !test(date)) {\n date.setTime(date.getTime() - 1);\n }\n }\n return date;\n };\n var offset = function (date, step) {\n if (date >= date) {\n if (step < 0) {\n while (++step <= 0) {\n do {\n _this._offset(date, -1);\n } while (!test(date));\n }\n }\n else {\n while (--step >= 0) {\n do {\n _this._offset(date, 1);\n } while (!test(date));\n }\n }\n }\n return date;\n };\n return new TimeInterval(floor, offset);\n };\n return TimeInterval;\n}());\nexport { TimeInterval };\nvar CountableTimeInterval = /** @class */ (function (_super) {\n __extends(CountableTimeInterval, _super);\n function CountableTimeInterval(floor, offset, count, field) {\n var _this = _super.call(this, floor, offset) || this;\n _this._count = count;\n _this._field = field;\n return _this;\n }\n /**\n * Returns the number of interval boundaries after start (exclusive) and before or equal to end (inclusive).\n * @param start\n * @param end\n */\n CountableTimeInterval.prototype.count = function (start, end) {\n t0.setTime(+start);\n t1.setTime(+end);\n this._floor(t0);\n this._floor(t1);\n return Math.floor(this._count(t0, t1));\n };\n /**\n * Returns a filtered view of this interval representing every step'th date.\n * The meaning of step is dependent on this interval’s parent interval as defined by the `field` function.\n * @param step\n */\n CountableTimeInterval.prototype.every = function (step) {\n var _this = this;\n var result;\n step = Math.floor(step);\n if (isFinite(step) && step > 0) {\n if (step > 1) {\n var field_1 = this._field;\n if (field_1) {\n result = this.filter(function (d) { return field_1(d) % step === 0; });\n }\n else {\n result = this.filter(function (d) { return _this.count(0, d) % step === 0; });\n }\n }\n else {\n result = this;\n }\n }\n return result;\n };\n return CountableTimeInterval;\n}(TimeInterval));\nexport { CountableTimeInterval };\n","import { CountableTimeInterval } from \"./interval\";\nfunction floor(date) {\n return date;\n}\nfunction offset(date, milliseconds) {\n date.setTime(date.getTime() + milliseconds);\n}\nfunction count(start, end) {\n return end.getTime() - start.getTime();\n}\nexport var millisecond = new CountableTimeInterval(floor, offset, count);\nexport default millisecond;\n","// Common time unit sizes in milliseconds.\nexport var durationSecond = 1000;\nexport var durationMinute = durationSecond * 60;\nexport var durationHour = durationMinute * 60;\nexport var durationDay = durationHour * 24;\nexport var durationWeek = durationDay * 7;\nexport var durationMonth = durationDay * 30;\nexport var durationYear = durationDay * 365;\n","import { CountableTimeInterval } from \"./interval\";\nimport { durationSecond } from \"./duration\";\nfunction floor(date) {\n date.setTime(date.getTime() - date.getMilliseconds());\n}\nfunction offset(date, seconds) {\n date.setTime(date.getTime() + seconds * durationSecond);\n}\nfunction count(start, end) {\n return (end.getTime() - start.getTime()) / durationSecond;\n}\nexport var second = new CountableTimeInterval(floor, offset, count);\nexport default second;\n","import { CountableTimeInterval } from \"./interval\";\nimport { durationMinute, durationSecond } from \"./duration\";\nfunction floor(date) {\n date.setTime(date.getTime() - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}\nfunction offset(date, minutes) {\n date.setTime(date.getTime() + minutes * durationMinute);\n}\nfunction count(start, end) {\n return (end.getTime() - start.getTime()) / durationMinute;\n}\nfunction field(date) {\n return date.getMinutes();\n}\nexport var minute = new CountableTimeInterval(floor, offset, count, field);\nexport default minute;\n","import { CountableTimeInterval } from \"./interval\";\nimport { durationHour, durationMinute, durationSecond } from \"./duration\";\nfunction floor(date) {\n date.setTime(date.getTime() - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}\nfunction offset(date, hours) {\n date.setTime(date.getTime() + hours * durationHour);\n}\nfunction count(start, end) {\n return (end.getTime() - start.getTime()) / durationHour;\n}\nfunction field(date) {\n return date.getHours();\n}\nexport var hour = new CountableTimeInterval(floor, offset, count, field);\nexport default hour;\n","import { CountableTimeInterval } from \"./interval\";\nimport { durationDay, durationMinute } from \"./duration\";\nfunction floor(date) {\n date.setHours(0, 0, 0, 0);\n}\nfunction offset(date, days) {\n date.setDate(date.getDate() + days);\n}\nfunction count(start, end) {\n var tzMinuteDelta = end.getTimezoneOffset() - start.getTimezoneOffset();\n return (end.getTime() - start.getTime() - tzMinuteDelta * durationMinute) / durationDay;\n}\nfunction field(date) {\n return date.getDate() - 1;\n}\nexport var day = new CountableTimeInterval(floor, offset, count, field);\nexport default day;\n","import { durationMinute, durationWeek } from \"./duration\";\nimport { CountableTimeInterval } from \"./interval\";\n// Set date to n-th day of the week.\nfunction weekday(n) {\n // Sets the `date` to the start of the `n`-th day of the current week.\n // n == 0 is Sunday.\n function floor(date) {\n // 1..31 1..7\n date.setDate(date.getDate() - (date.getDay() + 7 - n) % 7);\n date.setHours(0, 0, 0, 0); // h, m, s, ms\n }\n // Offset the date by the given number of weeks.\n function offset(date, weeks) {\n date.setDate(date.getDate() + weeks * 7);\n }\n // Count the number of weeks between the start and end dates.\n function count(start, end) {\n var msDelta = end.getTime() - start.getTime();\n var tzMinuteDelta = end.getTimezoneOffset() - start.getTimezoneOffset();\n return (msDelta - tzMinuteDelta * durationMinute) / durationWeek;\n }\n return new CountableTimeInterval(floor, offset, count);\n}\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\nexport default sunday;\n","import { CountableTimeInterval } from \"./interval\";\nfunction floor(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}\nfunction offset(date, months) {\n date.setMonth(date.getMonth() + months);\n}\nfunction count(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}\nfunction field(date) {\n return date.getMonth();\n}\nexport var month = new CountableTimeInterval(floor, offset, count, field);\nexport default month;\n","import { CountableTimeInterval } from \"./interval\";\nfunction floor(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}\nfunction offset(date, years) {\n date.setFullYear(date.getFullYear() + years);\n}\nfunction count(start, end) {\n return end.getFullYear() - start.getFullYear();\n}\nfunction field(date) {\n return date.getFullYear();\n}\nexport var year = new CountableTimeInterval(floor, offset, count, field);\nexport default year;\n","import { CountableTimeInterval } from \"./interval\";\nimport { durationDay } from \"./duration\";\nfunction floor(date) {\n date.setUTCHours(0, 0, 0, 0);\n}\nfunction offset(date, days) {\n date.setUTCDate(date.getUTCDate() + days);\n}\nfunction count(start, end) {\n return (end.getTime() - start.getTime()) / durationDay;\n}\nfunction field(date) {\n return date.getUTCDate() - 1;\n}\nexport var utcDay = new CountableTimeInterval(floor, offset, count, field);\nexport default utcDay;\n","import { CountableTimeInterval } from \"./interval\";\nfunction floor(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}\nfunction offset(date, years) {\n date.setUTCFullYear(date.getUTCFullYear() + years);\n}\nfunction count(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}\nfunction field(date) {\n return date.getUTCFullYear();\n}\nexport var utcYear = new CountableTimeInterval(floor, offset, count, field);\nexport default utcYear;\n","import { durationWeek } from \"./duration\";\nimport { CountableTimeInterval } from \"./interval\";\n// Set date to n-th day of the week.\nfunction weekday(n) {\n // Sets the `date` to the start of the `n`-th day of the current week.\n // n == 0 is Sunday.\n function floor(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - n) % 7);\n date.setHours(0, 0, 0, 0); // h, m, s, ms\n }\n // Offset the date by the given number of weeks.\n function offset(date, weeks) {\n date.setUTCDate(date.getUTCDate() + weeks * 7);\n }\n // Count the number of weeks between the start and end dates.\n function count(start, end) {\n return (end.getTime() - start.getTime()) / durationWeek;\n }\n return new CountableTimeInterval(floor, offset, count);\n}\nexport var utcSunday = weekday(0);\nexport var utcMonday = weekday(1);\nexport var utcTuesday = weekday(2);\nexport var utcWednesday = weekday(3);\nexport var utcThursday = weekday(4);\nexport var utcFriday = weekday(5);\nexport var utcSaturday = weekday(6);\nexport default utcSunday;\n","import timeDay from \"../day\";\nimport year from \"../year\";\nimport { sunday as timeSunday, monday as timeMonday, thursday as timeThursday, } from \"../week\";\nimport utcDay from \"../utcDay\";\nimport utcYear from \"../utcYear\";\nimport utcSunday, { utcMonday, utcThursday } from \"../utcWeek\";\nfunction localDate(d) {\n // For JS Dates the [0, 100) interval is a time warp, a fast forward to the 20th century.\n // For example, -1 is -0001 BC, 0 is already 1900 AD.\n if (d.y >= 0 && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\nfunction utcDate(d) {\n if (d.y >= 0 && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n/**\n * Creates a lookup map for array of names to go from a name to index.\n * @param names\n */\nfunction formatLookup(names) {\n var map = {};\n for (var i = 0, n = names.length; i < n; i++) {\n map[names[i].toLowerCase()] = i;\n }\n return map;\n}\nfunction newYear(y) {\n return {\n y: y,\n m: 0,\n d: 1,\n H: 0,\n M: 0,\n S: 0,\n L: 0\n };\n}\nvar percentCharCode = 37;\nvar numberRe = /^\\s*\\d+/; // ignores next directive\nvar percentRe = /^%/;\nvar requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n/**\n * Prepends any character in the `requoteRe` set with a backslash.\n * @param s\n */\nexport var requote = function (s) { return s.replace(requoteRe, '\\\\$&'); }; // $& - matched substring\n/**\n * Returns a RegExp that matches any string that starts with any of the given names (case insensitive).\n * @param names\n */\nexport var formatRe = function (names) { return new RegExp('^(?:' + names.map(requote).join('|') + ')', 'i'); };\n// A map of padding modifiers to padding strings. Default is `0`.\nvar pads = {\n '-': '',\n '_': ' ',\n '0': '0'\n};\nexport function pad(value, fill, width) {\n var sign = value < 0 ? '-' : '';\n var string = String(sign ? -value : value);\n var length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n/**\n * Create a new time-locale-based object which exposes time-formatting\n * methods for the specified locale definition.\n *\n * @param timeLocale A time locale definition.\n */\nexport default function formatLocale(timeLocale) {\n var lDateTime = timeLocale.dateTime;\n var lDate = timeLocale.date;\n var lTime = timeLocale.time;\n var lPeriods = timeLocale.periods;\n var lWeekdays = timeLocale.days;\n var lShortWeekdays = timeLocale.shortDays;\n var lMonths = timeLocale.months;\n var lShortMonths = timeLocale.shortMonths;\n var periodRe = formatRe(lPeriods);\n var periodLookup = formatLookup(lPeriods);\n var weekdayRe = formatRe(lWeekdays);\n var weekdayLookup = formatLookup(lWeekdays);\n var shortWeekdayRe = formatRe(lShortWeekdays);\n var shortWeekdayLookup = formatLookup(lShortWeekdays);\n var monthRe = formatRe(lMonths);\n var monthLookup = formatLookup(lMonths);\n var shortMonthRe = formatRe(lShortMonths);\n var shortMonthLookup = formatLookup(lShortMonths);\n var formats = {\n 'a': formatShortWeekday,\n 'A': formatWeekday,\n 'b': formatShortMonth,\n 'B': formatMonth,\n 'c': undefined,\n 'd': formatDayOfMonth,\n 'e': formatDayOfMonth,\n 'f': formatMicroseconds,\n 'H': formatHour24,\n 'I': formatHour12,\n 'j': formatDayOfYear,\n 'L': formatMilliseconds,\n 'm': formatMonthNumber,\n 'M': formatMinutes,\n 'p': formatPeriod,\n 'Q': formatUnixTimestamp,\n 's': formatUnixTimestampSeconds,\n 'S': formatSeconds,\n 'u': formatWeekdayNumberMonday,\n 'U': formatWeekNumberSunday,\n 'V': formatWeekNumberISO,\n 'w': formatWeekdayNumberSunday,\n 'W': formatWeekNumberMonday,\n 'x': undefined,\n 'X': undefined,\n 'y': formatYear,\n 'Y': formatFullYear,\n 'Z': formatZone,\n '%': formatLiteralPercent\n };\n var utcFormats = {\n 'a': formatUTCShortWeekday,\n 'A': formatUTCWeekday,\n 'b': formatUTCShortMonth,\n 'B': formatUTCMonth,\n 'c': undefined,\n 'd': formatUTCDayOfMonth,\n 'e': formatUTCDayOfMonth,\n 'f': formatUTCMicroseconds,\n 'H': formatUTCHour24,\n 'I': formatUTCHour12,\n 'j': formatUTCDayOfYear,\n 'L': formatUTCMilliseconds,\n 'm': formatUTCMonthNumber,\n 'M': formatUTCMinutes,\n 'p': formatUTCPeriod,\n 'Q': formatUnixTimestamp,\n 's': formatUnixTimestampSeconds,\n 'S': formatUTCSeconds,\n 'u': formatUTCWeekdayNumberMonday,\n 'U': formatUTCWeekNumberSunday,\n 'V': formatUTCWeekNumberISO,\n 'w': formatUTCWeekdayNumberSunday,\n 'W': formatUTCWeekNumberMonday,\n 'x': undefined,\n 'X': undefined,\n 'y': formatUTCYear,\n 'Y': formatUTCFullYear,\n 'Z': formatUTCZone,\n '%': formatLiteralPercent\n };\n var parses = {\n 'a': parseShortWeekday,\n 'A': parseWeekday,\n 'b': parseShortMonth,\n 'B': parseMonth,\n 'c': parseLocaleDateTime,\n 'd': parseDayOfMonth,\n 'e': parseDayOfMonth,\n 'f': parseMicroseconds,\n 'H': parseHour24,\n 'I': parseHour24,\n 'j': parseDayOfYear,\n 'L': parseMilliseconds,\n 'm': parseMonthNumber,\n 'M': parseMinutes,\n 'p': parsePeriod,\n 'Q': parseUnixTimestamp,\n 's': parseUnixTimestampSeconds,\n 'S': parseSeconds,\n 'u': parseWeekdayNumberMonday,\n 'U': parseWeekNumberSunday,\n 'V': parseWeekNumberISO,\n 'w': parseWeekdayNumberSunday,\n 'W': parseWeekNumberMonday,\n 'x': parseLocaleDate,\n 'X': parseLocaleTime,\n 'y': parseYear,\n 'Y': parseFullYear,\n 'Z': parseZone,\n '%': parseLiteralPercent\n };\n // Recursive definitions.\n formats.x = newFormat(lDate, formats);\n formats.X = newFormat(lTime, formats);\n formats.c = newFormat(lDateTime, formats);\n utcFormats.x = newFormat(lDate, utcFormats);\n utcFormats.X = newFormat(lTime, utcFormats);\n utcFormats.c = newFormat(lDateTime, utcFormats);\n function newParse(specifier, newDate) {\n return function (str) {\n var d = newYear(1900);\n var i = parseSpecifier(d, specifier, str += '', 0);\n if (i != str.length) {\n return undefined;\n }\n // If a UNIX timestamp is specified, return it.\n if ('Q' in d) {\n return new Date(d.Q);\n }\n // The am-pm flag is 0 for AM, and 1 for PM.\n if ('p' in d) {\n d.H = d.H % 12 + d.p * 12;\n }\n // Convert day-of-week and week-of-year to day-of-year.\n if ('V' in d) {\n if (d.V < 1 || d.V > 53) {\n return undefined;\n }\n if (!('w' in d)) {\n d.w = 1;\n }\n if ('Z' in d) {\n var week = utcDate(newYear(d.y));\n var day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday.floor(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n }\n else {\n var week = newDate(newYear(d.y));\n var day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday.floor(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n }\n else if ('W' in d || 'U' in d) {\n if (!('w' in d)) {\n d.w = 'u' in d\n ? d.u % 7\n : 'W' in d ? 1 : 0;\n }\n var day = 'Z' in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n d.m = 0;\n d.d = 'W' in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if ('Z' in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n // Otherwise, all fields are in local time.\n return newDate(d);\n };\n }\n /**\n * Creates a new function that formats the given Date or timestamp according to specifier.\n * @param specifier\n * @param formats\n */\n function newFormat(specifier, formats) {\n return function (date) {\n var string = [];\n var n = specifier.length;\n var i = -1;\n var j = 0;\n if (!(date instanceof Date)) {\n date = new Date(+date);\n }\n while (++i < n) {\n if (specifier.charCodeAt(i) === percentCharCode) {\n string.push(specifier.slice(j, i)); // copy the chunks of specifier with no directives as is\n var c = specifier.charAt(++i);\n var pad_1 = pads[c];\n if (pad_1 != undefined) { // if format directive has a padding modifier in front of it\n c = specifier.charAt(++i); // fetch the directive itself\n }\n else {\n pad_1 = c === 'e' ? ' ' : '0'; // use the default padding modifier\n }\n var format = formats[c];\n if (format) { // if the directive has a corresponding formatting function\n c = format(date, pad_1); // replace the directive with the formatted date\n }\n string.push(c);\n j = i + 1;\n }\n }\n string.push(specifier.slice(j, i));\n return string.join('');\n };\n }\n // Simultaneously walks over the specifier and the parsed string, populating the `d` map with parsed values.\n // The returned number is expected to equal the length of the parsed `string`, if parsing succeeded.\n function parseSpecifier(d, specifier, string, j) {\n // i - `specifier` string index\n // j - parsed `string` index\n var i = 0;\n var n = specifier.length;\n var m = string.length;\n while (i < n) {\n if (j >= m) {\n return -1;\n }\n var code = specifier.charCodeAt(i++);\n if (code === percentCharCode) {\n var char = specifier.charAt(i++);\n var parse = parses[(char in pads ? specifier.charAt(i++) : char)];\n if (!parse || ((j = parse(d, string, j)) < 0)) {\n return -1;\n }\n }\n else if (code != string.charCodeAt(j++)) {\n return -1;\n }\n }\n return j;\n }\n // ----------------------------- formats ----------------------------------\n function formatMicroseconds(date, fill) {\n return formatMilliseconds(date, fill) + '000';\n }\n function formatMilliseconds(date, fill) {\n return pad(date.getMilliseconds(), fill, 3);\n }\n function formatSeconds(date, fill) {\n return pad(date.getSeconds(), fill, 2);\n }\n function formatMinutes(date, fill) {\n return pad(date.getMinutes(), fill, 2);\n }\n function formatHour12(date, fill) {\n return pad(date.getHours() % 12 || 12, fill, 2);\n }\n function formatHour24(date, fill) {\n return pad(date.getHours(), fill, 2);\n }\n function formatPeriod(date) {\n return lPeriods[date.getHours() >= 12 ? 1 : 0];\n }\n function formatShortWeekday(date) {\n return lShortWeekdays[date.getDay()];\n }\n function formatWeekday(date) {\n return lWeekdays[date.getDay()];\n }\n function formatWeekdayNumberMonday(date) {\n var dayOfWeek = date.getDay();\n return dayOfWeek === 0 ? 7 : dayOfWeek;\n }\n function formatWeekNumberSunday(date, fill) {\n return pad(timeSunday.count(year.floor(date), date), fill, 2);\n }\n function formatWeekNumberISO(date, fill) {\n var day = date.getDay();\n date = (day >= 4 || day === 0) ? timeThursday.floor(date) : timeThursday.ceil(date);\n var yearStart = year.floor(date);\n return pad(timeThursday.count(yearStart, date) + (yearStart.getDay() === 4 ? 1 : 0), fill, 2);\n }\n function formatWeekdayNumberSunday(date) {\n return date.getDay();\n }\n function formatWeekNumberMonday(date, fill) {\n return pad(timeMonday.count(year.floor(date), date), fill, 2);\n }\n function formatDayOfMonth(date, fill) {\n return pad(date.getDate(), fill, 2);\n }\n function formatDayOfYear(date, fill) {\n return pad(1 + timeDay.count(year.floor(date), date), fill, 3);\n }\n function formatShortMonth(date) {\n return lShortMonths[date.getMonth()];\n }\n function formatMonth(date) {\n return lMonths[date.getMonth()];\n }\n function formatMonthNumber(date, fill) {\n return pad(date.getMonth() + 1, fill, 2);\n }\n function formatYear(date, fill) {\n return pad(date.getFullYear() % 100, fill, 2);\n }\n function formatFullYear(date, fill) {\n return pad(date.getFullYear() % 10000, fill, 4);\n }\n function formatZone(date) {\n var z = date.getTimezoneOffset();\n return (z > 0 ? '-' : (z *= -1, '+')) + pad(Math.floor(z / 60), '0', 2) + pad(z % 60, '0', 2);\n }\n // -------------------------- UTC formats -----------------------------------\n function formatUTCMicroseconds(date, fill) {\n return formatUTCMilliseconds(date, fill) + '000';\n }\n function formatUTCMilliseconds(date, fill) {\n return pad(date.getUTCMilliseconds(), fill, 3);\n }\n function formatUTCSeconds(date, fill) {\n return pad(date.getUTCSeconds(), fill, 2);\n }\n function formatUTCMinutes(date, fill) {\n return pad(date.getUTCMinutes(), fill, 2);\n }\n function formatUTCHour12(date, fill) {\n return pad(date.getUTCHours() % 12 || 12, fill, 2);\n }\n function formatUTCHour24(date, fill) {\n return pad(date.getUTCHours(), fill, 2);\n }\n function formatUTCPeriod(date) {\n return lPeriods[date.getUTCHours() >= 12 ? 1 : 0];\n }\n function formatUTCDayOfMonth(date, fill) {\n return pad(date.getUTCDate(), fill, 2);\n }\n function formatUTCDayOfYear(date, fill) {\n return pad(1 + utcDay.count(utcYear.floor(date), date), fill, 3);\n }\n function formatUTCMonthNumber(date, fill) {\n return pad(date.getUTCMonth() + 1, fill, 2);\n }\n function formatUTCShortMonth(date) {\n return lShortMonths[date.getUTCMonth()];\n }\n function formatUTCMonth(date) {\n return lMonths[date.getUTCMonth()];\n }\n function formatUTCShortWeekday(date) {\n return lShortWeekdays[date.getUTCDay()];\n }\n function formatUTCWeekday(date) {\n return lWeekdays[date.getUTCDay()];\n }\n function formatUTCWeekdayNumberMonday(date) {\n var dayOfWeek = date.getUTCDay();\n return dayOfWeek === 0 ? 7 : dayOfWeek;\n }\n function formatUTCWeekNumberSunday(date, fill) {\n return pad(utcSunday.count(utcYear.floor(date), date), fill, 2);\n }\n function formatUTCWeekNumberISO(date, fill) {\n var day = date.getUTCDay();\n date = (day >= 4 || day === 0) ? utcThursday.floor(date) : utcThursday.ceil(date);\n var yearStart = utcYear.floor(date);\n return pad(utcThursday.count(yearStart, date) + (yearStart.getUTCDay() === 4 ? 1 : 0), fill, 4);\n }\n function formatUTCWeekdayNumberSunday(date) {\n return date.getUTCDay();\n }\n function formatUTCWeekNumberMonday(date, fill) {\n return pad(utcMonday.count(utcYear.floor(date), date), fill, 2);\n }\n function formatUTCYear(date, fill) {\n return pad(date.getUTCFullYear() % 100, fill, 2);\n }\n function formatUTCFullYear(date, fill) {\n return pad(date.getUTCFullYear() % 10000, fill, 4);\n }\n function formatUTCZone() {\n return '+0000';\n }\n function formatLiteralPercent(date) {\n return '%';\n }\n function formatUnixTimestamp(date) {\n return date.getTime();\n }\n function formatUnixTimestampSeconds(date) {\n return Math.floor(date.getTime() / 1000);\n }\n // ------------------------------- parsers ------------------------------------\n function parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(parseFloat(n[0]) / 1000), i + n[0].length) : -1;\n }\n function parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n }\n function parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n }\n function parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n }\n function parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n }\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n function parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n }\n function parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n }\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n function parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n }\n function parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n }\n function parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n }\n function parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n }\n function parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n }\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n function parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = parseFloat(n[0]) - 1, i + n[0].length) : -1;\n }\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, lDateTime, string, i);\n }\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, lDate, string, i);\n }\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, lTime, string, i);\n }\n function parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n }\n function parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = (+n[0]) * 1000, i + n[0].length) : -1;\n }\n function parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n }\n function parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n }\n function parseZone(d, string, i) {\n var n = /^(Z)|^([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || '00')), i + n[0].length) : -1;\n }\n function parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n }\n return {\n format: function (specifier) {\n var f = newFormat(specifier, formats);\n f.toString = function () { return specifier; };\n return f;\n },\n parse: function (specifier) {\n var p = newParse(specifier, localDate);\n p.toString = function () { return specifier; };\n return p;\n },\n utcFormat: function (specifier) {\n var f = newFormat(specifier, utcFormats);\n f.toString = function () { return specifier; };\n return f;\n },\n utcParse: function (specifier) {\n var p = newParse(specifier, utcDate);\n p.toString = function () { return specifier; };\n return p;\n }\n };\n}\n","import formatLocale from './locale';\nexport var locale;\nsetDefaultLocale({\n dateTime: '%x, %X',\n date: '%-m/%-d/%Y',\n time: '%-I:%M:%S %p',\n periods: ['AM', 'PM'],\n days: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n shortDays: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n shortMonths: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']\n});\nexport default function setDefaultLocale(definition) {\n return locale = formatLocale(definition);\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nimport ContinuousScale from \"./continuousScale\";\nimport timeMillisecond from \"../util/time/millisecond\";\nimport timeSecond from \"../util/time/second\";\nimport timeMinute from \"../util/time/minute\";\nimport timeHour from \"../util/time/hour\";\nimport timeDay from \"../util/time/day\";\nimport timeWeek from \"../util/time/week\";\nimport timeMonth from \"../util/time/month\";\nimport timeYear from \"../util/time/year\";\nimport { durationSecond, durationMinute, durationHour, durationDay, durationWeek, durationMonth, durationYear } from \"../util/time/duration\";\nimport { complexBisectRight } from \"../util/bisect\";\nimport { tickStep } from \"../util/ticks\";\nimport { locale } from \"../util/time/format/defaultLocale\";\nvar TimeScale = /** @class */ (function (_super) {\n __extends(TimeScale, _super);\n function TimeScale() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'time';\n _this.year = timeYear;\n _this.month = timeMonth;\n _this.week = timeWeek;\n _this.day = timeDay;\n _this.hour = timeHour;\n _this.minute = timeMinute;\n _this.second = timeSecond;\n _this.millisecond = timeMillisecond;\n _this.format = locale.format;\n /**\n * Array of default tick intervals in the following format:\n *\n * [\n * interval (unit of time),\n * number of units (step),\n * the length of that number of units in milliseconds\n * ]\n */\n _this.tickIntervals = [\n [_this.second, 1, durationSecond],\n [_this.second, 5, 5 * durationSecond],\n [_this.second, 15, 15 * durationSecond],\n [_this.second, 30, 30 * durationSecond],\n [_this.minute, 1, durationMinute],\n [_this.minute, 5, 5 * durationMinute],\n [_this.minute, 15, 15 * durationMinute],\n [_this.minute, 30, 30 * durationMinute],\n [_this.hour, 1, durationHour],\n [_this.hour, 3, 3 * durationHour],\n [_this.hour, 6, 6 * durationHour],\n [_this.hour, 12, 12 * durationHour],\n [_this.day, 1, durationDay],\n [_this.day, 2, 2 * durationDay],\n [_this.week, 1, durationWeek],\n [_this.month, 1, durationMonth],\n [_this.month, 3, 3 * durationMonth],\n [_this.year, 1, durationYear]\n ];\n _this.formatMillisecond = _this.format('.%L');\n _this.formatSecond = _this.format(':%S');\n _this.formatMinute = _this.format('%I:%M');\n _this.formatHour = _this.format('%I %p');\n _this.formatDay = _this.format('%a %d');\n _this.formatWeek = _this.format('%b %d');\n _this.formatMonth = _this.format('%B');\n _this.formatYear = _this.format('%Y');\n _this._domain = [new Date(2000, 0, 1), new Date(2000, 0, 2)];\n return _this;\n }\n TimeScale.prototype.defaultTickFormat = function (date) {\n return (this.second.floor(date) < date\n ? this.formatMillisecond\n : this.minute.floor(date) < date\n ? this.formatSecond\n : this.hour.floor(date) < date\n ? this.formatMinute\n : this.day.floor(date) < date\n ? this.formatHour\n : this.month.floor(date) < date\n ? (this.week.floor(date) < date ? this.formatDay : this.formatWeek)\n : this.year.floor(date) < date\n ? this.formatMonth\n : this.formatYear)(date);\n };\n /**\n *\n * @param interval If the `interval` is a number, it's interpreted as the desired tick count\n * and the method tries to pick an appropriate interval automatically, based on the extent of the domain.\n * If the `interval` is `undefined`, it defaults to `10`.\n * If the `interval` is a time interval, simply use it.\n * @param start The start time (timestamp).\n * @param stop The end time (timestamp).\n * @param step Number of intervals between ticks.\n */\n TimeScale.prototype.tickInterval = function (interval, start, stop, step) {\n var _a;\n if (typeof interval === 'number') {\n var tickCount = interval;\n var tickIntervals = this.tickIntervals;\n var target = Math.abs(stop - start) / tickCount;\n var i = complexBisectRight(tickIntervals, target, function (interval) { return interval[2]; });\n if (i === tickIntervals.length) {\n step = tickStep(start / durationYear, stop / durationYear, tickCount);\n interval = this.year;\n }\n else if (i) {\n _a = __read(tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i], 2), interval = _a[0], step = _a[1];\n }\n else {\n step = Math.max(tickStep(start, stop, interval), 1);\n interval = this.millisecond;\n }\n }\n return step == undefined ? interval : interval.every(step);\n };\n Object.defineProperty(TimeScale.prototype, \"domain\", {\n get: function () {\n return _super.prototype.getDomain.call(this).map(function (t) { return new Date(t); });\n },\n set: function (values) {\n _super.prototype.setDomain.call(this, Array.prototype.map.call(values, function (t) { return t instanceof Date ? +t : +new Date(+t); }));\n },\n enumerable: true,\n configurable: true\n });\n TimeScale.prototype.invert = function (y) {\n return new Date(_super.prototype.invert.call(this, y));\n };\n /**\n * Returns uniformly-spaced dates that represent the scale's domain.\n * @param interval The desired tick count or a time interval object.\n */\n TimeScale.prototype.ticks = function (interval) {\n if (interval === void 0) { interval = 10; }\n var d = _super.prototype.getDomain.call(this);\n var t0 = d[0];\n var t1 = d[d.length - 1];\n var reverse = t1 < t0;\n if (reverse) {\n var _ = t0;\n t0 = t1;\n t1 = _;\n }\n var t = this.tickInterval(interval, t0, t1);\n var i = t ? t.range(t0, t1 + 1) : []; // inclusive stop\n return reverse ? i.reverse() : i;\n };\n /**\n * Returns a time format function suitable for displaying tick values.\n * @param count Ignored. Used only to satisfy the {@link Scale} interface.\n * @param specifier If the specifier string is provided, this method is equivalent to\n * the {@link TimeLocaleObject.format} method.\n * If no specifier is provided, this method returns the default time format function.\n */\n TimeScale.prototype.tickFormat = function (count, specifier) {\n return specifier == undefined ? this.defaultTickFormat.bind(this) : this.format(specifier);\n };\n /**\n * Extends the domain so that it starts and ends on nice round values.\n * This method typically modifies the scale’s domain, and may only extend the bounds to the nearest round value.\n * @param interval\n */\n TimeScale.prototype.nice = function (interval) {\n if (interval === void 0) { interval = 10; }\n var d = _super.prototype.getDomain.call(this);\n var i = this.tickInterval(interval, d[0], d[d.length - 1]);\n if (i) {\n this.domain = this._nice(d, i);\n }\n };\n TimeScale.prototype._nice = function (domain, interval) {\n var _a, _b;\n domain = domain.slice();\n var i0 = 0;\n var i1 = domain.length - 1;\n var x0 = domain[i0];\n var x1 = domain[i1];\n if (x1 < x0) {\n _a = __read([i1, i0], 2), i0 = _a[0], i1 = _a[1];\n _b = __read([x1, x0], 2), x0 = _b[0], x1 = _b[1];\n }\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n };\n return TimeScale;\n}(ContinuousScale));\nexport { TimeScale };\n","import { ascending } from \"./compare\";\n/**\n * Returns the insertion point for `x` in array to maintain sorted order.\n * The arguments `lo` and `hi` may be used to specify a subset of the array which should be considered;\n * by default the entire array is used. If `x` is already present in array, the insertion point will be before\n * (to the left of) any existing entries. The return value is suitable for use as the first argument to `splice`\n * assuming that array is already sorted. The returned insertion point `i` partitions the array into two halves\n * so that all `v < x` for `v` in `array.slice(lo, i)` for the left side and all `v >= x` for `v` in `array.slice(i, hi)`\n * for the right side.\n * @param list\n * @param x\n * @param comparator\n * @param lo\n * @param hi\n */\nexport function bisectLeft(list, x, comparator, lo, hi) {\n if (lo === void 0) { lo = 0; }\n if (hi === void 0) { hi = list.length; }\n while (lo < hi) {\n var mid = (lo + hi) >>> 1;\n if (comparator(list[mid], x) < 0) { // list[mid] < x\n lo = mid + 1;\n }\n else {\n hi = mid;\n }\n }\n return lo;\n}\nexport function bisectRight(list, x, comparator, lo, hi) {\n if (lo === void 0) { lo = 0; }\n if (hi === void 0) { hi = list.length; }\n while (lo < hi) {\n var mid = (lo + hi) >>> 1;\n if (comparator(list[mid], x) > 0) { // list[mid] > x\n hi = mid;\n }\n else {\n lo = mid + 1;\n }\n }\n return lo;\n}\n/**\n * A specialized version of `bisectLeft` that works with the arrays whose elements cannot be compared directly.\n * The map function is used instead to produce a comparable value for a given array element, then the values\n * returned by the map are compared using the `ascendingComparator`.\n * @param list\n * @param x\n * @param map\n * @param lo\n * @param hi\n */\nexport function complexBisectLeft(list, x, map, lo, hi) {\n if (lo === void 0) { lo = 0; }\n if (hi === void 0) { hi = list.length; }\n var comparator = ascendingComparator(map);\n while (lo < hi) {\n var mid = (lo + hi) >>> 1;\n if (comparator(list[mid], x) < 0) {\n lo = mid + 1;\n }\n else {\n hi = mid;\n }\n }\n return lo;\n}\nexport function complexBisectRight(list, x, map, lo, hi) {\n if (lo === void 0) { lo = 0; }\n if (hi === void 0) { hi = list.length; }\n var comparator = ascendingComparator(map);\n while (lo < hi) {\n var mid = (lo + hi) >>> 1;\n if (comparator(list[mid], x) < 0) {\n lo = mid + 1;\n }\n else {\n hi = mid;\n }\n }\n return lo;\n}\nfunction ascendingComparator(map) {\n return function (item, x) {\n return ascending(map(item), x);\n };\n}\n","export function ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","var __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\n// Custom `Array.find` implementation for legacy browsers.\nexport function find(arr, predicate) {\n for (var i = 0; i < arr.length; i++) {\n var value = arr[i];\n if (predicate(value, i, arr)) {\n return value;\n }\n }\n}\nexport function findIndex(arr, predicate) {\n for (var i = 0; i < arr.length; i++) {\n if (predicate(arr[i], i, arr)) {\n return i;\n }\n }\n return -1;\n}\nfunction identity(value) {\n return value;\n}\nexport function extent(values, predicate, map) {\n var transform = map || identity;\n var n = values.length;\n var i = -1;\n var value;\n var min;\n var max;\n while (++i < n) { // Find the first value.\n value = values[i];\n if (predicate(value)) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n value = values[i];\n if (predicate(value)) {\n if (min > value) {\n min = value;\n }\n if (max < value) {\n max = value;\n }\n }\n }\n }\n }\n return min === undefined || max === undefined ? undefined : [transform(min), transform(max)];\n}\n/**\n * finds the min and max using a process appropriate for stacked values. Ie,\n * summing up the positive and negative numbers, and returning the totals of each\n */\nexport function findMinMax(values) {\n var e_1, _a;\n var min = 0;\n var max = 0;\n try {\n for (var values_1 = __values(values), values_1_1 = values_1.next(); !values_1_1.done; values_1_1 = values_1.next()) {\n var value = values_1_1.value;\n if (value < 0) {\n min += value;\n }\n else {\n max += value;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (values_1_1 && !values_1_1.done && (_a = values_1.return)) _a.call(values_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return { min: min, max: max };\n}\nexport function copy(array, start, count) {\n if (start === void 0) { start = 0; }\n if (count === void 0) { count = array.length; }\n var result = [];\n var n = array.length;\n if (n) {\n for (var i = 0; i < count; i++) {\n result.push(array[(start + i) % n]);\n }\n }\n return result;\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nimport { Group } from '../scene/group';\nimport { Scene } from '../scene/scene';\nimport { Observable } from '../util/observable';\nimport { createId } from '../util/id';\nimport { Padding } from '../util/padding';\nimport { defaultTooltipCss } from './tooltip/defaultTooltipCss';\nimport { isContinuous, isDate, isNumber, isString, isStringObject } from '../util/value';\nimport { LinearScale } from '../scale/linearScale';\nimport { TimeScale } from '../scale/timeScale';\nimport { BandScale } from '../scale/bandScale';\nimport { extent } from '../util/array';\nimport { locale } from '../util/time/format/defaultLocale';\nvar SparklineAxis = /** @class */ (function (_super) {\n __extends(SparklineAxis, _super);\n function SparklineAxis() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.type = 'category';\n _this.stroke = 'rgb(204, 214, 235)';\n _this.strokeWidth = 1;\n return _this;\n }\n return SparklineAxis;\n}(Observable));\nexport { SparklineAxis };\nvar Sparkline = /** @class */ (function (_super) {\n __extends(Sparkline, _super);\n function Sparkline() {\n var _this = _super.call(this) || this;\n _this.id = createId(_this);\n _this.seriesRect = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n };\n _this._context = undefined;\n _this._container = undefined;\n _this._data = undefined;\n _this.padding = new Padding(3);\n _this.xKey = 'x';\n _this.yKey = 'y';\n _this.dataType = undefined;\n _this.xData = [];\n _this.yData = [];\n // Minimum y value in provided data.\n _this.min = undefined;\n // Maximum y value in provided data.\n _this.max = undefined;\n _this.yScale = new LinearScale();\n _this.axis = new SparklineAxis();\n _this.highlightStyle = {\n size: 6,\n fill: 'yellow',\n stroke: 'silver',\n strokeWidth: 1,\n };\n _this._width = 100;\n _this._height = 100;\n _this.layoutId = 0;\n _this.defaultDateFormatter = locale.format('%m/%d/%y, %H:%M:%S');\n _this._onMouseMove = _this.onMouseMove.bind(_this);\n _this._onMouseOut = _this.onMouseOut.bind(_this);\n var root = new Group();\n _this.rootGroup = root;\n var element = document.createElement('div');\n element.setAttribute('class', 'ag-sparkline-wrapper');\n var scene = new Scene(document);\n _this.scene = scene;\n _this.canvasElement = scene.canvas.element;\n scene.root = root;\n scene.container = element;\n scene.resize(_this.width, _this.height);\n _this.seriesRect.width = _this.width;\n _this.seriesRect.height = _this.height;\n // one style element for tooltip styles per document\n if (Sparkline.tooltipDocuments.indexOf(document) === -1) {\n var styleElement = document.createElement('style');\n styleElement.innerHTML = defaultTooltipCss;\n document.head.insertBefore(styleElement, document.head.querySelector('style'));\n Sparkline.tooltipDocuments.push(document);\n }\n _this.setupDomEventListeners(_this.scene.canvas.element);\n return _this;\n }\n Object.defineProperty(Sparkline.prototype, \"context\", {\n get: function () {\n return this._context;\n },\n set: function (value) {\n if (this._context !== value) {\n this._context = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sparkline.prototype, \"container\", {\n get: function () {\n return this._container;\n },\n set: function (value) {\n if (this._container !== value) {\n var parentNode = this.canvasElement.parentNode;\n if (parentNode != null) {\n parentNode.removeChild(this.canvasElement);\n }\n if (value) {\n value.appendChild(this.canvasElement);\n }\n this._container = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sparkline.prototype, \"data\", {\n get: function () {\n return this._data;\n },\n set: function (value) {\n if (this._data !== value) {\n this._data = value;\n this.processData();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sparkline.prototype, \"width\", {\n get: function () {\n return this._width;\n },\n set: function (value) {\n if (this._width !== value) {\n this._width = value;\n this.scene.resize(value, this.height);\n this.scheduleLayout();\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Sparkline.prototype, \"height\", {\n get: function () {\n return this._height;\n },\n set: function (value) {\n if (this._height !== value) {\n this._height = value;\n this.scene.resize(this.width, value);\n this.scheduleLayout();\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Generate node data from processed data.\n * Produce data joins.\n * Update selection's nodes using node data.\n */\n Sparkline.prototype.update = function () { };\n // Update y scale based on processed data.\n Sparkline.prototype.updateYScale = function () {\n this.updateYScaleRange();\n this.updateYScaleDomain();\n };\n // Update y scale domain based on processed data.\n Sparkline.prototype.updateYScaleDomain = function () { };\n // Update y scale range based on height and padding (seriesRect).\n Sparkline.prototype.updateYScaleRange = function () {\n var _a = this, yScale = _a.yScale, seriesRect = _a.seriesRect;\n yScale.range = [seriesRect.height, 0];\n };\n // Update x scale based on processed data.\n Sparkline.prototype.updateXScale = function () {\n var type = this.axis.type;\n this.xScale = this.getXScale(type);\n this.updateXScaleRange();\n this.updateXScaleDomain();\n };\n // Update x scale range based on width and padding (seriesRect).\n Sparkline.prototype.updateXScaleRange = function () {\n this.xScale.range = [0, this.seriesRect.width];\n };\n // Update x scale domain based on processed data and type of scale.\n Sparkline.prototype.updateXScaleDomain = function () {\n var _a = this, xData = _a.xData, xScale = _a.xScale;\n var xMinMax;\n if (xScale instanceof LinearScale) {\n xMinMax = extent(xData, isNumber);\n }\n else if (xScale instanceof TimeScale) {\n xMinMax = extent(xData, isContinuous);\n }\n this.xScale.domain = xMinMax ? xMinMax.slice() : xData;\n };\n /**\n * Return xScale instance based on the provided type or return a `BandScale` by default.\n * The default type is `category`.\n * @param type\n */\n Sparkline.prototype.getXScale = function (type) {\n if (type === void 0) { type = 'category'; }\n switch (type) {\n case 'number':\n return new LinearScale();\n case 'time':\n return new TimeScale();\n case 'category':\n default:\n return new BandScale();\n }\n };\n // Update axis line.\n Sparkline.prototype.updateAxisLine = function () { };\n // Update X and Y scales and the axis line.\n Sparkline.prototype.updateAxes = function () {\n this.updateYScale();\n this.updateXScale();\n this.updateAxisLine();\n };\n // Update horizontal and vertical crosshair lines.\n Sparkline.prototype.updateCrosshairs = function () {\n this.updateXCrosshairLine();\n this.updateYCrosshairLine();\n };\n // Using processed data, generate data that backs visible nodes.\n Sparkline.prototype.generateNodeData = function () {\n return [];\n };\n // Returns persisted node data associated with the sparkline's data.\n Sparkline.prototype.getNodeData = function () {\n return [];\n };\n // Update the selection's nodes.\n Sparkline.prototype.updateNodes = function () { };\n // Update the vertical crosshair line.\n Sparkline.prototype.updateXCrosshairLine = function () { };\n // Update the horizontal crosshair line.\n Sparkline.prototype.updateYCrosshairLine = function () { };\n Sparkline.prototype.highlightDatum = function (closestDatum) {\n this.updateNodes();\n };\n Sparkline.prototype.dehighlightDatum = function () {\n this.highlightedDatum = undefined;\n this.updateNodes();\n this.updateCrosshairs();\n };\n /**\n * Highlight closest datum and display tooltip if enabled.\n * Only update if necessary, i.e. only update if the highlighted datum is different from previously highlighted datum,\n * or if there is no previously highlighted datum.\n * @param event\n */\n Sparkline.prototype.onMouseMove = function (event) {\n var closestDatum = this.pickClosestSeriesNodeDatum(event.offsetX, event.offsetY);\n if (!closestDatum) {\n return;\n }\n var oldHighlightedDatum = this.highlightedDatum;\n this.highlightedDatum = closestDatum;\n if ((this.highlightedDatum && !oldHighlightedDatum) ||\n (this.highlightedDatum && oldHighlightedDatum && this.highlightedDatum !== oldHighlightedDatum)) {\n this.highlightDatum(closestDatum);\n this.updateCrosshairs();\n }\n if (this.tooltip.enabled) {\n this.handleTooltip(event, closestDatum);\n }\n };\n /**\n * Dehighlight all nodes and remove tooltip.\n * @param event\n */\n Sparkline.prototype.onMouseOut = function (event) {\n this.dehighlightDatum();\n this.tooltip.toggle(false);\n };\n // Fetch required values from the data object and process them.\n Sparkline.prototype.processData = function () {\n var _a = this, data = _a.data, yData = _a.yData, xData = _a.xData;\n if (!data || this.invalidData(this.data)) {\n return;\n }\n yData.length = 0;\n xData.length = 0;\n var n = data.length;\n var dataType = this.getDataType(data);\n this.dataType = dataType;\n var xValueType = this.axis.type;\n var xType = xValueType !== 'number' && xValueType !== 'time' ? 'category' : xValueType;\n if (dataType === 'number') {\n for (var i = 0; i < n; i++) {\n var xDatum = i;\n var yDatum = data[i];\n var x = this.getDatum(xDatum, xType);\n var y = this.getDatum(yDatum, 'number');\n xData.push(x);\n yData.push(y);\n }\n }\n else if (dataType === 'array') {\n for (var i = 0; i < n; i++) {\n var datum = data[i];\n if (Array.isArray(datum)) {\n var xDatum = datum[0];\n var yDatum = datum[1];\n var x = this.getDatum(xDatum, xType);\n var y = this.getDatum(yDatum, 'number');\n if (x == undefined) {\n continue;\n }\n xData.push(x);\n yData.push(y);\n }\n }\n }\n else if (dataType === 'object') {\n var _b = this, yKey = _b.yKey, xKey = _b.xKey;\n for (var i = 0; i < n; i++) {\n var datum = data[i];\n if (typeof datum === 'object' && !Array.isArray(datum)) {\n var xDatum = datum[xKey];\n var yDatum = datum[yKey];\n var x = this.getDatum(xDatum, xType);\n var y = this.getDatum(yDatum, 'number');\n if (x == undefined) {\n continue;\n }\n xData.push(x);\n yData.push(y);\n }\n }\n }\n // update axes\n this.updateAxes();\n // produce data joins and update selection's nodes\n this.update();\n };\n /**\n * Return the type of data provided to the sparkline based on the first truthy value in the data array.\n * If the value is not a number, array or object, return `undefined`.\n * @param data\n */\n Sparkline.prototype.getDataType = function (data) {\n var e_1, _a;\n try {\n for (var data_1 = __values(data), data_1_1 = data_1.next(); !data_1_1.done; data_1_1 = data_1.next()) {\n var datum = data_1_1.value;\n if (datum != undefined) {\n if (isNumber(datum)) {\n return 'number';\n }\n else if (Array.isArray(datum)) {\n return 'array';\n }\n else if (typeof datum === 'object') {\n return 'object';\n }\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (data_1_1 && !data_1_1.done && (_a = data_1.return)) _a.call(data_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n };\n /**\n * Return the given value depending on the type of axis.\n * Return `undefined` if the value is invalid for the given axis type.\n * @param value\n */\n Sparkline.prototype.getDatum = function (value, type) {\n if ((type === 'number' && isNumber(value)) || (type === 'time' && (isNumber(value) || isDate(value)))) {\n return value;\n }\n else if (type === 'category') {\n if (isString(value) || isDate(value) || isNumber(value)) {\n return { toString: function () { return String(value); } };\n }\n else if (isStringObject(value)) {\n return value;\n }\n }\n };\n Object.defineProperty(Sparkline.prototype, \"layoutScheduled\", {\n /**\n * Only `true` while we are waiting for the layout to start.\n * This will be `false` if the layout has already started and is ongoing.\n */\n get: function () {\n return !!this.layoutId;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Execute update method on the next available screen repaint to make changes to the canvas.\n * If we are waiting for a layout to start and a new layout is requested,\n * cancel the previous layout using the non 0 integer (this.layoutId) returned from requestAnimationFrame.\n */\n Sparkline.prototype.scheduleLayout = function () {\n var _this = this;\n if (this.layoutId) {\n cancelAnimationFrame(this.layoutId);\n }\n this.layoutId = requestAnimationFrame(function () {\n _this.setSparklineDimensions();\n if (_this.invalidData(_this.data)) {\n return;\n }\n // update axes ranges\n _this.updateXScaleRange();\n _this.updateYScaleRange();\n // update axis line\n _this.updateAxisLine();\n // produce data joins and update selection's nodes\n _this.update();\n _this.layoutId = 0;\n });\n };\n Sparkline.prototype.setSparklineDimensions = function () {\n var _a = this, width = _a.width, height = _a.height, padding = _a.padding, seriesRect = _a.seriesRect, rootGroup = _a.rootGroup;\n var shrunkWidth = width - padding.left - padding.right;\n var shrunkHeight = height - padding.top - padding.bottom;\n seriesRect.width = shrunkWidth;\n seriesRect.height = shrunkHeight;\n seriesRect.x = padding.left;\n seriesRect.y = padding.top;\n rootGroup.translationX = seriesRect.x;\n rootGroup.translationY = seriesRect.y;\n };\n /**\n * Return the closest data point to x/y canvas coordinates.\n * @param x\n * @param y\n */\n Sparkline.prototype.pickClosestSeriesNodeDatum = function (x, y) {\n var _this = this;\n var minDistance = Infinity;\n var closestDatum;\n var hitPoint = this.rootGroup.transformPoint(x, y);\n this.getNodeData().forEach(function (datum) {\n if (!datum.point) {\n return;\n }\n var distance = _this.getDistance(hitPoint, datum.point);\n if (distance < minDistance) {\n minDistance = distance;\n closestDatum = datum;\n }\n });\n return closestDatum;\n };\n /**\n * Return the relevant distance between two points.\n * The distance will be calculated based on the x value of the points for all sparklines except bar sparkline, where the distance is based on the y values.\n * @param x\n * @param y\n */\n Sparkline.prototype.getDistance = function (p1, p2) {\n return Math.abs(p1.x - p2.x);\n };\n /**\n * calculate x/y coordinates for tooltip based on coordinates of highlighted datum, position of canvas and page offset.\n * @param datum\n */\n Sparkline.prototype.handleTooltip = function (event, datum) {\n var seriesDatum = datum.seriesDatum;\n var canvasElement = this.canvasElement;\n var clientX = event.clientX, clientY = event.clientY;\n // confine tooltip to sparkline width if tooltip container not provided.\n if (this.tooltip.container == undefined) {\n this.tooltip.container = canvasElement;\n }\n var meta = {\n pageX: clientX,\n pageY: clientY,\n };\n var yValue = seriesDatum.y;\n var xValue = seriesDatum.x;\n // check if tooltip is enabled for this specific data point\n var enabled = this.tooltip.enabled;\n if (this.tooltip.renderer) {\n var tooltipRendererResult = this.tooltip.renderer({\n context: this.context,\n datum: seriesDatum,\n yValue: yValue,\n xValue: xValue,\n });\n enabled =\n typeof tooltipRendererResult !== 'string' && tooltipRendererResult.enabled !== undefined\n ? tooltipRendererResult.enabled\n : enabled;\n }\n var html = enabled && seriesDatum.y !== undefined && this.getTooltipHtml(datum);\n if (html) {\n this.tooltip.show(meta, html);\n }\n };\n Sparkline.prototype.formatNumericDatum = function (datum) {\n return String(Math.round(datum * 10) / 10);\n };\n Sparkline.prototype.formatDatum = function (datum) {\n var type = this.axis.type || 'category';\n if (type === 'number' && typeof datum === 'number') {\n return this.formatNumericDatum(datum);\n }\n else if (type === 'time' && (datum instanceof Date || isNumber(datum))) {\n return this.defaultDateFormatter(datum);\n }\n else {\n return String(datum);\n }\n };\n Sparkline.prototype.setupDomEventListeners = function (chartElement) {\n chartElement.addEventListener('mousemove', this._onMouseMove);\n chartElement.addEventListener('mouseout', this._onMouseOut);\n };\n Sparkline.prototype.cleanupDomEventListeners = function (chartElement) {\n chartElement.removeEventListener('mousemove', this._onMouseMove);\n chartElement.removeEventListener('mouseout', this._onMouseOut);\n };\n Sparkline.prototype.invalidData = function (data) {\n return !data || !Array.isArray(data) || data.length === 0;\n };\n /**\n * Cleanup and remove canvas element from the DOM.\n */\n Sparkline.prototype.destroy = function () {\n this.scene.container = undefined;\n // remove canvas element from the DOM\n this.container = undefined;\n this.cleanupDomEventListeners(this.scene.canvas.element);\n };\n Sparkline.tooltipDocuments = [];\n return Sparkline;\n}(Observable));\nexport { Sparkline };\n","export var defaultTooltipCss = \"\\n.ag-sparkline-tooltip-wrapper {\\n position: absolute;\\n user-select: none;\\n pointer-events: none;\\n}\\n\\n.ag-sparkline-tooltip {\\n position: relative;\\n font: 12px arial,sans-serif;\\n border-radius: 2px;\\n box-shadow: 0 1px 3px rgb(0 0 0 / 20%), 0 1px 1px rgb(0 0 0 / 14%);\\n line-height: 1.7em;\\n overflow: hidden;\\n white-space: nowrap;\\n z-index: 99999;\\n background-color: rgb(255, 255, 255);\\n color: rgba(0,0,0, 0.67);\\n}\\n\\n.ag-sparkline-tooltip-content {\\n padding: 0 7px;\\n}\\n\\n.ag-sparkline-tooltip-title {\\n padding-left: 7px;\\n}\\n\\n.ag-sparkline-tooltip-wrapper-hidden {\\n top: -10000px !important;\\n}\\n\\n.ag-sparkline-wrapper {\\n box-sizing: border-box;\\n overflow: hidden;\\n}\\n\";\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Color } from '../../util/color';\nimport { Observable } from '../../util/observable';\nexport function toTooltipHtml(input, defaults) {\n if (typeof input === 'string') {\n return input;\n }\n defaults = defaults || {};\n var _a = input.content, content = _a === void 0 ? defaults.content || '' : _a, _b = input.title, title = _b === void 0 ? defaults.title || undefined : _b, _c = input.color, color = _c === void 0 ? defaults.color : _c, _d = input.backgroundColor, backgroundColor = _d === void 0 ? defaults.backgroundColor : _d, _e = input.opacity, opacity = _e === void 0 ? defaults.opacity || 1 : _e;\n var titleHtml;\n var contentHtml;\n if (color) {\n titleHtml = title\n ? \"\" + title + \"\"\n : '';\n contentHtml = \"\" + content + \"\";\n }\n else {\n titleHtml = title ? \"\" + title + \"\" : '';\n contentHtml = \"\" + content + \"\";\n }\n if (backgroundColor) {\n var bgColor = Color.fromString(backgroundColor.toLowerCase());\n var r = bgColor.r, g = bgColor.g, b = bgColor.b, a = bgColor.a;\n // TODO: combine a and opacity for alpha?\n var alpha = opacity;\n var bgColorWithAlpha = Color.fromArray([r, g, b, alpha]);\n var bgColorRgbaString = bgColorWithAlpha.toRgbaString();\n return \"
    \\n \" + titleHtml + \"\\n \" + contentHtml + \"\\n
    \";\n }\n else {\n return \"
    \\n \" + titleHtml + \"\\n \" + contentHtml + \"\\n
    \";\n }\n}\nvar SparklineTooltip = /** @class */ (function (_super) {\n __extends(SparklineTooltip, _super);\n function SparklineTooltip() {\n var _this = _super.call(this) || this;\n _this.element = document.createElement('div');\n _this.enabled = true;\n _this.container = undefined;\n _this.xOffset = 10;\n _this.yOffset = 0;\n _this.renderer = undefined;\n var tooltipRoot = document.body;\n tooltipRoot.appendChild(_this.element);\n return _this;\n }\n SparklineTooltip.prototype.isVisible = function () {\n var element = this.element;\n if (element.classList) {\n return !element.classList.contains(SparklineTooltip.class + \"-wrapper-hidden\");\n }\n // IE11\n var classes = element.getAttribute('class');\n if (classes) {\n return classes.split(' ').indexOf(SparklineTooltip.class + \"-wrapper-hidden\") < 0;\n }\n return false;\n };\n SparklineTooltip.prototype.updateClass = function (visible) {\n var classList = [SparklineTooltip.class + \"-wrapper\"];\n if (visible !== true) {\n classList.push(SparklineTooltip.class + \"-wrapper-hidden\");\n }\n this.element.setAttribute('class', classList.join(' '));\n };\n SparklineTooltip.prototype.show = function (meta, html) {\n this.toggle(false);\n var element = this.element;\n if (html !== undefined) {\n element.innerHTML = html;\n }\n else if (!element.innerHTML) {\n return;\n }\n var left = meta.pageX + this.xOffset;\n var top = meta.pageY + this.yOffset;\n var tooltipRect = element.getBoundingClientRect();\n var maxLeft = window.innerWidth - tooltipRect.width;\n if (this.container) {\n var containerRect = this.container.getBoundingClientRect();\n maxLeft = containerRect.left + (containerRect.width - tooltipRect.width);\n }\n if (left > maxLeft) {\n left = meta.pageX - element.clientWidth - this.xOffset;\n }\n element.style.left = Math.round(left) + \"px\";\n element.style.top = Math.round(top) + \"px\";\n this.toggle(true);\n };\n SparklineTooltip.prototype.toggle = function (visible) {\n this.updateClass(visible);\n };\n SparklineTooltip.prototype.destroy = function () {\n var parentNode = this.element.parentNode;\n if (parentNode) {\n parentNode.removeChild(this.element);\n }\n };\n SparklineTooltip.class = 'ag-sparkline-tooltip';\n return SparklineTooltip;\n}(Observable));\nexport { SparklineTooltip };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Shape } from '../../scene/shape/shape';\nvar Marker = /** @class */ (function (_super) {\n __extends(Marker, _super);\n function Marker() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._x = 0;\n _this._y = 0;\n _this._size = 3;\n return _this;\n }\n Object.defineProperty(Marker.prototype, \"x\", {\n get: function () {\n return this._x;\n },\n set: function (value) {\n if (this._x !== value) {\n this._x = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Marker.prototype, \"y\", {\n get: function () {\n return this._y;\n },\n set: function (value) {\n if (this._y !== value) {\n this._y = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Marker.prototype, \"size\", {\n get: function () {\n return this._size;\n },\n set: function (value) {\n if (this._size !== value) {\n this._size = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n return Marker;\n}(Shape));\nexport { Marker };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Marker } from './marker';\nvar Circle = /** @class */ (function (_super) {\n __extends(Circle, _super);\n function Circle() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Circle.prototype.isPointInPath = function (x, y) {\n return false;\n };\n Circle.prototype.isPointInStroke = function (x, y) {\n return false;\n };\n Circle.prototype.render = function (ctx) {\n if (this.dirtyTransform) {\n this.computeTransformMatrix();\n }\n this.matrix.toContext(ctx);\n var _a = this, x = _a.x, y = _a.y, size = _a.size;\n var radius = size / 2;\n ctx.beginPath();\n ctx.arc(x, y, radius, 0, 2 * Math.PI, false);\n this.fillStroke(ctx);\n this.dirty = false;\n };\n Circle.className = 'Circle';\n return Circle;\n}(Marker));\nexport { Circle };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Marker } from './marker';\nvar Diamond = /** @class */ (function (_super) {\n __extends(Diamond, _super);\n function Diamond() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Diamond.prototype.isPointInStroke = function (x, y) {\n return false;\n };\n Diamond.prototype.isPointInPath = function (x, y) {\n return false;\n };\n Diamond.prototype.render = function (ctx) {\n if (this.dirtyTransform) {\n this.computeTransformMatrix();\n }\n this.matrix.toContext(ctx);\n var _a = this, x = _a.x, y = _a.y, size = _a.size;\n var hs = size / 2;\n ctx.beginPath();\n ctx.moveTo(x, (y -= hs));\n ctx.lineTo((x += hs), (y += hs));\n ctx.lineTo((x -= hs), (y += hs));\n ctx.lineTo((x -= hs), (y -= hs));\n ctx.lineTo((x += hs), (y -= hs));\n ctx.closePath();\n this.fillStroke(ctx);\n this.dirty = false;\n };\n Diamond.className = 'Diamond';\n return Diamond;\n}(Marker));\nexport { Diamond };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Marker } from './marker';\nvar Square = /** @class */ (function (_super) {\n __extends(Square, _super);\n function Square() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Square.prototype.isPointInStroke = function (x, y) {\n return false;\n };\n Square.prototype.isPointInPath = function (x, y) {\n return false;\n };\n Square.prototype.render = function (ctx) {\n if (this.dirtyTransform) {\n this.computeTransformMatrix();\n }\n this.matrix.toContext(ctx);\n var _a = this, x = _a.x, y = _a.y, size = _a.size;\n var hs = size / 2;\n ctx.beginPath();\n ctx.moveTo((x -= hs), (y -= hs));\n ctx.lineTo((x += size), y);\n ctx.lineTo(x, (y += size));\n ctx.lineTo((x -= size), y);\n ctx.lineTo(x, (y -= size));\n ctx.closePath();\n this.fillStroke(ctx);\n this.dirty = false;\n };\n Square.className = 'Square';\n return Square;\n}(Marker));\nexport { Square };\n","import { Circle } from './circle';\nimport { Diamond } from './diamond';\nimport { Square } from './square';\nexport function getMarker(shape) {\n switch (shape) {\n case 'circle':\n return Circle;\n case 'square':\n return Square;\n case 'diamond':\n return Diamond;\n default:\n return Circle;\n }\n}\n","export function getLineDash(lineCap, lineDash) {\n if (lineDash === void 0) { lineDash = 'solid'; }\n var buttOrNull = {\n solid: [],\n dash: [4, 3],\n dot: [1, 3],\n dashDot: [4, 3, 1, 3],\n dashDotDot: [4, 3, 1, 3, 1, 3],\n shortDot: [1, 1],\n shortDash: [3, 1],\n shortDashDot: [3, 1, 1, 1],\n shortDashDotDot: [3, 1, 1, 1, 1, 1],\n longDash: [8, 3],\n longDashDot: [8, 3, 1, 3],\n longDashDotDot: [8, 3, 1, 3, 1, 3]\n };\n var roundOrSquare = {\n solid: [],\n dash: [3, 3],\n dot: [0, 3],\n dashDot: [3, 3, 0, 3],\n dashDotDot: [3, 3, 0, 3, 0, 3],\n shortDot: [0, 2],\n shortDash: [2, 2],\n shortDashDot: [2, 2, 0, 2],\n shortDashDotDot: [2, 2, 0, 2, 0, 2],\n longDash: [7, 3],\n longDashDot: [7, 3, 0, 3],\n longDashDotDot: [7, 3, 0, 3, 0, 3]\n };\n if (lineCap === 'round' || lineCap === 'square') {\n if (roundOrSquare[lineDash] == undefined) {\n console.warn(\"'\" + lineDash + \"' is not a valid 'lineDash' option.\");\n return roundOrSquare.solid;\n }\n return roundOrSquare[lineDash];\n }\n if (buttOrNull[lineDash] == undefined) {\n console.warn(\"'\" + lineDash + \"' is not a valid 'lineDash' option.\");\n return buttOrNull.solid;\n }\n return buttOrNull[lineDash];\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Group } from '../../scene/group';\nimport { Path } from '../../scene/shape/path';\nimport { Line } from '../../scene/shape/line';\nimport { BandScale } from '../../scale/bandScale';\nimport { Selection } from '../../scene/selection';\nimport { Sparkline } from '../sparkline';\nimport { toTooltipHtml } from '../tooltip/sparklineTooltip';\nimport { getMarker } from '../marker/markerFactory';\nimport { extent } from '../../util/array';\nimport { isNumber } from '../../util/value';\nimport { getLineDash } from '../../util/lineDash';\nvar SparklineMarker = /** @class */ (function () {\n function SparklineMarker() {\n this.enabled = true;\n this.shape = 'circle';\n this.size = 0;\n this.fill = 'rgb(124, 181, 236)';\n this.stroke = 'rgb(124, 181, 236)';\n this.strokeWidth = 1;\n this.formatter = undefined;\n }\n return SparklineMarker;\n}());\nvar SparklineLine = /** @class */ (function () {\n function SparklineLine() {\n this.stroke = 'rgb(124, 181, 236)';\n this.strokeWidth = 1;\n }\n return SparklineLine;\n}());\nvar SparklineCrosshairs = /** @class */ (function () {\n function SparklineCrosshairs() {\n this.xLine = {\n enabled: true,\n stroke: 'rgba(0,0,0, 0.54)',\n strokeWidth: 1,\n lineDash: 'solid',\n lineCap: undefined,\n };\n this.yLine = {\n enabled: false,\n stroke: 'rgba(0,0,0, 0.54)',\n strokeWidth: 1,\n lineDash: 'solid',\n lineCap: undefined,\n };\n }\n return SparklineCrosshairs;\n}());\nvar AreaSparkline = /** @class */ (function (_super) {\n __extends(AreaSparkline, _super);\n function AreaSparkline() {\n var _this = _super.call(this) || this;\n _this.fill = 'rgba(124, 181, 236, 0.25)';\n _this.strokePath = new Path();\n _this.fillPath = new Path();\n _this.xCrosshairLine = new Line();\n _this.yCrosshairLine = new Line();\n _this.areaSparklineGroup = new Group();\n _this.fillPathData = [];\n _this.strokePathData = [];\n _this.xAxisLine = new Line();\n _this.markers = new Group();\n _this.markerSelection = Selection.select(_this.markers).selectAll();\n _this.markerSelectionData = [];\n _this.marker = new SparklineMarker();\n _this.line = new SparklineLine();\n _this.crosshairs = new SparklineCrosshairs();\n _this.rootGroup.append(_this.areaSparklineGroup);\n _this.areaSparklineGroup.append([\n _this.fillPath,\n _this.xAxisLine,\n _this.strokePath,\n _this.xCrosshairLine,\n _this.yCrosshairLine,\n _this.markers,\n ]);\n return _this;\n }\n AreaSparkline.prototype.getNodeData = function () {\n return this.markerSelectionData;\n };\n /**\n * If marker shape is changed, this method should be called to remove the previous marker nodes selection.\n */\n AreaSparkline.prototype.onMarkerShapeChange = function () {\n this.markerSelection = this.markerSelection.setData([]);\n this.markerSelection.exit.remove();\n this.scheduleLayout();\n };\n AreaSparkline.prototype.update = function () {\n var data = this.generateNodeData();\n if (!data) {\n return;\n }\n var nodeData = data.nodeData, fillData = data.fillData, strokeData = data.strokeData;\n this.markerSelectionData = nodeData;\n this.fillPathData = fillData;\n this.strokePathData = strokeData;\n this.updateSelection(nodeData);\n this.updateNodes();\n this.updateStroke(strokeData);\n this.updateFill(fillData);\n };\n AreaSparkline.prototype.updateYScaleDomain = function () {\n var _a = this, yData = _a.yData, yScale = _a.yScale;\n var yMinMax = extent(yData, isNumber);\n var yMin = 0;\n var yMax = 1;\n if (yMinMax !== undefined) {\n yMin = this.min = yMinMax[0];\n yMax = this.max = yMinMax[1];\n }\n // if yMin is positive, set yMin to 0\n yMin = yMin < 0 ? yMin : 0;\n // if yMax is negative, set yMax to 0\n yMax = yMax < 0 ? 0 : yMax;\n yScale.domain = [yMin, yMax];\n };\n AreaSparkline.prototype.generateNodeData = function () {\n var _a = this, data = _a.data, yData = _a.yData, xData = _a.xData, xScale = _a.xScale, yScale = _a.yScale;\n if (!data) {\n return;\n }\n var offsetX = xScale instanceof BandScale ? xScale.bandwidth / 2 : 0;\n var n = yData.length;\n var nodeData = [];\n var fillData = [];\n var strokeData = [];\n var firstValidX;\n var lastValidX;\n var previousX;\n var nextX;\n var yZero = yScale.convert(0);\n for (var i = 0; i < n; i++) {\n var yDatum = yData[i];\n var xDatum = xData[i];\n var x = xScale.convert(xDatum) + offsetX;\n var y = yScale.convert(yDatum);\n // if this iteration is not the last, set nextX using the next value in the data array\n if (i + 1 < n) {\n nextX = xScale.convert(xData[i + 1]) + offsetX;\n }\n // set stroke data regardless of missing/ undefined values. Undefined values will be handled in the updateStroke() method\n strokeData.push({\n seriesDatum: { x: xDatum, y: yDatum },\n point: { x: x, y: y },\n });\n if (yDatum === undefined && previousX !== undefined) {\n // if yDatum is undefined and there is a valid previous data point, add a phantom point at yZero\n // if a next data point exists, add a phantom point at yZero at the next X\n fillData.push({ seriesDatum: undefined, point: { x: previousX, y: yZero } });\n if (nextX !== undefined) {\n fillData.push({ seriesDatum: undefined, point: { x: nextX, y: yZero } });\n }\n }\n else if (yDatum !== undefined) {\n fillData.push({\n seriesDatum: { x: xDatum, y: yDatum },\n point: { x: x, y: y },\n });\n // set node data only if yDatum is not undefined. These values are used in the updateSelection() method to update markers\n nodeData.push({\n seriesDatum: { x: xDatum, y: yDatum },\n point: { x: x, y: y },\n });\n firstValidX = firstValidX !== undefined ? firstValidX : x;\n lastValidX = x;\n }\n previousX = x;\n }\n // phantom points for creating closed area\n fillData.push({ seriesDatum: undefined, point: { x: lastValidX, y: yZero } }, { seriesDatum: undefined, point: { x: firstValidX, y: yZero } });\n return { nodeData: nodeData, fillData: fillData, strokeData: strokeData };\n };\n AreaSparkline.prototype.updateAxisLine = function () {\n var _a = this, xScale = _a.xScale, yScale = _a.yScale, axis = _a.axis, xAxisLine = _a.xAxisLine;\n xAxisLine.x1 = xScale.range[0];\n xAxisLine.x2 = xScale.range[1];\n xAxisLine.y1 = xAxisLine.y2 = 0;\n xAxisLine.stroke = axis.stroke;\n xAxisLine.strokeWidth = axis.strokeWidth;\n var yZero = yScale.convert(0);\n xAxisLine.translationY = yZero;\n };\n AreaSparkline.prototype.updateSelection = function (selectionData) {\n var marker = this.marker;\n var shape = getMarker(marker.shape);\n var updateMarkerSelection = this.markerSelection.setData(selectionData);\n var enterMarkerSelection = updateMarkerSelection.enter.append(shape);\n updateMarkerSelection.exit.remove();\n this.markerSelection = updateMarkerSelection.merge(enterMarkerSelection);\n };\n AreaSparkline.prototype.updateNodes = function () {\n var _this = this;\n var _a = this, highlightedDatum = _a.highlightedDatum, highlightStyle = _a.highlightStyle, marker = _a.marker;\n var highlightSize = highlightStyle.size, highlightFill = highlightStyle.fill, highlightStroke = highlightStyle.stroke, highlightStrokeWidth = highlightStyle.strokeWidth;\n var markerFormatter = marker.formatter;\n this.markerSelection.each(function (node, datum, index) {\n var point = datum.point, seriesDatum = datum.seriesDatum;\n if (!point) {\n return;\n }\n var highlighted = datum === highlightedDatum;\n var markerFill = highlighted && highlightFill !== undefined ? highlightFill : marker.fill;\n var markerStroke = highlighted && highlightStroke !== undefined ? highlightStroke : marker.stroke;\n var markerStrokeWidth = highlighted && highlightStrokeWidth !== undefined ? highlightStrokeWidth : marker.strokeWidth;\n var markerSize = highlighted && highlightSize !== undefined ? highlightSize : marker.size;\n var markerFormat;\n if (markerFormatter) {\n var first = index === 0;\n var last = index === _this.markerSelectionData.length - 1;\n var min = seriesDatum.y === _this.min;\n var max = seriesDatum.y === _this.max;\n markerFormat = markerFormatter({\n datum: datum,\n xValue: seriesDatum.x,\n yValue: seriesDatum.y,\n min: min,\n max: max,\n first: first,\n last: last,\n fill: markerFill,\n stroke: markerStroke,\n strokeWidth: markerStrokeWidth,\n size: markerSize,\n highlighted: highlighted,\n });\n }\n node.size = markerFormat && markerFormat.size != undefined ? markerFormat.size : markerSize;\n node.fill = markerFormat && markerFormat.fill != undefined ? markerFormat.fill : markerFill;\n node.stroke = markerFormat && markerFormat.stroke != undefined ? markerFormat.stroke : markerStroke;\n node.strokeWidth =\n markerFormat && markerFormat.strokeWidth != undefined ? markerFormat.strokeWidth : markerStrokeWidth;\n node.translationX = point.x;\n node.translationY = point.y;\n node.visible =\n markerFormat && markerFormat.enabled != undefined\n ? markerFormat.enabled\n : marker.enabled && node.size > 0;\n });\n };\n AreaSparkline.prototype.updateStroke = function (strokeData) {\n var _a = this, strokePath = _a.strokePath, yData = _a.yData, line = _a.line;\n if (yData.length < 2) {\n return;\n }\n var path = strokePath.path;\n var n = strokeData.length;\n var moveTo = true;\n path.clear();\n for (var i = 0; i < n; i++) {\n var _b = strokeData[i], point = _b.point, seriesDatum = _b.seriesDatum;\n var x = point.x;\n var y = point.y;\n if (seriesDatum.y == undefined) {\n moveTo = true;\n }\n else {\n if (moveTo) {\n path.moveTo(x, y);\n moveTo = false;\n }\n else {\n path.lineTo(x, y);\n }\n }\n }\n strokePath.lineJoin = strokePath.lineCap = 'round';\n strokePath.fill = undefined;\n strokePath.stroke = line.stroke;\n strokePath.strokeWidth = line.strokeWidth;\n };\n AreaSparkline.prototype.updateFill = function (areaData) {\n var _a = this, fillPath = _a.fillPath, yData = _a.yData, fill = _a.fill;\n var path = fillPath.path;\n var n = areaData.length;\n path.clear();\n if (yData.length < 2) {\n return;\n }\n for (var i = 0; i < n; i++) {\n var point = areaData[i].point;\n var x = point.x;\n var y = point.y;\n if (i > 0) {\n path.lineTo(x, y);\n }\n else {\n path.moveTo(x, y);\n }\n }\n path.closePath();\n fillPath.lineJoin = 'round';\n fillPath.stroke = undefined;\n fillPath.fill = fill;\n };\n AreaSparkline.prototype.updateXCrosshairLine = function () {\n var _a = this, yScale = _a.yScale, xCrosshairLine = _a.xCrosshairLine, highlightedDatum = _a.highlightedDatum, xLine = _a.crosshairs.xLine;\n if (!xLine.enabled || highlightedDatum == undefined) {\n xCrosshairLine.strokeWidth = 0;\n return;\n }\n xCrosshairLine.y1 = yScale.range[0];\n xCrosshairLine.y2 = yScale.range[1];\n xCrosshairLine.x1 = xCrosshairLine.x2 = 0;\n xCrosshairLine.stroke = xLine.stroke;\n xCrosshairLine.strokeWidth = xLine.strokeWidth || 1;\n xCrosshairLine.lineCap = xLine.lineCap === 'round' || xLine.lineCap === 'square' ? xLine.lineCap : undefined;\n var lineDash = xLine.lineDash;\n xCrosshairLine.lineDash = Array.isArray(lineDash)\n ? lineDash\n : getLineDash(xCrosshairLine.lineCap, xLine.lineDash);\n xCrosshairLine.translationX = highlightedDatum.point.x;\n };\n AreaSparkline.prototype.updateYCrosshairLine = function () {\n var _a = this, xScale = _a.xScale, yCrosshairLine = _a.yCrosshairLine, highlightedDatum = _a.highlightedDatum, yLine = _a.crosshairs.yLine;\n if (!yLine.enabled || highlightedDatum == undefined) {\n yCrosshairLine.strokeWidth = 0;\n return;\n }\n yCrosshairLine.x1 = xScale.range[0];\n yCrosshairLine.x2 = xScale.range[1];\n yCrosshairLine.y1 = yCrosshairLine.y2 = 0;\n yCrosshairLine.stroke = yLine.stroke;\n yCrosshairLine.strokeWidth = yLine.strokeWidth || 1;\n yCrosshairLine.lineCap = yLine.lineCap === 'round' || yLine.lineCap === 'square' ? yLine.lineCap : undefined;\n var lineDash = yLine.lineDash;\n yCrosshairLine.lineDash = Array.isArray(lineDash)\n ? lineDash\n : getLineDash(yCrosshairLine.lineCap, yLine.lineDash);\n yCrosshairLine.translationY = highlightedDatum.point.y;\n };\n AreaSparkline.prototype.getTooltipHtml = function (datum) {\n var dataType = this.dataType;\n var seriesDatum = datum.seriesDatum;\n var yValue = seriesDatum.y;\n var xValue = seriesDatum.x;\n var content = this.formatNumericDatum(yValue);\n var title = dataType === 'array' || dataType === 'object' ? this.formatDatum(xValue) : undefined;\n var defaults = {\n content: content,\n title: title,\n };\n if (this.tooltip.renderer) {\n return toTooltipHtml(this.tooltip.renderer({\n context: this.context,\n datum: seriesDatum,\n yValue: yValue,\n xValue: xValue,\n }), defaults);\n }\n return toTooltipHtml(defaults);\n };\n AreaSparkline.className = 'AreaSparkline';\n return AreaSparkline;\n}(Sparkline));\nexport { AreaSparkline };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { BandScale } from '../../scale/bandScale';\nimport { Group } from '../../scene/group';\nimport { Path } from '../../scene/shape/path';\nimport { Selection } from '../../scene/selection';\nimport { Sparkline } from '../sparkline';\nimport { toTooltipHtml } from '../tooltip/sparklineTooltip';\nimport { getMarker } from '../marker/markerFactory';\nimport { extent } from '../../util/array';\nimport { isNumber } from '../../util/value';\nimport { Line } from '../../scene/shape/line';\nimport { getLineDash } from '../../util/lineDash';\nvar SparklineMarker = /** @class */ (function () {\n function SparklineMarker() {\n this.enabled = true;\n this.shape = 'circle';\n this.size = 0;\n this.fill = 'rgb(124, 181, 236)';\n this.stroke = 'rgb(124, 181, 236)';\n this.strokeWidth = 1;\n this.formatter = undefined;\n }\n return SparklineMarker;\n}());\nvar SparklineLine = /** @class */ (function () {\n function SparklineLine() {\n this.stroke = 'rgb(124, 181, 236)';\n this.strokeWidth = 1;\n }\n return SparklineLine;\n}());\nvar SparklineCrosshairs = /** @class */ (function () {\n function SparklineCrosshairs() {\n this.xLine = {\n enabled: true,\n stroke: 'rgba(0,0,0, 0.54)',\n strokeWidth: 1,\n lineDash: 'solid',\n lineCap: undefined,\n };\n this.yLine = {\n enabled: false,\n stroke: 'rgba(0,0,0, 0.54)',\n strokeWidth: 1,\n lineDash: 'solid',\n lineCap: undefined,\n };\n }\n return SparklineCrosshairs;\n}());\nvar LineSparkline = /** @class */ (function (_super) {\n __extends(LineSparkline, _super);\n function LineSparkline() {\n var _this = _super.call(this) || this;\n _this.linePath = new Path();\n _this.xCrosshairLine = new Line();\n _this.yCrosshairLine = new Line();\n _this.lineSparklineGroup = new Group();\n _this.markers = new Group();\n _this.markerSelection = Selection.select(_this.markers).selectAll();\n _this.markerSelectionData = [];\n _this.marker = new SparklineMarker();\n _this.line = new SparklineLine();\n _this.crosshairs = new SparklineCrosshairs();\n _this.rootGroup.append(_this.lineSparklineGroup);\n _this.lineSparklineGroup.append([_this.linePath, _this.xCrosshairLine, _this.yCrosshairLine, _this.markers]);\n return _this;\n }\n LineSparkline.prototype.getNodeData = function () {\n return this.markerSelectionData;\n };\n /**\n * If marker shape is changed, this method should be called to remove the previous marker nodes selection.\n */\n LineSparkline.prototype.onMarkerShapeChange = function () {\n this.markerSelection = this.markerSelection.setData([]);\n this.markerSelection.exit.remove();\n this.scheduleLayout();\n };\n LineSparkline.prototype.update = function () {\n var nodeData = this.generateNodeData();\n if (!nodeData) {\n return;\n }\n this.markerSelectionData = nodeData;\n this.updateSelection(nodeData);\n this.updateNodes();\n this.updateLine();\n };\n LineSparkline.prototype.updateYScaleDomain = function () {\n var _a = this, yData = _a.yData, yScale = _a.yScale;\n var yMinMax = extent(yData, isNumber);\n var yMin = 0;\n var yMax = 1;\n if (yMinMax !== undefined) {\n yMin = this.min = yMinMax[0];\n yMax = this.max = yMinMax[1];\n }\n if (yMin === yMax) {\n // if all values in the data are the same, yMin and yMax will be equal, need to adjust the domain with some padding\n var padding = Math.abs(yMin * 0.01);\n yMin -= padding;\n yMax += padding;\n }\n yScale.domain = [yMin, yMax];\n };\n LineSparkline.prototype.generateNodeData = function () {\n var _a = this, data = _a.data, yData = _a.yData, xData = _a.xData, xScale = _a.xScale, yScale = _a.yScale;\n if (!data) {\n return;\n }\n var offsetX = xScale instanceof BandScale ? xScale.bandwidth / 2 : 0;\n var nodeData = [];\n for (var i = 0; i < yData.length; i++) {\n var yDatum = yData[i];\n var xDatum = xData[i];\n if (yDatum == undefined) {\n continue;\n }\n var x = xScale.convert(xDatum) + offsetX;\n var y = yScale.convert(yDatum);\n nodeData.push({\n seriesDatum: { x: xDatum, y: yDatum },\n point: { x: x, y: y },\n });\n }\n return nodeData;\n };\n LineSparkline.prototype.updateSelection = function (selectionData) {\n var marker = this.marker;\n var shape = getMarker(marker.shape);\n var updateMarkerSelection = this.markerSelection.setData(selectionData);\n var enterMarkerSelection = updateMarkerSelection.enter.append(shape);\n updateMarkerSelection.exit.remove();\n this.markerSelection = updateMarkerSelection.merge(enterMarkerSelection);\n };\n LineSparkline.prototype.updateNodes = function () {\n var _this = this;\n var _a = this, highlightedDatum = _a.highlightedDatum, highlightStyle = _a.highlightStyle, marker = _a.marker;\n var highlightSize = highlightStyle.size, highlightFill = highlightStyle.fill, highlightStroke = highlightStyle.stroke, highlightStrokeWidth = highlightStyle.strokeWidth;\n var markerFormatter = marker.formatter;\n this.markerSelection.each(function (node, datum, index) {\n var highlighted = datum === highlightedDatum;\n var markerFill = highlighted && highlightFill !== undefined ? highlightFill : marker.fill;\n var markerStroke = highlighted && highlightStroke !== undefined ? highlightStroke : marker.stroke;\n var markerStrokeWidth = highlighted && highlightStrokeWidth !== undefined ? highlightStrokeWidth : marker.strokeWidth;\n var markerSize = highlighted && highlightSize !== undefined ? highlightSize : marker.size;\n var markerFormat;\n var seriesDatum = datum.seriesDatum, point = datum.point;\n if (markerFormatter) {\n var first = index === 0;\n var last = index === _this.markerSelectionData.length - 1;\n var min = seriesDatum.y === _this.min;\n var max = seriesDatum.y === _this.max;\n markerFormat = markerFormatter({\n datum: datum,\n xValue: seriesDatum.x,\n yValue: seriesDatum.y,\n min: min,\n max: max,\n first: first,\n last: last,\n fill: markerFill,\n stroke: markerStroke,\n strokeWidth: markerStrokeWidth,\n size: markerSize,\n highlighted: highlighted,\n });\n }\n node.size = markerFormat && markerFormat.size != undefined ? markerFormat.size : markerSize;\n node.fill = markerFormat && markerFormat.fill != undefined ? markerFormat.fill : markerFill;\n node.stroke = markerFormat && markerFormat.stroke != undefined ? markerFormat.stroke : markerStroke;\n node.strokeWidth =\n markerFormat && markerFormat.strokeWidth != undefined ? markerFormat.strokeWidth : markerStrokeWidth;\n node.translationX = point.x;\n node.translationY = point.y;\n node.visible =\n markerFormat && markerFormat.enabled != undefined\n ? markerFormat.enabled\n : marker.enabled && node.size > 0;\n });\n };\n LineSparkline.prototype.updateLine = function () {\n var _a = this, linePath = _a.linePath, yData = _a.yData, xData = _a.xData, xScale = _a.xScale, yScale = _a.yScale, line = _a.line;\n if (yData.length < 2) {\n return;\n }\n var path = linePath.path;\n var n = yData.length;\n var offsetX = xScale instanceof BandScale ? xScale.bandwidth / 2 : 0;\n var moveTo = true;\n path.clear();\n for (var i = 0; i < n; i++) {\n var xDatum = xData[i];\n var yDatum = yData[i];\n var x = xScale.convert(xDatum) + offsetX;\n var y = yScale.convert(yDatum);\n if (yDatum == undefined) {\n moveTo = true;\n }\n else {\n if (moveTo) {\n path.moveTo(x, y);\n moveTo = false;\n }\n else {\n path.lineTo(x, y);\n }\n }\n }\n linePath.fill = undefined;\n linePath.stroke = line.stroke;\n linePath.strokeWidth = line.strokeWidth;\n };\n LineSparkline.prototype.updateXCrosshairLine = function () {\n var _a = this, yScale = _a.yScale, xCrosshairLine = _a.xCrosshairLine, highlightedDatum = _a.highlightedDatum, xLine = _a.crosshairs.xLine;\n if (!xLine.enabled || highlightedDatum == undefined) {\n xCrosshairLine.strokeWidth = 0;\n return;\n }\n xCrosshairLine.y1 = yScale.range[0];\n xCrosshairLine.y2 = yScale.range[1];\n xCrosshairLine.x1 = xCrosshairLine.x2 = 0;\n xCrosshairLine.stroke = xLine.stroke;\n xCrosshairLine.strokeWidth = xLine.strokeWidth || 1;\n xCrosshairLine.lineCap = xLine.lineCap === 'round' || xLine.lineCap === 'square' ? xLine.lineCap : undefined;\n var lineDash = xLine.lineDash;\n xCrosshairLine.lineDash = Array.isArray(lineDash)\n ? lineDash\n : getLineDash(xCrosshairLine.lineCap, xLine.lineDash);\n xCrosshairLine.translationX = highlightedDatum.point.x;\n };\n LineSparkline.prototype.updateYCrosshairLine = function () {\n var _a = this, xScale = _a.xScale, yCrosshairLine = _a.yCrosshairLine, highlightedDatum = _a.highlightedDatum, yLine = _a.crosshairs.yLine;\n if (!yLine.enabled || highlightedDatum == undefined) {\n yCrosshairLine.strokeWidth = 0;\n return;\n }\n yCrosshairLine.x1 = xScale.range[0];\n yCrosshairLine.x2 = xScale.range[1];\n yCrosshairLine.y1 = yCrosshairLine.y2 = 0;\n yCrosshairLine.stroke = yLine.stroke;\n yCrosshairLine.strokeWidth = yLine.strokeWidth || 1;\n yCrosshairLine.lineCap = yLine.lineCap === 'round' || yLine.lineCap === 'square' ? yLine.lineCap : undefined;\n var lineDash = yLine.lineDash;\n yCrosshairLine.lineDash = Array.isArray(lineDash)\n ? lineDash\n : getLineDash(yCrosshairLine.lineCap, yLine.lineDash);\n yCrosshairLine.translationY = highlightedDatum.point.y;\n };\n LineSparkline.prototype.getTooltipHtml = function (datum) {\n var dataType = this.dataType;\n var seriesDatum = datum.seriesDatum;\n var yValue = seriesDatum.y;\n var xValue = seriesDatum.x;\n var content = this.formatNumericDatum(yValue);\n var title = dataType === 'array' || dataType === 'object' ? this.formatDatum(xValue) : undefined;\n var defaults = {\n content: content,\n title: title,\n };\n if (this.tooltip.renderer) {\n return toTooltipHtml(this.tooltip.renderer({\n context: this.context,\n datum: seriesDatum,\n yValue: yValue,\n xValue: xValue,\n }), defaults);\n }\n return toTooltipHtml(defaults);\n };\n LineSparkline.className = 'LineSparkline';\n return LineSparkline;\n}(Sparkline));\nexport { LineSparkline };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Shape } from '../../scene/shape/shape';\nvar Rectangle = /** @class */ (function (_super) {\n __extends(Rectangle, _super);\n function Rectangle() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._x = 0;\n _this._y = 0;\n _this._width = 0;\n _this._height = 0;\n /**\n * If `true`, the rect is aligned to the pixel grid for crisp looking lines.\n */\n _this._crisp = false;\n return _this;\n }\n Object.defineProperty(Rectangle.prototype, \"x\", {\n get: function () {\n return this._x;\n },\n set: function (value) {\n if (this._x !== value) {\n this._x = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rectangle.prototype, \"y\", {\n get: function () {\n return this._y;\n },\n set: function (value) {\n if (this._y !== value) {\n this._y = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rectangle.prototype, \"width\", {\n get: function () {\n return this._width;\n },\n set: function (value) {\n if (this._width !== value) {\n this._width = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rectangle.prototype, \"height\", {\n get: function () {\n return this._height;\n },\n set: function (value) {\n if (this._height !== value) {\n this._height = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rectangle.prototype, \"crisp\", {\n get: function () {\n return this._crisp;\n },\n set: function (value) {\n if (this._crisp !== value) {\n this._crisp = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Rectangle.prototype.isPointInStroke = function (x, y) {\n return false;\n };\n Rectangle.prototype.isPointInPath = function (x, y) {\n return false;\n };\n Rectangle.prototype.render = function (ctx) {\n if (this.dirtyTransform) {\n this.computeTransformMatrix();\n }\n this.matrix.toContext(ctx);\n var _a = this, x = _a.x, y = _a.y, width = _a.width, height = _a.height, crisp = _a.crisp;\n ctx.beginPath();\n if (crisp) {\n // ensure stroke aligns to the pixel grid\n var _b = this, a = _b.alignment, al = _b.align;\n ctx.rect(al(a, x), al(a, y), al(a, x, width), al(a, y, height));\n }\n else {\n ctx.rect(x, y, width, height);\n }\n this.fillStroke(ctx);\n this.dirty = false;\n };\n Rectangle.className = 'Column';\n return Rectangle;\n}(Shape));\nexport { Rectangle };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Shape } from \"./shape\";\nimport { chainObjects } from \"../../util/object\";\nimport { BBox } from \"../bbox\";\nimport { HdpiCanvas } from \"../../canvas/hdpiCanvas\";\nvar Text = /** @class */ (function (_super) {\n __extends(Text, _super);\n function Text() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._x = 0;\n _this._y = 0;\n _this.lineBreakRegex = /\\r?\\n/g;\n _this.lines = [];\n _this._text = '';\n _this._dirtyFont = true;\n _this._fontSize = 10;\n _this._fontFamily = 'sans-serif';\n _this._textAlign = Text.defaultStyles.textAlign;\n _this._textBaseline = Text.defaultStyles.textBaseline;\n _this._lineHeight = 14;\n return _this;\n }\n Object.defineProperty(Text.prototype, \"x\", {\n get: function () {\n return this._x;\n },\n set: function (value) {\n if (this._x !== value) {\n this._x = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"y\", {\n get: function () {\n return this._y;\n },\n set: function (value) {\n if (this._y !== value) {\n this._y = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Text.prototype.splitText = function () {\n this.lines = this._text.split(this.lineBreakRegex);\n };\n Object.defineProperty(Text.prototype, \"text\", {\n get: function () {\n return this._text;\n },\n set: function (value) {\n var str = String(value); // `value` can be an object here\n if (this._text !== str) {\n this._text = str;\n this.splitText();\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"font\", {\n get: function () {\n if (this.dirtyFont) {\n this.dirtyFont = false;\n this._font = getFont(this.fontSize, this.fontFamily, this.fontStyle, this.fontWeight);\n }\n return this._font;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"dirtyFont\", {\n get: function () {\n return this._dirtyFont;\n },\n set: function (value) {\n if (this._dirtyFont !== value) {\n this._dirtyFont = value;\n if (value) {\n this.dirty = true;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"fontStyle\", {\n get: function () {\n return this._fontStyle;\n },\n set: function (value) {\n if (this._fontStyle !== value) {\n this._fontStyle = value;\n this.dirtyFont = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"fontWeight\", {\n get: function () {\n return this._fontWeight;\n },\n set: function (value) {\n if (this._fontWeight !== value) {\n this._fontWeight = value;\n this.dirtyFont = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"fontSize\", {\n get: function () {\n return this._fontSize;\n },\n set: function (value) {\n if (!isFinite(value)) {\n value = 10;\n }\n if (this._fontSize !== value) {\n this._fontSize = value;\n this.dirtyFont = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"fontFamily\", {\n get: function () {\n return this._fontFamily;\n },\n set: function (value) {\n if (this._fontFamily !== value) {\n this._fontFamily = value;\n this.dirtyFont = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"textAlign\", {\n get: function () {\n return this._textAlign;\n },\n set: function (value) {\n if (this._textAlign !== value) {\n this._textAlign = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"textBaseline\", {\n get: function () {\n return this._textBaseline;\n },\n set: function (value) {\n if (this._textBaseline !== value) {\n this._textBaseline = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"lineHeight\", {\n get: function () {\n return this._lineHeight;\n },\n set: function (value) {\n // Multi-line text is complicated because:\n // - Canvas does not support it natively, so we have to implement it manually\n // - need to know the height of each line -> need to parse the font shorthand ->\n // generally impossible to do because font size may not be in pixels\n // - so, need to measure the text instead, each line individually -> expensive\n // - or make the user provide the line height manually for multi-line text\n // - computeBBox should use the lineHeight for multi-line text but ignore it otherwise\n // - textBaseline kind of loses its meaning for multi-line text\n if (this._lineHeight !== value) {\n this._lineHeight = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Text.prototype.computeBBox = function () {\n return HdpiCanvas.has.textMetrics\n ? this.getPreciseBBox()\n : this.getApproximateBBox();\n };\n Text.prototype.getPreciseBBox = function () {\n var metrics = HdpiCanvas.measureText(this.text, this.font, this.textBaseline, this.textAlign);\n return new BBox(this.x - metrics.actualBoundingBoxLeft, this.y - metrics.actualBoundingBoxAscent, metrics.width, metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent);\n };\n Text.prototype.getApproximateBBox = function () {\n var size = HdpiCanvas.getTextSize(this.text, this.font);\n var _a = this, x = _a.x, y = _a.y;\n switch (this.textAlign) {\n case 'end':\n case 'right':\n x -= size.width;\n break;\n case 'center':\n x -= size.width / 2;\n }\n switch (this.textBaseline) {\n case 'alphabetic':\n y -= size.height * 0.7;\n break;\n case 'middle':\n y -= size.height * 0.45;\n break;\n case 'ideographic':\n y -= size.height;\n break;\n case 'hanging':\n y -= size.height * 0.2;\n break;\n case 'bottom':\n y -= size.height;\n break;\n }\n return new BBox(x, y, size.width, size.height);\n };\n Text.prototype.isPointInPath = function (x, y) {\n var point = this.transformPoint(x, y);\n var bbox = this.computeBBox();\n return bbox ? bbox.containsPoint(point.x, point.y) : false;\n };\n Text.prototype.isPointInStroke = function (x, y) {\n return false;\n };\n Text.prototype.render = function (ctx) {\n if (!this.lines.length || !this.scene) {\n return;\n }\n if (this.dirtyTransform) {\n this.computeTransformMatrix();\n }\n // this.matrix.transformBBox(this.computeBBox!()).render(ctx); // debug\n this.matrix.toContext(ctx);\n var _a = this, fill = _a.fill, stroke = _a.stroke, strokeWidth = _a.strokeWidth;\n ctx.font = this.font;\n ctx.textAlign = this.textAlign;\n ctx.textBaseline = this.textBaseline;\n var pixelRatio = this.scene.canvas.pixelRatio || 1;\n var globalAlpha = ctx.globalAlpha;\n if (fill) {\n ctx.fillStyle = fill;\n ctx.globalAlpha = globalAlpha * this.opacity * this.fillOpacity;\n var _b = this, fillShadow = _b.fillShadow, text = _b.text, x = _b.x, y = _b.y;\n if (fillShadow && fillShadow.enabled) {\n ctx.shadowColor = fillShadow.color;\n ctx.shadowOffsetX = fillShadow.xOffset * pixelRatio;\n ctx.shadowOffsetY = fillShadow.yOffset * pixelRatio;\n ctx.shadowBlur = fillShadow.blur * pixelRatio;\n }\n ctx.fillText(text, x, y);\n }\n if (stroke && strokeWidth) {\n ctx.strokeStyle = stroke;\n ctx.lineWidth = strokeWidth;\n ctx.globalAlpha = globalAlpha * this.opacity * this.strokeOpacity;\n var _c = this, lineDash = _c.lineDash, lineDashOffset = _c.lineDashOffset, lineCap = _c.lineCap, lineJoin = _c.lineJoin, strokeShadow = _c.strokeShadow, text = _c.text, x = _c.x, y = _c.y;\n if (lineDash) {\n ctx.setLineDash(lineDash);\n }\n if (lineDashOffset) {\n ctx.lineDashOffset = lineDashOffset;\n }\n if (lineCap) {\n ctx.lineCap = lineCap;\n }\n if (lineJoin) {\n ctx.lineJoin = lineJoin;\n }\n if (strokeShadow && strokeShadow.enabled) {\n ctx.shadowColor = strokeShadow.color;\n ctx.shadowOffsetX = strokeShadow.xOffset * pixelRatio;\n ctx.shadowOffsetY = strokeShadow.yOffset * pixelRatio;\n ctx.shadowBlur = strokeShadow.blur * pixelRatio;\n }\n ctx.strokeText(text, x, y);\n }\n this.dirty = false;\n };\n Text.className = 'Text';\n Text.defaultStyles = chainObjects(Shape.defaultStyles, {\n textAlign: 'start',\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 10,\n fontFamily: 'sans-serif',\n textBaseline: 'alphabetic'\n });\n return Text;\n}(Shape));\nexport { Text };\nexport function getFont(fontSize, fontFamily, fontStyle, fontWeight) {\n return [\n fontStyle || '',\n fontWeight || '',\n fontSize + 'px',\n fontFamily\n ].join(' ').trim();\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { getFont } from '../../scene/shape/text';\nimport { Observable, reactive } from '../../util/observable';\nvar Label = /** @class */ (function (_super) {\n __extends(Label, _super);\n function Label() {\n var _this = _super.call(this) || this;\n _this.enabled = true;\n _this.fontSize = 8;\n _this.fontFamily = 'Verdana, sans-serif';\n _this.color = 'rgba(70, 70, 70, 1)';\n return _this;\n }\n Label.prototype.getFont = function () {\n return getFont(this.fontSize, this.fontFamily, this.fontStyle, this.fontWeight);\n };\n __decorate([\n reactive('change', 'dataChange')\n ], Label.prototype, \"enabled\", void 0);\n __decorate([\n reactive('change')\n ], Label.prototype, \"fontSize\", void 0);\n __decorate([\n reactive('change')\n ], Label.prototype, \"fontFamily\", void 0);\n __decorate([\n reactive('change')\n ], Label.prototype, \"fontStyle\", void 0);\n __decorate([\n reactive('change')\n ], Label.prototype, \"fontWeight\", void 0);\n __decorate([\n reactive('change')\n ], Label.prototype, \"color\", void 0);\n return Label;\n}(Observable));\nexport { Label };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { chainObjects } from '../../util/object';\nimport { HdpiCanvas } from '../../canvas/hdpiCanvas';\nimport { Shape } from '../../scene/shape/shape';\nimport { BBox } from '../../scene/bbox';\nvar Text = /** @class */ (function (_super) {\n __extends(Text, _super);\n function Text() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._x = 0;\n _this._y = 0;\n _this.lineBreakRegex = /\\r?\\n/g;\n _this.lines = [];\n _this._text = '';\n _this._dirtyFont = true;\n _this._fontSize = 10;\n _this._fontFamily = 'sans-serif';\n _this._textAlign = Text.defaultStyles.textAlign;\n _this._textBaseline = Text.defaultStyles.textBaseline;\n _this._lineHeight = 14;\n return _this;\n }\n Object.defineProperty(Text.prototype, \"x\", {\n get: function () {\n return this._x;\n },\n set: function (value) {\n if (this._x !== value) {\n this._x = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"y\", {\n get: function () {\n return this._y;\n },\n set: function (value) {\n if (this._y !== value) {\n this._y = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Text.prototype.splitText = function () {\n this.lines = this._text.split(this.lineBreakRegex);\n };\n Object.defineProperty(Text.prototype, \"text\", {\n get: function () {\n return this._text;\n },\n set: function (value) {\n var str = String(value); // `value` can be an object here\n if (this._text !== str) {\n this._text = str;\n this.splitText();\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"font\", {\n get: function () {\n if (this.dirtyFont) {\n this.dirtyFont = false;\n this._font = getFont(this.fontSize, this.fontFamily, this.fontStyle, this.fontWeight);\n }\n return this._font;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"dirtyFont\", {\n get: function () {\n return this._dirtyFont;\n },\n set: function (value) {\n if (this._dirtyFont !== value) {\n this._dirtyFont = value;\n if (value) {\n this.dirty = true;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"fontStyle\", {\n get: function () {\n return this._fontStyle;\n },\n set: function (value) {\n if (this._fontStyle !== value) {\n this._fontStyle = value;\n this.dirtyFont = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"fontWeight\", {\n get: function () {\n return this._fontWeight;\n },\n set: function (value) {\n if (this._fontWeight !== value) {\n this._fontWeight = value;\n this.dirtyFont = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"fontSize\", {\n get: function () {\n return this._fontSize;\n },\n set: function (value) {\n if (!isFinite(value)) {\n value = 10;\n }\n if (this._fontSize !== value) {\n this._fontSize = value;\n this.dirtyFont = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"fontFamily\", {\n get: function () {\n return this._fontFamily;\n },\n set: function (value) {\n if (this._fontFamily !== value) {\n this._fontFamily = value;\n this.dirtyFont = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"textAlign\", {\n get: function () {\n return this._textAlign;\n },\n set: function (value) {\n if (this._textAlign !== value) {\n this._textAlign = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"textBaseline\", {\n get: function () {\n return this._textBaseline;\n },\n set: function (value) {\n if (this._textBaseline !== value) {\n this._textBaseline = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Text.prototype, \"lineHeight\", {\n get: function () {\n return this._lineHeight;\n },\n set: function (value) {\n // Multi-line text is complicated because:\n // - Canvas does not support it natively, so we have to implement it manually\n // - need to know the height of each line -> need to parse the font shorthand ->\n // generally impossible to do because font size may not be in pixels\n // - so, need to measure the text instead, each line individually -> expensive\n // - or make the user provide the line height manually for multi-line text\n // - computeBBox should use the lineHeight for multi-line text but ignore it otherwise\n // - textBaseline kind of loses its meaning for multi-line text\n if (this._lineHeight !== value) {\n this._lineHeight = value;\n this.dirty = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Text.prototype.computeBBox = function () {\n return HdpiCanvas.has.textMetrics ? this.getPreciseBBox() : this.getApproximateBBox();\n };\n Text.prototype.getPreciseBBox = function () {\n var metrics = HdpiCanvas.measureText(this.text, this.font, this.textBaseline, this.textAlign);\n return new BBox(this.x - metrics.actualBoundingBoxLeft, this.y - metrics.actualBoundingBoxAscent, metrics.width, metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent);\n };\n Text.prototype.getApproximateBBox = function () {\n var size = HdpiCanvas.getTextSize(this.text, this.font);\n var _a = this, x = _a.x, y = _a.y;\n switch (this.textAlign) {\n case 'end':\n case 'right':\n x -= size.width;\n break;\n case 'center':\n x -= size.width / 2;\n }\n switch (this.textBaseline) {\n case 'alphabetic':\n y -= size.height * 0.7;\n break;\n case 'middle':\n y -= size.height * 0.45;\n break;\n case 'ideographic':\n y -= size.height;\n break;\n case 'hanging':\n y -= size.height * 0.2;\n break;\n case 'bottom':\n y -= size.height;\n break;\n }\n return new BBox(x, y, size.width, size.height);\n };\n Text.prototype.isPointInPath = function (x, y) {\n var point = this.transformPoint(x, y);\n var bbox = this.computeBBox();\n return bbox ? bbox.containsPoint(point.x, point.y) : false;\n };\n Text.prototype.isPointInStroke = function (x, y) {\n return false;\n };\n Text.prototype.render = function (ctx) {\n if (!this.lines.length || !this.scene) {\n return;\n }\n if (this.dirtyTransform) {\n this.computeTransformMatrix();\n }\n // this.matrix.transformBBox(this.computeBBox!()).render(ctx); // debug\n this.matrix.toContext(ctx);\n var _a = this, fill = _a.fill, stroke = _a.stroke, strokeWidth = _a.strokeWidth;\n ctx.font = this.font;\n ctx.textAlign = this.textAlign;\n ctx.textBaseline = this.textBaseline;\n var pixelRatio = this.scene.canvas.pixelRatio || 1;\n var globalAlpha = ctx.globalAlpha;\n if (fill) {\n ctx.fillStyle = fill;\n ctx.globalAlpha = globalAlpha * this.opacity * this.fillOpacity;\n var _b = this, fillShadow = _b.fillShadow, text = _b.text, x = _b.x, y = _b.y;\n if (fillShadow && fillShadow.enabled) {\n ctx.shadowColor = fillShadow.color;\n ctx.shadowOffsetX = fillShadow.xOffset * pixelRatio;\n ctx.shadowOffsetY = fillShadow.yOffset * pixelRatio;\n ctx.shadowBlur = fillShadow.blur * pixelRatio;\n }\n ctx.fillText(text, x, y);\n }\n if (stroke && strokeWidth) {\n ctx.strokeStyle = stroke;\n ctx.lineWidth = strokeWidth;\n ctx.globalAlpha = globalAlpha * this.opacity * this.strokeOpacity;\n var _c = this, lineDash = _c.lineDash, lineDashOffset = _c.lineDashOffset, lineCap = _c.lineCap, lineJoin = _c.lineJoin, strokeShadow = _c.strokeShadow, text = _c.text, x = _c.x, y = _c.y;\n if (lineDash) {\n ctx.setLineDash(lineDash);\n }\n if (lineDashOffset) {\n ctx.lineDashOffset = lineDashOffset;\n }\n if (lineCap) {\n ctx.lineCap = lineCap;\n }\n if (lineJoin) {\n ctx.lineJoin = lineJoin;\n }\n if (strokeShadow && strokeShadow.enabled) {\n ctx.shadowColor = strokeShadow.color;\n ctx.shadowOffsetX = strokeShadow.xOffset * pixelRatio;\n ctx.shadowOffsetY = strokeShadow.yOffset * pixelRatio;\n ctx.shadowBlur = strokeShadow.blur * pixelRatio;\n }\n ctx.strokeText(text, x, y);\n }\n this.dirty = false;\n };\n Text.className = 'Text';\n Text.defaultStyles = chainObjects(Shape.defaultStyles, {\n textAlign: 'start',\n fontStyle: undefined,\n fontWeight: undefined,\n fontSize: 10,\n fontFamily: 'sans-serif',\n textBaseline: 'alphabetic',\n });\n return Text;\n}(Shape));\nexport { Text };\nexport function getFont(fontSize, fontFamily, fontStyle, fontWeight) {\n return [fontStyle || '', fontWeight || '', fontSize + 'px', fontFamily].join(' ').trim();\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Sparkline } from '../sparkline';\nimport { Group } from '../../scene/group';\nimport { Line } from '../../scene/shape/line';\nimport { Selection } from '../../scene/selection';\nimport { toTooltipHtml } from '../tooltip/sparklineTooltip';\nimport { Rectangle } from './rectangle';\nimport { extent } from '../../util/array';\nimport { isNumber } from '../../util/value';\nimport { Label } from '../label/label';\nimport { Text } from '../label/text';\nimport { PointerEvents } from '../../scene/node';\nvar BarColumnNodeTag;\n(function (BarColumnNodeTag) {\n BarColumnNodeTag[BarColumnNodeTag[\"Rect\"] = 0] = \"Rect\";\n BarColumnNodeTag[BarColumnNodeTag[\"Label\"] = 1] = \"Label\";\n})(BarColumnNodeTag || (BarColumnNodeTag = {}));\nexport var BarColumnLabelPlacement;\n(function (BarColumnLabelPlacement) {\n BarColumnLabelPlacement[\"InsideBase\"] = \"insideBase\";\n BarColumnLabelPlacement[\"InsideEnd\"] = \"insideEnd\";\n BarColumnLabelPlacement[\"Center\"] = \"center\";\n BarColumnLabelPlacement[\"OutsideEnd\"] = \"outsideEnd\";\n})(BarColumnLabelPlacement || (BarColumnLabelPlacement = {}));\nvar BarColumnLabel = /** @class */ (function (_super) {\n __extends(BarColumnLabel, _super);\n function BarColumnLabel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.formatter = undefined;\n _this.placement = BarColumnLabelPlacement.InsideEnd;\n return _this;\n }\n return BarColumnLabel;\n}(Label));\nexport { BarColumnLabel };\nvar BarColumnSparkline = /** @class */ (function (_super) {\n __extends(BarColumnSparkline, _super);\n function BarColumnSparkline() {\n var _this = _super.call(this) || this;\n _this.fill = 'rgb(124, 181, 236)';\n _this.stroke = 'silver';\n _this.strokeWidth = 0;\n _this.paddingInner = 0.1;\n _this.paddingOuter = 0.2;\n _this.valueAxisDomain = undefined;\n _this.formatter = undefined;\n _this.axisLine = new Line();\n _this.sparklineGroup = new Group();\n _this.rectGroup = new Group();\n _this.labelGroup = new Group();\n _this.rectSelection = Selection.select(_this.rectGroup).selectAll();\n _this.labelSelection = Selection.select(_this.labelGroup).selectAll();\n _this.nodeSelectionData = [];\n _this.label = new BarColumnLabel();\n _this.rootGroup.append(_this.sparklineGroup);\n _this.sparklineGroup.append([_this.rectGroup, _this.axisLine, _this.labelGroup]);\n _this.axisLine.lineCap = 'round';\n _this.label.enabled = false;\n return _this;\n }\n BarColumnSparkline.prototype.getNodeData = function () {\n return this.nodeSelectionData;\n };\n BarColumnSparkline.prototype.update = function () {\n this.updateSelections();\n this.updateNodes();\n };\n BarColumnSparkline.prototype.updateSelections = function () {\n var nodeData = this.generateNodeData();\n if (!nodeData) {\n return;\n }\n this.nodeSelectionData = nodeData;\n this.updateRectSelection(nodeData);\n this.updateLabelSelection(nodeData);\n };\n BarColumnSparkline.prototype.updateNodes = function () {\n this.updateRectNodes();\n this.updateLabelNodes();\n };\n BarColumnSparkline.prototype.updateYScaleDomain = function () {\n var _a = this, yScale = _a.yScale, yData = _a.yData, valueAxisDomain = _a.valueAxisDomain;\n var yMinMax = extent(yData, isNumber);\n var yMin = 0;\n var yMax = 1;\n if (yMinMax !== undefined) {\n yMin = this.min = yMinMax[0];\n yMax = this.max = yMinMax[1];\n }\n // if yMin is positive, set yMin to 0\n yMin = yMin < 0 ? yMin : 0;\n // if yMax is negative, set yMax to 0\n yMax = yMax < 0 ? 0 : yMax;\n if (valueAxisDomain) {\n if (valueAxisDomain[1] < yMax) {\n valueAxisDomain[1] = yMax;\n }\n if (valueAxisDomain[0] > yMin) {\n valueAxisDomain[0] = yMin;\n }\n }\n yScale.domain = valueAxisDomain ? valueAxisDomain : [yMin, yMax];\n };\n BarColumnSparkline.prototype.updateRectSelection = function (selectionData) {\n var updateRectSelection = this.rectSelection.setData(selectionData);\n var enterRectSelection = updateRectSelection.enter.append(Rectangle);\n updateRectSelection.exit.remove();\n this.rectSelection = updateRectSelection.merge(enterRectSelection);\n };\n BarColumnSparkline.prototype.updateRectNodes = function () {\n var _this = this;\n var _a = this, highlightedDatum = _a.highlightedDatum, nodeFormatter = _a.formatter, fill = _a.fill, stroke = _a.stroke, strokeWidth = _a.strokeWidth;\n var _b = this.highlightStyle, highlightFill = _b.fill, highlightStroke = _b.stroke, highlightStrokeWidth = _b.strokeWidth;\n this.rectSelection.each(function (node, datum, index) {\n var highlighted = datum === highlightedDatum;\n var nodeFill = highlighted && highlightFill !== undefined ? highlightFill : fill;\n var nodeStroke = highlighted && highlightStroke !== undefined ? highlightStroke : stroke;\n var nodeStrokeWidth = highlighted && highlightStrokeWidth !== undefined ? highlightStrokeWidth : strokeWidth;\n var nodeFormat;\n var x = datum.x, y = datum.y, width = datum.width, height = datum.height, seriesDatum = datum.seriesDatum;\n if (nodeFormatter) {\n var first = index === 0;\n var last = index === _this.nodeSelectionData.length - 1;\n var min = seriesDatum.y === _this.min;\n var max = seriesDatum.y === _this.max;\n nodeFormat = nodeFormatter({\n datum: datum,\n xValue: seriesDatum.x,\n yValue: seriesDatum.y,\n width: width,\n height: height,\n min: min,\n max: max,\n first: first,\n last: last,\n fill: nodeFill,\n stroke: nodeStroke,\n strokeWidth: nodeStrokeWidth,\n highlighted: highlighted,\n });\n }\n node.fill = (nodeFormat && nodeFormat.fill) || nodeFill;\n node.stroke = (nodeFormat && nodeFormat.stroke) || nodeStroke;\n node.strokeWidth = (nodeFormat && nodeFormat.strokeWidth) || nodeStrokeWidth;\n node.x = node.y = 0;\n node.width = width;\n node.height = height;\n node.visible = node.height > 0;\n node.translationX = x;\n node.translationY = y;\n // shifts bars upwards?\n // node.crisp = true;\n });\n };\n BarColumnSparkline.prototype.updateLabelSelection = function (selectionData) {\n var updateLabels = this.labelSelection.setData(selectionData);\n var enterLabels = updateLabels.enter.append(Text).each(function (text) {\n (text.tag = BarColumnNodeTag.Label), (text.pointerEvents = PointerEvents.None);\n });\n updateLabels.exit.remove();\n this.labelSelection = updateLabels.merge(enterLabels);\n };\n BarColumnSparkline.prototype.updateLabelNodes = function () {\n var _a = this.label, labelEnabled = _a.enabled, fontStyle = _a.fontStyle, fontWeight = _a.fontWeight, fontSize = _a.fontSize, fontFamily = _a.fontFamily, color = _a.color;\n this.labelSelection.each(function (text, datum) {\n var label = datum.label;\n if (label && labelEnabled) {\n text.fontStyle = fontStyle;\n text.fontWeight = fontWeight;\n text.fontSize = fontSize;\n text.fontFamily = fontFamily;\n text.textAlign = label.textAlign;\n text.textBaseline = label.textBaseline;\n text.text = label.text;\n text.x = label.x;\n text.y = label.y;\n text.fill = color;\n text.visible = true;\n }\n else {\n text.visible = false;\n }\n });\n };\n BarColumnSparkline.prototype.getTooltipHtml = function (datum) {\n var dataType = this.dataType;\n var seriesDatum = datum.seriesDatum;\n var yValue = seriesDatum.y;\n var xValue = seriesDatum.x;\n var content = this.formatNumericDatum(yValue);\n var title = dataType === 'array' || dataType === 'object' ? this.formatDatum(xValue) : undefined;\n var defaults = {\n content: content,\n title: title,\n };\n if (this.tooltip.renderer) {\n return toTooltipHtml(this.tooltip.renderer({\n context: this.context,\n datum: seriesDatum,\n yValue: yValue,\n xValue: xValue,\n }), defaults);\n }\n return toTooltipHtml(defaults);\n };\n BarColumnSparkline.prototype.formatLabelValue = function (value) {\n return value % 1 !== 0 ? value.toFixed(1) : value.toFixed(0);\n };\n return BarColumnSparkline;\n}(Sparkline));\nexport { BarColumnSparkline };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { BandScale } from '../../scale/bandScale';\nimport { isNumber } from '../../util/value';\nimport { BarColumnLabelPlacement, BarColumnSparkline } from './barColumnSparkline';\nimport { HdpiCanvas } from '../../canvas/hdpiCanvas';\nvar BarSparkline = /** @class */ (function (_super) {\n __extends(BarSparkline, _super);\n function BarSparkline() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n BarSparkline.prototype.updateYScaleRange = function () {\n var _a = this, seriesRect = _a.seriesRect, yScale = _a.yScale;\n yScale.range = [0, seriesRect.width];\n };\n BarSparkline.prototype.updateXScaleRange = function () {\n var _a = this, xScale = _a.xScale, seriesRect = _a.seriesRect, paddingOuter = _a.paddingOuter, paddingInner = _a.paddingInner, xData = _a.xData;\n if (xScale instanceof BandScale) {\n xScale.range = [0, seriesRect.height];\n xScale.paddingInner = paddingInner;\n xScale.paddingOuter = paddingOuter;\n }\n else {\n // last node will be clipped if the scale is not a band scale\n // subtract maximum possible node width from the range so that the last node is not clipped\n xScale.range = [0, seriesRect.height - seriesRect.height / xData.length];\n }\n };\n BarSparkline.prototype.updateAxisLine = function () {\n var _a = this, yScale = _a.yScale, axis = _a.axis, axisLine = _a.axisLine, seriesRect = _a.seriesRect;\n var strokeWidth = axis.strokeWidth;\n axisLine.x1 = 0;\n axisLine.x2 = 0;\n axisLine.y1 = 0;\n axisLine.y2 = seriesRect.height;\n axisLine.stroke = axis.stroke;\n axisLine.strokeWidth = strokeWidth + (strokeWidth % 2 === 1 ? 1 : 0);\n var yZero = yScale.convert(0);\n axisLine.translationX = yZero;\n };\n BarSparkline.prototype.generateNodeData = function () {\n var _a = this, data = _a.data, yData = _a.yData, xData = _a.xData, xScale = _a.xScale, yScale = _a.yScale, fill = _a.fill, stroke = _a.stroke, strokeWidth = _a.strokeWidth, label = _a.label;\n if (!data) {\n return;\n }\n var labelFontStyle = label.fontStyle, labelFontWeight = label.fontWeight, labelFontSize = label.fontSize, labelFontFamily = label.fontFamily, labelColor = label.color, labelFormatter = label.formatter, labelPlacement = label.placement;\n var nodeData = [];\n var yZero = yScale.convert(0);\n for (var i = 0, n = yData.length; i < n; i++) {\n var yDatum = yData[i];\n var xDatum = xData[i];\n var invalidDatum = yDatum === undefined;\n if (invalidDatum) {\n yDatum = 0;\n }\n var y = xScale.convert(xDatum);\n var x = Math.min(yScale.convert(yDatum), yZero);\n var bottom = Math.max(yScale.convert(yDatum), yZero);\n // if the scale is a band scale, the width of the rects will be the bandwidth, otherwise the width of the rects will be the range / number of items in the data\n var height = xScale instanceof BandScale\n ? xScale.bandwidth\n : Math.abs(yScale.range[1] - yScale.range[0]) / data.length;\n var width = bottom - x;\n var midPoint = {\n x: yZero,\n y: y,\n };\n var labelText = void 0;\n if (labelFormatter) {\n labelText = labelFormatter({ value: yDatum });\n }\n else {\n labelText = yDatum !== undefined && isNumber(yDatum) ? this.formatLabelValue(yDatum) : '';\n }\n var labelY = y + height / 2;\n var labelX = void 0;\n var labelTextBaseline = 'middle';\n var labelTextAlign = void 0;\n var isPositiveY = yDatum !== undefined && yDatum >= 0;\n var labelPadding = 4;\n if (labelPlacement === BarColumnLabelPlacement.Center) {\n labelX = x + width / 2;\n labelTextAlign = 'center';\n }\n else if (labelPlacement === BarColumnLabelPlacement.OutsideEnd) {\n labelX = x + (isPositiveY ? width + labelPadding : -labelPadding);\n labelTextAlign = isPositiveY ? 'start' : 'end';\n }\n else if (labelPlacement === BarColumnLabelPlacement.InsideEnd) {\n labelX = x + (isPositiveY ? width - labelPadding : labelPadding);\n labelTextAlign = isPositiveY ? 'end' : 'start';\n var textSize = HdpiCanvas.getTextSize(labelText, labelFontFamily);\n var textWidth = textSize.width || 20;\n var positiveBoundary = yZero + textWidth;\n var negativeBoundary = yZero - textWidth;\n var exceedsBoundaries = (isPositiveY && labelX < positiveBoundary) || (!isPositiveY && labelX > negativeBoundary);\n if (exceedsBoundaries) {\n // if labelX exceeds the boundary, labels should be positioned at `insideBase`.\n labelX = yZero + labelPadding * (isPositiveY ? 1 : -1);\n labelTextAlign = isPositiveY ? 'start' : 'end';\n }\n }\n else {\n // if labelPlacement === BarColumnLabelPlacement.InsideBase\n labelX = yZero + labelPadding * (isPositiveY ? 1 : -1);\n labelTextAlign = isPositiveY ? 'start' : 'end';\n }\n nodeData.push({\n x: x,\n y: y,\n width: width,\n height: height,\n fill: fill,\n stroke: stroke,\n strokeWidth: strokeWidth,\n seriesDatum: { x: xDatum, y: invalidDatum ? undefined : yDatum },\n point: midPoint,\n label: {\n x: labelX,\n y: labelY,\n text: labelText,\n fontStyle: labelFontStyle,\n fontWeight: labelFontWeight,\n fontSize: labelFontSize,\n fontFamily: labelFontFamily,\n textAlign: labelTextAlign,\n textBaseline: labelTextBaseline,\n fill: labelColor,\n },\n });\n }\n return nodeData;\n };\n BarSparkline.prototype.getDistance = function (p1, p2) {\n return Math.abs(p1.y - p2.y);\n };\n BarSparkline.className = 'BarSparkline';\n return BarSparkline;\n}(BarColumnSparkline));\nexport { BarSparkline };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { HdpiCanvas } from '../../canvas/hdpiCanvas';\nimport { BandScale } from '../../scale/bandScale';\nimport { isNumber } from '../../util/value';\nimport { BarColumnLabelPlacement, BarColumnSparkline } from './barColumnSparkline';\nvar ColumnSparkline = /** @class */ (function (_super) {\n __extends(ColumnSparkline, _super);\n function ColumnSparkline() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ColumnSparkline.prototype.updateYScaleRange = function () {\n var _a = this, seriesRect = _a.seriesRect, yScale = _a.yScale;\n yScale.range = [seriesRect.height, 0];\n };\n ColumnSparkline.prototype.updateXScaleRange = function () {\n var _a = this, xScale = _a.xScale, seriesRect = _a.seriesRect, paddingOuter = _a.paddingOuter, paddingInner = _a.paddingInner, xData = _a.xData;\n if (xScale instanceof BandScale) {\n xScale.range = [0, seriesRect.width];\n xScale.paddingInner = paddingInner;\n xScale.paddingOuter = paddingOuter;\n }\n else {\n // last node will be clipped if the scale is not a band scale\n // subtract maximum possible node width from the range so that the last node is not clipped\n xScale.range = [0, seriesRect.width - seriesRect.width / xData.length];\n }\n };\n ColumnSparkline.prototype.updateAxisLine = function () {\n var _a = this, yScale = _a.yScale, axis = _a.axis, axisLine = _a.axisLine, seriesRect = _a.seriesRect;\n var strokeWidth = axis.strokeWidth;\n axisLine.x1 = 0;\n axisLine.x2 = seriesRect.width;\n axisLine.y1 = 0;\n axisLine.y2 = 0;\n axisLine.stroke = axis.stroke;\n axisLine.strokeWidth = strokeWidth + (strokeWidth % 2 === 1 ? 1 : 0);\n var yZero = yScale.convert(0);\n axisLine.translationY = yZero;\n };\n ColumnSparkline.prototype.generateNodeData = function () {\n var _a = this, data = _a.data, yData = _a.yData, xData = _a.xData, xScale = _a.xScale, yScale = _a.yScale, fill = _a.fill, stroke = _a.stroke, strokeWidth = _a.strokeWidth, label = _a.label;\n if (!data) {\n return;\n }\n var labelFontStyle = label.fontStyle, labelFontWeight = label.fontWeight, labelFontSize = label.fontSize, labelFontFamily = label.fontFamily, labelColor = label.color, labelFormatter = label.formatter, labelPlacement = label.placement;\n var nodeData = [];\n var yZero = yScale.convert(0);\n for (var i = 0, n = yData.length; i < n; i++) {\n var yDatum = yData[i];\n var xDatum = xData[i];\n var invalidDatum = yDatum === undefined;\n if (invalidDatum) {\n yDatum = 0;\n }\n var y = Math.min(yScale.convert(yDatum), yZero);\n var x = xScale.convert(xDatum);\n var bottom = Math.max(yScale.convert(yDatum), yZero);\n // if the scale is a band scale, the width of the rects will be the bandwidth, otherwise the width of the rects will be the range / number of items in the data\n var width = xScale instanceof BandScale\n ? xScale.bandwidth\n : Math.abs(yScale.range[1] - yScale.range[0]) / data.length;\n var height = bottom - y;\n var midPoint = {\n x: x + width / 2,\n y: yZero,\n };\n var labelText = void 0;\n if (labelFormatter) {\n labelText = labelFormatter({ value: yDatum });\n }\n else {\n labelText = yDatum !== undefined && isNumber(yDatum) ? this.formatLabelValue(yDatum) : '';\n }\n var labelX = x + width / 2;\n var labelY = void 0;\n var labelTextAlign = 'center';\n var labelTextBaseline = void 0;\n var isPositiveY = yDatum !== undefined && yDatum >= 0;\n var labelPadding = 2;\n if (labelPlacement === BarColumnLabelPlacement.Center) {\n labelY = y + height / 2;\n labelTextBaseline = 'middle';\n }\n else if (labelPlacement === BarColumnLabelPlacement.OutsideEnd) {\n labelY = y + (isPositiveY ? -labelPadding : height + labelPadding);\n labelTextBaseline = isPositiveY ? 'bottom' : 'top';\n }\n else if (labelPlacement === BarColumnLabelPlacement.InsideEnd) {\n labelY = y + (isPositiveY ? labelPadding : height - labelPadding);\n labelTextBaseline = isPositiveY ? 'top' : 'bottom';\n var textSize = HdpiCanvas.getTextSize(labelText, labelFontFamily);\n var textHeight = textSize.height || 10;\n var positiveBoundary = yZero - textHeight;\n var negativeBoundary = yZero + textHeight;\n var exceedsBoundaries = (isPositiveY && labelY > positiveBoundary) || (!isPositiveY && labelY < negativeBoundary);\n if (exceedsBoundaries) {\n // if labelY exceeds the y boundary, labels should be positioned at the insideBase\n labelY = yZero + labelPadding * (isPositiveY ? -1 : 1);\n labelTextBaseline = isPositiveY ? 'bottom' : 'top';\n }\n }\n else {\n // if labelPlacement === BarColumnLabelPlacement.InsideBase\n labelY = yZero + labelPadding * (isPositiveY ? -1 : 1);\n labelTextBaseline = isPositiveY ? 'bottom' : 'top';\n }\n nodeData.push({\n x: x,\n y: y,\n width: width,\n height: height,\n fill: fill,\n stroke: stroke,\n strokeWidth: strokeWidth,\n seriesDatum: { x: xDatum, y: invalidDatum ? undefined : yDatum },\n point: midPoint,\n label: {\n x: labelX,\n y: labelY,\n text: labelText,\n fontStyle: labelFontStyle,\n fontWeight: labelFontWeight,\n fontSize: labelFontSize,\n fontFamily: labelFontFamily,\n textAlign: labelTextAlign,\n textBaseline: labelTextBaseline,\n fill: labelColor,\n },\n });\n }\n return nodeData;\n };\n ColumnSparkline.className = 'ColumnSparkline';\n return ColumnSparkline;\n}(BarColumnSparkline));\nexport { ColumnSparkline };\n","import { AreaSparkline } from './area/areaSparkline';\nimport { LineSparkline } from './line/lineSparkline';\nimport { BarSparkline } from './bar-column/barSparkline';\nimport { ColumnSparkline } from './bar-column/columnSparkline';\nimport { isNumber } from '../util/value';\nvar AgSparkline = /** @class */ (function () {\n function AgSparkline() {\n }\n AgSparkline.create = function (options, tooltip) {\n // avoid mutating user provided options\n options = Object.create(options);\n var sparkline = getSparklineInstance(options.type);\n if (tooltip) {\n sparkline.tooltip = tooltip;\n }\n initSparkline(sparkline, options);\n initSparklineByType(sparkline, options);\n if (options.data) {\n sparkline.data = options.data;\n }\n return sparkline;\n };\n return AgSparkline;\n}());\nexport { AgSparkline };\nfunction getSparklineInstance(type) {\n if (type === void 0) { type = 'line'; }\n switch (type) {\n case 'column':\n return new ColumnSparkline();\n case 'bar':\n return new BarSparkline();\n case 'area':\n return new AreaSparkline();\n case 'line':\n default:\n return new LineSparkline();\n }\n}\nfunction initSparklineByType(sparkline, options) {\n switch (options.type) {\n case 'bar':\n initBarColumnSparkline(sparkline, options);\n break;\n case 'column':\n initBarColumnSparkline(sparkline, options);\n break;\n case 'area':\n initAreaSparkline(sparkline, options);\n break;\n case 'line':\n default:\n initLineSparkline(sparkline, options);\n break;\n }\n}\nfunction initSparkline(sparkline, options) {\n setValueIfPropertyExists(sparkline, 'context', options.context, options);\n setValueIfPropertyExists(sparkline, 'width', options.width, options);\n setValueIfPropertyExists(sparkline, 'height', options.height, options);\n setValueIfPropertyExists(sparkline, 'container', options.container, options);\n setValueIfPropertyExists(sparkline, 'xKey', options.xKey, options);\n setValueIfPropertyExists(sparkline, 'yKey', options.yKey, options);\n if (options.padding) {\n initPaddingOptions(sparkline.padding, options.padding);\n }\n if (options.axis) {\n initAxisOptions(sparkline.axis, options.axis);\n }\n if (options.highlightStyle) {\n initHighlightStyleOptions(sparkline.highlightStyle, options.highlightStyle);\n }\n if (options.tooltip && sparkline.tooltip) {\n initTooltipOptions(sparkline.tooltip, options.tooltip);\n }\n}\nfunction initLineSparkline(sparkline, options) {\n if (options.marker) {\n initMarkerOptions(sparkline.marker, options.marker);\n }\n if (options.line) {\n initLineOptions(sparkline.line, options.line);\n }\n if (options.crosshairs) {\n initCrosshairsOptions(sparkline.crosshairs, options.crosshairs);\n }\n}\nfunction initAreaSparkline(sparkline, options) {\n setValueIfPropertyExists(sparkline, 'fill', options.fill, options);\n if (options.marker) {\n initMarkerOptions(sparkline.marker, options.marker);\n }\n if (options.line) {\n initLineOptions(sparkline.line, options.line);\n }\n if (options.crosshairs) {\n initCrosshairsOptions(sparkline.crosshairs, options.crosshairs);\n }\n}\nfunction initBarColumnSparkline(sparkline, options) {\n setValueIfPropertyExists(sparkline, 'valueAxisDomain', options.valueAxisDomain, options);\n setValueIfPropertyExists(sparkline, 'fill', options.fill, options);\n setValueIfPropertyExists(sparkline, 'stroke', options.stroke, options);\n setValueIfPropertyExists(sparkline, 'strokeWidth', options.strokeWidth, options);\n setValueIfPropertyExists(sparkline, 'paddingInner', options.paddingInner, options);\n setValueIfPropertyExists(sparkline, 'paddingOuter', options.paddingOuter, options);\n setValueIfPropertyExists(sparkline, 'formatter', options.formatter, options);\n if (options.label) {\n initLabelOptions(sparkline.label, options.label);\n }\n}\nfunction initPaddingOptions(target, options) {\n setValueIfPropertyExists(target, 'top', options.top, options);\n setValueIfPropertyExists(target, 'right', options.right, options);\n setValueIfPropertyExists(target, 'bottom', options.bottom, options);\n setValueIfPropertyExists(target, 'left', options.left, options);\n}\nfunction initMarkerOptions(target, options) {\n setValueIfPropertyExists(target, 'enabled', options.enabled, options);\n setValueIfPropertyExists(target, 'size', options.size, options);\n setValueIfPropertyExists(target, 'shape', options.shape, options);\n setValueIfPropertyExists(target, 'fill', options.fill, options);\n setValueIfPropertyExists(target, 'stroke', options.stroke, options);\n setValueIfPropertyExists(target, 'strokeWidth', options.strokeWidth, options);\n setValueIfPropertyExists(target, 'formatter', options.formatter, options);\n}\nfunction initLabelOptions(target, options) {\n setValueIfPropertyExists(target, 'enabled', options.enabled, options);\n setValueIfPropertyExists(target, 'fontStyle', options.fontStyle, options);\n setValueIfPropertyExists(target, 'fontWeight', options.fontWeight, options);\n setValueIfPropertyExists(target, 'fontSize', options.fontSize, options);\n setValueIfPropertyExists(target, 'fontFamily', options.fontFamily, options);\n setValueIfPropertyExists(target, 'textAlign', options.textAlign, options);\n setValueIfPropertyExists(target, 'textBaseline', options.textBaseline, options);\n setValueIfPropertyExists(target, 'color', options.color, options);\n setValueIfPropertyExists(target, 'formatter', options.formatter, options);\n setValueIfPropertyExists(target, 'placement', options.placement, options);\n}\nfunction initLineOptions(target, options) {\n setValueIfPropertyExists(target, 'stroke', options.stroke, options);\n setValueIfPropertyExists(target, 'strokeWidth', options.strokeWidth, options);\n}\nfunction initAxisOptions(target, options) {\n setValueIfPropertyExists(target, 'type', options.type, options);\n setValueIfPropertyExists(target, 'stroke', options.stroke, options);\n setValueIfPropertyExists(target, 'strokeWidth', options.strokeWidth, options);\n}\nfunction initHighlightStyleOptions(target, options) {\n setValueIfPropertyExists(target, 'fill', options.fill, options);\n setValueIfPropertyExists(target, 'size', options.size, options);\n setValueIfPropertyExists(target, 'stroke', options.stroke, options);\n setValueIfPropertyExists(target, 'strokeWidth', options.strokeWidth, options);\n}\nfunction initTooltipOptions(target, options) {\n setValueIfPropertyExists(target, 'enabled', options.enabled, options);\n setValueIfPropertyExists(target, 'container', options.container, options);\n setValueIfPropertyExists(target, 'xOffset', options.xOffset, options);\n setValueIfPropertyExists(target, 'yOffset', options.yOffset, options);\n setValueIfPropertyExists(target, 'renderer', options.renderer, options);\n}\nfunction initCrosshairsOptions(target, options) {\n if (target.xLine && options.xLine) {\n initCrosshairLineOptions(target.xLine, options.xLine);\n }\n if (target.yLine && options.yLine) {\n initCrosshairLineOptions(target.yLine, options.yLine);\n }\n}\nfunction initCrosshairLineOptions(target, options) {\n setValueIfPropertyExists(target, 'enabled', options.enabled, options);\n setValueIfPropertyExists(target, 'stroke', options.stroke, options);\n setValueIfPropertyExists(target, 'strokeWidth', options.strokeWidth, options);\n setValueIfPropertyExists(target, 'lineDash', options.lineDash, options);\n setValueIfPropertyExists(target, 'lineCap', options.lineCap, options);\n}\nvar doOnceFlags = {};\n/**\n * If the key was passed before, then doesn't execute the func\n * @param {Function} func\n * @param {string} key\n */\nexport function doOnce(func, key) {\n if (doOnceFlags[key]) {\n return;\n }\n func();\n doOnceFlags[key] = true;\n}\nvar offsetValidator = function (property, value, defaultOffset) {\n if (isNumber(value)) {\n return true;\n }\n var message = \"AG Charts: \" + property + \" must be a number, the value you provided is not a valid number. Using the default of \" + defaultOffset + \"px.\";\n doOnce(function () { return console.warn(message); }, property + \" not a number\");\n return false;\n};\nvar validators = {\n xOffset: offsetValidator,\n yOffset: offsetValidator\n};\nfunction setValueIfPropertyExists(target, property, value, options) {\n if (property in options) {\n if (property in target) {\n var validator = validators[property];\n var isValid = validator ? validator(property, value, target[property]) : true;\n if (isValid && target[property] !== value) {\n // only set property if the value is different to new value\n target[property] = value;\n }\n }\n else {\n console.warn(\"Property \" + property + \" does not exist on the target object.\");\n }\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __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};\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Autowired, Component, RefSelector, } from '@ag-grid-community/core';\nimport { AgSparkline } from './sparkline/agSparkline';\nvar SparklineCellRenderer = /** @class */ (function (_super) {\n __extends(SparklineCellRenderer, _super);\n function SparklineCellRenderer() {\n return _super.call(this, SparklineCellRenderer.TEMPLATE) || this;\n }\n SparklineCellRenderer.prototype.init = function (params) {\n var _this = this;\n var firstTimeIn = true;\n var updateSparkline = function () {\n var _a = _this.getGui(), clientWidth = _a.clientWidth, clientHeight = _a.clientHeight;\n if (clientWidth === 0 || clientHeight === 0) {\n return;\n }\n if (firstTimeIn) {\n var options = __assign({ data: params.value, width: clientWidth, height: clientHeight, context: {\n data: params.data,\n } }, params.sparklineOptions);\n // create new instance of sparkline\n _this.sparkline = AgSparkline.create(options, _this.sparklineTooltipSingleton.getSparklineTooltip());\n // append sparkline canvas to cell renderer element\n _this.eSparkline.appendChild(_this.sparkline.canvasElement);\n firstTimeIn = false;\n }\n else {\n _this.sparkline.width = clientWidth;\n _this.sparkline.height = clientHeight;\n }\n };\n var unsubscribeFromResize = this.resizeObserverService.observeResize(this.getGui(), updateSparkline);\n this.addDestroyFunc(function () { return unsubscribeFromResize(); });\n };\n SparklineCellRenderer.prototype.refresh = function (params) {\n if (this.sparkline) {\n this.sparkline.data = params.value;\n return true;\n }\n return false;\n };\n SparklineCellRenderer.prototype.destroy = function () {\n if (this.sparkline) {\n this.sparkline.destroy();\n }\n _super.prototype.destroy.call(this);\n };\n SparklineCellRenderer.TEMPLATE /* html */ = \"
    \\n \\n
    \";\n __decorate([\n RefSelector('eSparkline')\n ], SparklineCellRenderer.prototype, \"eSparkline\", void 0);\n __decorate([\n Autowired('resizeObserverService')\n ], SparklineCellRenderer.prototype, \"resizeObserverService\", void 0);\n __decorate([\n Autowired('sparklineTooltipSingleton')\n ], SparklineCellRenderer.prototype, \"sparklineTooltipSingleton\", void 0);\n return SparklineCellRenderer;\n}(Component));\nexport { SparklineCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Bean, BeanStub, PostConstruct, PreDestroy } from '@ag-grid-community/core';\nimport { SparklineTooltip } from '../sparkline/tooltip/sparklineTooltip';\n/**\n * This 'bean' creates a single sparkline tooltip that is bound to the grid lifecycle.\n */\nvar SparklineTooltipSingleton = /** @class */ (function (_super) {\n __extends(SparklineTooltipSingleton, _super);\n function SparklineTooltipSingleton() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SparklineTooltipSingleton.prototype.postConstruct = function () {\n this.tooltip = new SparklineTooltip();\n };\n SparklineTooltipSingleton.prototype.getSparklineTooltip = function () {\n return this.tooltip;\n };\n SparklineTooltipSingleton.prototype.destroyTooltip = function () {\n if (this.tooltip) {\n this.tooltip.destroy();\n }\n };\n __decorate([\n PostConstruct\n ], SparklineTooltipSingleton.prototype, \"postConstruct\", null);\n __decorate([\n PreDestroy\n ], SparklineTooltipSingleton.prototype, \"destroyTooltip\", null);\n SparklineTooltipSingleton = __decorate([\n Bean('sparklineTooltipSingleton')\n ], SparklineTooltipSingleton);\n return SparklineTooltipSingleton;\n}(BeanStub));\nexport { SparklineTooltipSingleton };\n","import { AllCommunityModules } from \"@ag-grid-community/all-modules\";\nimport { ClipboardModule } from \"@ag-grid-enterprise/clipboard\";\nimport { ColumnsToolPanelModule } from \"@ag-grid-enterprise/column-tool-panel\";\nimport { ExcelExportModule } from \"@ag-grid-enterprise/excel-export\";\nimport { FiltersToolPanelModule } from \"@ag-grid-enterprise/filter-tool-panel\";\nimport { GridChartsModule } from \"@ag-grid-enterprise/charts\";\nimport { MasterDetailModule } from \"@ag-grid-enterprise/master-detail\";\nimport { MenuModule } from \"@ag-grid-enterprise/menu\";\nimport { MultiFilterModule } from \"@ag-grid-enterprise/multi-filter\";\nimport { RangeSelectionModule } from \"@ag-grid-enterprise/range-selection\";\nimport { RichSelectModule } from \"@ag-grid-enterprise/rich-select\";\nimport { RowGroupingModule } from \"@ag-grid-enterprise/row-grouping\";\nimport { ServerSideRowModelModule } from \"@ag-grid-enterprise/server-side-row-model\";\nimport { SetFilterModule } from \"@ag-grid-enterprise/set-filter\";\nimport { SideBarModule } from \"@ag-grid-enterprise/side-bar\";\nimport { StatusBarModule } from \"@ag-grid-enterprise/status-bar\";\nimport { ViewportRowModelModule } from \"@ag-grid-enterprise/viewport-row-model\";\nimport { SparklinesModule } from \"@ag-grid-enterprise/sparklines\";\nexport * from \"@ag-grid-community/all-modules\";\nexport * from \"@ag-grid-enterprise/clipboard\";\nexport * from \"@ag-grid-enterprise/column-tool-panel\";\nexport * from \"@ag-grid-enterprise/excel-export\";\nexport * from \"@ag-grid-enterprise/filter-tool-panel\";\nexport * from \"@ag-grid-enterprise/charts\";\nexport * from \"@ag-grid-enterprise/master-detail\";\nexport * from \"@ag-grid-enterprise/menu\";\nexport * from \"@ag-grid-enterprise/multi-filter\";\nexport * from \"@ag-grid-enterprise/range-selection\";\nexport * from \"@ag-grid-enterprise/rich-select\";\nexport * from \"@ag-grid-enterprise/row-grouping\";\nexport * from \"@ag-grid-enterprise/server-side-row-model\";\nexport * from \"@ag-grid-enterprise/set-filter\";\nexport * from \"@ag-grid-enterprise/side-bar\";\nexport * from \"@ag-grid-enterprise/status-bar\";\nexport * from \"@ag-grid-enterprise/viewport-row-model\";\nexport * from \"@ag-grid-enterprise/core\";\nexport * from \"@ag-grid-enterprise/sparklines\";\nexport var AllEnterpriseModules = [\n ClipboardModule,\n ColumnsToolPanelModule,\n ExcelExportModule,\n FiltersToolPanelModule,\n GridChartsModule,\n MasterDetailModule,\n MenuModule,\n MultiFilterModule,\n RangeSelectionModule,\n RichSelectModule,\n RowGroupingModule,\n ServerSideRowModelModule,\n SetFilterModule,\n SideBarModule,\n StatusBarModule,\n ViewportRowModelModule,\n SparklinesModule\n];\nexport var AllModules = AllCommunityModules.concat(AllEnterpriseModules);\n","import { ModuleNames } from '@ag-grid-community/core';\nimport { EnterpriseCoreModule } from '@ag-grid-enterprise/core';\nimport { SparklineCellRenderer } from './sparklineCellRenderer';\nimport { SparklineTooltipSingleton } from './tooltip/sparklineTooltipSingleton';\nexport var SparklinesModule = {\n moduleName: ModuleNames.SparklinesModule,\n beans: [SparklineTooltipSingleton],\n userComponents: [{ componentName: 'agSparklineCellRenderer', componentClass: SparklineCellRenderer }],\n dependantModules: [EnterpriseCoreModule],\n};\n","import { EventEmitter, Component, forwardRef, ChangeDetectionStrategy, ViewChild, Input, Output, NgModule, CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport * as editor from 'jsoneditor';\nimport { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\n\nimport * as ɵngcc0 from '@angular/core';\n\nconst _c0 = [\"jsonEditorContainer\"];\nclass JsonEditorOptions {\n constructor() {\n this.enableSort = true;\n this.enableTransform = true;\n this.escapeUnicode = false;\n this.expandAll = false;\n this.sortObjectKeys = false;\n this.history = true;\n this.mode = 'tree';\n this.search = true;\n this.indentation = 2;\n }\n}\n\nclass JsonEditorComponent {\n constructor() {\n this.id = 'angjsoneditor' + Math.floor(Math.random() * 1000000);\n this.disabled = false;\n this.isFocused = false;\n this.optionsChanged = false;\n this._data = {};\n this.options = new JsonEditorOptions();\n this.debug = false;\n this.change = new EventEmitter();\n this.jsonChange = new EventEmitter();\n // Implemented as part of ControlValueAccessor.\n this.onTouched = () => {\n };\n // Implemented as part of ControlValueAccessor.\n this.onChangeModel = (e) => {\n };\n }\n set data(value) {\n this._data = value;\n if (this.editor) {\n this.editor.destroy();\n this.ngOnInit();\n }\n }\n ngOnInit() {\n let optionsBefore = this.options;\n if (!this.optionsChanged && this.editor) {\n optionsBefore = this.editor.options;\n }\n if (!this.options.onChangeJSON && this.jsonChange) {\n this.options.onChangeJSON = this.onChangeJSON.bind(this);\n }\n if (!this.options.onChange && this.change) {\n this.options.onChange = this.onChange.bind(this);\n }\n const optionsCopy = Object.assign({}, optionsBefore);\n // expandAll is an option only supported by ang-jsoneditor and not by the the original jsoneditor.\n delete optionsCopy.expandAll;\n if (this.debug) {\n console.log(optionsCopy, this._data);\n }\n if (!this.jsonEditorContainer.nativeElement) {\n console.error(`Can't find the ElementRef reference for jsoneditor)`);\n }\n if (optionsCopy.mode === 'text' || optionsCopy.mode === 'code') {\n optionsCopy.onChangeJSON = null;\n }\n this.editor = new editor(this.jsonEditorContainer.nativeElement, optionsCopy, this._data);\n if (this.options.expandAll) {\n this.editor.expandAll();\n }\n }\n ngOnDestroy() {\n this.destroy();\n }\n /**\n * ngModel\n * ControlValueAccessor\n */\n // ControlValueAccessor implementation\n writeValue(value) {\n this.data = value;\n }\n // Implemented as part of ControlValueAccessor\n registerOnChange(fn) {\n this.onChangeModel = fn;\n }\n // Implemented as part of ControlValueAccessor.\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n // Implemented as part of ControlValueAccessor.\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n onChange(e) {\n if (this.editor) {\n try {\n const json = this.editor.get();\n this.onChangeModel(json);\n this.change.emit(json);\n }\n catch (e) {\n if (this.debug) {\n console.log(e);\n }\n }\n }\n }\n onChangeJSON(e) {\n if (this.editor) {\n try {\n this.jsonChange.emit(this.editor.get());\n }\n catch (e) {\n if (this.debug) {\n console.log(e);\n }\n }\n }\n }\n /**\n * JSON EDITOR FUNCTIONS\n */\n collapseAll() {\n this.editor.collapseAll();\n }\n expandAll() {\n this.editor.expandAll();\n }\n focus() {\n this.editor.focus();\n }\n get() {\n return this.editor.get();\n }\n getMode() {\n return this.editor.getMode();\n }\n getName() {\n return this.editor.getName();\n }\n getText() {\n return this.editor.getText();\n }\n set(json) {\n this.editor.set(json);\n }\n setMode(mode) {\n this.editor.setMode(mode);\n }\n setName(name) {\n this.editor.setName(name);\n }\n setSelection(start, end) {\n this.editor.setSelection(start, end);\n }\n getSelection() {\n return this.editor.getSelection();\n }\n getValidateSchema() {\n return this.editor.validateSchema;\n }\n setSchema(schema, schemaRefs) {\n this.editor.setSchema(schema, schemaRefs);\n }\n search(query) {\n this.editor.search(query);\n }\n setOptions(newOptions) {\n if (this.editor) {\n this.editor.destroy();\n }\n this.optionsChanged = true;\n this.options = newOptions;\n this.ngOnInit();\n }\n update(json) {\n this.editor.update(json);\n }\n destroy() {\n this.editor.destroy();\n }\n getEditor() {\n return this.editor;\n }\n isValidJson() {\n try {\n JSON.parse(this.getText());\n return true;\n }\n catch (e) {\n return false;\n }\n }\n}\nJsonEditorComponent.ɵfac = function JsonEditorComponent_Factory(t) { return new (t || JsonEditorComponent)(); };\nJsonEditorComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: JsonEditorComponent, selectors: [[\"json-editor\"]], viewQuery: function JsonEditorComponent_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.jsonEditorContainer = _t.first);\n } }, inputs: { options: \"options\", debug: \"debug\", data: \"data\" }, outputs: { change: \"change\", jsonChange: \"jsonChange\" }, features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => JsonEditorComponent),\n multi: true\n }\n ])], decls: 2, vars: 1, consts: [[3, \"id\"], [\"jsonEditorContainer\", \"\"]], template: function JsonEditorComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 0, 1);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"id\", ctx.id);\n } }, encapsulation: 2, changeDetection: 0 });\nJsonEditorComponent.ctorParameters = () => [];\nJsonEditorComponent.propDecorators = {\n jsonEditorContainer: [{ type: ViewChild, args: ['jsonEditorContainer', { static: true },] }],\n options: [{ type: Input }],\n data: [{ type: Input, args: ['data',] }],\n debug: [{ type: Input }],\n change: [{ type: Output }],\n jsonChange: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(JsonEditorComponent, [{\n type: Component,\n args: [{\n // tslint:disable-next-line:component-selector\n selector: 'json-editor',\n template: `
    `,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => JsonEditorComponent),\n multi: true\n }\n ],\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return []; }, { options: [{\n type: Input\n }], debug: [{\n type: Input\n }], change: [{\n type: Output\n }], jsonChange: [{\n type: Output\n }], data: [{\n type: Input,\n args: ['data']\n }], jsonEditorContainer: [{\n type: ViewChild,\n args: ['jsonEditorContainer', { static: true }]\n }] }); })();\n\nclass NgJsonEditorModule {\n static forRoot() {\n return {\n ngModule: NgJsonEditorModule,\n providers: []\n };\n }\n}\nNgJsonEditorModule.ɵfac = function NgJsonEditorModule_Factory(t) { return new (t || NgJsonEditorModule)(); };\nNgJsonEditorModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgJsonEditorModule });\nNgJsonEditorModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[\n CommonModule,\n FormsModule\n ]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgJsonEditorModule, [{\n type: NgModule,\n args: [{\n imports: [\n CommonModule,\n FormsModule\n ],\n declarations: [\n JsonEditorComponent\n ],\n exports: [\n JsonEditorComponent\n ],\n schemas: [\n CUSTOM_ELEMENTS_SCHEMA,\n NO_ERRORS_SCHEMA\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgJsonEditorModule, { declarations: function () { return [JsonEditorComponent]; }, imports: function () { return [CommonModule,\n FormsModule]; }, exports: function () { return [JsonEditorComponent]; } }); })();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { JsonEditorComponent, JsonEditorOptions, NgJsonEditorModule };\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 { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function pairwise() {\n return operate((source, subscriber) => {\n let prev;\n let hasPrev = false;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n const p = prev;\n prev = value;\n hasPrev && subscriber.next([p, value]);\n hasPrev = true;\n }));\n });\n}\n","import { Injectable, ɵɵdefineInjectable, Component, Input, EventEmitter, ComponentFactoryResolver, ChangeDetectorRef, NgZone, ElementRef, Renderer2, ViewChild, ViewContainerRef, Output, HostListener, Pipe, NgModule } from '@angular/core';\nimport { trigger, state, style, transition, animate, group } from '@angular/animations';\nimport { Observable, Subject } from 'rxjs';\nimport { share } from 'rxjs/operators';\nimport { CommonModule } from '@angular/common';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/common';\nimport * as ɵngcc2 from '@angular/platform-browser';\n\nconst _c0 = function (a0, a1) { return [a0, a1]; };\nfunction ToasterContainerComponent_div_1_Template(rf, ctx) { if (rf & 1) {\n const _r3 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 2);\n ɵngcc0.ɵɵlistener(\"click\", function ToasterContainerComponent_div_1_Template_div_click_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r3); const toast_r1 = restoredCtx.$implicit; const ctx_r2 = ɵngcc0.ɵɵnextContext(); return ctx_r2.click(toast_r1); })(\"clickEvent\", function ToasterContainerComponent_div_1_Template_div_clickEvent_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r4 = ɵngcc0.ɵɵnextContext(); return ctx_r4.childClick($event); })(\"removeToastEvent\", function ToasterContainerComponent_div_1_Template_div_removeToastEvent_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.removeToast($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const toast_r1 = ctx.$implicit;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"toast\", toast_r1)(\"toasterconfig\", ctx_r0.toasterconfig)(\"@toastState\", ctx_r0.toasterconfig.animation)(\"titleClass\", ctx_r0.toasterconfig.titleClass)(\"messageClass\", ctx_r0.toasterconfig.messageClass)(\"ngClass\", ɵngcc0.ɵɵpureFunction2(6, _c0, ctx_r0.toasterconfig.iconClasses[toast_r1.type], ctx_r0.toasterconfig.typeClasses[toast_r1.type]));\n} }\nconst _c1 = function (a0) { return [a0]; };\nconst _c2 = [\"componentBody\"];\nconst _c3 = [\"toastComp\", \"\"];\nfunction ToastComponent_div_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", null, 7);\n} }\nfunction ToastComponent_div_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 8);\n ɵngcc0.ɵɵpipe(1, \"trustHtml\");\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"innerHTML\", ɵngcc0.ɵɵpipeBind1(1, 1, ctx_r1.toast.body), ɵngcc0.ɵɵsanitizeHtml);\n} }\nfunction ToastComponent_div_6_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_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r2.toast.body);\n} }\nfunction ToastComponent_button_7_Template(rf, ctx) { if (rf & 1) {\n const _r7 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 9);\n ɵngcc0.ɵɵlistener(\"click\", function ToastComponent_button_7_Template_button_click_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r7); const ctx_r6 = ɵngcc0.ɵɵnextContext(); return ctx_r6.click($event, ctx_r6.toast); });\n ɵngcc0.ɵɵpipe(1, \"trustHtml\");\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"innerHTML\", ɵngcc0.ɵɵpipeBind1(1, 1, ctx_r3.toast.closeHtml), ɵngcc0.ɵɵsanitizeHtml);\n} }\nfunction ToastComponent_div_8_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\");\n ɵngcc0.ɵɵelement(1, \"div\", 10);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"width\", ctx_r4.progressBarWidth + \"%\");\n} }\nconst Transitions = [\n trigger('toastState', [\n state('flyRight, flyLeft, slideDown, slideDown, slideUp, slideUp, fade', style({ opacity: 1, transform: 'translate(0,0)' })),\n transition('void => flyRight', [\n style({\n opacity: 0,\n transform: 'translateX(100%)',\n height: 0\n }),\n animate('0.15s ease-in', style({\n opacity: 1,\n height: '*'\n })),\n animate('0.25s 15ms ease-in')\n ]),\n transition('flyRight => void', [\n animate('0.25s ease-out', style({\n opacity: 0,\n transform: 'translateX(100%)'\n })),\n animate('0.15s ease-out', style({\n height: 0\n }))\n ]),\n transition('void => flyLeft', [\n style({\n opacity: 0,\n transform: 'translateX(-100%)',\n height: 0\n }),\n animate('0.15s ease-in', style({\n opacity: 1,\n height: '*'\n })),\n animate('0.25s 15ms ease-in')\n ]),\n transition('flyLeft => void', [\n animate('0.25s 10ms ease-out', style({\n opacity: 0,\n transform: 'translateX(-100%)'\n })),\n animate('0.15s ease-out', style({\n height: 0\n }))\n ]),\n transition('void => slideDown', [\n style({\n opacity: 0,\n transform: 'translateY(-500%)',\n height: 0\n }),\n group([\n animate('0.2s ease-in', style({\n height: '*'\n })),\n animate('0.4s ease-in', style({\n transform: 'translate(0,0)'\n })),\n animate('0.3s 0.1s ease-in', style({\n opacity: 1\n }))\n ])\n ]),\n transition('slideDown => void', group([\n animate('0.3s ease-out', style({\n opacity: 0\n })),\n animate('0.4s ease-out', style({\n transform: 'translateY(-500%)'\n })),\n animate('0.2s 0.2s ease-out', style({\n height: 0\n }))\n ])),\n transition('void => slideUp', [\n style({\n opacity: 0,\n transform: 'translateY(1000%)',\n height: 0\n }),\n group([\n animate('0.2s ease-in', style({\n height: '*'\n })),\n animate('0.5s ease-in', style({\n transform: 'translate(0,0)'\n })),\n animate('0.3s 0.1s ease-in', style({\n opacity: 1\n }))\n ])\n ]),\n transition('slideUp => void', group([\n animate('0.3s ease-out', style({\n opacity: 0\n })),\n animate('0.5s ease-out', style({\n transform: 'translateY(1000%)'\n })),\n animate('0.3s 0.15s ease-out', style({\n height: 0\n }))\n ])),\n transition('void => fade', [\n style({\n opacity: 0,\n height: 0\n }),\n animate('0.20s ease-in', style({\n height: '*'\n })),\n animate('0.15s ease-in', style({\n opacity: 1\n }))\n ]),\n transition('fade => void', [\n group([\n animate('0.0s ease-out', style({\n // reposition the background to prevent\n // a ghost image during transition\n 'background-position': '-99999px'\n })),\n animate('0.15s ease-out', style({\n opacity: 0,\n 'background-image': ''\n })),\n animate('0.3s 20ms ease-out', style({\n height: 0\n }))\n ])\n ])\n ]),\n];\n\nvar BodyOutputType;\n(function (BodyOutputType) {\n BodyOutputType[BodyOutputType[\"Default\"] = 0] = \"Default\";\n BodyOutputType[BodyOutputType[\"TrustedHtml\"] = 1] = \"TrustedHtml\";\n BodyOutputType[BodyOutputType[\"Component\"] = 2] = \"Component\";\n})(BodyOutputType || (BodyOutputType = {}));\n\nconst DefaultTypeClasses = {\n error: 'toast-error',\n info: 'toast-info',\n wait: 'toast-wait',\n success: 'toast-success',\n warning: 'toast-warning'\n};\nconst DefaultIconClasses = {\n error: 'icon-error',\n info: 'icon-info',\n wait: 'icon-wait',\n success: 'icon-success',\n warning: 'icon-warning'\n};\nclass ToasterConfig {\n constructor(configOverrides) {\n configOverrides = configOverrides || {};\n this.limit = configOverrides.limit || null;\n this.tapToDismiss = configOverrides.tapToDismiss != null ? configOverrides.tapToDismiss : true;\n this.showCloseButton = configOverrides.showCloseButton != null ? configOverrides.showCloseButton : false;\n this.closeHtml = configOverrides.closeHtml || '×';\n this.newestOnTop = configOverrides.newestOnTop != null ? configOverrides.newestOnTop : true;\n this.timeout = configOverrides.timeout != null ? configOverrides.timeout : 5000;\n this.typeClasses = configOverrides.typeClasses || DefaultTypeClasses;\n this.iconClasses = configOverrides.iconClasses || DefaultIconClasses;\n this.bodyOutputType = configOverrides.bodyOutputType || BodyOutputType.Default;\n this.bodyTemplate = configOverrides.bodyTemplate || 'toasterBodyTmpl.html';\n this.defaultToastType = configOverrides.defaultToastType || 'info';\n this.positionClass = configOverrides.positionClass || 'toast-top-right';\n this.titleClass = configOverrides.titleClass || 'toast-title';\n this.messageClass = configOverrides.messageClass || 'toast-message';\n this.animation = configOverrides.animation || '';\n this.preventDuplicates = configOverrides.preventDuplicates != null ? configOverrides.preventDuplicates : false;\n this.mouseoverTimerStop = configOverrides.mouseoverTimerStop != null ? configOverrides.mouseoverTimerStop : false;\n this.toastContainerId = configOverrides.toastContainerId != null ? configOverrides.toastContainerId : null;\n }\n}\nToasterConfig.ɵfac = function ToasterConfig_Factory(t) { return new (t || ToasterConfig)(ɵngcc0.ɵɵinject(undefined)); };\nToasterConfig.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: ToasterConfig, factory: ToasterConfig.ɵfac });\nToasterConfig.ctorParameters = () => [\n { type: undefined }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ToasterConfig, [{\n type: Injectable\n }], function () { return [{ type: undefined }]; }, null); })();\n\n// http://stackoverflow.com/questions/26501688/a-typescript-guid-class\nclass Guid {\n static newGuid() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n const r = Math.random() * 16 | 0, v = c === 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n }\n}\nclass ToasterService {\n /**\n * Creates an instance of ToasterService.\n */\n constructor() {\n this.addToast = new Observable((observer) => this._addToast = observer).pipe(share());\n this.clearToasts = new Observable((observer) => this._clearToasts = observer).pipe(share());\n this._removeToastSubject = new Subject();\n this.removeToast = this._removeToastSubject.pipe(share());\n }\n /**\n * Synchronously create and show a new toast instance.\n *\n * @param {(string | Toast)} type The type of the toast, or a Toast object.\n * @param {string=} title The toast title.\n * @param {string=} body The toast body.\n * @returns {Toast}\n * The newly created Toast instance with a randomly generated GUID Id.\n */\n pop(type, title, body) {\n const toast = typeof type === 'string' ? { type: type, title: title, body: body } : type;\n if (!toast.toastId) {\n toast.toastId = Guid.newGuid();\n }\n if (!this._addToast) {\n throw new Error('No Toaster Containers have been initialized to receive toasts.');\n }\n this._addToast.next(toast);\n return toast;\n }\n /**\n * Asynchronously create and show a new toast instance.\n *\n * @param {(string | Toast)} type The type of the toast, or a Toast object.\n * @param {string=} title The toast title.\n * @param {string=} body The toast body.\n * @returns {Observable}\n * A hot Observable that can be subscribed to in order to receive the Toast instance\n * with a randomly generated GUID Id.\n */\n popAsync(type, title, body) {\n setTimeout(() => {\n this.pop(type, title, body);\n }, 0);\n return this.addToast;\n }\n /**\n * Clears a toast by toastId and/or toastContainerId.\n *\n * @param {string} toastId The toastId to clear.\n * @param {number=} toastContainerId\n * The toastContainerId of the container to remove toasts from.\n */\n clear(toastId, toastContainerId) {\n const clearWrapper = {\n toastId: toastId, toastContainerId: toastContainerId\n };\n this._clearToasts.next(clearWrapper);\n }\n}\nToasterService.ɵfac = function ToasterService_Factory(t) { return new (t || ToasterService)(); };\nToasterService.ɵprov = ɵɵdefineInjectable({ factory: function ToasterService_Factory() { return new ToasterService(); }, token: ToasterService, providedIn: \"root\" });\nToasterService.ctorParameters = () => [];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ToasterService, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n\nclass ToasterContainerComponent {\n constructor(toasterService) {\n this.toasts = [];\n this.toasterService = toasterService;\n }\n ngOnInit() {\n this.registerSubscribers();\n if (this.isNullOrUndefined(this.toasterconfig)) {\n this.toasterconfig = new ToasterConfig();\n }\n }\n // event handlers\n click(toast, isCloseButton) {\n if (toast.onClickCallback) {\n toast.onClickCallback(toast);\n }\n const tapToDismiss = !this.isNullOrUndefined(toast.tapToDismiss)\n ? toast.tapToDismiss\n : this.toasterconfig.tapToDismiss;\n if (tapToDismiss || (toast.showCloseButton && isCloseButton)) {\n this.removeToast(toast);\n }\n }\n childClick($event) {\n this.click($event.value.toast, $event.value.isCloseButton);\n }\n removeToast(toast) {\n const index = this.toasts.indexOf(toast);\n if (index < 0) {\n return;\n }\n ;\n const toastId = this.toastIdOrDefault(toast);\n this.toasts.splice(index, 1);\n if (toast.onHideCallback) {\n toast.onHideCallback(toast);\n }\n this.toasterService._removeToastSubject.next({ toastId: toastId, toastContainerId: toast.toastContainerId });\n }\n // private functions\n registerSubscribers() {\n this.addToastSubscriber = this.toasterService.addToast.subscribe((toast) => {\n this.addToast(toast);\n });\n this.clearToastsSubscriber = this.toasterService.clearToasts.subscribe((clearWrapper) => {\n this.clearToasts(clearWrapper);\n });\n }\n addToast(toast) {\n if (toast.toastContainerId && this.toasterconfig.toastContainerId\n && toast.toastContainerId !== this.toasterconfig.toastContainerId) {\n return;\n }\n ;\n if (!toast.type\n || !this.toasterconfig.typeClasses[toast.type]\n || !this.toasterconfig.iconClasses[toast.type]) {\n toast.type = this.toasterconfig.defaultToastType;\n }\n if (this.toasterconfig.preventDuplicates && this.toasts.length > 0) {\n if (toast.toastId && this.toasts.some(t => t.toastId === toast.toastId)) {\n return;\n }\n else if (this.toasts.some(t => t.body === toast.body)) {\n return;\n }\n }\n if (this.isNullOrUndefined(toast.showCloseButton)) {\n if (typeof this.toasterconfig.showCloseButton === 'object') {\n toast.showCloseButton = this.toasterconfig.showCloseButton[toast.type];\n }\n else if (typeof this.toasterconfig.showCloseButton === 'boolean') {\n toast.showCloseButton = this.toasterconfig.showCloseButton;\n }\n }\n if (toast.showCloseButton) {\n toast.closeHtml = toast.closeHtml || this.toasterconfig.closeHtml;\n }\n toast.bodyOutputType = toast.bodyOutputType || this.toasterconfig.bodyOutputType;\n if (this.toasterconfig.newestOnTop) {\n this.toasts.unshift(toast);\n if (this.isLimitExceeded()) {\n this.toasts.pop();\n }\n }\n else {\n this.toasts.push(toast);\n if (this.isLimitExceeded()) {\n this.toasts.shift();\n }\n }\n if (toast.onShowCallback) {\n toast.onShowCallback(toast);\n }\n }\n isLimitExceeded() {\n return this.toasterconfig.limit && this.toasts.length > this.toasterconfig.limit;\n }\n removeAllToasts() {\n for (let i = this.toasts.length - 1; i >= 0; i--) {\n this.removeToast(this.toasts[i]);\n }\n }\n clearToasts(clearWrapper) {\n const toastId = clearWrapper.toastId;\n const toastContainerId = clearWrapper.toastContainerId;\n if (this.isNullOrUndefined(toastContainerId) || (toastContainerId === this.toasterconfig.toastContainerId)) {\n this.clearToastsAction(toastId);\n }\n }\n clearToastsAction(toastId) {\n if (toastId) {\n this.removeToast(this.toasts.filter(t => t.toastId === toastId)[0]);\n }\n else {\n this.removeAllToasts();\n }\n }\n toastIdOrDefault(toast) {\n return toast.toastId || '';\n }\n isNullOrUndefined(value) {\n return value === null || typeof value === 'undefined';\n }\n ngOnDestroy() {\n if (this.addToastSubscriber) {\n this.addToastSubscriber.unsubscribe();\n }\n if (this.clearToastsSubscriber) {\n this.clearToastsSubscriber.unsubscribe();\n }\n }\n}\nToasterContainerComponent.ɵfac = function ToasterContainerComponent_Factory(t) { return new (t || ToasterContainerComponent)(ɵngcc0.ɵɵdirectiveInject(ToasterService)); };\nToasterContainerComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ToasterContainerComponent, selectors: [[\"toaster-container\"]], inputs: { toasterconfig: \"toasterconfig\" }, decls: 2, vars: 4, consts: [[1, \"toast-container\", 3, \"ngClass\"], [\"toastComp\", \"\", \"class\", \"toast\", 3, \"toast\", \"toasterconfig\", \"titleClass\", \"messageClass\", \"ngClass\", \"click\", \"clickEvent\", \"removeToastEvent\", 4, \"ngFor\", \"ngForOf\"], [\"toastComp\", \"\", 1, \"toast\", 3, \"toast\", \"toasterconfig\", \"titleClass\", \"messageClass\", \"ngClass\", \"click\", \"clickEvent\", \"removeToastEvent\"]], template: function ToasterContainerComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 0);\n ɵngcc0.ɵɵtemplate(1, ToasterContainerComponent_div_1_Template, 1, 9, \"div\", 1);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction1(2, _c1, ctx.toasterconfig.positionClass));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.toasts);\n } }, directives: function () { return [ɵngcc1.NgClass, ɵngcc1.NgForOf, ToastComponent]; }, encapsulation: 2, data: { animation: Transitions } });\nToasterContainerComponent.ctorParameters = () => [\n { type: ToasterService }\n];\nToasterContainerComponent.propDecorators = {\n toasterconfig: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ToasterContainerComponent, [{\n type: Component,\n args: [{\n selector: 'toaster-container',\n template: `\n
    \n
    \n
    \n
    \n `,\n animations: Transitions\n }]\n }], function () { return [{ type: ToasterService }]; }, { toasterconfig: [{\n type: Input\n }] }); })();\n\nclass ToastComponent {\n constructor(componentFactoryResolver, changeDetectorRef, ngZone, element, renderer2) {\n this.componentFactoryResolver = componentFactoryResolver;\n this.changeDetectorRef = changeDetectorRef;\n this.ngZone = ngZone;\n this.element = element;\n this.renderer2 = renderer2;\n this.progressBarWidth = -1;\n this.bodyOutputType = BodyOutputType;\n this.clickEvent = new EventEmitter();\n this.removeToastEvent = new EventEmitter();\n this.timeoutId = null;\n this.timeout = 0;\n this.progressBarIntervalId = null;\n }\n ngOnInit() {\n if (this.toast.progressBar) {\n this.toast.progressBarDirection = this.toast.progressBarDirection || 'decreasing';\n }\n let timeout = (typeof this.toast.timeout === 'number')\n ? this.toast.timeout : this.toasterconfig.timeout;\n if (typeof timeout === 'object') {\n timeout = timeout[this.toast.type];\n }\n ;\n this.timeout = timeout;\n }\n ngAfterViewInit() {\n if (this.toast.bodyOutputType === this.bodyOutputType.Component) {\n const component = this.componentFactoryResolver.resolveComponentFactory(this.toast.body);\n const componentInstance = this.componentBody.createComponent(component, undefined, this.componentBody.injector);\n componentInstance.instance.toast = this.toast;\n this.changeDetectorRef.detectChanges();\n }\n if (this.toasterconfig.mouseoverTimerStop) {\n // only apply a mouseenter event when necessary to avoid\n // unnecessary event and change detection cycles.\n this.removeMouseOverListener = this.renderer2.listen(this.element.nativeElement, 'mouseenter', () => this.stopTimer());\n }\n this.configureTimer();\n }\n click(event, toast) {\n event.stopPropagation();\n this.clickEvent.emit({ value: { toast: toast, isCloseButton: true } });\n }\n stopTimer() {\n this.progressBarWidth = 0;\n this.clearTimers();\n }\n restartTimer() {\n if (this.toasterconfig.mouseoverTimerStop) {\n if (!this.timeoutId) {\n this.configureTimer();\n }\n }\n else if (this.timeout && !this.timeoutId) {\n this.removeToast();\n }\n }\n ngOnDestroy() {\n if (this.removeMouseOverListener) {\n this.removeMouseOverListener();\n }\n this.clearTimers();\n }\n configureTimer() {\n if (!this.timeout || this.timeout < 1) {\n return;\n }\n if (this.toast.progressBar) {\n this.removeToastTick = new Date().getTime() + this.timeout;\n this.progressBarWidth = -1;\n }\n this.ngZone.runOutsideAngular(() => {\n this.timeoutId = window.setTimeout(() => {\n this.ngZone.run(() => {\n this.changeDetectorRef.markForCheck();\n this.removeToast();\n });\n }, this.timeout);\n if (this.toast.progressBar) {\n this.progressBarIntervalId = window.setInterval(() => {\n this.ngZone.run(() => {\n this.updateProgressBar();\n });\n }, 10);\n }\n });\n }\n updateProgressBar() {\n if (this.progressBarWidth === 0 || this.progressBarWidth === 100) {\n return;\n }\n this.progressBarWidth = ((this.removeToastTick - new Date().getTime()) / this.timeout) * 100;\n if (this.toast.progressBarDirection === 'increasing') {\n this.progressBarWidth = 100 - this.progressBarWidth;\n }\n if (this.progressBarWidth < 0) {\n this.progressBarWidth = 0;\n }\n if (this.progressBarWidth > 100) {\n this.progressBarWidth = 100;\n }\n }\n clearTimers() {\n if (this.timeoutId) {\n window.clearTimeout(this.timeoutId);\n }\n if (this.progressBarIntervalId) {\n window.clearInterval(this.progressBarIntervalId);\n }\n this.timeoutId = null;\n this.progressBarIntervalId = null;\n }\n removeToast() {\n this.removeToastEvent.emit(this.toast);\n }\n}\nToastComponent.ɵfac = function ToastComponent_Factory(t) { return new (t || ToastComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nToastComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ToastComponent, selectors: [[\"\", \"toastComp\", \"\"]], viewQuery: function ToastComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c2, 5, ViewContainerRef);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.componentBody = _t.first);\n } }, hostBindings: function ToastComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"mouseleave\", function ToastComponent_mouseleave_HostBindingHandler() { return ctx.restartTimer(); });\n } }, inputs: { toasterconfig: \"toasterconfig\", toast: \"toast\", titleClass: \"titleClass\", messageClass: \"messageClass\" }, outputs: { clickEvent: \"clickEvent\", removeToastEvent: \"removeToastEvent\" }, attrs: _c3, decls: 9, vars: 9, consts: [[1, \"toast-content\"], [3, \"ngClass\"], [3, \"ngClass\", \"ngSwitch\"], [4, \"ngSwitchCase\"], [3, \"innerHTML\", 4, \"ngSwitchCase\"], [\"class\", \"toast-close-button\", 3, \"innerHTML\", \"click\", 4, \"ngIf\"], [4, \"ngIf\"], [\"componentBody\", \"\"], [3, \"innerHTML\"], [1, \"toast-close-button\", 3, \"innerHTML\", \"click\"], [1, \"toast-progress-bar\"]], template: function ToastComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 0)(1, \"div\", 1);\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(3, \"div\", 2);\n ɵngcc0.ɵɵtemplate(4, ToastComponent_div_4_Template, 2, 0, \"div\", 3);\n ɵngcc0.ɵɵtemplate(5, ToastComponent_div_5_Template, 2, 3, \"div\", 4);\n ɵngcc0.ɵɵtemplate(6, ToastComponent_div_6_Template, 2, 1, \"div\", 3);\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵtemplate(7, ToastComponent_button_7_Template, 2, 3, \"button\", 5);\n ɵngcc0.ɵɵtemplate(8, ToastComponent_div_8_Template, 2, 2, \"div\", 6);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx.titleClass);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx.toast.title);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngClass\", ctx.messageClass)(\"ngSwitch\", ctx.toast.bodyOutputType);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", ctx.bodyOutputType.Component);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", ctx.bodyOutputType.TrustedHtml);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", ctx.bodyOutputType.Default);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.toast.showCloseButton);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.toast.progressBar);\n } }, directives: function () { return [ɵngcc1.NgClass, ɵngcc1.NgSwitch, ɵngcc1.NgSwitchCase, ɵngcc1.NgIf]; }, pipes: function () { return [TrustHtmlPipe]; }, encapsulation: 2 });\nToastComponent.ctorParameters = () => [\n { type: ComponentFactoryResolver },\n { type: ChangeDetectorRef },\n { type: NgZone },\n { type: ElementRef },\n { type: Renderer2 }\n];\nToastComponent.propDecorators = {\n toasterconfig: [{ type: Input }],\n toast: [{ type: Input }],\n titleClass: [{ type: Input }],\n messageClass: [{ type: Input }],\n componentBody: [{ type: ViewChild, args: ['componentBody', { read: ViewContainerRef, static: false },] }],\n clickEvent: [{ type: Output }],\n removeToastEvent: [{ type: Output }],\n restartTimer: [{ type: HostListener, args: ['mouseleave',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ToastComponent, [{\n type: Component,\n args: [{\n selector: '[toastComp]',\n template: `\n
    \n
    {{toast.title}}
    \n
    \n
    \n
    \n
    {{toast.body}}
    \n
    \n
    \n \n
    \n
    \n
    `\n }]\n }], function () { return [{ type: ɵngcc0.ComponentFactoryResolver }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }]; }, { clickEvent: [{\n type: Output\n }], removeToastEvent: [{\n type: Output\n }], restartTimer: [{\n type: HostListener,\n args: ['mouseleave']\n }], toasterconfig: [{\n type: Input\n }], toast: [{\n type: Input\n }], titleClass: [{\n type: Input\n }], messageClass: [{\n type: Input\n }], componentBody: [{\n type: ViewChild,\n args: ['componentBody', { read: ViewContainerRef, static: false }]\n }] }); })();\n\nclass TrustHtmlPipe {\n constructor(sanitizer) {\n this.sanitizer = sanitizer;\n }\n transform(content) {\n return this.sanitizer.bypassSecurityTrustHtml(content);\n }\n}\nTrustHtmlPipe.ɵfac = function TrustHtmlPipe_Factory(t) { return new (t || TrustHtmlPipe)(ɵngcc0.ɵɵdirectiveInject(ɵngcc2.DomSanitizer, 16)); };\nTrustHtmlPipe.ɵpipe = /*@__PURE__*/ ɵngcc0.ɵɵdefinePipe({ name: \"trustHtml\", type: TrustHtmlPipe, pure: true });\nTrustHtmlPipe.ctorParameters = () => [\n { type: DomSanitizer }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TrustHtmlPipe, [{\n type: Pipe,\n args: [{\n name: 'trustHtml',\n pure: true\n }]\n }], function () { return [{ type: ɵngcc2.DomSanitizer }]; }, null); })();\n\nclass ToasterModule {\n static forRoot() {\n return {\n ngModule: ToasterModule,\n providers: [ToasterService, ToasterContainerComponent]\n };\n }\n static forChild() {\n return {\n ngModule: ToasterModule,\n providers: [ToasterContainerComponent]\n };\n }\n}\nToasterModule.ɵfac = function ToasterModule_Factory(t) { return new (t || ToasterModule)(); };\nToasterModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: ToasterModule });\nToasterModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ToasterModule, [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n declarations: [\n ToastComponent,\n ToasterContainerComponent,\n TrustHtmlPipe\n ],\n exports: [\n ToasterContainerComponent,\n ToastComponent\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(ToasterModule, { declarations: function () { return [ToastComponent, ToasterContainerComponent, TrustHtmlPipe]; }, imports: function () { return [CommonModule]; }, exports: function () { return [ToasterContainerComponent, ToastComponent]; } }); })();\n\n/*\n * Public API Surface of angular2-toaster\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BodyOutputType, DefaultIconClasses, DefaultTypeClasses, ToasterConfig, ToasterContainerComponent, ToasterModule, ToasterService, Transitions as ɵa, ToastComponent as ɵb, TrustHtmlPipe as ɵc };\n\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.bowser=t():e.bowser=t()}(this,(function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var i in e)r.d(n,i,function(t){return e[t]}.bind(null,i));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,\"a\",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p=\"\",r(r.s=90)}({17:function(e,t,r){\"use strict\";t.__esModule=!0,t.default=void 0;var n=r(18),i=function(){function e(){}return e.getFirstMatch=function(e,t){var r=t.match(e);return r&&r.length>0&&r[1]||\"\"},e.getSecondMatch=function(e,t){var r=t.match(e);return r&&r.length>1&&r[2]||\"\"},e.matchAndReturnConst=function(e,t,r){if(e.test(t))return r},e.getWindowsVersionName=function(e){switch(e){case\"NT\":return\"NT\";case\"XP\":return\"XP\";case\"NT 5.0\":return\"2000\";case\"NT 5.1\":return\"XP\";case\"NT 5.2\":return\"2003\";case\"NT 6.0\":return\"Vista\";case\"NT 6.1\":return\"7\";case\"NT 6.2\":return\"8\";case\"NT 6.3\":return\"8.1\";case\"NT 10.0\":return\"10\";default:return}},e.getMacOSVersionName=function(e){var t=e.split(\".\").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),10===t[0])switch(t[1]){case 5:return\"Leopard\";case 6:return\"Snow Leopard\";case 7:return\"Lion\";case 8:return\"Mountain Lion\";case 9:return\"Mavericks\";case 10:return\"Yosemite\";case 11:return\"El Capitan\";case 12:return\"Sierra\";case 13:return\"High Sierra\";case 14:return\"Mojave\";case 15:return\"Catalina\";default:return}},e.getAndroidVersionName=function(e){var t=e.split(\".\").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),!(1===t[0]&&t[1]<5))return 1===t[0]&&t[1]<6?\"Cupcake\":1===t[0]&&t[1]>=6?\"Donut\":2===t[0]&&t[1]<2?\"Eclair\":2===t[0]&&2===t[1]?\"Froyo\":2===t[0]&&t[1]>2?\"Gingerbread\":3===t[0]?\"Honeycomb\":4===t[0]&&t[1]<1?\"Ice Cream Sandwich\":4===t[0]&&t[1]<4?\"Jelly Bean\":4===t[0]&&t[1]>=4?\"KitKat\":5===t[0]?\"Lollipop\":6===t[0]?\"Marshmallow\":7===t[0]?\"Nougat\":8===t[0]?\"Oreo\":9===t[0]?\"Pie\":void 0},e.getVersionPrecision=function(e){return e.split(\".\").length},e.compareVersions=function(t,r,n){void 0===n&&(n=!1);var i=e.getVersionPrecision(t),s=e.getVersionPrecision(r),a=Math.max(i,s),o=0,u=e.map([t,r],(function(t){var r=a-e.getVersionPrecision(t),n=t+new Array(r+1).join(\".0\");return e.map(n.split(\".\"),(function(e){return new Array(20-e.length).join(\"0\")+e})).reverse()}));for(n&&(o=a-Math.min(i,s)),a-=1;a>=o;){if(u[0][a]>u[1][a])return 1;if(u[0][a]===u[1][a]){if(a===o)return 0;a-=1}else if(u[0][a]1?i-1:0),a=1;a0){var a=Object.keys(r),u=o.default.find(a,(function(e){return t.isOS(e)}));if(u){var d=this.satisfies(r[u]);if(void 0!==d)return d}var c=o.default.find(a,(function(e){return t.isPlatform(e)}));if(c){var f=this.satisfies(r[c]);if(void 0!==f)return f}}if(s>0){var l=Object.keys(i),h=o.default.find(l,(function(e){return t.isBrowser(e,!0)}));if(void 0!==h)return this.compareVersion(i[h])}},t.isBrowser=function(e,t){void 0===t&&(t=!1);var r=this.getBrowserName().toLowerCase(),n=e.toLowerCase(),i=o.default.getBrowserTypeByAlias(n);return t&&i&&(n=i.toLowerCase()),n===r},t.compareVersion=function(e){var t=[0],r=e,n=!1,i=this.getBrowserVersion();if(\"string\"==typeof i)return\">\"===e[0]||\"<\"===e[0]?(r=e.substr(1),\"=\"===e[1]?(n=!0,r=e.substr(2)):t=[],\">\"===e[0]?t.push(1):t.push(-1)):\"=\"===e[0]?r=e.substr(1):\"~\"===e[0]&&(n=!0,r=e.substr(1)),t.indexOf(o.default.compareVersions(i,r,n))>-1},t.isOS=function(e){return this.getOSName(!0)===String(e).toLowerCase()},t.isPlatform=function(e){return this.getPlatformType(!0)===String(e).toLowerCase()},t.isEngine=function(e){return this.getEngineName(!0)===String(e).toLowerCase()},t.is=function(e,t){return void 0===t&&(t=!1),this.isBrowser(e,t)||this.isOS(e)||this.isPlatform(e)},t.some=function(e){var t=this;return void 0===e&&(e=[]),e.some((function(e){return t.is(e)}))},e}();t.default=d,e.exports=t.default},92:function(e,t,r){\"use strict\";t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n};var s=/version\\/(\\d+(\\.?_?\\d+)+)/i,a=[{test:[/googlebot/i],describe:function(e){var t={name:\"Googlebot\"},r=i.default.getFirstMatch(/googlebot\\/(\\d+(\\.\\d+))/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/opera/i],describe:function(e){var t={name:\"Opera\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:opera)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/opr\\/|opios/i],describe:function(e){var t={name:\"Opera\"},r=i.default.getFirstMatch(/(?:opr|opios)[\\s/](\\S+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/SamsungBrowser/i],describe:function(e){var t={name:\"Samsung Internet for Android\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:SamsungBrowser)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Whale/i],describe:function(e){var t={name:\"NAVER Whale Browser\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:whale)[\\s/](\\d+(?:\\.\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/MZBrowser/i],describe:function(e){var t={name:\"MZ Browser\"},r=i.default.getFirstMatch(/(?:MZBrowser)[\\s/](\\d+(?:\\.\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/focus/i],describe:function(e){var t={name:\"Focus\"},r=i.default.getFirstMatch(/(?:focus)[\\s/](\\d+(?:\\.\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/swing/i],describe:function(e){var t={name:\"Swing\"},r=i.default.getFirstMatch(/(?:swing)[\\s/](\\d+(?:\\.\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/coast/i],describe:function(e){var t={name:\"Opera Coast\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:coast)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/opt\\/\\d+(?:.?_?\\d+)+/i],describe:function(e){var t={name:\"Opera Touch\"},r=i.default.getFirstMatch(/(?:opt)[\\s/](\\d+(\\.?_?\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/yabrowser/i],describe:function(e){var t={name:\"Yandex Browser\"},r=i.default.getFirstMatch(/(?:yabrowser)[\\s/](\\d+(\\.?_?\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/ucbrowser/i],describe:function(e){var t={name:\"UC Browser\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:ucbrowser)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Maxthon|mxios/i],describe:function(e){var t={name:\"Maxthon\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:Maxthon|mxios)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/epiphany/i],describe:function(e){var t={name:\"Epiphany\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:epiphany)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/puffin/i],describe:function(e){var t={name:\"Puffin\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:puffin)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sleipnir/i],describe:function(e){var t={name:\"Sleipnir\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:sleipnir)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/k-meleon/i],describe:function(e){var t={name:\"K-Meleon\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:k-meleon)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/micromessenger/i],describe:function(e){var t={name:\"WeChat\"},r=i.default.getFirstMatch(/(?:micromessenger)[\\s/](\\d+(\\.?_?\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/qqbrowser/i],describe:function(e){var t={name:/qqbrowserlite/i.test(e)?\"QQ Browser Lite\":\"QQ Browser\"},r=i.default.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\\d+(\\.?_?\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/msie|trident/i],describe:function(e){var t={name:\"Internet Explorer\"},r=i.default.getFirstMatch(/(?:msie |rv:)(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/\\sedg\\//i],describe:function(e){var t={name:\"Microsoft Edge\"},r=i.default.getFirstMatch(/\\sedg\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/edg([ea]|ios)/i],describe:function(e){var t={name:\"Microsoft Edge\"},r=i.default.getSecondMatch(/edg([ea]|ios)\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/vivaldi/i],describe:function(e){var t={name:\"Vivaldi\"},r=i.default.getFirstMatch(/vivaldi\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/seamonkey/i],describe:function(e){var t={name:\"SeaMonkey\"},r=i.default.getFirstMatch(/seamonkey\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sailfish/i],describe:function(e){var t={name:\"Sailfish\"},r=i.default.getFirstMatch(/sailfish\\s?browser\\/(\\d+(\\.\\d+)?)/i,e);return r&&(t.version=r),t}},{test:[/silk/i],describe:function(e){var t={name:\"Amazon Silk\"},r=i.default.getFirstMatch(/silk\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/phantom/i],describe:function(e){var t={name:\"PhantomJS\"},r=i.default.getFirstMatch(/phantomjs\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/slimerjs/i],describe:function(e){var t={name:\"SlimerJS\"},r=i.default.getFirstMatch(/slimerjs\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/blackberry|\\bbb\\d+/i,/rim\\stablet/i],describe:function(e){var t={name:\"BlackBerry\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/blackberry[\\d]+\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t={name:\"WebOS Browser\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/w(?:eb)?[o0]sbrowser\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/bada/i],describe:function(e){var t={name:\"Bada\"},r=i.default.getFirstMatch(/dolfin\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/tizen/i],describe:function(e){var t={name:\"Tizen\"},r=i.default.getFirstMatch(/(?:tizen\\s?)?browser\\/(\\d+(\\.?_?\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/qupzilla/i],describe:function(e){var t={name:\"QupZilla\"},r=i.default.getFirstMatch(/(?:qupzilla)[\\s/](\\d+(\\.?_?\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/firefox|iceweasel|fxios/i],describe:function(e){var t={name:\"Firefox\"},r=i.default.getFirstMatch(/(?:firefox|iceweasel|fxios)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/electron/i],describe:function(e){var t={name:\"Electron\"},r=i.default.getFirstMatch(/(?:electron)\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/MiuiBrowser/i],describe:function(e){var t={name:\"Miui\"},r=i.default.getFirstMatch(/(?:MiuiBrowser)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/chromium/i],describe:function(e){var t={name:\"Chromium\"},r=i.default.getFirstMatch(/(?:chromium)[\\s/](\\d+(\\.?_?\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/chrome|crios|crmo/i],describe:function(e){var t={name:\"Chrome\"},r=i.default.getFirstMatch(/(?:chrome|crios|crmo)\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/GSA/i],describe:function(e){var t={name:\"Google Search\"},r=i.default.getFirstMatch(/(?:GSA)\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t={name:\"Android Browser\"},r=i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/playstation 4/i],describe:function(e){var t={name:\"PlayStation 4\"},r=i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/safari|applewebkit/i],describe:function(e){var t={name:\"Safari\"},r=i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/.*/i],describe:function(e){var t=-1!==e.search(\"\\\\(\")?/^(.*)\\/(.*)[ \\t]\\((.*)/:/^(.*)\\/(.*) /;return{name:i.default.getFirstMatch(t,e),version:i.default.getSecondMatch(t,e)}}}];t.default=a,e.exports=t.default},93:function(e,t,r){\"use strict\";t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},s=r(18);var a=[{test:[/Roku\\/DVP/],describe:function(e){var t=i.default.getFirstMatch(/Roku\\/DVP-(\\d+\\.\\d+)/i,e);return{name:s.OS_MAP.Roku,version:t}}},{test:[/windows phone/i],describe:function(e){var t=i.default.getFirstMatch(/windows phone (?:os)?\\s?(\\d+(\\.\\d+)*)/i,e);return{name:s.OS_MAP.WindowsPhone,version:t}}},{test:[/windows /i],describe:function(e){var t=i.default.getFirstMatch(/Windows ((NT|XP)( \\d\\d?.\\d)?)/i,e),r=i.default.getWindowsVersionName(t);return{name:s.OS_MAP.Windows,version:t,versionName:r}}},{test:[/Macintosh(.*?) FxiOS(.*?)\\//],describe:function(e){var t={name:s.OS_MAP.iOS},r=i.default.getSecondMatch(/(Version\\/)(\\d[\\d.]+)/,e);return r&&(t.version=r),t}},{test:[/macintosh/i],describe:function(e){var t=i.default.getFirstMatch(/mac os x (\\d+(\\.?_?\\d+)+)/i,e).replace(/[_\\s]/g,\".\"),r=i.default.getMacOSVersionName(t),n={name:s.OS_MAP.MacOS,version:t};return r&&(n.versionName=r),n}},{test:[/(ipod|iphone|ipad)/i],describe:function(e){var t=i.default.getFirstMatch(/os (\\d+([_\\s]\\d+)*) like mac os x/i,e).replace(/[_\\s]/g,\".\");return{name:s.OS_MAP.iOS,version:t}}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t=i.default.getFirstMatch(/android[\\s/-](\\d+(\\.\\d+)*)/i,e),r=i.default.getAndroidVersionName(t),n={name:s.OS_MAP.Android,version:t};return r&&(n.versionName=r),n}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t=i.default.getFirstMatch(/(?:web|hpw)[o0]s\\/(\\d+(\\.\\d+)*)/i,e),r={name:s.OS_MAP.WebOS};return t&&t.length&&(r.version=t),r}},{test:[/blackberry|\\bbb\\d+/i,/rim\\stablet/i],describe:function(e){var t=i.default.getFirstMatch(/rim\\stablet\\sos\\s(\\d+(\\.\\d+)*)/i,e)||i.default.getFirstMatch(/blackberry\\d+\\/(\\d+([_\\s]\\d+)*)/i,e)||i.default.getFirstMatch(/\\bbb(\\d+)/i,e);return{name:s.OS_MAP.BlackBerry,version:t}}},{test:[/bada/i],describe:function(e){var t=i.default.getFirstMatch(/bada\\/(\\d+(\\.\\d+)*)/i,e);return{name:s.OS_MAP.Bada,version:t}}},{test:[/tizen/i],describe:function(e){var t=i.default.getFirstMatch(/tizen[/\\s](\\d+(\\.\\d+)*)/i,e);return{name:s.OS_MAP.Tizen,version:t}}},{test:[/linux/i],describe:function(){return{name:s.OS_MAP.Linux}}},{test:[/CrOS/],describe:function(){return{name:s.OS_MAP.ChromeOS}}},{test:[/PlayStation 4/],describe:function(e){var t=i.default.getFirstMatch(/PlayStation 4[/\\s](\\d+(\\.\\d+)*)/i,e);return{name:s.OS_MAP.PlayStation4,version:t}}}];t.default=a,e.exports=t.default},94:function(e,t,r){\"use strict\";t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},s=r(18);var a=[{test:[/googlebot/i],describe:function(){return{type:\"bot\",vendor:\"Google\"}}},{test:[/huawei/i],describe:function(e){var t=i.default.getFirstMatch(/(can-l01)/i,e)&&\"Nova\",r={type:s.PLATFORMS_MAP.mobile,vendor:\"Huawei\"};return t&&(r.model=t),r}},{test:[/nexus\\s*(?:7|8|9|10).*/i],describe:function(){return{type:s.PLATFORMS_MAP.tablet,vendor:\"Nexus\"}}},{test:[/ipad/i],describe:function(){return{type:s.PLATFORMS_MAP.tablet,vendor:\"Apple\",model:\"iPad\"}}},{test:[/Macintosh(.*?) FxiOS(.*?)\\//],describe:function(){return{type:s.PLATFORMS_MAP.tablet,vendor:\"Apple\",model:\"iPad\"}}},{test:[/kftt build/i],describe:function(){return{type:s.PLATFORMS_MAP.tablet,vendor:\"Amazon\",model:\"Kindle Fire HD 7\"}}},{test:[/silk/i],describe:function(){return{type:s.PLATFORMS_MAP.tablet,vendor:\"Amazon\"}}},{test:[/tablet(?! pc)/i],describe:function(){return{type:s.PLATFORMS_MAP.tablet}}},{test:function(e){var t=e.test(/ipod|iphone/i),r=e.test(/like (ipod|iphone)/i);return t&&!r},describe:function(e){var t=i.default.getFirstMatch(/(ipod|iphone)/i,e);return{type:s.PLATFORMS_MAP.mobile,vendor:\"Apple\",model:t}}},{test:[/nexus\\s*[0-6].*/i,/galaxy nexus/i],describe:function(){return{type:s.PLATFORMS_MAP.mobile,vendor:\"Nexus\"}}},{test:[/[^-]mobi/i],describe:function(){return{type:s.PLATFORMS_MAP.mobile}}},{test:function(e){return\"blackberry\"===e.getBrowserName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.mobile,vendor:\"BlackBerry\"}}},{test:function(e){return\"bada\"===e.getBrowserName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.mobile}}},{test:function(e){return\"windows phone\"===e.getBrowserName()},describe:function(){return{type:s.PLATFORMS_MAP.mobile,vendor:\"Microsoft\"}}},{test:function(e){var t=Number(String(e.getOSVersion()).split(\".\")[0]);return\"android\"===e.getOSName(!0)&&t>=3},describe:function(){return{type:s.PLATFORMS_MAP.tablet}}},{test:function(e){return\"android\"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.mobile}}},{test:function(e){return\"macos\"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.desktop,vendor:\"Apple\"}}},{test:function(e){return\"windows\"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.desktop}}},{test:function(e){return\"linux\"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.desktop}}},{test:function(e){return\"playstation 4\"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.tv}}},{test:function(e){return\"roku\"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.tv}}}];t.default=a,e.exports=t.default},95:function(e,t,r){\"use strict\";t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},s=r(18);var a=[{test:function(e){return\"microsoft edge\"===e.getBrowserName(!0)},describe:function(e){if(/\\sedg\\//i.test(e))return{name:s.ENGINE_MAP.Blink};var t=i.default.getFirstMatch(/edge\\/(\\d+(\\.?_?\\d+)+)/i,e);return{name:s.ENGINE_MAP.EdgeHTML,version:t}}},{test:[/trident/i],describe:function(e){var t={name:s.ENGINE_MAP.Trident},r=i.default.getFirstMatch(/trident\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){return e.test(/presto/i)},describe:function(e){var t={name:s.ENGINE_MAP.Presto},r=i.default.getFirstMatch(/presto\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=e.test(/gecko/i),r=e.test(/like gecko/i);return t&&!r},describe:function(e){var t={name:s.ENGINE_MAP.Gecko},r=i.default.getFirstMatch(/gecko\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(apple)?webkit\\/537\\.36/i],describe:function(){return{name:s.ENGINE_MAP.Blink}}},{test:[/(apple)?webkit/i],describe:function(e){var t={name:s.ENGINE_MAP.WebKit},r=i.default.getFirstMatch(/webkit\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}}];t.default=a,e.exports=t.default}})}));","var jsep = require('jsep');\n\n/**\n * Evaluation code from JSEP project, under MIT License.\n * Copyright (c) 2013 Stephen Oney, http://jsep.from.so/\n */\n\nvar binops = {\n '||': function (a, b) { return a || b; },\n '&&': function (a, b) { return a && b; },\n '|': function (a, b) { return a | b; },\n '^': function (a, b) { return a ^ b; },\n '&': function (a, b) { return a & b; },\n '==': function (a, b) { return a == b; }, // jshint ignore:line\n '!=': function (a, b) { return a != b; }, // jshint ignore:line\n '===': function (a, b) { return a === b; },\n '!==': function (a, b) { return a !== b; },\n '<': function (a, b) { return a < b; },\n '>': function (a, b) { return a > b; },\n '<=': function (a, b) { return a <= b; },\n '>=': function (a, b) { return a >= b; },\n '<<': function (a, b) { return a << b; },\n '>>': function (a, b) { return a >> b; },\n '>>>': function (a, b) { return a >>> b; },\n '+': function (a, b) { return a + b; },\n '-': function (a, b) { return a - b; },\n '*': function (a, b) { return a * b; },\n '/': function (a, b) { return a / b; },\n '%': function (a, b) { return a % b; }\n};\n\nvar unops = {\n '-' : function (a) { return -a; },\n '+' : function (a) { return a; },\n '~' : function (a) { return ~a; },\n '!' : function (a) { return !a; },\n};\n\nfunction evaluateArray ( list, context ) {\n return list.map(function (v) { return evaluate(v, context); });\n}\n\nfunction evaluateMember ( node, context ) {\n var object = evaluate(node.object, context);\n if ( node.computed ) {\n return [object, object[evaluate(node.property, context)]];\n } else {\n return [object, object[node.property.name]];\n }\n}\n\nfunction evaluate ( node, context ) {\n\n switch ( node.type ) {\n\n case 'ArrayExpression':\n return evaluateArray( node.elements, context );\n\n case 'BinaryExpression':\n return binops[ node.operator ]( evaluate( node.left, context ), evaluate( node.right, context ) );\n\n case 'CallExpression':\n var caller, fn, assign;\n if (node.callee.type === 'MemberExpression') {\n assign = evaluateMember( node.callee, context );\n caller = assign[0];\n fn = assign[1];\n } else {\n fn = evaluate( node.callee, context );\n }\n if (typeof fn !== 'function') { return undefined; }\n return fn.apply( caller, evaluateArray( node.arguments, context ) );\n\n case 'ConditionalExpression':\n return evaluate( node.test, context )\n ? evaluate( node.consequent, context )\n : evaluate( node.alternate, context );\n\n case 'Identifier':\n return context[node.name];\n\n case 'Literal':\n return node.value;\n\n case 'LogicalExpression':\n if (node.operator === '||') {\n return evaluate( node.left, context ) || evaluate( node.right, context );\n } else if (node.operator === '&&') { \n return evaluate( node.left, context ) && evaluate( node.right, context );\n }\n return binops[ node.operator ]( evaluate( node.left, context ), evaluate( node.right, context ) );\n\n case 'MemberExpression':\n return evaluateMember(node, context)[1];\n\n case 'ThisExpression':\n return context;\n\n case 'UnaryExpression':\n return unops[ node.operator ]( evaluate( node.argument, context ) );\n\n default:\n return undefined;\n }\n\n}\n\nfunction compile (expression) {\n return evaluate.bind(null, jsep(expression));\n}\n\nmodule.exports = {\n parse: jsep,\n eval: evaluate,\n compile: compile\n};\n","import { __decorate, __metadata } from 'tslib';\nimport { EventEmitter, ElementRef, NgZone, Input, Output, Component, NgModule } from '@angular/core';\nimport 'highcharts';\n\nimport * as ɵngcc0 from '@angular/core';\nlet HighchartsChartComponent = class HighchartsChartComponent {\n constructor(el, _zone // #75\n ) {\n this.el = el;\n this._zone = _zone;\n this.updateChange = new EventEmitter(true);\n this.chartInstance = new EventEmitter(); // #26\n }\n ngOnChanges(changes) {\n const update = changes.update && changes.update.currentValue;\n if (changes.options || update) {\n this.wrappedUpdateOrCreateChart();\n if (update) {\n this.updateChange.emit(false); // clear the flag after update\n }\n }\n }\n wrappedUpdateOrCreateChart() {\n if (this.runOutsideAngular) {\n this._zone.runOutsideAngular(() => {\n this.updateOrCreateChart();\n });\n }\n else {\n this.updateOrCreateChart();\n }\n }\n updateOrCreateChart() {\n if (this.chart && this.chart.update) {\n this.chart.update(this.options, true, this.oneToOne || false);\n }\n else {\n this.chart = this.Highcharts[this.constructorType || 'chart'](this.el.nativeElement, this.options, this.callbackFunction || null);\n // emit chart instance on init\n this.chartInstance.emit(this.chart);\n }\n }\n ngOnDestroy() {\n if (this.chart) { // #56\n this.chart.destroy();\n this.chart = null;\n }\n }\n};\nHighchartsChartComponent.ɵfac = function HighchartsChartComponent_Factory(t) { return new (t || HighchartsChartComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nHighchartsChartComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: HighchartsChartComponent, selectors: [[\"highcharts-chart\"]], inputs: { Highcharts: \"Highcharts\", constructorType: \"constructorType\", callbackFunction: \"callbackFunction\", oneToOne: \"oneToOne\", runOutsideAngular: \"runOutsideAngular\", options: \"options\", update: \"update\" }, outputs: { updateChange: \"updateChange\", chartInstance: \"chartInstance\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 0, vars: 0, template: function HighchartsChartComponent_Template(rf, ctx) { }, encapsulation: 2 });\nHighchartsChartComponent.ctorParameters = () => [\n { type: ElementRef },\n { type: NgZone // #75\n }\n];\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], HighchartsChartComponent.prototype, \"Highcharts\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], HighchartsChartComponent.prototype, \"constructorType\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Function)\n], HighchartsChartComponent.prototype, \"callbackFunction\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], HighchartsChartComponent.prototype, \"oneToOne\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], HighchartsChartComponent.prototype, \"runOutsideAngular\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], HighchartsChartComponent.prototype, \"options\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], HighchartsChartComponent.prototype, \"update\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", Object)\n], HighchartsChartComponent.prototype, \"updateChange\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", Object)\n], HighchartsChartComponent.prototype, \"chartInstance\", void 0);\nHighchartsChartComponent = __decorate([ __metadata(\"design:paramtypes\", [ElementRef,\n NgZone // #75\n ])\n], HighchartsChartComponent);\n\nlet HighchartsChartModule = class HighchartsChartModule {\n};\nHighchartsChartModule.ɵfac = function HighchartsChartModule_Factory(t) { return new (t || HighchartsChartModule)(); };\nHighchartsChartModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: HighchartsChartModule });\nHighchartsChartModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(HighchartsChartComponent, [{\n type: Component,\n args: [{\n selector: 'highcharts-chart',\n template: ''\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }]; }, { updateChange: [{\n type: Output\n }], chartInstance: [{\n type: Output\n }], Highcharts: [{\n type: Input\n }], constructorType: [{\n type: Input\n }], callbackFunction: [{\n type: Input\n }], oneToOne: [{\n type: Input\n }], runOutsideAngular: [{\n type: Input\n }], options: [{\n type: Input\n }], update: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(HighchartsChartModule, [{\n type: NgModule,\n args: [{\n declarations: [HighchartsChartComponent],\n exports: [HighchartsChartComponent]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(HighchartsChartModule, { declarations: [HighchartsChartComponent], exports: [HighchartsChartComponent] }); })();\n\n/*\n * Public API Surface of highcharts-angular\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { HighchartsChartComponent, HighchartsChartModule };\n\n","/*\n Highcharts JS v7.1.1 (2019-04-09)\n\n (c) 2009-2018 Torstein Honsi\n\n License: www.highcharts.com/license\n*/\n(function(Q,K){\"object\"===typeof module&&module.exports?(K[\"default\"]=K,module.exports=Q.document?K(Q):K):\"function\"===typeof define&&define.amd?define(\"highcharts/highcharts\",function(){return K(Q)}):(Q.Highcharts&&Q.Highcharts.error(16,!0),Q.Highcharts=K(Q))})(\"undefined\"!==typeof window?window:this,function(Q){function K(a,C,I,F){a.hasOwnProperty(C)||(a[C]=F.apply(null,I))}var G={};K(G,\"parts/Globals.js\",[],function(){var a=\"undefined\"===typeof Q?\"undefined\"!==typeof window?window:{}:Q,C=a.document,\nI=a.navigator&&a.navigator.userAgent||\"\",F=C&&C.createElementNS&&!!C.createElementNS(\"http://www.w3.org/2000/svg\",\"svg\").createSVGRect,k=/(edge|msie|trident)/i.test(I)&&!a.opera,e=-1!==I.indexOf(\"Firefox\"),q=-1!==I.indexOf(\"Chrome\"),t=e&&4>parseInt(I.split(\"Firefox/\")[1],10);return{product:\"Highcharts\",version:\"7.1.1\",deg2rad:2*Math.PI/360,doc:C,hasBidiBug:t,hasTouch:C&&void 0!==C.documentElement.ontouchstart,isMS:k,isWebKit:-1!==I.indexOf(\"AppleWebKit\"),isFirefox:e,isChrome:q,isSafari:!q&&-1!==I.indexOf(\"Safari\"),\nisTouchDevice:/(Mobile|Android|Windows Phone)/.test(I),SVG_NS:\"http://www.w3.org/2000/svg\",chartCount:0,seriesTypes:{},symbolSizes:{},svg:F,win:a,marginNames:[\"plotTop\",\"marginRight\",\"marginBottom\",\"plotLeft\"],noop:function(){},charts:[],dateFormats:{}}});K(G,\"parts/Utilities.js\",[G[\"parts/Globals.js\"]],function(a){a.timers=[];var C=a.charts,I=a.doc,F=a.win;a.error=function(k,e,q){var t=a.isNumber(k)?\"Highcharts error #\"+k+\": www.highcharts.com/errors/\"+k:k,u=function(){if(e)throw Error(t);F.console&&\nconsole.log(t)};q?a.fireEvent(q,\"displayError\",{code:k,message:t},u):u()};a.Fx=function(a,e,q){this.options=e;this.elem=a;this.prop=q};a.Fx.prototype={dSetter:function(){var a=this.paths[0],e=this.paths[1],q=[],t=this.now,u=a.length,v;if(1===t)q=this.toD;else if(u===e.length&&1>t)for(;u--;)v=parseFloat(a[u]),q[u]=isNaN(v)?e[u]:t*parseFloat(e[u]-v)+v;else q=e;this.elem.attr(\"d\",q,null,!0)},update:function(){var a=this.elem,e=this.prop,q=this.now,t=this.options.step;if(this[e+\"Setter\"])this[e+\"Setter\"]();\nelse a.attr?a.element&&a.attr(e,q,null,!0):a.style[e]=q+this.unit;t&&t.call(a,q,this)},run:function(k,e,q){var t=this,u=t.options,v=function(a){return v.stopped?!1:t.step(a)},p=F.requestAnimationFrame||function(a){setTimeout(a,13)},h=function(){for(var d=0;d=p+this.startTime?(this.now=this.end,this.pos=1,this.update(),q=h[this.prop]=!0,a.objectEach(h,function(a){!0!==a&&(q=!1)}),q&&v&&v.call(u),k=!1):(this.pos=t.easing((e-this.startTime)/p),this.now=this.start+(this.end-this.start)*\nthis.pos,this.update(),k=!0);return k},initPath:function(k,e,q){function t(a){var b,g;for(c=a.length;c--;)b=\"M\"===a[c]||\"L\"===a[c],g=/[a-zA-Z]/.test(a[c+3]),b&&g&&a.splice(c+1,0,a[c+1],a[c+2],a[c+1],a[c+2])}function u(a,d){for(;a.lengtha&&-Infinity=q&&(e=[1/q])));for(t=0;t=k||!u&&v<=(e[t]+(e[t+1]||e[t]))/2);t++);return p=a.correctFloat(p*q,-Math.round(Math.log(.001)/Math.LN10))};a.stableSort=function(a,e){var k=a.length,t,u;for(u=0;uk&&(k=a[e]);return k};a.destroyObjectProperties=function(k,e){a.objectEach(k,function(a,t){a&&a!==e&&a.destroy&&a.destroy();delete k[t]})};a.discardElement=function(k){var e=a.garbageBin;e||(e=a.createElement(\"div\"));k&&e.appendChild(k);e.innerHTML=\"\"};a.correctFloat=function(a,e){return parseFloat(a.toPrecision(e||14))};a.setAnimation=function(k,e){e.renderer.globalAnimation=a.pick(k,e.options.chart.animation,!0)};a.animObject=function(k){return a.isObject(k)?a.merge(k):{duration:k?\n500:0}};a.timeUnits={millisecond:1,second:1E3,minute:6E4,hour:36E5,day:864E5,week:6048E5,month:24192E5,year:314496E5};a.numberFormat=function(k,e,q,t){k=+k||0;e=+e;var u=a.defaultOptions.lang,v=(k.toString().split(\".\")[1]||\"\").split(\"e\")[0].length,p,h,d=k.toString().split(\"e\");-1===e?e=Math.min(v,20):a.isNumber(e)?e&&d[1]&&0>d[1]&&(p=e+ +d[1],0<=p?(d[0]=(+d[0]).toExponential(p).split(\"e\")[0],e=p):(d[0]=d[0].split(\".\")[0]||0,k=20>e?(d[0]*Math.pow(10,d[1])).toFixed(e):0,d[1]=0)):e=2;h=(Math.abs(d[1]?\nd[0]:k)+Math.pow(10,-Math.max(e,v)-1)).toFixed(e);v=String(a.pInt(h));p=3k?\"-\":\"\")+(p?v.substr(0,p)+t:\"\");k+=v.substr(p).replace(/(\\d{3})(?=\\d)/g,\"$1\"+t);e&&(k+=q+h.slice(-e));d[1]&&0!==+k&&(k+=\"e\"+d[1]);return k};Math.easeInOutSine=function(a){return-.5*(Math.cos(Math.PI*a)-1)};a.getStyle=function(k,e,q){if(\"width\"===e)return Math.max(0,Math.min(k.offsetWidth,k.scrollWidth,k.getBoundingClientRect&&\"none\"===a.getStyle(k,\n\"transform\",!1)?Math.floor(k.getBoundingClientRect().width):Infinity)-a.getStyle(k,\"padding-left\")-a.getStyle(k,\"padding-right\"));if(\"height\"===e)return Math.max(0,Math.min(k.offsetHeight,k.scrollHeight)-a.getStyle(k,\"padding-top\")-a.getStyle(k,\"padding-bottom\"));F.getComputedStyle||a.error(27,!0);if(k=F.getComputedStyle(k,void 0))k=k.getPropertyValue(e),a.pick(q,\"opacity\"!==e)&&(k=a.pInt(k));return k};a.inArray=function(a,e,q){return e.indexOf(a,q)};a.find=Array.prototype.find?function(a,e){return a.find(e)}:\nfunction(a,e){var k,t=a.length;for(k=0;k>\n16,(k&65280)>>8,k&255,1]:4===e&&(q=[(k&3840)>>4|(k&3840)>>8,(k&240)>>4|k&240,(k&15)<<4|k&15,1])),!q)for(t=this.parsers.length;t--&&!q;)u=this.parsers[t],(e=u.regex.exec(k))&&(q=u.parse(e));this.rgba=q||[]},get:function(a){var e=this.input,k=this.rgba,t;this.stops?(t=I(e),t.stops=[].concat(t.stops),this.stops.forEach(function(e,k){t.stops[k]=[t.stops[k][0],e.get(a)]})):t=k&&C(k[0])?\"rgb\"===a||!a&&1===k[3]?\"rgb(\"+k[0]+\",\"+k[1]+\",\"+k[2]+\")\":\"a\"===a?k[3]:\"rgba(\"+k.join(\",\")+\")\":e;return t},brighten:function(a){var e,\nk=this.rgba;if(this.stops)this.stops.forEach(function(e){e.brighten(a)});else if(C(a)&&0!==a)for(e=0;3>e;e++)k[e]+=F(255*a),0>k[e]&&(k[e]=0),255y.width)y={width:0,height:0}}else y=this.htmlGetBBox();c.isSVG&&(a=y.width,c=y.height,x&&(y.height=c={\"11px,17\":14,\"13px,20\":16}[l&&l.fontSize+\",\"+Math.round(c)]||\nc),f&&(y.width=Math.abs(c*Math.sin(r))+Math.abs(a*Math.cos(r)),y.height=Math.abs(c*Math.cos(r))+Math.abs(a*Math.sin(r))));if(B&&0]*>/g,\"\").replace(/</g,\"\\x3c\").replace(/>/g,\"\\x3e\")))},textSetter:function(a){a!==this.textStr&&(delete this.bBox,this.textStr=a,this.added&&this.renderer.buildText(this))},setTextPath:function(f,b){var y=this.element,c={textAnchor:\"text-anchor\"},r,d=!1,l,g=this.textPathWrapper,h=!g;b=n(!0,{enabled:!0,attributes:{dy:-5,startOffset:\"50%\",textAnchor:\"middle\"}},b);r=b.attributes;if(f&&b&&b.enabled){this.options&&this.options.padding&&(r.dx=-this.options.padding);g||(this.textPathWrapper=\ng=this.renderer.createElement(\"textPath\"),d=!0);l=g.element;(b=f.element.getAttribute(\"id\"))||f.element.setAttribute(\"id\",b=a.uniqueKey());if(h)for(f=y.getElementsByTagName(\"tspan\");f.length;)f[0].setAttribute(\"y\",0),l.appendChild(f[0]);d&&g.add({element:this.text?this.text.element:y});l.setAttributeNS(\"http://www.w3.org/1999/xlink\",\"href\",this.renderer.url+\"#\"+b);p(r.dy)&&(l.parentNode.setAttribute(\"dy\",r.dy),delete r.dy);p(r.dx)&&(l.parentNode.setAttribute(\"dx\",r.dx),delete r.dx);a.objectEach(r,\nfunction(a,f){l.setAttribute(c[f]||f,a)});y.removeAttribute(\"transform\");this.removeTextOutline.call(g,[].slice.call(y.getElementsByTagName(\"tspan\")));this.applyTextOutline=this.updateTransform=x}else g&&(delete this.updateTransform,delete this.applyTextOutline,this.destroyTextPath(y,f));return this},destroyTextPath:function(a,f){var y;f.element.setAttribute(\"id\",\"\");for(y=this.textPathWrapper.element.childNodes;y.length;)a.firstChild.appendChild(y[0]);a.firstChild.removeChild(this.textPathWrapper.element);\ndelete f.textPathWrapper},fillSetter:function(a,f,b){\"string\"===typeof a?b.setAttribute(f,a):a&&this.complexColor(a,f,b)},visibilitySetter:function(a,f,b){\"inherit\"===a?b.removeAttribute(f):this[f]!==a&&b.setAttribute(f,a);this[f]=a},zIndexSetter:function(a,f){var b=this.renderer,y=this.parentGroup,c=(y||b).element||b.box,r,d=this.element,l,g,b=c===b.box;r=this.added;var n;p(a)?(d.setAttribute(\"data-z-index\",a),a=+a,this[f]===a&&(r=!1)):p(this[f])&&d.removeAttribute(\"data-z-index\");this[f]=a;if(r){(a=\nthis.zIndex)&&y&&(y.handleZ=!0);f=c.childNodes;for(n=f.length-1;0<=n&&!l;n--)if(y=f[n],r=y.getAttribute(\"data-z-index\"),g=!p(r),y!==d)if(0>a&&g&&!b&&!n)c.insertBefore(d,f[n]),l=!0;else if(H(r)<=a||g&&(!p(a)||0<=a))c.insertBefore(d,f[n+1]||null),l=!0;l||(c.insertBefore(d,f[b?3:0]||null),l=!0)}return l},_defaultSetter:function(a,f,b){b.setAttribute(f,a)}});C.prototype.yGetter=C.prototype.xGetter;C.prototype.translateXSetter=C.prototype.translateYSetter=C.prototype.rotationSetter=C.prototype.verticalAlignSetter=\nC.prototype.rotationOriginXSetter=C.prototype.rotationOriginYSetter=C.prototype.scaleXSetter=C.prototype.scaleYSetter=C.prototype.matrixSetter=function(a,f){this[f]=a;this.doTransform=!0};C.prototype[\"stroke-widthSetter\"]=C.prototype.strokeSetter=function(a,f,b){this[f]=a;this.stroke&&this[\"stroke-width\"]?(C.prototype.fillSetter.call(this,this.stroke,\"stroke\",b),b.setAttribute(\"stroke-width\",this[\"stroke-width\"]),this.hasStroke=!0):\"stroke-width\"===f&&0===a&&this.hasStroke&&(b.removeAttribute(\"stroke\"),\nthis.hasStroke=!1)};I=a.SVGRenderer=function(){this.init.apply(this,arguments)};b(I.prototype,{Element:C,SVG_NS:L,init:function(a,f,b,c,r,d,l){var y;y=this.createElement(\"svg\").attr({version:\"1.1\",\"class\":\"highcharts-root\"});l||y.css(this.getStyle(c));c=y.element;a.appendChild(c);e(a,\"dir\",\"ltr\");-1===a.innerHTML.indexOf(\"xmlns\")&&e(c,\"xmlns\",this.SVG_NS);this.isSVG=!0;this.box=c;this.boxWrapper=y;this.alignedObjects=[];this.url=(w||A)&&m.getElementsByTagName(\"base\").length?O.location.href.split(\"#\")[0].replace(/<[^>]*>/g,\n\"\").replace(/([\\('\\)])/g,\"\\\\$1\").replace(/ /g,\"%20\"):\"\";this.createElement(\"desc\").add().element.appendChild(m.createTextNode(\"Created with Highcharts 7.1.1\"));this.defs=this.createElement(\"defs\").add();this.allowHTML=d;this.forExport=r;this.styledMode=l;this.gradients={};this.cache={};this.cacheKeys=[];this.imgCount=0;this.setSize(f,b,!1);var g;w&&a.getBoundingClientRect&&(f=function(){u(a,{left:0,top:0});g=a.getBoundingClientRect();u(a,{left:Math.ceil(g.left)-g.left+\"px\",top:Math.ceil(g.top)-g.top+\n\"px\"})},f(),this.unSubPixelFix=F(O,\"resize\",f))},definition:function(a){function f(a,c){var y;r(a).forEach(function(a){var r=b.createElement(a.tagName),d={};B(a,function(a,f){\"tagName\"!==f&&\"children\"!==f&&\"textContent\"!==f&&(d[f]=a)});r.attr(d);r.add(c||b.defs);a.textContent&&r.element.appendChild(m.createTextNode(a.textContent));f(a.children||[],r);y=r});return y}var b=this;return f(a)},getStyle:function(a){return this.style=b({fontFamily:'\"Lucida Grande\", \"Lucida Sans Unicode\", Arial, Helvetica, sans-serif',\nfontSize:\"12px\"},a)},setStyle:function(a){this.boxWrapper.css(this.getStyle(a))},isHidden:function(){return!this.boxWrapper.getBBox().width},destroy:function(){var a=this.defs;this.box=null;this.boxWrapper=this.boxWrapper.destroy();d(this.gradients||{});this.gradients=null;a&&(this.defs=a.destroy());this.unSubPixelFix&&this.unSubPixelFix();return this.alignedObjects=null},createElement:function(a){var f=new this.Element;f.init(this,a);return f},draw:x,getRadialAttr:function(a,f){return{cx:a[0]-a[2]/\n2+f.cx*a[2],cy:a[1]-a[2]/2+f.cy*a[2],r:f.r*a[2]}},truncate:function(a,f,b,c,r,d,l){var y=this,g=a.rotation,n,h=c?1:0,L=(b||c).length,w=L,x=[],B=function(a){f.firstChild&&f.removeChild(f.firstChild);a&&f.appendChild(m.createTextNode(a))},p=function(d,g){g=g||d;if(void 0===x[g])if(f.getSubStringLength)try{x[g]=r+f.getSubStringLength(0,c?g+1:g)}catch(aa){}else y.getSpanWidth&&(B(l(b||c,d)),x[g]=r+y.getSpanWidth(a,f));return x[g]},e,z;a.rotation=0;e=p(f.textContent.length);if(z=r+e>d){for(;h<=L;)w=Math.ceil((h+\nL)/2),c&&(n=l(c,w)),e=p(w,n&&n.length-1),h===L?h=L+1:e>d?L=w-1:h=w;0===L?B(\"\"):b&&L===b.length-1||B(n||l(b||c,w))}c&&c.splice(0,w);a.actualWidth=e;a.rotation=g;return z},escapes:{\"\\x26\":\"\\x26amp;\",\"\\x3c\":\"\\x26lt;\",\"\\x3e\":\"\\x26gt;\",\"'\":\"\\x26#39;\",'\"':\"\\x26quot;\"},buildText:function(a){var f=a.element,b=this,c=b.forExport,r=E(a.textStr,\"\").toString(),y=-1!==r.indexOf(\"\\x3c\"),d=f.childNodes,g,l=e(f,\"x\"),n=a.styles,h=a.textWidth,w=n&&n.lineHeight,x=n&&n.textOutline,p=n&&\"ellipsis\"===n.textOverflow,z=\nn&&\"nowrap\"===n.whiteSpace,N=n&&n.fontSize,P,A,D=d.length,n=h&&!a.added&&this.box,k=function(a){var c;b.styledMode||(c=/(px|em)$/.test(a&&a.style.fontSize)?a.style.fontSize:N||b.style.fontSize||12);return w?H(w):b.fontMetrics(c,a.getAttribute(\"style\")?a:f).h},J=function(a,f){B(b.escapes,function(b,c){f&&-1!==f.indexOf(b)||(a=a.toString().replace(new RegExp(b,\"g\"),c))});return a},O=function(a,f){var b;b=a.indexOf(\"\\x3c\");a=a.substring(b,a.indexOf(\"\\x3e\")-b);b=a.indexOf(f+\"\\x3d\");if(-1!==b&&(b=b+f.length+\n1,f=a.charAt(b),'\"'===f||\"'\"===f))return a=a.substring(b+1),a.substring(0,a.indexOf(f))};P=[r,p,z,w,x,N,h].join();if(P!==a.textCache){for(a.textCache=P;D--;)f.removeChild(d[D]);y||x||p||h||-1!==r.indexOf(\" \")?(n&&n.appendChild(f),y?(r=b.styledMode?r.replace(/<(b|strong)>/g,'\\x3cspan class\\x3d\"highcharts-strong\"\\x3e').replace(/<(i|em)>/g,'\\x3cspan class\\x3d\"highcharts-emphasized\"\\x3e'):r.replace(/<(b|strong)>/g,'\\x3cspan style\\x3d\"font-weight:bold\"\\x3e').replace(/<(i|em)>/g,'\\x3cspan style\\x3d\"font-style:italic\"\\x3e'),\nr=r.replace(//g,\"\\x3c/span\\x3e\").split(//g)):r=[r],r=r.filter(function(a){return\"\"!==a}),r.forEach(function(r,y){var d,n=0,w=0;r=r.replace(/^\\s+|\\s+$/g,\"\").replace(//g,\"\\x3c/span\\x3e|||\");d=r.split(\"|||\");d.forEach(function(r){if(\"\"!==r||1===d.length){var x={},B=m.createElementNS(b.SVG_NS,\"tspan\"),P,E;(P=O(r,\"class\"))&&e(B,\"class\",P);if(P=O(r,\"style\"))P=P.replace(/(;| |^)color([ :])/,\"$1fill$2\"),e(B,\"style\",\nP);(E=O(r,\"href\"))&&!c&&(e(B,\"onclick\",'location.href\\x3d\"'+E+'\"'),e(B,\"class\",\"highcharts-anchor\"),b.styledMode||u(B,{cursor:\"pointer\"}));r=J(r.replace(/<[a-zA-Z\\/](.|\\n)*?>/g,\"\")||\" \");if(\" \"!==r){B.appendChild(m.createTextNode(r));n?x.dx=0:y&&null!==l&&(x.x=l);e(B,x);f.appendChild(B);!n&&A&&(!M&&c&&u(B,{display:\"block\"}),e(B,\"dy\",k(B)));if(h){var D=r.replace(/([^\\^])-/g,\"$1- \").split(\" \"),x=!z&&(1Math.abs(c.end-c.start-2*Math.PI));var y=Math.cos(d),h=Math.sin(d),L=Math.cos(n),n=Math.sin(n),d=.001>c.end-d-Math.PI?0:1;c=[\"M\",a+g*y,f+l*h,\"A\",g,l,0,d,E(c.clockwise,1),a+g*L,f+l*n];p(b)&&c.push(r?\"M\":\"L\",a+b*L,f+b*n,\"A\",b,b,0,d,0,a+b*y,f+b*h);c.push(r?\"\":\"Z\");return c},callout:function(a,f,b,r,c){var d=\nMath.min(c&&c.r||0,b,r),g=d+6,l=c&&c.anchorX;c=c&&c.anchorY;var n;n=[\"M\",a+d,f,\"L\",a+b-d,f,\"C\",a+b,f,a+b,f,a+b,f+d,\"L\",a+b,f+r-d,\"C\",a+b,f+r,a+b,f+r,a+b-d,f+r,\"L\",a+d,f+r,\"C\",a,f+r,a,f+r,a,f+r-d,\"L\",a,f+d,\"C\",a,f,a,f,a+d,f];l&&l>b?c>f+g&&cl?c>f+g&&cr&&l>a+g&&lc&&l>a+g&&la?a+3:Math.round(1.2*a);return{h:f,b:Math.round(.8*f),f:a}},rotCorr:function(a,f,b){var r=a;f&&b&&(r=Math.max(r*\nMath.cos(f*h),4));return{x:-a/3*Math.sin(f*h),y:r}},label:function(r,c,d,g,l,h,L,w,m){var y=this,B=y.styledMode,x=y.g(\"button\"!==m&&\"label\"),e=x.text=y.text(\"\",0,0,L).attr({zIndex:1}),z,M,P=0,N=3,E=0,A,D,H,k,J,O={},v,t,q=/^url\\((.*?)\\)$/.test(g),u=B||q,S=function(){return B?z.strokeWidth()%2/2:(v?parseInt(v,10):0)%2/2},U,R,T;m&&x.addClass(\"highcharts-\"+m);U=function(){var a=e.element.style,f={};M=(void 0===A||void 0===D||J)&&p(e.textStr)&&e.getBBox();x.width=(A||M.width||0)+2*N+E;x.height=(D||M.height||\n0)+2*N;t=N+Math.min(y.fontMetrics(a&&a.fontSize,e).b,M?M.height:Infinity);u&&(z||(x.box=z=y.symbols[g]||q?y.symbol(g):y.rect(),z.addClass((\"button\"===m?\"\":\"highcharts-label-box\")+(m?\" highcharts-\"+m+\"-box\":\"\")),z.add(x),a=S(),f.x=a,f.y=(w?-t:0)+a),f.width=Math.round(x.width),f.height=Math.round(x.height),z.attr(b(f,O)),O={})};R=function(){var a=E+N,f;f=w?0:t;p(A)&&M&&(\"center\"===J||\"right\"===J)&&(a+={center:.5,right:1}[J]*(A-M.width));if(a!==e.x||f!==e.y)e.attr(\"x\",a),e.hasBoxWidthChanged&&(M=e.getBBox(!0),\nU()),void 0!==f&&e.attr(\"y\",f);e.x=a;e.y=f};T=function(a,f){z?z.attr(a,f):O[a]=f};x.onAdd=function(){e.add(x);x.attr({text:r||0===r?r:\"\",x:c,y:d});z&&p(l)&&x.attr({anchorX:l,anchorY:h})};x.widthSetter=function(f){A=a.isNumber(f)?f:null};x.heightSetter=function(a){D=a};x[\"text-alignSetter\"]=function(a){J=a};x.paddingSetter=function(a){p(a)&&a!==N&&(N=x.padding=a,R())};x.paddingLeftSetter=function(a){p(a)&&a!==E&&(E=a,R())};x.alignSetter=function(a){a={left:0,center:.5,right:1}[a];a!==P&&(P=a,M&&x.attr({x:H}))};\nx.textSetter=function(a){void 0!==a&&e.attr({text:a});U();R()};x[\"stroke-widthSetter\"]=function(a,f){a&&(u=!0);v=this[\"stroke-width\"]=a;T(f,a)};B?x.rSetter=function(a,f){T(f,a)}:x.strokeSetter=x.fillSetter=x.rSetter=function(a,f){\"r\"!==f&&(\"fill\"===f&&a&&(u=!0),x[f]=a);T(f,a)};x.anchorXSetter=function(a,f){l=x.anchorX=a;T(f,Math.round(a)-S()-H)};x.anchorYSetter=function(a,f){h=x.anchorY=a;T(f,a-k)};x.xSetter=function(a){x.x=a;P&&(a-=P*((A||M.width)+2*N),x[\"forceAnimate:x\"]=!0);H=Math.round(a);x.attr(\"translateX\",\nH)};x.ySetter=function(a){k=x.y=Math.round(a);x.attr(\"translateY\",k)};var F=x.css;L={css:function(a){if(a){var f={};a=n(a);x.textProps.forEach(function(b){void 0!==a[b]&&(f[b]=a[b],delete a[b])});e.css(f);\"width\"in f&&U();\"fontSize\"in f&&(U(),R())}return F.call(x,a)},getBBox:function(){return{width:M.width+2*N,height:M.height+2*N,x:M.x-N,y:M.y-N}},destroy:function(){f(x.element,\"mouseenter\");f(x.element,\"mouseleave\");e&&(e=e.destroy());z&&(z=z.destroy());C.prototype.destroy.call(x);x=y=U=R=T=null}};\nB||(L.shadow=function(a){a&&(U(),z&&z.shadow(a));return x});return b(x,L)}});a.Renderer=I});K(G,\"parts/Html.js\",[G[\"parts/Globals.js\"]],function(a){var C=a.attr,I=a.createElement,F=a.css,k=a.defined,e=a.extend,q=a.isFirefox,t=a.isMS,u=a.isWebKit,v=a.pick,p=a.pInt,h=a.SVGElement,d=a.SVGRenderer,m=a.win;e(h.prototype,{htmlCss:function(a){var b=\"SPAN\"===this.element.tagName&&a&&\"width\"in a,d=v(b&&a.width,void 0),c;b&&(delete a.width,this.textWidth=d,c=!0);a&&\"ellipsis\"===a.textOverflow&&(a.whiteSpace=\n\"nowrap\",a.overflow=\"hidden\");this.styles=e(this.styles,a);F(this.element,a);c&&this.htmlUpdateTransform();return this},htmlGetBBox:function(){var a=this.element;return{x:a.offsetLeft,y:a.offsetTop,width:a.offsetWidth,height:a.offsetHeight}},htmlUpdateTransform:function(){if(this.added){var a=this.renderer,d=this.element,l=this.translateX||0,c=this.translateY||0,h=this.x||0,m=this.y||0,e=this.textAlign||\"left\",D={left:0,center:.5,right:1}[e],A=this.styles,n=A&&A.whiteSpace;F(d,{marginLeft:l,marginTop:c});\n!a.styledMode&&this.shadows&&this.shadows.forEach(function(a){F(a,{marginLeft:l+1,marginTop:c+1})});this.inverted&&[].forEach.call(d.childNodes,function(b){a.invertChild(b,d)});if(\"SPAN\"===d.tagName){var A=this.rotation,x=this.textWidth&&p(this.textWidth),B=[A,e,d.innerHTML,this.textWidth,this.textAlign].join(),E;(E=x!==this.oldTextWidth)&&!(E=x>this.oldTextWidth)&&((E=this.textPxLength)||(F(d,{width:\"\",whiteSpace:n||\"nowrap\"}),E=d.offsetWidth),E=E>x);E&&(/[ \\-]/.test(d.textContent||d.innerText)||\n\"ellipsis\"===d.style.textOverflow)?(F(d,{width:x+\"px\",display:\"block\",whiteSpace:n||\"normal\"}),this.oldTextWidth=x,this.hasBoxWidthChanged=!0):this.hasBoxWidthChanged=!1;B!==this.cTT&&(n=a.fontMetrics(d.style.fontSize,d).b,!k(A)||A===(this.oldRotation||0)&&e===this.oldAlign||this.setSpanRotation(A,D,n),this.getSpanCorrection(!k(A)&&this.textPxLength||d.offsetWidth,n,D,A,e));F(d,{left:h+(this.xCorr||0)+\"px\",top:m+(this.yCorr||0)+\"px\"});this.cTT=B;this.oldRotation=A;this.oldAlign=e}}else this.alignOnAdd=\n!0},setSpanRotation:function(a,d,l){var b={},g=this.renderer.getTransformKey();b[g]=b.transform=\"rotate(\"+a+\"deg)\";b[g+(q?\"Origin\":\"-origin\")]=b.transformOrigin=100*d+\"% \"+l+\"px\";F(this.element,b)},getSpanCorrection:function(a,d,l){this.xCorr=-a*l;this.yCorr=-d}});e(d.prototype,{getTransformKey:function(){return t&&!/Edge/.test(m.navigator.userAgent)?\"-ms-transform\":u?\"-webkit-transform\":q?\"MozTransform\":m.opera?\"-o-transform\":\"\"},html:function(b,d,l){var c=this.createElement(\"span\"),g=c.element,\nm=c.renderer,p=m.isSVG,D=function(a,b){[\"opacity\",\"visibility\"].forEach(function(c){a[c+\"Setter\"]=function(d,l,f){var r=a.div?a.div.style:b;h.prototype[c+\"Setter\"].call(this,d,l,f);r&&(r[l]=d)}});a.addedSetters=!0},A=a.charts[m.chartIndex],A=A&&A.styledMode;c.textSetter=function(a){a!==g.innerHTML&&(delete this.bBox,delete this.oldTextWidth);this.textStr=a;g.innerHTML=v(a,\"\");c.doTransform=!0};p&&D(c,c.element.style);c.xSetter=c.ySetter=c.alignSetter=c.rotationSetter=function(a,b){\"align\"===b&&(b=\n\"textAlign\");c[b]=a;c.doTransform=!0};c.afterSetters=function(){this.doTransform&&(this.htmlUpdateTransform(),this.doTransform=!1)};c.attr({text:b,x:Math.round(d),y:Math.round(l)}).css({position:\"absolute\"});A||c.css({fontFamily:this.style.fontFamily,fontSize:this.style.fontSize});g.style.whiteSpace=\"nowrap\";c.css=c.htmlCss;p&&(c.add=function(a){var b,d=m.box.parentNode,l=[];if(this.parentGroup=a){if(b=a.div,!b){for(;a;)l.push(a),a=a.parentGroup;l.reverse().forEach(function(a){function f(f,b){a[b]=\nf;\"translateX\"===b?r.left=f+\"px\":r.top=f+\"px\";a.doTransform=!0}var r,g=C(a.element,\"class\");g&&(g={className:g});b=a.div=a.div||I(\"div\",g,{position:\"absolute\",left:(a.translateX||0)+\"px\",top:(a.translateY||0)+\"px\",display:a.display,opacity:a.opacity,pointerEvents:a.styles&&a.styles.pointerEvents},b||d);r=b.style;e(a,{classSetter:function(a){return function(f){this.element.setAttribute(\"class\",f);a.className=f}}(b),on:function(){l[0].div&&c.on.apply({element:l[0].div},arguments);return a},translateXSetter:f,\ntranslateYSetter:f});a.addedSetters||D(a)})}}else b=d;b.appendChild(g);c.added=!0;c.alignOnAdd&&c.htmlUpdateTransform();return c});return c}})});K(G,\"parts/Time.js\",[G[\"parts/Globals.js\"]],function(a){var C=a.defined,I=a.extend,F=a.merge,k=a.pick,e=a.timeUnits,q=a.win;a.Time=function(a){this.update(a,!1)};a.Time.prototype={defaultOptions:{},update:function(a){var e=k(a&&a.useUTC,!0),v=this;this.options=a=F(!0,this.options||{},a);this.Date=a.Date||q.Date||Date;this.timezoneOffset=(this.useUTC=e)&&\na.timezoneOffset;this.getTimezoneOffset=this.timezoneOffsetFunction();(this.variableTimezone=!(e&&!a.getTimezoneOffset&&!a.timezone))||this.timezoneOffset?(this.get=function(a,h){var d=h.getTime(),m=d-v.getTimezoneOffset(h);h.setTime(m);a=h[\"getUTC\"+a]();h.setTime(d);return a},this.set=function(a,h,d){var m;if(\"Milliseconds\"===a||\"Seconds\"===a||\"Minutes\"===a&&0===h.getTimezoneOffset()%60)h[\"set\"+a](d);else m=v.getTimezoneOffset(h),m=h.getTime()-m,h.setTime(m),h[\"setUTC\"+a](d),a=v.getTimezoneOffset(h),\nm=h.getTime()+a,h.setTime(m)}):e?(this.get=function(a,h){return h[\"getUTC\"+a]()},this.set=function(a,h,d){return h[\"setUTC\"+a](d)}):(this.get=function(a,h){return h[\"get\"+a]()},this.set=function(a,h,d){return h[\"set\"+a](d)})},makeTime:function(e,q,v,p,h,d){var m,b,g;this.useUTC?(m=this.Date.UTC.apply(0,arguments),b=this.getTimezoneOffset(m),m+=b,g=this.getTimezoneOffset(m),b!==g?m+=g-b:b-36E5!==this.getTimezoneOffset(m-36E5)||a.isSafari||(m-=36E5)):m=(new this.Date(e,q,k(v,1),k(p,0),k(h,0),k(d,0))).getTime();\nreturn m},timezoneOffsetFunction:function(){var e=this,k=this.options,v=q.moment;if(!this.useUTC)return function(a){return 6E4*(new Date(a)).getTimezoneOffset()};if(k.timezone){if(v)return function(a){return 6E4*-v.tz(a,k.timezone).utcOffset()};a.error(25)}return this.useUTC&&k.getTimezoneOffset?function(a){return 6E4*k.getTimezoneOffset(a)}:function(){return 6E4*(e.timezoneOffset||0)}},dateFormat:function(e,k,v){if(!a.defined(k)||isNaN(k))return a.defaultOptions.lang.invalidDate||\"\";e=a.pick(e,\"%Y-%m-%d %H:%M:%S\");\nvar p=this,h=new this.Date(k),d=this.get(\"Hours\",h),m=this.get(\"Day\",h),b=this.get(\"Date\",h),g=this.get(\"Month\",h),l=this.get(\"FullYear\",h),c=a.defaultOptions.lang,w=c.weekdays,z=c.shortWeekdays,J=a.pad,h=a.extend({a:z?z[m]:w[m].substr(0,3),A:w[m],d:J(b),e:J(b,2,\" \"),w:m,b:c.shortMonths[g],B:c.months[g],m:J(g+1),o:g+1,y:l.toString().substr(2,2),Y:l,H:J(d),k:d,I:J(d%12||12),l:d%12||12,M:J(p.get(\"Minutes\",h)),p:12>d?\"AM\":\"PM\",P:12>d?\"am\":\"pm\",S:J(h.getSeconds()),L:J(Math.floor(k%1E3),3)},a.dateFormats);\na.objectEach(h,function(a,b){for(;-1!==e.indexOf(\"%\"+b);)e=e.replace(\"%\"+b,\"function\"===typeof a?a.call(p,k):a)});return v?e.substr(0,1).toUpperCase()+e.substr(1):e},resolveDTLFormat:function(e){return a.isObject(e,!0)?e:(e=a.splat(e),{main:e[0],from:e[1],to:e[2]})},getTimeTicks:function(a,q,v,p){var h=this,d=[],m,b={},g;m=new h.Date(q);var l=a.unitRange,c=a.count||1,w;p=k(p,1);if(C(q)){h.set(\"Milliseconds\",m,l>=e.second?0:c*Math.floor(h.get(\"Milliseconds\",m)/c));l>=e.second&&h.set(\"Seconds\",m,l>=\ne.minute?0:c*Math.floor(h.get(\"Seconds\",m)/c));l>=e.minute&&h.set(\"Minutes\",m,l>=e.hour?0:c*Math.floor(h.get(\"Minutes\",m)/c));l>=e.hour&&h.set(\"Hours\",m,l>=e.day?0:c*Math.floor(h.get(\"Hours\",m)/c));l>=e.day&&h.set(\"Date\",m,l>=e.month?1:Math.max(1,c*Math.floor(h.get(\"Date\",m)/c)));l>=e.month&&(h.set(\"Month\",m,l>=e.year?0:c*Math.floor(h.get(\"Month\",m)/c)),g=h.get(\"FullYear\",m));l>=e.year&&h.set(\"FullYear\",m,g-g%c);l===e.week&&(g=h.get(\"Day\",m),h.set(\"Date\",m,h.get(\"Date\",m)-g+p+(g4*e.month||h.getTimezoneOffset(q)!==h.getTimezoneOffset(v));q=m.getTime();for(m=1;qd.length&&d.forEach(function(a){0===a%18E5&&\"000000000\"===h.dateFormat(\"%H%M%S%L\",a)&&(b[a]=\"day\")})}d.info=\nI(a,{higherRanks:b,totalRange:l*c});return d}}});K(G,\"parts/Options.js\",[G[\"parts/Globals.js\"]],function(a){var C=a.color,I=a.merge;a.defaultOptions={colors:\"#7cb5ec #434348 #90ed7d #f7a35c #8085e9 #f15c80 #e4d354 #2b908f #f45b5b #91e8e1\".split(\" \"),symbols:[\"circle\",\"diamond\",\"square\",\"triangle\",\"triangle-down\"],lang:{loading:\"Loading...\",months:\"January February March April May June July August September October November December\".split(\" \"),shortMonths:\"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec\".split(\" \"),\nweekdays:\"Sunday Monday Tuesday Wednesday Thursday Friday Saturday\".split(\" \"),decimalPoint:\".\",numericSymbols:\"kMGTPE\".split(\"\"),resetZoom:\"Reset zoom\",resetZoomTitle:\"Reset zoom level 1:1\",thousandsSep:\" \"},global:{},time:a.Time.prototype.defaultOptions,chart:{styledMode:!1,borderRadius:0,colorCount:10,defaultSeriesType:\"line\",ignoreHiddenSeries:!0,spacing:[10,10,15,10],resetZoomButton:{theme:{zIndex:6},position:{align:\"right\",x:-10,y:10}},width:null,height:null,borderColor:\"#335cad\",backgroundColor:\"#ffffff\",\nplotBorderColor:\"#cccccc\"},title:{text:\"Chart title\",align:\"center\",margin:15,widthAdjust:-44},subtitle:{text:\"\",align:\"center\",widthAdjust:-44},plotOptions:{},labels:{style:{position:\"absolute\",color:\"#333333\"}},legend:{enabled:!0,align:\"center\",alignColumns:!0,layout:\"horizontal\",labelFormatter:function(){return this.name},borderColor:\"#999999\",borderRadius:0,navigation:{activeColor:\"#003399\",inactiveColor:\"#cccccc\"},itemStyle:{color:\"#333333\",cursor:\"pointer\",fontSize:\"12px\",fontWeight:\"bold\",\ntextOverflow:\"ellipsis\"},itemHoverStyle:{color:\"#000000\"},itemHiddenStyle:{color:\"#cccccc\"},shadow:!1,itemCheckboxStyle:{position:\"absolute\",width:\"13px\",height:\"13px\"},squareSymbol:!0,symbolPadding:5,verticalAlign:\"bottom\",x:0,y:0,title:{style:{fontWeight:\"bold\"}}},loading:{labelStyle:{fontWeight:\"bold\",position:\"relative\",top:\"45%\"},style:{position:\"absolute\",backgroundColor:\"#ffffff\",opacity:.5,textAlign:\"center\"}},tooltip:{enabled:!0,animation:a.svg,borderRadius:3,dateTimeLabelFormats:{millisecond:\"%A, %b %e, %H:%M:%S.%L\",\nsecond:\"%A, %b %e, %H:%M:%S\",minute:\"%A, %b %e, %H:%M\",hour:\"%A, %b %e, %H:%M\",day:\"%A, %b %e, %Y\",week:\"Week from %A, %b %e, %Y\",month:\"%B %Y\",year:\"%Y\"},footerFormat:\"\",padding:8,snap:a.isTouchDevice?25:10,headerFormat:'\\x3cspan style\\x3d\"font-size: 10px\"\\x3e{point.key}\\x3c/span\\x3e\\x3cbr/\\x3e',pointFormat:'\\x3cspan style\\x3d\"color:{point.color}\"\\x3e\\u25cf\\x3c/span\\x3e {series.name}: \\x3cb\\x3e{point.y}\\x3c/b\\x3e\\x3cbr/\\x3e',backgroundColor:C(\"#f7f7f7\").setOpacity(.85).get(),borderWidth:1,shadow:!0,\nstyle:{color:\"#333333\",cursor:\"default\",fontSize:\"12px\",pointerEvents:\"none\",whiteSpace:\"nowrap\"}},credits:{enabled:!0,href:\"https://www.highcharts.com?credits\",position:{align:\"right\",x:-10,verticalAlign:\"bottom\",y:-5},style:{cursor:\"pointer\",color:\"#999999\",fontSize:\"9px\"},text:\"Highcharts.com\"}};a.setOptions=function(C){a.defaultOptions=I(!0,a.defaultOptions,C);a.time.update(I(a.defaultOptions.global,a.defaultOptions.time),!1);return a.defaultOptions};a.getOptions=function(){return a.defaultOptions};\na.defaultPlotOptions=a.defaultOptions.plotOptions;a.time=new a.Time(I(a.defaultOptions.global,a.defaultOptions.time));a.dateFormat=function(C,k,e){return a.time.dateFormat(C,k,e)}});K(G,\"parts/Tick.js\",[G[\"parts/Globals.js\"]],function(a){var C=a.correctFloat,I=a.defined,F=a.destroyObjectProperties,k=a.fireEvent,e=a.isNumber,q=a.merge,t=a.pick,u=a.deg2rad;a.Tick=function(a,e,h,d,m){this.axis=a;this.pos=e;this.type=h||\"\";this.isNewLabel=this.isNew=!0;this.parameters=m||{};this.tickmarkOffset=this.parameters.tickmarkOffset;\nthis.options=this.parameters.options;h||d||this.addLabel()};a.Tick.prototype={addLabel:function(){var e=this,p=e.axis,h=p.options,d=p.chart,m=p.categories,b=p.names,g=e.pos,l=t(e.options&&e.options.labels,h.labels),c=p.tickPositions,w=g===c[0],z=g===c[c.length-1],m=this.parameters.category||(m?t(m[g],b[g],g):g),k=e.label,c=c.info,D,A,n,x;p.isDatetimeAxis&&c&&(A=d.time.resolveDTLFormat(h.dateTimeLabelFormats[!h.grid&&c.higherRanks[g]||c.unitName]),D=A.main);e.isFirst=w;e.isLast=z;e.formatCtx={axis:p,\nchart:d,isFirst:w,isLast:z,dateTimeLabelFormat:D,tickPositionInfo:c,value:p.isLog?C(p.lin2log(m)):m,pos:g};h=p.labelFormatter.call(e.formatCtx,this.formatCtx);if(x=A&&A.list)e.shortenLabel=function(){for(n=0;nc&&d-w*zb&&(n=Math.round((m-d)/Math.cos(c*u)));else if(m=d+(1-w)*z,d-w*zb&&(D=b-a.x+D*w,A=-1),D=Math.min(k,D),DD||e.autoRotation&&(l.styles||{}).width)n=D;n&&(this.shortenLabel?this.shortenLabel():(x.width=\nMath.floor(n),(h.style||{}).textOverflow||(x.textOverflow=\"ellipsis\"),l.css(x)))},getPosition:function(e,p,h,d){var m=this.axis,b=m.chart,g=d&&b.oldChartHeight||b.chartHeight;e={x:e?a.correctFloat(m.translate(p+h,null,null,d)+m.transB):m.left+m.offset+(m.opposite?(d&&b.oldChartWidth||b.chartWidth)-m.right-m.left:0),y:e?g-m.bottom+m.offset-(m.opposite?m.height:0):a.correctFloat(g-m.translate(p+h,null,null,d)-m.transB)};k(this,\"afterGetPosition\",{pos:e});return e},getLabelPosition:function(a,e,h,d,\nm,b,g,l){var c=this.axis,w=c.transA,z=c.reversed,p=c.staggerLines,D=c.tickRotCorr||{x:0,y:0},A=m.y,n=d||c.reserveSpaceDefault?0:-c.labelOffset*(\"center\"===c.labelAlign?.5:1),x={};I(A)||(A=0===c.side?h.rotation?-8:-h.getBBox().height:2===c.side?D.y+8:Math.cos(h.rotation*u)*(D.y-h.getBBox(!1,0).height/2));a=a+m.x+n+D.x-(b&&d?b*w*(z?-1:1):0);e=e+A-(b&&!d?b*w*(z?1:-1):0);p&&(h=g/(l||1)%p,c.opposite&&(h=p-h-1),e+=c.labelOffset/p*h);x.x=a;x.y=Math.round(e);k(this,\"afterGetLabelPosition\",{pos:x,tickmarkOffset:b,\nindex:g});return x},getMarkPath:function(a,e,h,d,m,b){return b.crispLine([\"M\",a,e,\"L\",a+(m?0:-h),e+(m?h:0)],d)},renderGridLine:function(a,e,h){var d=this.axis,m=d.options,b=this.gridLine,g={},l=this.pos,c=this.type,w=t(this.tickmarkOffset,d.tickmarkOffset),z=d.chart.renderer,p=c?c+\"Grid\":\"grid\",k=m[p+\"LineWidth\"],A=m[p+\"LineColor\"],m=m[p+\"LineDashStyle\"];b||(d.chart.styledMode||(g.stroke=A,g[\"stroke-width\"]=k,m&&(g.dashstyle=m)),c||(g.zIndex=1),a&&(e=0),this.gridLine=b=z.path().attr(g).addClass(\"highcharts-\"+\n(c?c+\"-\":\"\")+\"grid-line\").add(d.gridGroup));if(b&&(h=d.getPlotLinePath(l+w,b.strokeWidth()*h,a,\"pass\")))b[a||this.isNew?\"attr\":\"animate\"]({d:h,opacity:e})},renderMark:function(a,e,h){var d=this.axis,m=d.options,b=d.chart.renderer,g=this.type,l=g?g+\"Tick\":\"tick\",c=d.tickSize(l),w=this.mark,z=!w,p=a.x;a=a.y;var k=t(m[l+\"Width\"],!g&&d.isXAxis?1:0),m=m[l+\"Color\"];c&&(d.opposite&&(c[0]=-c[0]),z&&(this.mark=w=b.path().addClass(\"highcharts-\"+(g?g+\"-\":\"\")+\"tick\").add(d.axisGroup),d.chart.styledMode||w.attr({stroke:m,\n\"stroke-width\":k})),w[z?\"attr\":\"animate\"]({d:this.getMarkPath(p,a,c[0],w.strokeWidth()*h,d.horiz,b),opacity:e}))},renderLabel:function(a,p,h,d){var m=this.axis,b=m.horiz,g=m.options,l=this.label,c=g.labels,w=c.step,m=t(this.tickmarkOffset,m.tickmarkOffset),z=!0,k=a.x;a=a.y;l&&e(k)&&(l.xy=a=this.getLabelPosition(k,a,l,b,c,m,d,w),this.isFirst&&!this.isLast&&!t(g.showFirstLabel,1)||this.isLast&&!this.isFirst&&!t(g.showLastLabel,1)?z=!1:!b||c.step||c.rotation||p||0===h||this.handleOverflow(a),w&&d%w&&\n(z=!1),z&&e(a.y)?(a.opacity=h,l[this.isNewLabel?\"attr\":\"animate\"](a),this.isNewLabel=!1):(l.attr(\"y\",-9999),this.isNewLabel=!0))},render:function(e,p,h){var d=this.axis,m=d.horiz,b=this.pos,g=t(this.tickmarkOffset,d.tickmarkOffset),b=this.getPosition(m,b,g,p),g=b.x,l=b.y,d=m&&g===d.pos+d.len||!m&&l===d.pos?-1:1;h=t(h,1);this.isActive=!0;this.renderGridLine(p,h,d);this.renderMark(b,h,d);this.renderLabel(b,p,h,e);this.isNew=!1;a.fireEvent(this,\"afterRender\")},destroy:function(){F(this,this.axis)}}});\nK(G,\"parts/Axis.js\",[G[\"parts/Globals.js\"]],function(a){var C=a.addEvent,I=a.animObject,F=a.arrayMax,k=a.arrayMin,e=a.color,q=a.correctFloat,t=a.defaultOptions,u=a.defined,v=a.deg2rad,p=a.destroyObjectProperties,h=a.extend,d=a.fireEvent,m=a.format,b=a.getMagnitude,g=a.isArray,l=a.isNumber,c=a.isString,w=a.merge,z=a.normalizeTickInterval,J=a.objectEach,D=a.pick,A=a.removeEvent,n=a.seriesTypes,x=a.splat,B=a.syncTimeout,E=a.Tick,H=function(){this.init.apply(this,arguments)};a.extend(H.prototype,{defaultOptions:{dateTimeLabelFormats:{millisecond:{main:\"%H:%M:%S.%L\",\nrange:!1},second:{main:\"%H:%M:%S\",range:!1},minute:{main:\"%H:%M\",range:!1},hour:{main:\"%H:%M\",range:!1},day:{main:\"%e. %b\"},week:{main:\"%e. %b\"},month:{main:\"%b '%y\"},year:{main:\"%Y\"}},endOnTick:!1,labels:{enabled:!0,indentation:10,x:0,style:{color:\"#666666\",cursor:\"default\",fontSize:\"11px\"}},maxPadding:.01,minorTickLength:2,minorTickPosition:\"outside\",minPadding:.01,showEmpty:!0,startOfWeek:1,startOnTick:!1,tickLength:10,tickPixelInterval:100,tickmarkPlacement:\"between\",tickPosition:\"outside\",title:{align:\"middle\",\nstyle:{color:\"#666666\"}},type:\"linear\",minorGridLineColor:\"#f2f2f2\",minorGridLineWidth:1,minorTickColor:\"#999999\",lineColor:\"#ccd6eb\",lineWidth:1,gridLineColor:\"#e6e6e6\",tickColor:\"#ccd6eb\"},defaultYAxisOptions:{endOnTick:!0,maxPadding:.05,minPadding:.05,tickPixelInterval:72,showLastLabel:!0,labels:{x:-8},startOnTick:!0,title:{rotation:270,text:\"Values\"},stackLabels:{allowOverlap:!1,enabled:!1,formatter:function(){return a.numberFormat(this.total,-1)},style:{color:\"#000000\",fontSize:\"11px\",fontWeight:\"bold\",\ntextOutline:\"1px contrast\"}},gridLineWidth:1,lineWidth:0},defaultLeftAxisOptions:{labels:{x:-15},title:{rotation:270}},defaultRightAxisOptions:{labels:{x:15},title:{rotation:90}},defaultBottomAxisOptions:{labels:{autoRotation:[-45],x:0},margin:15,title:{rotation:0}},defaultTopAxisOptions:{labels:{autoRotation:[-45],x:0},margin:15,title:{rotation:0}},init:function(a,b){var f=b.isX,r=this;r.chart=a;r.horiz=a.inverted&&!r.isZAxis?!f:f;r.isXAxis=f;r.coll=r.coll||(f?\"xAxis\":\"yAxis\");d(this,\"init\",{userOptions:b});\nr.opposite=b.opposite;r.side=b.side||(r.horiz?r.opposite?0:2:r.opposite?1:3);r.setOptions(b);var c=this.options,l=c.type;r.labelFormatter=c.labels.formatter||r.defaultLabelFormatter;r.userOptions=b;r.minPixelPadding=0;r.reversed=c.reversed;r.visible=!1!==c.visible;r.zoomEnabled=!1!==c.zoomEnabled;r.hasNames=\"category\"===l||!0===c.categories;r.categories=c.categories||r.hasNames;r.names||(r.names=[],r.names.keys={});r.plotLinesAndBandsGroups={};r.isLog=\"logarithmic\"===l;r.isDatetimeAxis=\"datetime\"===\nl;r.positiveValuesOnly=r.isLog&&!r.allowNegativeLog;r.isLinked=u(c.linkedTo);r.ticks={};r.labelEdge=[];r.minorTicks={};r.plotLinesAndBands=[];r.alternateBands={};r.len=0;r.minRange=r.userMinRange=c.minRange||c.maxZoom;r.range=c.range;r.offset=c.offset||0;r.stacks={};r.oldStacks={};r.stacksTouched=0;r.max=null;r.min=null;r.crosshair=D(c.crosshair,x(a.options.tooltip.crosshairs)[f?0:1],!1);b=r.options.events;-1===a.axes.indexOf(r)&&(f?a.axes.splice(a.xAxis.length,0,r):a.axes.push(r),a[r.coll].push(r));\nr.series=r.series||[];a.inverted&&!r.isZAxis&&f&&void 0===r.reversed&&(r.reversed=!0);J(b,function(a,f){C(r,f,a)});r.lin2log=c.linearToLogConverter||r.lin2log;r.isLog&&(r.val2lin=r.log2lin,r.lin2val=r.lin2log);d(this,\"afterInit\")},setOptions:function(a){this.options=w(this.defaultOptions,\"yAxis\"===this.coll&&this.defaultYAxisOptions,[this.defaultTopAxisOptions,this.defaultRightAxisOptions,this.defaultBottomAxisOptions,this.defaultLeftAxisOptions][this.side],w(t[this.coll],a));d(this,\"afterSetOptions\",\n{userOptions:a})},defaultLabelFormatter:function(){var f=this.axis,b=this.value,c=f.chart.time,d=f.categories,l=this.dateTimeLabelFormat,g=t.lang,n=g.numericSymbols,g=g.numericSymbolMagnitude||1E3,e=n&&n.length,h,x=f.options.labels.format,f=f.isLog?Math.abs(b):f.tickInterval;if(x)h=m(x,this,c);else if(d)h=b;else if(l)h=c.dateFormat(l,b);else if(e&&1E3<=f)for(;e--&&void 0===h;)c=Math.pow(g,e+1),f>=c&&0===10*b%c&&null!==n[e]&&0!==b&&(h=a.numberFormat(b/c,-1)+n[e]);void 0===h&&(h=1E4<=Math.abs(b)?a.numberFormat(b,\n-1):a.numberFormat(b,-1,void 0,\"\"));return h},getSeriesExtremes:function(){var a=this,b=a.chart,c;d(this,\"getSeriesExtremes\",null,function(){a.hasVisibleSeries=!1;a.dataMin=a.dataMax=a.threshold=null;a.softThreshold=!a.isXAxis;a.buildStacks&&a.buildStacks();a.series.forEach(function(f){if(f.visible||!b.options.chart.ignoreHiddenSeries){var r=f.options,d=r.threshold,g,n;a.hasVisibleSeries=!0;a.positiveValuesOnly&&0>=d&&(d=null);if(a.isXAxis)r=f.xData,r.length&&(c=f.getXExtremes(r),g=c.min,n=c.max,\nl(g)||g instanceof Date||(r=r.filter(l),c=f.getXExtremes(r),g=c.min,n=c.max),r.length&&(a.dataMin=Math.min(D(a.dataMin,g),g),a.dataMax=Math.max(D(a.dataMax,n),n)));else if(f.getExtremes(),n=f.dataMax,g=f.dataMin,u(g)&&u(n)&&(a.dataMin=Math.min(D(a.dataMin,g),g),a.dataMax=Math.max(D(a.dataMax,n),n)),u(d)&&(a.threshold=d),!r.softThreshold||a.positiveValuesOnly)a.softThreshold=!1}})});d(this,\"afterGetSeriesExtremes\")},translate:function(a,b,c,d,g,n){var f=this.linkedParent||this,r=1,e=0,h=d?f.oldTransA:\nf.transA;d=d?f.oldMin:f.min;var x=f.minPixelPadding;g=(f.isOrdinal||f.isBroken||f.isLog&&g)&&f.lin2val;h||(h=f.transA);c&&(r*=-1,e=f.len);f.reversed&&(r*=-1,e-=r*(f.sector||f.len));b?(a=(a*r+e-x)/h+d,g&&(a=f.lin2val(a))):(g&&(a=f.val2lin(a)),a=l(d)?r*(a-d)*h+e+r*x+(l(n)?h*n:0):void 0);return a},toPixels:function(a,b){return this.translate(a,!1,!this.horiz,null,!0)+(b?0:this.pos)},toValue:function(a,b){return this.translate(a-(b?0:this.pos),!0,!this.horiz,null,!0)},getPlotLinePath:function(a,b,c,g,\nn){var f=this,r=f.chart,e=f.left,h=f.top,x,m,B,w,L=c&&r.oldChartHeight||r.chartHeight,z=c&&r.oldChartWidth||r.chartWidth,p,k=f.transB,A,E=function(a,f,b){if(\"pass\"!==g&&ab)g?a=Math.min(Math.max(f,a),b):p=!0;return a};A={value:a,lineWidth:b,old:c,force:g,translatedValue:n};d(this,\"getPlotLinePath\",A,function(d){n=D(n,f.translate(a,null,null,c));n=Math.min(Math.max(-1E5,n),1E5);x=B=Math.round(n+k);m=w=Math.round(L-n-k);l(n)?f.horiz?(m=h,w=L-f.bottom,x=B=E(x,e,e+f.width)):(x=e,B=z-f.right,m=w=\nE(m,h,h+f.height)):(p=!0,g=!1);d.path=p&&!g?null:r.renderer.crispLine([\"M\",x,m,\"L\",B,w],b||1)});return A.path},getLinearTickPositions:function(a,b,c){var f,r=q(Math.floor(b/a)*a);c=q(Math.ceil(c/a)*a);var d=[],g;q(r+a)===r&&(g=20);if(this.single)return[b];for(b=r;b<=c;){d.push(b);b=q(b+a,g);if(b===f)break;f=b}return d},getMinorTickInterval:function(){var a=this.options;return!0===a.minorTicks?D(a.minorTickInterval,\"auto\"):!1===a.minorTicks?null:a.minorTickInterval},getMinorTickPositions:function(){var a=\nthis,b=a.options,c=a.tickPositions,d=a.minorTickInterval,g=[],l=a.pointRangePadding||0,n=a.min-l,l=a.max+l,e=l-n;if(e&&e/d=this.minRange,m=this.minRange,d=(m-c+b)/2,d=[b-d,D(a.min,b-d)],g&&(d[2]=this.isLog?this.log2lin(this.dataMin):this.dataMin),b=F(d),\nc=[b+m,D(a.max,b+m)],g&&(c[2]=this.isLog?this.log2lin(this.dataMax):this.dataMax),c=k(c),c-b=H?(p=H,w=0):\nc.dataMax<=H&&(t=H,B=0)),c.min=D(v,p,c.dataMin),c.max=D(C,t,c.dataMax));e&&(c.positiveValuesOnly&&!f&&0>=Math.min(c.min,D(c.dataMin,c.min))&&a.error(10,1,g),c.min=q(c.log2lin(c.min),15),c.max=q(c.log2lin(c.max),15));c.range&&u(c.max)&&(c.userMin=c.min=v=Math.max(c.dataMin,c.minFromRange()),c.userMax=C=c.max,c.range=null);d(c,\"foundExtremes\");c.beforePadding&&c.beforePadding();c.adjustForMinRange();!(E||c.axisPointRange||c.usePercentage||m)&&u(c.min)&&u(c.max)&&(g=c.max-c.min)&&(!u(v)&&w&&(c.min-=\ng*w),!u(C)&&B&&(c.max+=g*B));l(n.softMin)&&!l(c.userMin)&&n.softMinc.max&&(c.max=C=n.softMax);l(n.floor)&&(c.min=Math.min(Math.max(c.min,n.floor),Number.MAX_VALUE));l(n.ceiling)&&(c.max=Math.max(Math.min(c.max,n.ceiling),D(c.userMax,-Number.MAX_VALUE)));J&&u(c.dataMin)&&(H=H||0,!u(v)&&c.min=H?c.min=c.options.minRange?Math.min(H,c.max-c.minRange):H:!u(C)&&c.max>H&&c.dataMax<=H&&(c.max=c.options.minRange?Math.max(H,c.min+\nc.minRange):H));c.tickInterval=c.min===c.max||void 0===c.min||void 0===c.max?1:m&&!k&&A===c.linkedParent.options.tickPixelInterval?k=c.linkedParent.tickInterval:D(k,this.tickAmount?(c.max-c.min)/Math.max(this.tickAmount-1,1):void 0,E?1:(c.max-c.min)*A/Math.max(c.len,A));x&&!f&&c.series.forEach(function(a){a.processData(c.min!==c.oldMin||c.max!==c.oldMax)});c.setAxisTranslation(!0);c.beforeSetTickPositions&&c.beforeSetTickPositions();c.postProcessTickInterval&&(c.tickInterval=c.postProcessTickInterval(c.tickInterval));\nc.pointRange&&!k&&(c.tickInterval=Math.max(c.pointRange,c.tickInterval));f=D(n.minTickInterval,c.isDatetimeAxis&&c.closestPointRange);!k&&c.tickIntervalc.tickInterval&&1E3c.max)),!!this.tickAmount));this.tickAmount||(c.tickInterval=c.unsquish());this.setTickPositions()},setTickPositions:function(){var f=this.options,c,b=f.tickPositions;c=this.getMinorTickInterval();\nvar g=f.tickPositioner,l=f.startOnTick,n=f.endOnTick;this.tickmarkOffset=this.categories&&\"between\"===f.tickmarkPlacement&&1===this.tickInterval?.5:0;this.minorTickInterval=\"auto\"===c&&this.tickInterval?this.tickInterval/5:c;this.single=this.min===this.max&&u(this.min)&&!this.tickAmount&&(parseInt(this.min,10)===this.min||!1!==f.allowDecimals);this.tickPositions=c=b&&b.slice();!c&&(!this.ordinalPositions&&(this.max-this.min)/this.tickInterval>Math.max(2*this.len,200)?(c=[this.min,this.max],a.error(19,\n!1,this.chart)):c=this.isDatetimeAxis?this.getTimeTicks(this.normalizeTimeTickInterval(this.tickInterval,f.units),this.min,this.max,f.startOfWeek,this.ordinalPositions,this.closestPointRange,!0):this.isLog?this.getLogTickPositions(this.tickInterval,this.min,this.max):this.getLinearTickPositions(this.tickInterval,this.min,this.max),c.length>this.len&&(c=[c[0],c.pop()],c[0]===c[1]&&(c.length=1)),this.tickPositions=c,g&&(g=g.apply(this,[this.min,this.max])))&&(this.tickPositions=c=g);this.paddedTicks=\nc.slice(0);this.trimTicks(c,l,n);this.isLinked||(this.single&&2>c.length&&!this.categories&&(this.min-=.5,this.max+=.5),b||g||this.adjustTickAmount());d(this,\"afterSetTickPositions\")},trimTicks:function(a,c,b){var f=a[0],g=a[a.length-1],l=this.minPointOffset||0;d(this,\"trimTicks\");if(!this.isLinked){if(c&&-Infinity!==f)this.min=f;else for(;this.min-l>a[0];)a.shift();if(b)this.max=g;else for(;this.max+lc&&(this.finalTickAmt=c,c=5);this.tickAmount=c},adjustTickAmount:function(){var a=this.options,c=this.tickInterval,b=this.tickPositions,d=this.tickAmount,g=this.finalTickAmt,l=b&&b.length,n=D(this.threshold,this.softThreshold?0:null),e;if(this.hasData()){if(ld&&(this.tickInterval*=2,this.setTickPositions());if(u(g)){for(c=a=b.length;c--;)(3===g&&1===c%2||2>=g&&0n&&(c=n)),u(b)&&(dn&&(d=n))),this.displayBtn=void 0!==c||void 0!==d,this.setExtremes(c,d,!1,void 0,{trigger:\"zoom\"});a.zoomed=!0});return a.zoomed},setAxisSize:function(){var f=\nthis.chart,c=this.options,b=c.offsets||[0,0,0,0],d=this.horiz,g=this.width=Math.round(a.relativeLength(D(c.width,f.plotWidth-b[3]+b[1]),f.plotWidth)),l=this.height=Math.round(a.relativeLength(D(c.height,f.plotHeight-b[0]+b[2]),f.plotHeight)),n=this.top=Math.round(a.relativeLength(D(c.top,f.plotTop+b[0]),f.plotHeight,f.plotTop)),c=this.left=Math.round(a.relativeLength(D(c.left,f.plotLeft+b[3]),f.plotWidth,f.plotLeft));this.bottom=f.chartHeight-l-n;this.right=f.chartWidth-g-c;this.len=Math.max(d?g:\nl,0);this.pos=d?c:n},getExtremes:function(){var a=this.isLog;return{min:a?q(this.lin2log(this.min)):this.min,max:a?q(this.lin2log(this.max)):this.max,dataMin:this.dataMin,dataMax:this.dataMax,userMin:this.userMin,userMax:this.userMax}},getThreshold:function(a){var f=this.isLog,c=f?this.lin2log(this.min):this.min,f=f?this.lin2log(this.max):this.max;null===a||-Infinity===a?a=c:Infinity===a?a=f:c>a?a=c:ff?a.align=\"right\":195f&&(a.align=\"left\")});return a.align},tickSize:function(a){var f=this.options,c=f[a+\"Length\"],b=D(f[a+\"Width\"],\"tick\"===a&&this.isXAxis&&!this.categories?1:0),g;b&&c&&(\"inside\"===f[a+\"Position\"]&&(c=-c),g=[c,b]);a={tickSize:g};d(this,\"afterTickSize\",a);return a.tickSize},labelMetrics:function(){var a=this.tickPositions&&this.tickPositions[0]||0;return this.chart.renderer.fontMetrics(this.options.labels.style&&\nthis.options.labels.style.fontSize,this.ticks[a]&&this.ticks[a].label)},unsquish:function(){var a=this.options.labels,c=this.horiz,b=this.tickInterval,d=b,g=this.len/(((this.categories?1:0)+this.max-this.min)/b),l,n=a.rotation,e=this.labelMetrics(),h,x=Number.MAX_VALUE,m,B=this.max-this.min,w=function(a){var f=a/(g||1),f=1B&&Infinity!==a&&Infinity!==g&&(f=Math.ceil(B/b));return q(f*b)};c?(m=!a.staggerLines&&!a.step&&(u(n)?[n]:g=a)h=w(Math.abs(e.h/Math.sin(v*a))),f=h+Math.abs(a/360),f(b.step||0)&&!b.rotation&&(this.staggerLines||1)*this.len/d||!c&&(b.style&&parseInt(b.style.width,10)||g&&g-f.spacing[3]||.33*f.chartWidth)},renderUnsquish:function(){var a=\nthis.chart,b=a.renderer,d=this.tickPositions,g=this.ticks,l=this.options.labels,n=l&&l.style||{},e=this.horiz,h=this.getSlotWidth(),x=Math.max(1,Math.round(h-2*(l.padding||5))),m={},B=this.labelMetrics(),w=l.style&&l.style.textOverflow,z,p,k=0,A;c(l.rotation)||(m.rotation=l.rotation||0);d.forEach(function(a){(a=g[a])&&a.label&&a.label.textPxLength>k&&(k=a.label.textPxLength)});this.maxLabelLength=k;if(this.autoRotation)k>x&&k>B.h?m.rotation=this.labelRotation:this.labelRotation=0;else if(h&&(z=x,\n!w))for(p=\"clip\",x=d.length;!e&&x--;)if(A=d[x],A=g[A].label)A.styles&&\"ellipsis\"===A.styles.textOverflow?A.css({textOverflow:\"clip\"}):A.textPxLength>h&&A.css({width:h+\"px\"}),A.getBBox().height>this.len/d.length-(B.h-B.f)&&(A.specificTextOverflow=\"ellipsis\");m.rotation&&(z=k>.5*a.chartHeight?.33*a.chartHeight:k,w||(p=\"ellipsis\"));if(this.labelAlign=l.align||this.autoLabelAlign(this.labelRotation))m.align=this.labelAlign;d.forEach(function(a){var f=(a=g[a])&&a.label,c=n.width,b={};f&&(f.attr(m),a.shortenLabel?\na.shortenLabel():z&&!c&&\"nowrap\"!==n.whiteSpace&&(z=this.min&&a<=this.max)f[a]||(f[a]=new E(this,a)),d&&f[a].isNew&&f[a].render(c,!0,-1),f[a].render(c)},render:function(){var c=this,b=c.chart,g=c.options,\nn=c.isLog,e=c.isLinked,h=c.tickPositions,x=c.axisTitle,m=c.ticks,w=c.minorTicks,z=c.alternateBands,p=g.stackLabels,k=g.alternateGridColor,A=c.tickmarkOffset,H=c.axisLine,D=c.showAxis,q=I(b.renderer.globalAnimation),t,v;c.labelEdge.length=0;c.overlap=!1;[m,w,z].forEach(function(a){J(a,function(a){a.isActive=!1})});if(c.hasData()||e)c.minorTickInterval&&!c.categories&&c.getMinorTickPositions().forEach(function(a){c.renderMinorTick(a)}),h.length&&(h.forEach(function(a,b){c.renderTick(a,b)}),A&&(0===\nc.min||c.single)&&(m[-1]||(m[-1]=new E(c,-1,null,!0)),m[-1].render(-1))),k&&h.forEach(function(f,d){v=void 0!==h[d+1]?h[d+1]+A:c.max-A;0===d%2&&fq&&(!u||g<=t)&&void 0!==g&&h.push(g),g>t&&(l=!0),g=b;else q=this.lin2log(q),t=this.lin2log(t),a=u?this.getMinorTickInterval():e.tickInterval,a=k(\"auto\"===a?null:a,this._minorAutoInterval,e.tickPixelInterval/(u?5:1)*(t-q)/((u?p/this.tickPositions.length:p)||1)),a=F(a,null,I(a)),h=this.getLinearTickPositions(a,q,t).map(this.log2lin),u||(this._minorAutoInterval=a/5);u||(this.tickInterval=a);return h};C.prototype.log2lin=function(a){return Math.log(a)/Math.LN10};C.prototype.lin2log=function(a){return Math.pow(10,\na)}});K(G,\"parts/PlotLineOrBand.js\",[G[\"parts/Globals.js\"],G[\"parts/Axis.js\"]],function(a,C){var I=a.arrayMax,F=a.arrayMin,k=a.defined,e=a.destroyObjectProperties,q=a.erase,t=a.merge,u=a.pick;a.PlotLineOrBand=function(a,e){this.axis=a;e&&(this.options=e,this.id=e.id)};a.PlotLineOrBand.prototype={render:function(){a.fireEvent(this,\"render\");var e=this,p=e.axis,h=p.horiz,d=e.options,m=d.label,b=e.label,g=d.to,l=d.from,c=d.value,w=k(l)&&k(g),z=k(c),q=e.svgElem,D=!q,A=[],n=d.color,x=u(d.zIndex,0),B=d.events,\nA={\"class\":\"highcharts-plot-\"+(w?\"band \":\"line \")+(d.className||\"\")},E={},H=p.chart.renderer,f=w?\"bands\":\"lines\";p.isLog&&(l=p.log2lin(l),g=p.log2lin(g),c=p.log2lin(c));p.chart.styledMode||(z?(A.stroke=n,A[\"stroke-width\"]=d.width,d.dashStyle&&(A.dashstyle=d.dashStyle)):w&&(n&&(A.fill=n),d.borderWidth&&(A.stroke=d.borderColor,A[\"stroke-width\"]=d.borderWidth)));E.zIndex=x;f+=\"-\"+x;(n=p.plotLinesAndBandsGroups[f])||(p.plotLinesAndBandsGroups[f]=n=H.g(\"plot-\"+f).attr(E).add());D&&(e.svgElem=q=H.path().attr(A).add(n));\nif(z)A=p.getPlotLinePath(c,q.strokeWidth());else if(w)A=p.getPlotBandPath(l,g,d);else return;(D||!q.d)&&A&&A.length?(q.attr({d:A}),B&&a.objectEach(B,function(a,c){q.on(c,function(a){B[c].apply(e,[a])})})):q&&(A?(q.show(!0),q.animate({d:A})):q.d&&(q.hide(),b&&(e.label=b=b.destroy())));m&&k(m.text)&&A&&A.length&&0this.max&&e>this.max;if(d&&h)for(a&&(l=d.toString()===h.toString(),g=0),a=0;aB-l?B:B-l);else if(m)g[a]=Math.max(n,d+l+f>c?d:d+l);else return!1},E=\nfunction(a,c,f,d){var l;dc-b?l=!1:g[a]=dc-f/2?c-f-2:d-f/2;return l},H=function(a){var b=A;A=n;n=b;c=a},f=function(){!1!==B.apply(0,A)?!1!==E.apply(0,n)||c||(H(!0),f()):c?g.x=g.y=0:(H(!0),f())};(h.inverted||1A&&(l=!1);a=(n.series&&n.series.yAxis&&n.series.yAxis.pos)+(n.plotY||0);a-=p;n.isHeader&&(a=z?-w:b.plotHeight+w);m.push({target:a,rank:n.isHeader?1:0,size:e.tt.getBBox().height+1,point:n,x:A,tt:B})}});this.cleanSplit();c.positioner&&m.forEach(function(a){var b=c.positioner.call(d,a.tt.getBBox().width,a.size,a.point);a.x=b.x;a.align=0;a.target=\nb.y;a.rank=q(b.rank,a.rank)});a.distribute(m,b.plotHeight+w);m.forEach(function(a){var g=a.point,e=g.series;a.tt.attr({visibility:void 0===a.pos?\"hidden\":\"inherit\",x:l||g.isHeader||c.positioner?a.x:g.plotX+b.plotLeft+d.distance,y:a.pos+p,anchorX:g.isHeader?g.plotX+b.plotLeft:g.plotX+e.xAxis.pos,anchorY:g.isHeader?b.plotTop+b.plotHeight/2:g.plotY+e.yAxis.pos})})},updatePosition:function(a){var e=this.chart,d=this.getLabel(),m=(this.options.positioner||this.getPosition).call(this,d.width,d.height,a),\nb=a.plotX+e.plotLeft;a=a.plotY+e.plotTop;var g;this.outside&&(g=(this.options.borderWidth||0)+2*this.distance,this.renderer.setSize(d.width+g,d.height+g,!1),b+=e.pointer.chartPosition.left-m.x,a+=e.pointer.chartPosition.top-m.y);this.move(Math.round(m.x),Math.round(m.y||0),b,a)},getDateFormat:function(a,e,d,m){var b=this.chart.time,g=b.dateFormat(\"%m-%d %H:%M:%S.%L\",e),l,c,h={millisecond:15,second:12,minute:9,hour:6,day:3},z=\"millisecond\";for(c in v){if(a===v.week&&+b.dateFormat(\"%w\",e)===d&&\"00:00:00.000\"===\ng.substr(6)){c=\"week\";break}if(v[c]>a){c=z;break}if(h[c]&&g.substr(h[c])!==\"01-01 00:00:00.000\".substr(h[c]))break;\"week\"!==c&&(z=c)}c&&(l=b.resolveDTLFormat(m[c]).main);return l},getXDateFormat:function(a,e,d){e=e.dateTimeLabelFormats;var h=d&&d.closestPointRange;return(h?this.getDateFormat(h,a.x,d.options.startOfWeek,e):e.day)||e.year},tooltipFooterHeaderFormatter:function(e,h){var d=h?\"footer\":\"header\",m=e.series,b=m.tooltipOptions,g=b.xDateFormat,l=m.xAxis,c=l&&\"datetime\"===l.options.type&&k(e.key),\nw=b[d+\"Format\"];h={isFooter:h,labelConfig:e};a.fireEvent(this,\"headerFormatter\",h,function(a){c&&!g&&(g=this.getXDateFormat(e,b,l));c&&g&&(e.point&&e.point.tooltipDateKeys||[\"key\"]).forEach(function(a){w=w.replace(\"{point.\"+a+\"}\",\"{point.\"+a+\":\"+g+\"}\")});m.chart.styledMode&&(w=this.styledModeFormat(w));a.text=F(w,{point:e,series:m},this.chart.time)});return h.text},bodyFormatter:function(a){return a.map(function(a){var d=a.series.tooltipOptions;return(d[(a.point.formatPrefix||\"point\")+\"Formatter\"]||\na.point.tooltipFormatter).call(a.point,d[(a.point.formatPrefix||\"point\")+\"Format\"]||\"\")})},styledModeFormat:function(a){return a.replace('style\\x3d\"font-size: 10px\"','class\\x3d\"highcharts-header\"').replace(/style=\"color:{(point|series)\\.color}\"/g,'class\\x3d\"highcharts-color-{$1.colorIndex}\"')}}});K(G,\"parts/Pointer.js\",[G[\"parts/Globals.js\"]],function(a){var C=a.addEvent,I=a.attr,F=a.charts,k=a.color,e=a.css,q=a.defined,t=a.extend,u=a.find,v=a.fireEvent,p=a.isNumber,h=a.isObject,d=a.offset,m=a.pick,\nb=a.splat,g=a.Tooltip;a.Pointer=function(a,c){this.init(a,c)};a.Pointer.prototype={init:function(a,c){this.options=c;this.chart=a;this.runChartClick=c.chart.events&&!!c.chart.events.click;this.pinchDown=[];this.lastValidTouch={};g&&(a.tooltip=new g(a,c.tooltip),this.followTouchMove=m(c.tooltip.followTouchMove,!0));this.setDOMEvents()},zoomOption:function(a){var c=this.chart,b=c.options.chart,d=b.zoomType||\"\",c=c.inverted;/touch/.test(a.type)&&(d=m(b.pinchType,d));this.zoomX=a=/x/.test(d);this.zoomY=\nd=/y/.test(d);this.zoomHor=a&&!c||d&&c;this.zoomVert=d&&!c||a&&c;this.hasZoom=a||d},normalize:function(a,c){var b;b=a.touches?a.touches.length?a.touches.item(0):a.changedTouches[0]:a;c||(this.chartPosition=c=d(this.chart.container));return t(a,{chartX:Math.round(b.pageX-c.left),chartY:Math.round(b.pageY-c.top)})},getCoordinates:function(a){var c={xAxis:[],yAxis:[]};this.chart.axes.forEach(function(b){c[b.isXAxis?\"xAxis\":\"yAxis\"].push({axis:b,value:b.toValue(a[b.horiz?\"chartX\":\"chartY\"])})});return c},\nfindNearestKDPoint:function(a,c,b){var d;a.forEach(function(a){var g=!(a.noSharedTooltip&&c)&&0>a.options.findNearestPointBy.indexOf(\"y\");a=a.searchPoint(b,g);if((g=h(a,!0))&&!(g=!h(d,!0)))var g=d.distX-a.distX,l=d.dist-a.dist,e=(a.series.group&&a.series.group.zIndex)-(d.series.group&&d.series.group.zIndex),g=0<(0!==g&&c?g:0!==l?l:0!==e?e:d.series.index>a.series.index?-1:1);g&&(d=a)});return d},getPointFromEvent:function(a){a=a.target;for(var c;a&&!c;)c=a.point,a=a.parentNode;return c},getChartCoordinatesFromPoint:function(a,\nc){var b=a.series,d=b.xAxis,b=b.yAxis,g=m(a.clientX,a.plotX),e=a.shapeArgs;if(d&&b)return c?{chartX:d.len+d.pos-g,chartY:b.len+b.pos-a.plotY}:{chartX:g+d.pos,chartY:a.plotY+b.pos};if(e&&e.x&&e.y)return{chartX:e.x,chartY:e.y}},getHoverData:function(a,c,b,d,g,e){var l,n=[];d=!(!d||!a);var x=c&&!c.stickyTracking?[c]:b.filter(function(a){return a.visible&&!(!g&&a.directTouch)&&m(a.options.enableMouseTracking,!0)&&a.stickyTracking});c=(l=d?a:this.findNearestKDPoint(x,g,e))&&l.series;l&&(g&&!c.noSharedTooltip?\n(x=b.filter(function(a){return a.visible&&!(!g&&a.directTouch)&&m(a.options.enableMouseTracking,!0)&&!a.noSharedTooltip}),x.forEach(function(a){var c=u(a.points,function(a){return a.x===l.x&&!a.isNull});h(c)&&(a.chart.isBoosting&&(c=a.getPoint(c)),n.push(c))})):n.push(l));return{hoverPoint:l,hoverSeries:c,hoverPoints:n}},runPointActions:function(b,c){var d=this.chart,g=d.tooltip&&d.tooltip.options.enabled?d.tooltip:void 0,e=g?g.shared:!1,l=c||d.hoverPoint,h=l&&l.series||d.hoverSeries,h=this.getHoverData(l,\nh,d.series,\"touchmove\"!==b.type&&(!!c||h&&h.directTouch&&this.isDirectTouch),e,b),n=[],x,l=h.hoverPoint;x=h.hoverPoints;c=(h=h.hoverSeries)&&h.tooltipOptions.followPointer;e=e&&h&&!h.noSharedTooltip;if(l&&(l!==d.hoverPoint||g&&g.isHidden)){(d.hoverPoints||[]).forEach(function(a){-1===x.indexOf(a)&&a.setState()});if(d.hoverSeries!==h)h.onMouseOver();n=this.getActiveSeries(x);d.series.forEach(function(a){(a.options.inactiveOtherPoints||-1===n.indexOf(a))&&a.setState(\"inactive\",!0)});(x||[]).forEach(function(a){a.setState(\"hover\")});\nd.hoverPoint&&d.hoverPoint.firePointEvent(\"mouseOut\");if(!l.series)return;l.firePointEvent(\"mouseOver\");d.hoverPoints=x;d.hoverPoint=l;g&&g.refresh(e?x:l,b)}else c&&g&&!g.isHidden&&(l=g.getAnchor([{}],b),g.updatePosition({plotX:l[0],plotY:l[1]}));this.unDocMouseMove||(this.unDocMouseMove=C(d.container.ownerDocument,\"mousemove\",function(c){var b=F[a.hoverChartIndex];if(b)b.pointer.onDocumentMouseMove(c)}));d.axes.forEach(function(c){var d=m(c.crosshair.snap,!0),g=d?a.find(x,function(a){return a.series[c.coll]===\nc}):void 0;g||!d?c.drawCrosshair(b,g):c.hideCrosshair()})},getActiveSeries:function(a){var c=[],b;(a||[]).forEach(function(a){b=a.series;c.push(b);b.linkedParent&&c.push(b.linkedParent);b.linkedSeries&&(c=c.concat(b.linkedSeries));b.navigatorSeries&&c.push(b.navigatorSeries)});return c},reset:function(a,c){var d=this.chart,g=d.hoverSeries,e=d.hoverPoint,l=d.hoverPoints,h=d.tooltip,n=h&&h.shared?l:e;a&&n&&b(n).forEach(function(c){c.series.isCartesian&&void 0===c.plotX&&(a=!1)});if(a)h&&n&&b(n).length&&\n(h.refresh(n),h.shared&&l?l.forEach(function(a){a.setState(a.state,!0);a.series.isCartesian&&(a.series.xAxis.crosshair&&a.series.xAxis.drawCrosshair(null,a),a.series.yAxis.crosshair&&a.series.yAxis.drawCrosshair(null,a))}):e&&(e.setState(e.state,!0),d.axes.forEach(function(a){a.crosshair&&a.drawCrosshair(null,e)})));else{if(e)e.onMouseOut();l&&l.forEach(function(a){a.setState()});if(g)g.onMouseOut();h&&h.hide(c);this.unDocMouseMove&&(this.unDocMouseMove=this.unDocMouseMove());d.axes.forEach(function(a){a.hideCrosshair()});\nthis.hoverX=d.hoverPoints=d.hoverPoint=null}},scaleGroups:function(a,c){var b=this.chart,d;b.series.forEach(function(g){d=a||g.getPlotBox();g.xAxis&&g.xAxis.zoomEnabled&&g.group&&(g.group.attr(d),g.markerGroup&&(g.markerGroup.attr(d),g.markerGroup.clip(c?b.clipRect:null)),g.dataLabelsGroup&&g.dataLabelsGroup.attr(d))});b.clipRect.attr(c||b.clipBox)},dragStart:function(a){var c=this.chart;c.mouseIsDown=a.type;c.cancelClick=!1;c.mouseDownX=this.mouseDownX=a.chartX;c.mouseDownY=this.mouseDownY=a.chartY},\ndrag:function(a){var c=this.chart,b=c.options.chart,d=a.chartX,g=a.chartY,e=this.zoomHor,l=this.zoomVert,n=c.plotLeft,h=c.plotTop,m=c.plotWidth,E=c.plotHeight,p,f=this.selectionMarker,r=this.mouseDownX,q=this.mouseDownY,t=b.panKey&&a[b.panKey+\"Key\"];f&&f.touch||(dn+m&&(d=n+m),gh+E&&(g=h+E),this.hasDragged=Math.sqrt(Math.pow(r-d,2)+Math.pow(q-g,2)),10n.max&&(k=n.max-z,r=!0);r?(E-=.8*(E-h[b][0]),x||(f-=.8*(f-h[b][1])),t()):h[b]=[E,f];A||(p[b]=q-w,p[c]=z);p=A?1/D:D;v[c]=z;v[b]=k;u[A?a?\"scaleY\":\"scaleX\":\"scale\"+g]=D;u[\"translate\"+g]=p*w+(E-p*B)},pinch:function(a){var e=this,t=e.chart,u=e.pinchDown,v=a.touches,p=v.length,h=e.lastValidTouch,d=e.hasZoom,m=e.selectionMarker,b={},g=1===p&&(e.inClass(a.target,\"highcharts-tracker\")&&t.runTrackerClick||e.runChartClick),l={};1d-6&&hp?this.maxItemWidth:a.itemWidth;c&&this.itemX-d+b>p&&(this.itemX=d,this.lastLineHeight&&(this.itemY+=m+this.lastLineHeight+h),this.lastLineHeight=0);this.lastItemY=m+this.itemY+h;this.lastLineHeight=Math.max(e,this.lastLineHeight);a._legendItemPos=[this.itemX,this.itemY];c?this.itemX+=b:(this.itemY+=m+e+h,this.lastLineHeight=e);this.offsetWidth=this.widthOption||Math.max((c?this.itemX-d-(a.checkbox?0:k):b)+d,this.offsetWidth)},\ngetAllItems:function(){var a=[];this.chart.series.forEach(function(b){var d=b&&b.options;b&&v(d.showInLegend,k(d.linkedTo)?!1:void 0,!0)&&(a=a.concat(b.legendItems||(\"point\"===d.legendType?b.data:b)))});e(this,\"afterGetAllItems\",{allItems:a});return a},getAlignment:function(){var a=this.options;return this.proximate?a.align.charAt(0)+\"tv\":a.floating?\"\":a.align.charAt(0)+a.verticalAlign.charAt(0)+a.layout.charAt(0)},adjustMargins:function(a,d){var b=this.chart,c=this.options,g=this.getAlignment(),\ne=void 0!==b.options.title.margin?b.titleOffset+b.options.title.margin:0;g&&[/(lth|ct|rth)/,/(rtv|rm|rbv)/,/(rbh|cb|lbh)/,/(lbv|lm|ltv)/].forEach(function(h,l){h.test(g)&&!k(a[l])&&(b[t[l]]=Math.max(b[t[l]],b.legend[(l+1)%2?\"legendHeight\":\"legendWidth\"]+[1,-1,-1,1][l]*c[l%2?\"x\":\"y\"]+v(c.margin,12)+d[l]+(0===l&&(0===b.titleOffset?0:e))))})},proximatePositions:function(){var b=this.chart,d=[],e=\"left\"===this.options.align;this.allItems.forEach(function(c){var g,h;h=e;var l;c.yAxis&&c.points&&(c.xAxis.options.reversed&&\n(h=!h),g=a.find(h?c.points:c.points.slice(0).reverse(),function(b){return a.isNumber(b.plotY)}),h=c.legendGroup.getBBox().height,l=c.yAxis.top-b.plotTop,c.visible?(g=g?g.plotY:c.yAxis.height,g+=l-.3*h):g=l+c.yAxis.height,d.push({target:g,size:h,item:c}))},this);a.distribute(d,b.plotHeight);d.forEach(function(a){a.item._legendItemPos[1]=b.plotTop-b.spacing[0]+a.pos})},render:function(){var b=this.chart,d=b.renderer,l=this.group,c,m,k,p=this.box,q=this.options,A=this.padding;this.itemX=A;this.itemY=\nthis.initialItemY;this.lastItemY=this.offsetWidth=0;this.widthOption=a.relativeLength(q.width,b.spacingBox.width-A);c=b.spacingBox.width-2*A-q.x;-1<[\"rm\",\"lm\"].indexOf(this.getAlignment().substring(0,2))&&(c/=2);this.maxLegendWidth=this.widthOption||c;l||(this.group=l=d.g(\"legend\").attr({zIndex:7}).add(),this.contentGroup=d.g().attr({zIndex:1}).add(l),this.scrollGroup=d.g().add(this.contentGroup));this.renderTitle();c=this.getAllItems();h(c,function(a,b){return(a.options&&a.options.legendIndex||0)-\n(b.options&&b.options.legendIndex||0)});q.reversed&&c.reverse();this.allItems=c;this.display=m=!!c.length;this.itemHeight=this.totalItemWidth=this.maxItemWidth=this.lastLineHeight=0;c.forEach(this.renderItem,this);c.forEach(this.layoutItem,this);c=(this.widthOption||this.offsetWidth)+A;k=this.lastItemY+this.lastLineHeight+this.titleHeight;k=this.handleOverflow(k);k+=A;p||(this.box=p=d.rect().addClass(\"highcharts-legend-box\").attr({r:q.borderRadius}).add(l),p.isNew=!0);b.styledMode||p.attr({stroke:q.borderColor,\n\"stroke-width\":q.borderWidth||0,fill:q.backgroundColor||\"none\"}).shadow(q.shadow);0h&&!1!==x.enabled?(this.clipHeight=p=Math.max(h-20-this.titleHeight-m,0),this.currentPage=v(this.currentPage,1),this.fullHeight=a,q.forEach(function(a,b){var c=a._legendItemPos[1],d=Math.round(a.legendItem.getBBox().height),\ne=f.length;if(!e||c-f[e-1]>p&&(r||c)!==f[e-1])f.push(r||c),e++;a.pageIx=e-1;r&&(q[b-1].pageIx=e-1);b===q.length-1&&c+d-f[e-1]>p&&c!==r&&(f.push(c),a.pageIx=e);c!==r&&(r=c)}),n||(n=b.clipRect=c.clipRect(0,m,9999,0),b.contentGroup.clip(n)),t(p),H||(this.nav=H=c.g().attr({zIndex:1}).add(this.group),this.up=c.symbol(\"triangle\",0,0,E,E).add(H),L(\"upTracker\").on(\"click\",function(){b.scroll(-1,B)}),this.pager=c.text(\"\",15,10).addClass(\"highcharts-legend-navigation\"),d.styledMode||this.pager.css(x.style),\nthis.pager.add(H),this.down=c.symbol(\"triangle-down\",0,0,E,E).add(H),L(\"downTracker\").on(\"click\",function(){b.scroll(1,B)})),b.scroll(0),a=h):H&&(t(),this.nav=H.destroy(),this.scrollGroup.attr({translateY:1}),this.clipHeight=0);return a},scroll:function(a,d){var b=this.pages,c=b.length,e=this.currentPage+a;a=this.clipHeight;var g=this.options.navigation,h=this.pager,m=this.padding;e>c&&(e=c);0c&&(b=typeof d[0],\"string\"===b?e.name=d[0]:\"number\"===b&&(e.x=d[0]),k++);p=g.value;)g=e[++b];this.nonZonedColor||(this.nonZonedColor=this.color);this.color=g&&g.color&&!this.options.color?g.color:this.nonZonedColor;return g},destroy:function(){var a=this.series.chart,e=a.hoverPoints,b;a.pointCount--;e&&(this.setState(),F(e,this),e.length||(a.hoverPoints=null));if(this===a.hoverPoint)this.onMouseOut();if(this.graphic||this.dataLabel||this.dataLabels)h(this),this.destroyElements();this.legendItem&&a.legend.destroyItem(this);for(b in this)this[b]=\nnull},destroyElements:function(a){var d=this,b=[],e,h;a=a||{graphic:1,dataLabel:1};a.graphic&&b.push(\"graphic\",\"shadowGroup\");a.dataLabel&&b.push(\"dataLabel\",\"dataLabelUpper\",\"connector\");for(h=b.length;h--;)e=b[h],d[e]&&(d[e]=d[e].destroy());[\"dataLabel\",\"connector\"].forEach(function(b){var c=b+\"s\";a[b]&&d[c]&&(d[c].forEach(function(a){a.element&&a.destroy()}),delete d[c])})},getLabelConfig:function(){return{x:this.category,y:this.y,color:this.color,colorIndex:this.colorIndex,key:this.name||this.category,\nseries:this.series,point:this,percentage:this.percentage,total:this.total||this.stackTotal}},tooltipFormatter:function(a){var d=this.series,b=d.tooltipOptions,g=u(b.valueDecimals,\"\"),h=b.valuePrefix||\"\",c=b.valueSuffix||\"\";d.chart.styledMode&&(a=d.chart.tooltip.styledModeFormat(a));(d.pointArrayMap||[\"y\"]).forEach(function(b){b=\"{point.\"+b;if(h||c)a=a.replace(RegExp(b+\"}\",\"g\"),h+b+\"}\"+c);a=a.replace(RegExp(b+\"}\",\"g\"),b+\":,.\"+g+\"f}\")});return e(a,{point:this,series:this.series},d.chart.time)},firePointEvent:function(a,\ne,b){var d=this,h=this.series.options;(h.point.events[a]||d.options&&d.options.events&&d.options.events[a])&&this.importEvents();\"click\"===a&&h.allowPointSelect&&(b=function(a){d.select&&d.select(null,a.ctrlKey||a.metaKey||a.shiftKey)});k(this,a,e,b)},visible:!0}});K(G,\"parts/Series.js\",[G[\"parts/Globals.js\"]],function(a){var C=a.addEvent,I=a.animObject,F=a.arrayMax,k=a.arrayMin,e=a.correctFloat,q=a.defaultOptions,t=a.defaultPlotOptions,u=a.defined,v=a.erase,p=a.extend,h=a.fireEvent,d=a.isArray,m=\na.isNumber,b=a.isString,g=a.merge,l=a.objectEach,c=a.pick,w=a.removeEvent,z=a.splat,J=a.SVGElement,D=a.syncTimeout,A=a.win;a.Series=a.seriesType(\"line\",null,{lineWidth:2,allowPointSelect:!1,showCheckbox:!1,animation:{duration:1E3},events:{},marker:{lineWidth:0,lineColor:\"#ffffff\",enabledThreshold:2,radius:4,states:{normal:{animation:!0},hover:{animation:{duration:50},enabled:!0,radiusPlus:2,lineWidthPlus:1},select:{fillColor:\"#cccccc\",lineColor:\"#000000\",lineWidth:2}}},point:{events:{}},dataLabels:{align:\"center\",\nformatter:function(){return null===this.y?\"\":a.numberFormat(this.y,-1)},padding:5,style:{fontSize:\"11px\",fontWeight:\"bold\",color:\"contrast\",textOutline:\"1px contrast\"},verticalAlign:\"bottom\",x:0,y:0},cropThreshold:300,opacity:1,pointRange:0,softThreshold:!0,states:{normal:{animation:!0},hover:{animation:{duration:50},lineWidthPlus:1,marker:{},halo:{size:10,opacity:.25}},select:{animation:{duration:0}},inactive:{animation:{duration:50},opacity:.2}},stickyTracking:!0,turboThreshold:1E3,findNearestPointBy:\"x\"},\n{isCartesian:!0,pointClass:a.Point,sorted:!0,requireSorting:!0,directTouch:!1,axisTypes:[\"xAxis\",\"yAxis\"],colorCounter:0,parallelArrays:[\"x\",\"y\"],coll:\"series\",cropShoulder:1,init:function(a,b){h(this,\"init\",{options:b});var d=this,e,g=a.series,f;d.chart=a;d.options=b=d.setOptions(b);d.linkedSeries=[];d.bindAxes();p(d,{name:b.name,state:\"\",visible:!1!==b.visible,selected:!0===b.selected});e=b.events;l(e,function(a,b){d.hcEvents&&d.hcEvents[b]&&-1!==d.hcEvents[b].indexOf(a)||C(d,b,a)});if(e&&e.click||\nb.point&&b.point.events&&b.point.events.click||b.allowPointSelect)a.runTrackerClick=!0;d.getColor();d.getSymbol();d.parallelArrays.forEach(function(a){d[a+\"Data\"]||(d[a+\"Data\"]=[])});d.points||d.setData(b.data,!1);d.isCartesian&&(a.hasCartesianSeries=!0);g.length&&(f=g[g.length-1]);d._i=c(f&&f._i,-1)+1;a.orderSeries(this.insert(g));h(this,\"afterInit\")},insert:function(a){var b=this.options.index,d;if(m(b)){for(d=a.length;d--;)if(b>=c(a[d].options.index,a[d]._i)){a.splice(d+1,0,this);break}-1===d&&\na.unshift(this);d+=1}else a.push(this);return c(d,a.length-1)},bindAxes:function(){var b=this,c=b.options,d=b.chart,e;h(this,\"bindAxes\",null,function(){(b.axisTypes||[]).forEach(function(g){d[g].forEach(function(a){e=a.options;if(c[g]===e.index||void 0!==c[g]&&c[g]===e.id||void 0===c[g]&&0===e.index)b.insert(a.series),b[g]=a,a.isDirty=!0});b[g]||b.optionalAxis===g||a.error(18,!0,d)})})},updateParallelArrays:function(a,b){var c=a.series,d=arguments,e=m(b)?function(d){var f=\"y\"===d&&c.toYData?c.toYData(a):\na[d];c[d+\"Data\"][b]=f}:function(a){Array.prototype[b].apply(c[a+\"Data\"],Array.prototype.slice.call(d,2))};c.parallelArrays.forEach(e)},hasData:function(){return this.visible&&void 0!==this.dataMax&&void 0!==this.dataMin||this.visible&&this.yData&&0=this.cropStart?f-this.cropStart:f);!e&&d[f]&&d[f].touched&&(f=void 0);return f},drawLegendSymbol:a.LegendSymbolMixin.drawLineMarker,updateData:function(b){var c=this.options,d=this.points,e=[],g,f,h,n=this.requireSorting,l=b.length===d.length,k=!0;this.xIncrement=null;b.forEach(function(b,f){var r,k=a.defined(b)&&this.pointClass.prototype.optionsToObject.call({series:this},b)||{};r=k.x;if(k.id||m(r))if(r=this.findPointIndex(k,h),-1===r||void 0===r?e.push(b):\nd[r]&&b!==c.data[r]?(d[r].update(b,!1,null,!1),d[r].touched=!0,n&&(h=r+1)):d[r]&&(d[r].touched=!0),!l||f!==r||this.hasDerivedData)g=!0},this);if(g)for(b=d.length;b--;)(f=d[b])&&!f.touched&&f.remove(!1);else l?b.forEach(function(a,b){d[b].update&&a!==d[b].y&&d[b].update(a,!1,null,!1)}):k=!1;d.forEach(function(a){a&&(a.touched=!1)});if(!k)return!1;e.forEach(function(a){this.addPoint(a,!1,null,null,!1)},this);return!0},setData:function(e,g,h,l){var n=this,f=n.points,r=f&&f.length||0,k,x=n.options,p=\nn.chart,B=null,w=n.xAxis,z=x.turboThreshold,E=this.xData,A=this.yData,q=(k=n.pointArrayMap)&&k.length,t=x.keys,D=0,u=1,v;e=e||[];k=e.length;g=c(g,!0);!1!==l&&k&&r&&!n.cropped&&!n.hasGroupedData&&n.visible&&!n.isSeriesBoosting&&(v=this.updateData(e));if(!v){n.xIncrement=null;n.colorCounter=0;this.parallelArrays.forEach(function(a){n[a+\"Data\"].length=0});if(z&&k>z){for(h=0;null===B&&hl||this.forceCrop)&&(c[e-1]q?(c=[],\nd=[]):this.yData&&(c[0]q)&&(g=this.cropData(this.xData,this.yData,A,q),c=g.xData,d=g.yData,g=g.start,f=!0));for(l=c.length||1;--l;)e=w?m(c[l])-m(c[l-1]):c[l]-c[l-1],0e&&z&&(a.error(15,!1,this.chart),z=!1);this.cropped=f;this.cropStart=g;this.processedXData=c;this.processedYData=d;this.closestPointRange=h},cropData:function(a,b,d,e,g){var f=a.length,h=0,n=f,l;g=c(g,this.cropShoulder);for(l=0;l=d){h=Math.max(0,l-g);break}for(d=l;d\ne){n=d+g;break}return{xData:a.slice(h,n),yData:b.slice(h,n),start:h,end:n}},generatePoints:function(){var a=this.options,b=a.data,c=this.data,d,e=this.processedXData,f=this.processedYData,g=this.pointClass,l=e.length,m=this.cropStart||0,k,w=this.hasGroupedData,a=a.keys,A,q=[],t;c||w||(c=[],c.length=b.length,c=this.data=c);a&&w&&(this.options.keys=!1);for(t=0;t=n&&(c[q-A]||w)<=l,p&&w)if(p=z.length)for(;p--;)\"number\"===typeof z[p]&&(g[f++]=z[p]);else g[f++]=z;this.dataMin=k(g);this.dataMax=F(g);h(this,\"afterGetExtremes\")},translate:function(){this.processedXData||this.processData();this.generatePoints();\nvar a=this.options,b=a.stacking,g=this.xAxis,l=g.categories,k=this.yAxis,f=this.points,r=f.length,p=!!this.modifyValue,w,A=this.pointPlacementToXValue(),z=m(A),q=a.threshold,t=a.startFromThreshold?q:0,D,v,J,C,F=this.zoneAxis||\"y\",I=Number.MAX_VALUE;for(w=0;w=v&&(G.isNull=!0);G.plotX=D=e(Math.min(Math.max(-1E5,g.translate(K,0,0,0,1,A,\"flags\"===this.type)),\n1E5));b&&this.visible&&!G.isNull&&Q&&Q[K]&&(C=this.getStackIndicator(C,K,this.index),W=Q[K],X=W.points[C.key]);d(X)&&(V=X[0],v=X[1],V===t&&C.key===Q[K].base&&(V=c(m(q)&&q,k.min)),k.positiveValuesOnly&&0>=V&&(V=null),G.total=G.stackTotal=W.total,G.percentage=W.total&&G.y/W.total*100,G.stackY=v,W.setOffset(this.pointXOffset||0,this.barW||0));G.yBottom=u(V)?Math.min(Math.max(-1E5,k.translate(V,0,1,0,1)),1E5):null;p&&(v=this.modifyValue(v,G));G.plotY=v=\"number\"===typeof v&&Infinity!==v?Math.min(Math.max(-1E5,\nk.translate(v,0,1,0,1)),1E5):void 0;G.isInside=void 0!==v&&0<=v&&v<=k.len&&0<=D&&D<=g.len;G.clientX=z?e(g.translate(K,0,0,0,1,A)):D;G.negative=G[F]<(a[F+\"Threshold\"]||q||0);G.category=l&&void 0!==l[G.x]?l[G.x]:G.x;G.isNull||(void 0!==J&&(I=Math.min(I,Math.abs(D-J))),J=D);G.zone=this.zones.length&&G.getZone()}this.closestPointRangePx=I;h(this,\"afterTranslate\")},getValidPoints:function(a,b,c){var d=this.chart;return(a||this.points||[]).filter(function(a){return b&&!d.isInsidePlot(a.plotX,a.plotY,d.inverted)?\n!1:c||!a.isNull})},setClip:function(a){var b=this.chart,c=this.options,d=b.renderer,e=b.inverted,f=this.clipBox,g=f||b.clipBox,h=this.sharedClipKey||[\"_sharedClip\",a&&a.duration,a&&a.easing,g.height,c.xAxis,c.yAxis].join(),n=b[h],l=b[h+\"m\"];n||(a&&(g.width=0,e&&(g.x=b.plotSizeX),b[h+\"m\"]=l=d.clipRect(e?b.plotSizeX+99:-99,e?-b.plotLeft:-b.plotTop,99,e?b.chartWidth:b.chartHeight)),b[h]=n=d.clipRect(g),n.count={length:0});a&&!n.count[this.index]&&(n.count[this.index]=!0,n.count.length+=1);!1!==c.clip&&\n(this.group.clip(a||f?n:b.clipRect),this.markerGroup.clip(l),this.sharedClipKey=h);a||(n.count[this.index]&&(delete n.count[this.index],--n.count.length),0===n.count.length&&h&&b[h]&&(f||(b[h]=b[h].destroy()),b[h+\"m\"]&&(b[h+\"m\"]=b[h+\"m\"].destroy())))},animate:function(a){var b=this.chart,c=I(this.options.animation),d;a?this.setClip(c):(d=this.sharedClipKey,(a=b[d])&&a.animate({width:b.plotSizeX,x:0},c),b[d+\"m\"]&&b[d+\"m\"].animate({width:b.plotSizeX+99,x:b.inverted?0:-99},c),this.animate=null)},afterAnimate:function(){this.setClip();\nh(this,\"afterAnimate\");this.finishedAnimating=!0},drawPoints:function(){var a=this.points,b=this.chart,d,e,g,f,h,l=this.options.marker,m,k,p,w=this[this.specialGroup]||this.markerGroup;d=this.xAxis;var A,z=c(l.enabled,!d||d.isRadial?!0:null,this.closestPointRangePx>=l.enabledThreshold*l.radius);if(!1!==l.enabled||this._hasPointMarkers)for(d=0;de&&b.shadow));h&&(h.startX=c.xMap,h.isArea=c.isArea)})},getZonesGraphs:function(a){this.zones.forEach(function(b,c){c=[\"zone-graph-\"+c,\"highcharts-graph highcharts-zone-graph-\"+c+\" \"+(b.className||\"\")];this.chart.styledMode||c.push(b.color||this.color,b.dashStyle||this.options.dashStyle);a.push(c)},this);return a},applyZones:function(){var a=this,b=this.chart,d=b.renderer,e=this.zones,g,f,h=this.clips||[],l,m=this.graph,k=this.area,p=Math.max(b.chartWidth,\nb.chartHeight),w=this[(this.zoneAxis||\"y\")+\"Axis\"],A,z,q=b.inverted,t,D,u,v,J=!1;e.length&&(m||k)&&w&&void 0!==w.min&&(z=w.reversed,t=w.horiz,m&&!this.showLine&&m.hide(),k&&k.hide(),A=w.getExtremes(),e.forEach(function(e,n){g=z?t?b.plotWidth:0:t?0:w.toPixels(A.min)||0;g=Math.min(Math.max(c(f,g),0),p);f=Math.min(Math.max(Math.round(w.toPixels(c(e.value,A.max),!0)||0),0),p);J&&(g=f=w.toPixels(A.max));D=Math.abs(g-f);u=Math.min(g,f);v=Math.max(g,f);w.isXAxis?(l={x:q?v:u,y:0,width:D,height:p},t||(l.x=\nb.plotHeight-l.x)):(l={x:0,y:q?v:u,width:p,height:D},t&&(l.y=b.plotWidth-l.y));q&&d.isVML&&(l=w.isXAxis?{x:0,y:z?u:v,height:l.width,width:b.chartWidth}:{x:l.y-b.plotLeft-b.spacingBox.x,y:0,width:l.height,height:b.chartHeight});h[n]?h[n].animate(l):(h[n]=d.clipRect(l),m&&a[\"zone-graph-\"+n].clip(h[n]),k&&a[\"zone-area-\"+n].clip(h[n]));J=e.value>A.max;a.resetZones&&0===f&&(f=void 0)}),this.clips=h)},invertGroups:function(a){function b(){[\"group\",\"markerGroup\"].forEach(function(b){c[b]&&(d.renderer.isVML&&\nc[b].attr({width:c.yAxis.len,height:c.xAxis.len}),c[b].width=c.yAxis.len,c[b].height=c.xAxis.len,c[b].invert(a))})}var c=this,d=c.chart,e;c.xAxis&&(e=C(d,\"resize\",b),C(c,\"destroy\",e),b(a),c.invertGroups=b)},plotGroup:function(a,b,c,d,e){var f=this[a],g=!f;g&&(this[a]=f=this.chart.renderer.g().attr({zIndex:d||.1}).add(e));f.addClass(\"highcharts-\"+b+\" highcharts-series-\"+this.index+\" highcharts-\"+this.type+\"-series \"+(u(this.colorIndex)?\"highcharts-color-\"+this.colorIndex+\" \":\"\")+(this.options.className||\n\"\")+(f.hasClass(\"highcharts-tracker\")?\" highcharts-tracker\":\"\"),!0);f.attr({visibility:c})[g?\"attr\":\"animate\"](this.getPlotBox());return f},getPlotBox:function(){var a=this.chart,b=this.xAxis,c=this.yAxis;a.inverted&&(b=c,c=this.xAxis);return{translateX:b?b.left:a.plotLeft,translateY:c?c.top:a.plotTop,scaleX:1,scaleY:1}},render:function(){var a=this,b=a.chart,c,d=a.options,e=!!a.animate&&b.renderer.isSVG&&I(d.animation).duration,f=a.visible?\"inherit\":\"hidden\",g=d.zIndex,l=a.hasRendered,m=b.seriesGroup,\nk=b.inverted;h(this,\"render\");c=a.plotGroup(\"group\",\"series\",f,g,m);a.markerGroup=a.plotGroup(\"markerGroup\",\"markers\",f,g,m);e&&a.animate(!0);c.inverted=a.isCartesian||a.invertable?k:!1;a.drawGraph&&(a.drawGraph(),a.applyZones());a.visible&&a.drawPoints();a.drawDataLabels&&a.drawDataLabels();a.redrawPoints&&a.redrawPoints();a.drawTracker&&!1!==a.options.enableMouseTracking&&a.drawTracker();a.invertGroups(k);!1===d.clip||a.sharedClipKey||l||c.clip(b.clipRect);e&&a.animate();l||(a.animationTimeout=\nD(function(){a.afterAnimate()},e));a.isDirty=!1;a.hasRendered=!0;h(a,\"afterRender\")},redraw:function(){var a=this.chart,b=this.isDirty||this.isDirtyData,d=this.group,e=this.xAxis,g=this.yAxis;d&&(a.inverted&&d.attr({width:a.plotWidth,height:a.plotHeight}),d.animate({translateX:c(e&&e.left,a.plotLeft),translateY:c(g&&g.top,a.plotTop)}));this.translate();this.render();b&&delete this.kdTree},kdAxisArray:[\"clientX\",\"plotY\"],searchPoint:function(a,b){var c=this.xAxis,d=this.yAxis,e=this.chart.inverted;\nreturn this.searchKDTree({clientX:e?c.len-a.chartY+c.pos:a.chartX-c.pos,plotY:e?d.len-a.chartX+d.pos:a.chartY-d.pos},b,a)},buildKDTree:function(a){function b(a,d,e){var f,g;if(g=a&&a.length)return f=c.kdAxisArray[d%e],a.sort(function(a,b){return a[f]-b[f]}),g=Math.floor(g/2),{point:a[g],left:b(a.slice(0,g),d+1,e),right:b(a.slice(g+1),d+1,e)}}this.buildingKdTree=!0;var c=this,d=-1m?\"left\":\"right\";r=0>m?\"right\":\"left\";b[k]&&(k=d(a,b[k],c+1,l),p=k[h]x;)q--;this.updateParallelArrays(n,\"splice\",q,0,0);this.updateParallelArrays(n,q);k&&n.name&&(k[x]=n.name);m.splice(q,0,a);w&&(this.data.splice(q,0,null),this.processData());\"point\"===g.legendType&&this.generatePoints();c&&(f[0]&&f[0].remove?f[0].remove(!1):(f.shift(),this.updateParallelArrays(n,\"shift\"),m.shift()));!1!==e&&p(this,\"addPoint\",{point:n});this.isDirtyData=this.isDirty=!0;b&&h.redraw(d)},removePoint:function(a,b,c){var d=this,e=d.data,g=e[a],f=d.points,h=d.chart,\nk=function(){f&&f.length===e.length&&f.splice(a,1);e.splice(a,1);d.options.data.splice(a,1);d.updateParallelArrays(g||{series:d},\"splice\",a,1);g&&g.destroy();d.isDirty=!0;d.isDirtyData=!0;b&&h.redraw()};J(c,h);b=l(b,!0);g?g.firePointEvent(\"remove\",null,k):k()},remove:function(a,b,c,d){function e(){g.destroy(d);g.remove=null;f.isDirtyLegend=f.isDirtyBox=!0;f.linkSeries();l(a,!0)&&f.redraw(b)}var g=this,f=g.chart;!1!==c?p(g,\"remove\",null,e):e()},update:function(c,d){c=a.cleanRecursively(c,this.userOptions);\np(this,\"update\",{options:c});var e=this,g=e.chart,h=e.userOptions,k,f=e.initialType||e.type,m=c.type||h.type||g.options.chart.type,n=!(this.hasDerivedData||c.dataGrouping||m&&m!==this.type||void 0!==c.pointStart||c.pointInterval||c.pointIntervalUnit||c.keys),w=z[f].prototype,q,t=[\"group\",\"markerGroup\",\"dataLabelsGroup\"],A=[\"navigatorSeries\",\"baseSeries\"],D=e.finishedAnimating&&{animation:!1},u={};n&&(A.push(\"data\",\"isDirtyData\",\"points\",\"processedXData\",\"processedYData\",\"xIncrement\"),!1!==c.visible&&\nA.push(\"area\",\"graph\"),e.parallelArrays.forEach(function(a){A.push(a+\"Data\")}),c.data&&this.setData(c.data,!1));c=b(h,D,{index:void 0===h.index?e.index:h.index,pointStart:l(h.pointStart,e.xData[0])},!n&&{data:e.options.data},c);A=t.concat(A);A.forEach(function(a){A[a]=e[a];delete e[a]});e.remove(!1,null,!1,!0);for(q in w)e[q]=void 0;z[m||f]?v(e,z[m||f].prototype):a.error(17,!0,g);A.forEach(function(a){e[a]=A[a]});e.init(g,c);n&&this.points&&(k=e.options,!1===k.visible?(u.graphic=1,u.dataLabel=1):\n(k.marker&&!1===k.marker.enabled&&(u.graphic=1),k.dataLabels&&!1===k.dataLabels.enabled&&(u.dataLabel=1)),this.points.forEach(function(a){a&&a.series&&(a.resolveColor(),Object.keys(u).length&&a.destroyElements(u),!1===k.showInLegend&&a.legendItem&&g.legend.destroyItem(a))},this));c.zIndex!==h.zIndex&&t.forEach(function(a){e[a]&&e[a].attr({zIndex:c.zIndex})});e.initialType=f;g.linkSeries();p(this,\"afterUpdate\");l(d,!0)&&g.redraw(n?void 0:!1)},setName:function(a){this.name=this.options.name=this.userOptions.name=\na;this.chart.isDirtyLegend=!0}});v(F.prototype,{update:function(a,c){var d=this.chart,e=a&&a.events||{};a=b(this.userOptions,a);d.options[this.coll].indexOf&&(d.options[this.coll][d.options[this.coll].indexOf(this.userOptions)]=a);g(d.options[this.coll].events,function(a,b){\"undefined\"===typeof e[b]&&(e[b]=void 0)});this.destroy(!0);this.init(d,v(a,{events:e}));d.isDirtyBox=!0;l(c,!0)&&d.redraw()},remove:function(a){for(var b=this.chart,c=this.coll,d=this.series,e=d.length;e--;)d[e]&&d[e].remove(!1);\nu(b.axes,this);u(b[c],this);m(b.options[c])?b.options[c].splice(this.options.index,1):delete b.options[c];b[c].forEach(function(a,b){a.options.index=a.userOptions.index=b});this.destroy();b.isDirtyBox=!0;l(a,!0)&&b.redraw()},setTitle:function(a,b){this.update({title:a},b)},setCategories:function(a,b){this.update({categories:a},b)}})});K(G,\"parts/AreaSeries.js\",[G[\"parts/Globals.js\"]],function(a){var C=a.color,I=a.pick,F=a.Series,k=a.seriesType;k(\"area\",\"line\",{softThreshold:!1,threshold:0},{singleStacks:!1,\ngetStackPoints:function(e){var k=[],t=[],u=this.xAxis,v=this.yAxis,p=v.stacks[this.stackKey],h={},d=this.index,m=v.series,b=m.length,g,l=I(v.options.reversedStacks,!0)?1:-1,c;e=e||this.points;if(this.options.stacking){for(c=0;ca&&v>q?(v=Math.max(a,q),h=2*q-v):vk&&h>q?(h=Math.max(k,q),v=2*q-h):h=Math.abs(d)&&.5a.closestPointRange*a.xAxis.transA,b=a.borderWidth=t(e.borderWidth,b?0:1),g=a.yAxis,\nl=e.threshold,c=a.translatedThreshold=g.getThreshold(l),p=t(e.minPointLength,5),z=a.getColumnMetrics(),q=z.width,D=a.barW=Math.max(q,1+2*b),A=a.pointXOffset=z.offset;d.inverted&&(c-=.5);e.pointPadding&&(D=Math.ceil(D));u.prototype.translate.apply(a);a.points.forEach(function(b){var e=t(b.yBottom,c),h=999+Math.abs(e),m=q,h=Math.min(Math.max(-h,b.plotY),g.len+h),n=b.plotX+A,f=D,r=Math.min(h,e),z,w=Math.max(h,e)-r;p&&Math.abs(w)p?e-p:c-(z?p:0));k(b.options.pointWidth)&&(m=f=Math.ceil(b.options.pointWidth),n-=Math.round((m-q)/2));b.barX=n;b.pointWidth=m;b.tooltipPos=d.inverted?[g.len+g.pos-d.plotLeft-h,a.xAxis.len-n-f/2,w]:[n+f/2,h+g.pos-d.plotTop,w];b.shapeType=a.pointClass.prototype.shapeType||\"rect\";b.shapeArgs=a.crispCol.apply(a,b.isNull?[n,c,f,0]:[n,r,f,w])})},getSymbol:a.noop,drawLegendSymbol:a.LegendSymbolMixin.drawRectangle,drawGraph:function(){this.group[this.dense?\"addClass\":\"removeClass\"](\"highcharts-dense-data\")},\npointAttribs:function(a,d){var e=this.options,b,g=this.pointAttrToOptions||{};b=g.stroke||\"borderColor\";var h=g[\"stroke-width\"]||\"borderWidth\",c=a&&a.color||this.color,k=a&&a[b]||e[b]||this.color||c,p=a&&a[h]||e[h]||this[h]||0,g=a&&a.dashStyle||e.dashStyle,u=t(e.opacity,1),D;a&&this.zones.length&&(D=a.getZone(),c=a.options.color||D&&D.color||this.color,D&&(k=D.borderColor||k,g=D.dashStyle||g,p=D.borderWidth||p));d&&(a=q(e.states[d],a.options.states&&a.options.states[d]||{}),d=a.brightness,c=a.color||\nvoid 0!==d&&I(c).brighten(a.brightness).get()||c,k=a[b]||k,p=a[h]||p,g=a.dashStyle||g,u=t(a.opacity,u));b={fill:c,stroke:k,\"stroke-width\":p,opacity:u};g&&(b.dashstyle=g);return b},drawPoints:function(){var a=this,d=this.chart,k=a.options,b=d.renderer,g=k.animationLimit||250,l;a.points.forEach(function(c){var h=c.graphic,m=h&&d.pointCounth;++h)d=v[h],a=2>h||2===h&&/%$/.test(d),v[h]=k(d,[u,q,p,v[2]][h])+(a?t:0);v[3]>v[2]&&(v[3]=v[2]);return v},getStartAndEndRadians:function(a,\nk){a=I(a)?a:0;k=I(k)&&k>a&&360>k-a?k:a+360;return{start:C*(a+-90),end:C*(k+-90)}}}});K(G,\"parts/PieSeries.js\",[G[\"parts/Globals.js\"]],function(a){var C=a.addEvent,I=a.CenteredSeriesMixin,F=a.defined,k=I.getStartAndEndRadians,e=a.merge,q=a.noop,t=a.pick,u=a.Point,v=a.Series,p=a.seriesType,h=a.setAnimation;p(\"pie\",\"line\",{center:[null,null],clip:!1,colorByPoint:!0,dataLabels:{allowOverlap:!0,connectorPadding:5,distance:30,enabled:!0,formatter:function(){return this.point.isNull?void 0:this.point.name},\nsoftConnector:!0,x:0,connectorShape:\"fixedOffset\",crookDistance:\"70%\"},ignoreHiddenPoint:!0,inactiveOtherPoints:!0,legendType:\"point\",marker:null,size:null,showInLegend:!1,slicedOffset:10,stickyTracking:!1,tooltip:{followPointer:!0},borderColor:\"#ffffff\",borderWidth:1,states:{hover:{brightness:.1}}},{isCartesian:!1,requireSorting:!1,directTouch:!0,noSharedTooltip:!0,trackerGroups:[\"group\",\"dataLabelsGroup\"],axisTypes:[],pointAttribs:a.seriesTypes.column.prototype.pointAttribs,animate:function(a){var d=\nthis,b=d.points,e=d.startAngleRad;a||(b.forEach(function(a){var b=a.graphic,g=a.shapeArgs;b&&(b.attr({r:a.startR||d.center[3]/2,start:e,end:e}),b.animate({r:g.r,start:g.start,end:g.end},d.options.animation))}),d.animate=null)},hasData:function(){return!!this.processedXData.length},updateTotals:function(){var a,e=0,b=this.points,g=b.length,h,c=this.options.ignoreHiddenPoint;for(a=0;a1.5*Math.PI?p-=2*Math.PI:p<-Math.PI/2&&(p+=2*Math.PI);H.slicedTranslation={translateX:Math.round(Math.cos(p)*e),translateY:Math.round(Math.sin(p)*e)};A=Math.cos(p)*a[2]/2;n=Math.sin(p)*a[2]/2;H.tooltipPos=[a[0]+.7*A,a[1]+.7*n];H.half=p<-Math.PI/2||p>Math.PI/2?1:0;H.angle=p;c=Math.min(h,H.labelDistance/5);H.labelPosition={natural:{x:a[0]+A+Math.cos(p)*H.labelDistance,y:a[1]+n+Math.sin(p)*H.labelDistance},\"final\":{},alignment:0>H.labelDistance?\"center\":H.half?\"right\":\"left\",connectorPosition:{breakAt:{x:a[0]+\nA+Math.cos(p)*c,y:a[1]+n+Math.sin(p)*c},touchingSliceAt:{x:a[0]+A,y:a[1]+n}}}}},drawGraph:null,redrawPoints:function(){var a=this,h=a.chart,b=h.renderer,g,k,c,p,z=a.options.shadow;!z||a.shadowGroup||h.styledMode||(a.shadowGroup=b.g(\"shadow\").attr({zIndex:-1}).add(a.group));a.points.forEach(function(d){var l={};k=d.graphic;if(!d.isNull&&k){p=d.shapeArgs;g=d.getTranslate();if(!h.styledMode){var m=d.shadowGroup;z&&!m&&(m=d.shadowGroup=b.g(\"shadow\").add(a.shadowGroup));m&&m.attr(g);c=a.pointAttribs(d,\nd.selected&&\"select\")}d.delayedRendering?(k.setRadialReference(a.center).attr(p).attr(g),h.styledMode||k.attr(c).attr({\"stroke-linejoin\":\"round\"}).shadow(z,m),d.delayRendering=!1):(k.setRadialReference(a.center),h.styledMode||e(!0,l,c),e(!0,l,p,g),k.animate(l));k.attr({visibility:d.visible?\"inherit\":\"hidden\"});k.addClass(d.getClassName())}else k&&(d.graphic=k.destroy())})},drawPoints:function(){var a=this.chart.renderer;this.points.forEach(function(d){d.graphic||(d.graphic=a[d.shapeType](d.shapeArgs).add(d.series.group),\nd.delayedRendering=!0)})},searchPoint:q,sortByAngle:function(a,e){a.sort(function(a,d){return void 0!==a.angle&&(d.angle-a.angle)*e})},drawLegendSymbol:a.LegendSymbolMixin.drawRectangle,getCenter:I.getCenter,getSymbol:q},{init:function(){u.prototype.init.apply(this,arguments);var a=this,e;a.name=t(a.name,\"Slice\");e=function(b){a.slice(\"select\"===b.type)};C(a,\"select\",e);C(a,\"unselect\",e);return a},isValid:function(){return a.isNumber(this.y,!0)&&0<=this.y},setVisible:function(a,e){var b=this,d=b.series,\nh=d.chart,c=d.options.ignoreHiddenPoint;e=t(e,c);a!==b.visible&&(b.visible=b.options.visible=a=void 0===a?!b.visible:a,d.options.data[d.data.indexOf(b)]=b.options,[\"graphic\",\"dataLabel\",\"connector\",\"shadowGroup\"].forEach(function(c){if(b[c])b[c][a?\"show\":\"hide\"](!0)}),b.legendItem&&h.legend.colorizeItem(b,a),a||\"hover\"!==b.state||b.setState(\"\"),c&&(d.isDirty=!0),e&&h.redraw())},slice:function(a,e,b){var d=this.series;h(b,d.chart);t(e,!0);this.sliced=this.options.sliced=F(a)?a:!this.sliced;d.options.data[d.data.indexOf(this)]=\nthis.options;this.graphic.animate(this.getTranslate());this.shadowGroup&&this.shadowGroup.animate(this.getTranslate())},getTranslate:function(){return this.sliced?this.slicedTranslation:{translateX:0,translateY:0}},haloPath:function(a){var d=this.shapeArgs;return this.sliced||!this.visible?[]:this.series.chart.renderer.symbols.arc(d.x,d.y,d.r+a,d.r+a,{innerR:this.shapeArgs.r-1,start:d.start,end:d.end})},connectorShapes:{fixedOffset:function(a,e,b){var d=e.breakAt;e=e.touchingSliceAt;return[\"M\",a.x,\na.y].concat(b.softConnector?[\"C\",a.x+(\"left\"===a.alignment?-5:5),a.y,2*d.x-e.x,2*d.y-e.y,d.x,d.y]:[\"L\",d.x,d.y]).concat([\"L\",e.x,e.y])},straight:function(a,e){e=e.touchingSliceAt;return[\"M\",a.x,a.y,\"L\",e.x,e.y]},crookedLine:function(d,e,b){e=e.touchingSliceAt;var g=this.series,h=g.center[0],c=g.chart.plotWidth,k=g.chart.plotLeft,g=d.alignment,m=this.shapeArgs.r;b=a.relativeLength(b.crookDistance,1);b=\"left\"===g?h+m+(c+k-h-m)*(1-b):k+(h-m)*b;h=[\"L\",b,d.y];if(\"left\"===g?b>d.x||be.x)h=\n[];return[\"M\",d.x,d.y].concat(h).concat([\"L\",e.x,e.y])}},getConnectorPath:function(){var a=this.labelPosition,e=this.series.options.dataLabels,b=e.connectorShape,g=this.connectorShapes;g[b]&&(b=g[b]);return b.call(this,{x:a.final.x,y:a.final.y,alignment:a.alignment},a.connectorPosition,e)}})});K(G,\"parts/DataLabels.js\",[G[\"parts/Globals.js\"]],function(a){var C=a.arrayMax,I=a.defined,F=a.extend,k=a.format,e=a.merge,q=a.noop,t=a.pick,u=a.relativeLength,v=a.Series,p=a.seriesTypes,h=a.stableSort,d=a.isArray,\nm=a.splat;a.distribute=function(b,d,e){function c(a,b){return a.target-b.target}var g,k=!0,l=b,m=[],p;p=0;var n=l.reducedLen||d;for(g=b.length;g--;)p+=b[g].size;if(p>n){h(b,function(a,b){return(b.rank||0)-(a.rank||0)});for(p=g=0;p<=n;)p+=b[g].size,g++;m=b.splice(g-1,b.length)}h(b,c);for(b=b.map(function(a){return{size:a.size,targets:[a.target],align:t(a.align,.5)}});k;){for(g=b.length;g--;)k=b[g],p=(Math.min.apply(0,k.targets)+Math.max.apply(0,k.targets))/2,k.pos=Math.min(Math.max(0,p-k.size*k.align),\nd-k.size);g=b.length;for(k=!1;g--;)0b[g].pos&&(b[g-1].size+=b[g].size,b[g-1].targets=b[g-1].targets.concat(b[g].targets),b[g-1].align=.5,b[g-1].pos+b[g-1].size>d&&(b[g-1].pos=d-b[g-1].size),b.splice(g,1),k=!0)}l.push.apply(l,m);g=0;b.some(function(b){var c=0;if(b.targets.some(function(){l[g].pos=b.pos+c;if(Math.abs(l[g].pos-l[g].target)>e)return l.slice(0,g+1).forEach(function(a){delete a.pos}),l.reducedLen=(l.reducedLen||d)-.1*d,l.reducedLen>.1*d&&a.distribute(l,d,e),!0;\nc+=l[g].size;g++}))return!0});h(l,c)};v.prototype.drawDataLabels=function(){function b(a,b){var c=b.filter;return c?(b=c.operator,a=a[c.property],c=c.value,\"\\x3e\"===b&&a>c||\"\\x3c\"===b&&a=c||\"\\x3c\\x3d\"===b&&a<=c||\"\\x3d\\x3d\"===b&&a==c||\"\\x3d\\x3d\\x3d\"===b&&a===c?!0:!1):!0}function g(a,b){var c=[],f;if(d(a)&&!d(b))c=a.map(function(a){return e(a,b)});else if(d(b)&&!d(a))c=b.map(function(b){return e(a,b)});else if(d(a)||d(b))for(f=Math.max(a.length,b.length);f--;)c[f]=e(a[f],b[f]);\nelse c=e(a,b);return c}var h=this,c=h.chart,p=h.options,q=p.dataLabels,u=h.points,D,A=h.hasRendered||0,n,x=a.animObject(p.animation).duration,v=Math.min(x,200),E=t(q.defer,0t(e.distance,d.labelDistance)||p.stacking?d.contrastColor:\"#000000\"),p.cursor&&(m.cursor=p.cursor)),q={r:e.borderRadius||0,rotation:r,padding:e.padding,zIndex:1},c.styledMode||(q.fill=e.backgroundColor,q.stroke=e.borderColor,q[\"stroke-width\"]=\ne.borderWidth),a.objectEach(q,function(a,b){void 0===a&&delete q[b]}));!z||g&&I(l)?g&&I(l)&&(z?q.text=l:(d.dataLabels=d.dataLabels||[],z=d.dataLabels[f]=r?H.text(l,0,-9999).addClass(\"highcharts-data-label\"):H.label(l,0,-9999,e.shape,null,null,e.useHTML,null,\"data-label\"),f||(d.dataLabel=z),z.addClass(\" highcharts-data-label-color-\"+d.colorIndex+\" \"+(e.className||\"\")+(e.useHTML?\" highcharts-tracker\":\"\"))),z.options=e,z.attr(q),c.styledMode||z.css(m).shadow(e.shadow),z.added||z.add(n),e.textPath&&z.setTextPath(d.getDataLabelPath&&\nd.getDataLabelPath(z)||d.graphic,e.textPath),h.alignDataLabel(d,z,e,null,u)):(d.dataLabel=d.dataLabel&&d.dataLabel.destroy(),d.dataLabels&&(1===d.dataLabels.length?delete d.dataLabels:delete d.dataLabels[f]),f||delete d.dataLabel,x&&(d.connector=d.connector.destroy(),d.connectors&&(1===d.connectors.length?delete d.connectors:delete d.connectors[f])))})});a.fireEvent(this,\"afterDrawDataLabels\")};v.prototype.alignDataLabel=function(a,d,e,c,h){var b=this.chart,g=this.isCartesian&&b.inverted,k=t(a.dlBox&&\na.dlBox.centerX,a.plotX,-9999),l=t(a.plotY,-9999),n=d.getBBox(),m,p=e.rotation,q=e.align,u=this.visible&&(a.series.forceDL||b.isInsidePlot(k,Math.round(l),g)||c&&b.isInsidePlot(k,g?c.x+1:c.y+c.height-1,g)),f=\"justify\"===t(e.overflow,\"justify\");if(u&&(m=b.renderer.fontMetrics(b.styledMode?void 0:e.style.fontSize,d).b,c=F({x:g?this.yAxis.len-l:k,y:Math.round(g?this.xAxis.len-k:l),width:0,height:0},c),F(e,{width:n.width,height:n.height}),p?(f=!1,k=b.renderer.rotCorr(m,p),k={x:c.x+e.x+c.width/2+k.x,y:c.y+\ne.y+{top:0,middle:.5,bottom:1}[e.verticalAlign]*c.height},d[h?\"attr\":\"animate\"](k).attr({align:q}),l=(p+720)%360,l=180l,\"left\"===q?k.y-=l?n.height:0:\"center\"===q?(k.x-=n.width/2,k.y-=n.height/2):\"right\"===q&&(k.x-=n.width,k.y-=l?0:n.height),d.placed=!0,d.alignAttr=k):(d.align(e,null,c),k=d.alignAttr),f&&0<=c.height?a.isLabelJustified=this.justifyDataLabel(d,e,k,n,c,h):t(e.crop,!0)&&(u=b.isInsidePlot(k.x,k.y)&&b.isInsidePlot(k.x+n.width,k.y+n.height)),e.shape&&!p))d[h?\"attr\":\"animate\"]({anchorX:g?\nb.plotWidth-a.plotY:a.plotX,anchorY:g?b.plotHeight-a.plotX:a.plotY});u||(d.attr({y:-9999}),d.placed=!1)};v.prototype.justifyDataLabel=function(a,d,e,c,h,k){var b=this.chart,g=d.align,l=d.verticalAlign,n,m,p=a.box?0:a.padding||0;n=e.x+p;0>n&&(\"right\"===g?d.align=\"left\":d.x=-n,m=!0);n=e.x+c.width-p;n>b.plotWidth&&(\"left\"===g?d.align=\"right\":d.x=b.plotWidth-n,m=!0);n=e.y+p;0>n&&(\"bottom\"===l?d.verticalAlign=\"top\":d.y=-n,m=!0);n=e.y+c.height-p;n>b.plotHeight&&(\"top\"===l?d.verticalAlign=\"bottom\":d.y=b.plotHeight-\nn,m=!0);m&&(a.placed=!k,a.align(d,null,h));return m};p.pie&&(p.pie.prototype.dataLabelPositioners={radialDistributionY:function(a){return a.top+a.distributeBox.pos},radialDistributionX:function(a,d,e,c){return a.getX(ed.bottom-2?c:e,d.half,d)},justify:function(a,d,e){return e[0]+(a.half?-1:1)*(d+a.labelDistance)},alignToPlotEdges:function(a,d,e,c){a=a.getBBox().width;return d?a+c:e-a-c},alignToConnectors:function(a,d,e,c){var b=0,g;a.forEach(function(a){g=a.dataLabel.getBBox().width;g>\nb&&(b=g)});return d?b+c:e-b-c}},p.pie.prototype.drawDataLabels=function(){var b=this,d=b.data,h,c=b.chart,k=b.options.dataLabels,m=k.connectorPadding,p,q=c.plotWidth,u=c.plotHeight,n=c.plotLeft,x=Math.round(c.chartWidth/3),B,E=b.center,H=E[2]/2,f=E[1],r,F,G,L,K=[[],[]],O,y,S,Q,R=[0,0,0,0],T=b.dataLabelPositioners,Y;b.visible&&(k.enabled||b._hasPointLabels)&&(d.forEach(function(a){a.dataLabel&&a.visible&&a.dataLabel.shortened&&(a.dataLabel.attr({width:\"auto\"}).css({width:\"auto\",textOverflow:\"clip\"}),\na.dataLabel.shortened=!1)}),v.prototype.drawDataLabels.apply(b),d.forEach(function(a){a.dataLabel&&(a.visible?(K[a.half].push(a),a.dataLabel._pos=null,!I(k.style.width)&&!I(a.options.dataLabels&&a.options.dataLabels.style&&a.options.dataLabels.style.width)&&a.dataLabel.getBBox().width>x&&(a.dataLabel.css({width:.7*x}),a.dataLabel.shortened=!0)):(a.dataLabel=a.dataLabel.destroy(),a.dataLabels&&1===a.dataLabels.length&&delete a.dataLabels))}),K.forEach(function(d,e){var g,l,p=d.length,z=[],x;if(p)for(b.sortByAngle(d,\ne-.5),0q-m&&0===e&&(g=Math.round(O+F-q+m),R[1]=Math.max(g,R[1])),0>y-L/2?R[0]=Math.max(Math.round(-y+L/2),R[0]):y+L/2>u&&(R[2]=Math.max(Math.round(y+L/2-u),R[2])),r.sideOverflow=g)}}),0===C(R)||this.verifyDataLabelOverflow(R))&&(this.placeDataLabels(),this.points.forEach(function(a){Y=e(k,a.options.dataLabels);if(p=t(Y.connectorWidth,1)){var d;B=a.connector;if((r=a.dataLabel)&&r._pos&&a.visible&&0t(this.translatedThreshold,\ng.yAxis.len)),n=t(h.inside,!!this.options.stacking);l&&(c=e(l),0>c.y&&(c.height+=c.y,c.y=0),l=c.y+c.height-g.yAxis.len,0a+c||e+hb+d||g+k=f&&g<=l||m||!a.defined(g))n=!0;e[m?\"zoomX\":\"zoomY\"]&&n&&(d=k.zoom(b.min,b.max),k.displayBtn&&\n(h=!0))});k=c.resetZoomButton;h&&!k?c.showResetZoom():!h&&p(k)&&(c.resetZoomButton=k.destroy());d&&c.redraw(m(c.options.chart.animation,b&&b.animation,100>c.pointCount))},pan:function(a,b){var c=this,d=c.hoverPoints,e;u(this,\"pan\",{originalEvent:a},function(){d&&d.forEach(function(a){a.setState()});(\"xy\"===b?[1,0]:[1]).forEach(function(b){b=c[b?\"xAxis\":\"yAxis\"][0];var d=b.horiz,h=a[d?\"chartX\":\"chartY\"],d=d?\"mouseDownX\":\"mouseDownY\",g=c[d],f=(b.pointRange||0)/2,k=b.reversed&&!c.inverted||!b.reversed&&\nc.inverted?-1:1,l=b.getExtremes(),m=b.toValue(g-h,!0)+f*k,k=b.toValue(g+b.len-h,!0)-f*k,n=k=k(q.minWidth,0)&&this.chartHeight>=\nk(q.minHeight,0)}).call(this)&&e.push(a._id)};C.prototype.currentOptions=function(q){function t(q,p,h,d){var m;a.objectEach(q,function(a,g){if(!d&&-1<[\"series\",\"xAxis\",\"yAxis\"].indexOf(g))for(a=e(a),h[g]=[],m=0;mc}function O(a,b,c){var e={chartX:a.chartX,chartY:a.chartY,\nguideBox:c&&{x:c.attr(\"x\"),y:c.attr(\"y\"),width:c.attr(\"width\"),height:c.attr(\"height\")},points:{}};b.forEach(function(a){var b={};q(a.series.dragDropProps,function(c,e){b[e]=a[e]});b.point=a;e.points[a.id]=b});return e}function P(a){var b=a.series,c=b.options.dragDrop.groupBy;return a.options[c]?b.points.filter(function(b){return b.options[c]===a.options[c]}):[a]}function E(a,b){var c=P(b),e=b.series,f=e.chart,m;v(e.options.dragDrop&&e.options.dragDrop.liveRedraw,!0)||(f.dragGuideBox=m=e.getGuideBox(c),\nf.setGuideBoxState(\"default\",e.options.dragDrop.guideBox).add(e.group));f.dragDropData={origin:O(a,c,m),point:b,groupedPoints:c,isDragging:!0}}function Q(a,b){var c=a.point,e=r(c.series.options.dragDrop,c.options.dragDrop),f={},m=a.updateProp,D={};q(c.series.dragDropProps,function(a,b){if(!m||m===b&&a.resize&&(!a.optionName||!1!==e[a.optionName]))if(m||a.move&&(\"x\"===a.axis&&e.draggableX||\"y\"===a.axis&&e.draggableY))f[b]=a});(m?[c]:a.groupedPoints).forEach(function(c){D[c.id]={point:c,newValues:c.getDropValues(a.origin,\nb,f)}});return D}function F(a,b){var c=a.dragDropData.newPoints;b=!1===b?!1:r({duration:400},a.options.animation);a.isDragDropAnimating=!0;q(c,function(a){a.point.update(a.newValues,!1)});a.redraw(b);setTimeout(function(){delete a.isDragDropAnimating;a.hoverPoint&&!a.dragHandles&&a.hoverPoint.showDragHandles()},b.duration)}function G(a){var b=a.series&&a.series.chart,c=b&&b.dragDropData;!b||!b.dragHandles||c&&(c.isDragging&&c.draggedPastSensitivity||c.isHoveringHandle===a.id)||b.hideDragHandles()}\nfunction H(a){var b=0,c;for(c in a)a.hasOwnProperty(c)&&b++;return b}function I(a){for(var b in a)if(a.hasOwnProperty(b))return a[b]}function R(a,b){if(!b.zoomOrPanKeyPressed(a)){var c=b.dragDropData,e,f;f=0;c&&c.isDragging&&(e=c.point,f=e.series.options.dragDrop,a.preventDefault(),c.draggedPastSensitivity||(c.draggedPastSensitivity=N(a,b,v(e.options.dragDrop&&e.options.dragDrop.dragSensitivity,f&&f.dragSensitivity,2))),c.draggedPastSensitivity&&(c.newPoints=Q(c,a),b=c.newPoints,f=H(b),b=1===f?I(b):\nnull,e.firePointEvent(\"drag\",{origin:c.origin,newPoints:c.newPoints,newPoint:b&&b.newValues,newPointId:b&&b.point.id,numNewPoints:f,chartX:a.chartX,chartY:a.chartY},function(){var b=e.series,c=b.chart,f=c.dragDropData,d=r(b.options.dragDrop,e.options.dragDrop),g=d.draggableX,n=d.draggableY,b=f.origin,h=a.chartX-b.chartX,x=a.chartY-b.chartY,t=h,f=f.updateProp;c.inverted&&(h=-x,x=-t);if(v(d.liveRedraw,!0))F(c,!1),e.showDragHandles();else if(f){var g=h,c=x,t=e.series,n=t.chart,f=n.dragDropData,l,q,d=\nt.dragDropProps[f.updateProp];q=f.newPoints[e.id].newValues;l=\"function\"===typeof d.resizeSide?d.resizeSide(q,e):d.resizeSide;d.beforeResize&&d.beforeResize(n.dragGuideBox,q,e);var n=n.dragGuideBox,t=\"x\"===d.axis&&t.xAxis.reversed||\"y\"===d.axis&&t.yAxis.reversed?k(l):l,g=\"x\"===d.axis?g-(f.origin.prevdX||0):0,c=\"y\"===d.axis?c-(f.origin.prevdY||0):0,p;switch(t){case \"left\":p={x:n.attr(\"x\")+g,width:Math.max(1,n.attr(\"width\")-g)};break;case \"right\":p={width:Math.max(1,n.attr(\"width\")+g)};break;case \"top\":p=\n{y:n.attr(\"y\")+c,height:Math.max(1,n.attr(\"height\")-c)};break;case \"bottom\":p={height:Math.max(1,n.attr(\"height\")+c)}}n.attr(p)}else c.dragGuideBox.translate(g?h:0,n?x:0);b.prevdX=h;b.prevdY=x})))}}function B(a,b){var c=b.dragDropData;if(c&&c.isDragging&&c.draggedPastSensitivity){var e=c.point,f=c.newPoints,m=H(f),d=1===m?I(f):null;b.dragHandles&&b.hideDragHandles();a.preventDefault();b.cancelClick=!0;e.firePointEvent(\"drop\",{origin:c.origin,chartX:a.chartX,chartY:a.chartY,newPoints:f,numNewPoints:m,\nnewPoint:d&&d.newValues,newPointId:d&&d.point.id},function(){F(b)})}delete b.dragDropData;b.dragGuideBox&&(b.dragGuideBox.destroy(),delete b.dragGuideBox)}function S(a){var b=a.container,c=g.doc;A(a)&&(u(b,[\"mousedown\",\"touchstart\"],function(b){b=w(b,a);var c=a.hoverPoint,e=g.merge(c&&c.series.options.dragDrop,c&&c.options.dragDrop),d=e.draggableX||!1,e=e.draggableY||!1;a.cancelClick=!1;!d&&!e||a.zoomOrPanKeyPressed(b)||(a.dragDropData&&a.dragDropData.isDragging?B(b,a):c&&M(c)&&(a.mouseIsDown=!1,\nE(b,c),c.firePointEvent(\"dragStart\",b)))}),u(b,[\"mousemove\",\"touchmove\"],function(b){R(w(b,a),a)}),p(b,\"mouseleave\",function(b){B(w(b,a),a)}),a.unbindDragDropMouseUp=u(c,[\"mouseup\",\"touchend\"],function(b){B(w(b,a),a)}),a.hasAddedDragDropEvents=!0,p(a,\"destroy\",function(){a.unbindDragDropMouseUp&&a.unbindDragDropMouseUp()}))}var p=g.addEvent,q=g.objectEach,v=g.pick,r=g.merge,d=g.seriesTypes,J=function(a){a=a.shapeArgs||a.graphic.getBBox();var b=a.r||0,c=a.height/2;return[\"M\",0,b,\"L\",0,c-5,\"A\",1,1,\n0,0,0,0,c+5,\"A\",1,1,0,0,0,0,c-5,\"M\",0,c+5,\"L\",0,a.height-b]},z=d.line.prototype.dragDropProps={x:{axis:\"x\",move:!0},y:{axis:\"y\",move:!0}};d.flags&&(d.flags.prototype.dragDropProps=z);var h=d.column.prototype.dragDropProps={x:{axis:\"x\",move:!0},y:{axis:\"y\",move:!1,resize:!0,beforeResize:function(a,b,c){var e=c.series.translatedThreshold,f=a.attr(\"y\");b.y>=c.series.options.threshold?(b=a.attr(\"height\"),a.attr({height:Math.max(0,Math.round(b+(e?e-(f+b):0)))})):a.attr({y:Math.round(f+(e?e-f:0))})},resizeSide:function(a,\nb){var c=b.series.chart.dragHandles;a=a.y>=(b.series.options.threshold||0)?\"top\":\"bottom\";b=k(a);c[b]&&(c[b].destroy(),delete c[b]);return a},handlePositioner:function(a){var b=a.shapeArgs||a.graphic.getBBox();return{x:b.x,y:a.y>=(a.series.options.threshold||0)?b.y:b.y+b.height}},handleFormatter:function(a){a=a.shapeArgs;var b=a.r||0,c=a.width/2;return[\"M\",b,0,\"L\",c-5,0,\"A\",1,1,0,0,0,c+5,0,\"A\",1,1,0,0,0,c-5,0,\"M\",c+5,0,\"L\",a.width-b,0]}}};d.bullet&&(d.bullet.prototype.dragDropProps={x:h.x,y:h.y,target:{optionName:\"draggableTarget\",\naxis:\"y\",move:!0,resize:!0,resizeSide:\"top\",handlePositioner:function(a){var b=a.targetGraphic.getBBox();return{x:a.barX,y:b.y+b.height/2}},handleFormatter:h.y.handleFormatter}});d.columnrange&&(d.columnrange.prototype.dragDropProps={x:{axis:\"x\",move:!0},low:{optionName:\"draggableLow\",axis:\"y\",move:!0,resize:!0,resizeSide:\"bottom\",handlePositioner:function(a){a=a.shapeArgs||a.graphic.getBBox();return{x:a.x,y:a.y+a.height}},handleFormatter:h.y.handleFormatter,propValidate:function(a,b){return a<=b.high}},\nhigh:{optionName:\"draggableHigh\",axis:\"y\",move:!0,resize:!0,resizeSide:\"top\",handlePositioner:function(a){a=a.shapeArgs||a.graphic.getBBox();return{x:a.x,y:a.y}},handleFormatter:h.y.handleFormatter,propValidate:function(a,b){return a>=b.low}}});d.boxplot&&(d.boxplot.prototype.dragDropProps={x:h.x,low:{optionName:\"draggableLow\",axis:\"y\",move:!0,resize:!0,resizeSide:\"bottom\",handlePositioner:function(a){return{x:a.shapeArgs.x,y:a.lowPlot}},handleFormatter:h.y.handleFormatter,propValidate:function(a,\nb){return a<=b.q1}},q1:{optionName:\"draggableQ1\",axis:\"y\",move:!0,resize:!0,resizeSide:\"bottom\",handlePositioner:function(a){return{x:a.shapeArgs.x,y:a.q1Plot}},handleFormatter:h.y.handleFormatter,propValidate:function(a,b){return a<=b.median&&a>=b.low}},median:{axis:\"y\",move:!0},q3:{optionName:\"draggableQ3\",axis:\"y\",move:!0,resize:!0,resizeSide:\"top\",handlePositioner:function(a){return{x:a.shapeArgs.x,y:a.q3Plot}},handleFormatter:h.y.handleFormatter,propValidate:function(a,b){return a<=b.high&&a>=\nb.median}},high:{optionName:\"draggableHigh\",axis:\"y\",move:!0,resize:!0,resizeSide:\"top\",handlePositioner:function(a){return{x:a.shapeArgs.x,y:a.highPlot}},handleFormatter:h.y.handleFormatter,propValidate:function(a,b){return a>=b.q3}}});d.ohlc&&(d.ohlc.prototype.dragDropProps={x:h.x,low:{optionName:\"draggableLow\",axis:\"y\",move:!0,resize:!0,resizeSide:\"bottom\",handlePositioner:function(a){return{x:a.shapeArgs.x,y:a.plotLow}},handleFormatter:h.y.handleFormatter,propValidate:function(a,b){return a<=\nb.open&&a<=b.close}},high:{optionName:\"draggableHigh\",axis:\"y\",move:!0,resize:!0,resizeSide:\"top\",handlePositioner:function(a){return{x:a.shapeArgs.x,y:a.plotHigh}},handleFormatter:h.y.handleFormatter,propValidate:function(a,b){return a>=b.open&&a>=b.close}},open:{optionName:\"draggableOpen\",axis:\"y\",move:!0,resize:!0,resizeSide:function(a){return a.open>=a.close?\"top\":\"bottom\"},handlePositioner:function(a){return{x:a.shapeArgs.x,y:a.plotOpen}},handleFormatter:h.y.handleFormatter,propValidate:function(a,\nb){return a<=b.high&&a>=b.low}},close:{optionName:\"draggableClose\",axis:\"y\",move:!0,resize:!0,resizeSide:function(a){return a.open>=a.close?\"bottom\":\"top\"},handlePositioner:function(a){return{x:a.shapeArgs.x,y:a.plotClose}},handleFormatter:h.y.handleFormatter,propValidate:function(a,b){return a<=b.high&&a>=b.low}}});if(d.arearange){var z=d.columnrange.prototype.dragDropProps,K=function(a){a=a.graphic?a.graphic.getBBox().width/2+1:4;return[\"M\",0-a,0,\"a\",a,a,0,1,0,2*a,0,\"a\",a,a,0,1,0,-2*a,0]};d.arearange.prototype.dragDropProps=\n{x:z.x,low:{optionName:\"draggableLow\",axis:\"y\",move:!0,resize:!0,resizeSide:\"bottom\",handlePositioner:function(a){return(a=a.lowerGraphic&&a.lowerGraphic.getBBox())?{x:a.x+a.width/2,y:a.y+a.height/2}:{x:-999,y:-999}},handleFormatter:K,propValidate:z.low.propValidate},high:{optionName:\"draggableHigh\",axis:\"y\",move:!0,resize:!0,resizeSide:\"top\",handlePositioner:function(a){return(a=a.upperGraphic&&a.upperGraphic.getBBox())?{x:a.x+a.width/2,y:a.y+a.height/2}:{x:-999,y:-999}},handleFormatter:K,propValidate:z.high.propValidate}}}d.waterfall&&\n(d.waterfall.prototype.dragDropProps={x:h.x,y:r(h.y,{handleFormatter:function(a){return a.isSum||a.isIntermediateSum?null:h.y.handleFormatter(a)}})});if(d.xrange)var L=function(a,b){var c=a.series,e=c.xAxis,f=c.yAxis,c=c.chart.inverted;b=e.toPixels(a[b],!0);var d=f.toPixels(a.y,!0);c?(b=e.len-b,d=f.len-d-a.shapeArgs.height/2):d-=a.shapeArgs.height/2;return{x:Math.round(b),y:Math.round(d)}},C=d.xrange.prototype.dragDropProps={y:{axis:\"y\",move:!0},x:{optionName:\"draggableX1\",axis:\"x\",move:!0,resize:!0,\nresizeSide:\"left\",handlePositioner:function(a){return L(a,\"x\")},handleFormatter:J,propValidate:function(a,b){return a<=b.x2}},x2:{optionName:\"draggableX2\",axis:\"x\",move:!0,resize:!0,resizeSide:\"right\",handlePositioner:function(a){return L(a,\"x2\")},handleFormatter:J,propValidate:function(a,b){return a>=b.x}}};d.gantt&&(d.gantt.prototype.dragDropProps={y:C.y,start:r(C.x,{optionName:\"draggableStart\",validateIndividualDrag:function(a){return!a.milestone}}),end:r(C.x2,{optionName:\"draggableEnd\",validateIndividualDrag:function(a){return!a.milestone}})});\n\"gauge pie sunburst wordcloud sankey histogram pareto vector windbarb treemap bellcurve sma map mapline\".split(\" \").forEach(function(a){d[a]&&(d[a].prototype.dragDropProps=null)});var T={\"default\":{className:\"highcharts-drag-box-default\",lineWidth:1,lineColor:\"#888\",color:\"rgba(0, 0, 0, 0.1)\",cursor:\"move\",zIndex:900}},U={className:\"highcharts-drag-handle\",color:\"#fff\",lineColor:\"rgba(0, 0, 0, 0.6)\",lineWidth:1,zIndex:901};g.Chart.prototype.setGuideBoxState=function(a,b){var c=this.dragGuideBox;b=\nr(T,b);a=r(b.default,b[a]);return c.attr({className:a.className,stroke:a.lineColor,strokeWidth:a.lineWidth,fill:a.color,cursor:a.cursor,zIndex:a.zIndex}).css({pointerEvents:\"none\"})};g.Point.prototype.getDropValues=function(a,b,c){var e=this,f=e.series,d=r(f.options.dragDrop,e.options.dragDrop),g=f.yAxis,y=f.xAxis,h=b.chartX-a.chartX;b=b.chartY-a.chartY;var k=v(a.x,e.x),n=v(a.y,e.y),p=y.toValue(y.toPixels(k,!0)+(y.horiz?h:b),!0)-k,x=g.toValue(g.toPixels(n,!0)+(g.horiz?h:b),!0)-n,t={},l,w=a.points[e.id],\nu;for(u in c)if(c.hasOwnProperty(u)){if(void 0!==l){l=!1;break}l=!0}q(c,function(a,b){var c=w[b],m;m=c+(\"x\"===a.axis?p:x);var g=a.axis.toUpperCase(),h=f[g.toLowerCase()+\"Axis\"].categories?1:0,h=v(d[\"dragPrecision\"+g],h),y=v(d[\"dragMin\"+g],-Infinity),g=v(d[\"dragMax\"+g],Infinity);h&&(m=Math.round(m/h)*h);m=Math.max(y,Math.min(g,m));l&&a.propValidate&&!a.propValidate(m,e)||void 0===c||(t[b]=m)});return t};g.Series.prototype.getGuideBox=function(a){var b=this.chart,c=Infinity,e=-Infinity,f=Infinity,d=\n-Infinity,g;a.forEach(function(a){(a=a.graphic&&a.graphic.getBBox()||a.shapeArgs)&&(a.width||a.height||a.x||a.y)&&(g=!0,c=Math.min(a.x,c),e=Math.max(a.x+a.width,e),f=Math.min(a.y,f),d=Math.max(a.y+a.height,d))});return g?b.renderer.rect(c,f,e-c,d-f):b.renderer.g()};g.Point.prototype.showDragHandles=function(){var a=this,b=a.series,c=b.chart,e=c.renderer,f=r(b.options.dragDrop,a.options.dragDrop);q(b.dragDropProps,function(d,g){var h=r(U,d.handleOptions,f.dragHandle),k={className:h.className,\"stroke-width\":h.lineWidth,\nfill:h.color,stroke:h.lineColor},l=h.pathFormatter||d.handleFormatter,n=d.handlePositioner,m;m=d.validateIndividualDrag?d.validateIndividualDrag(a):!0;d.resize&&m&&d.resizeSide&&l&&(f[\"draggable\"+d.axis.toUpperCase()]||f[d.optionName])&&!1!==f[d.optionName]&&(c.dragHandles||(c.dragHandles={group:e.g(\"drag-drop-handles\").add(b.markerGroup||b.group)}),c.dragHandles.point=a.id,n=n(a),k.d=m=l(a),l=\"function\"===typeof d.resizeSide?d.resizeSide(a.options,a):d.resizeSide,!m||0>n.x||0>n.y||(k.cursor=h.cursor||\n\"x\"===d.axis!==!!c.inverted?\"ew-resize\":\"ns-resize\",(d=c.dragHandles[l])||(d=c.dragHandles[l]=e.path().add(c.dragHandles.group)),d.translate(n.x,n.y).attr(k),u(d.element,[\"touchstart\",\"mousedown\"],function(b){b=w(b,c);var d=a.series.chart;d.zoomOrPanKeyPressed(b)||(d.mouseIsDown=!1,E(b,a),d.dragDropData.updateProp=b.updateProp=g,a.firePointEvent(\"dragStart\",b),b.stopPropagation(),b.preventDefault())}),p(c.dragHandles.group.element,\"mouseover\",function(){c.dragDropData=c.dragDropData||{};c.dragDropData.isHoveringHandle=\na.id}),u(c.dragHandles.group.element,[\"touchend\",\"mouseout\"],function(){var b=a.series.chart;b.dragDropData&&a.id===b.dragDropData.isHoveringHandle&&delete b.dragDropData.isHoveringHandle;b.hoverPoint||G(a)})))})};g.Chart.prototype.hideDragHandles=function(){this.dragHandles&&(q(this.dragHandles,function(a,b){\"group\"!==b&&a.destroy&&a.destroy()}),this.dragHandles.group&&this.dragHandles.group.destroy&&this.dragHandles.group.destroy(),delete this.dragHandles)};p(g.Point,\"mouseOver\",function(){var a=\nthis;setTimeout(function(){var b=a.series,c=b&&b.chart,d=c&&c.dragDropData;!c||d&&d.isDragging&&d.draggedPastSensitivity||c.isDragDropAnimating||!b.options.dragDrop||c.options&&c.options.chart&&c.options.chart.options3d||(c.dragHandles&&c.hideDragHandles(),a.showDragHandles())},12)});p(g.Point,\"mouseOut\",function(){var a=this;setTimeout(function(){a.series&&G(a)},10)});p(g.Point,\"remove\",function(){var a=this.series.chart,b=a.dragHandles;b&&b.point===this.id&&a.hideDragHandles()});g.Chart.prototype.zoomOrPanKeyPressed=\nfunction(a){var b=this.userOptions.chart||{},c=b.panKey&&b.panKey+\"Key\";return a[b.zoomKey&&b.zoomKey+\"Key\"]||a[c]};p(g.Chart,\"render\",function(){this.hasAddedDragDropEvents||S(this)})});l(k,\"masters/modules/draggable-points.src.js\",[],function(){})});\n","/*!\n * jQuery JavaScript Library v3.6.0\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2021-03-02T17:08Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n\t\t// Support: Chrome <=57, Firefox <=52\n\t\t// In some browsers, typeof returns \"function\" for HTML elements\n\t\t// (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n\t\t// We don't want to classify *any* DOM node as a function.\n\t\t// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n\t\t// Plus for old WebKit, typeof returns \"function\" for HTML collections\n\t\t// (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n\t\treturn typeof obj === \"function\" && typeof obj.nodeType !== \"number\" &&\n\t\t\ttypeof obj.item !== \"function\";\n\t};\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.6.0\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.6\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2021-02-16\n */\n( function( window ) {\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ( {} ).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpushNative = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|\" +\n\t\t\"ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5]\n\t\t// or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" +\n\t\twhitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace +\n\t\t\"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trhtml = /HTML$/i,\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\treturn nonHex ?\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\tnonHex :\n\n\t\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t\t// Support: IE <=11+\n\t\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t\t// surrogate pair\n\t\t\thigh < 0 ?\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" +\n\t\t\t\tch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( ( target[ j++ ] = els[ i++ ] ) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&\n\n\t\t\t\t// Support: IE 8 only\n\t\t\t\t// Exclude object elements\n\t\t\t\t( nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\" ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rcombinators.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\tif ( newContext !== context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split( \"|\" ),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[ i ] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( ( cur = cur.nextSibling ) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn ( name === \"input\" || name === \"button\" ) && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\tvar namespace = elem && elem.namespaceURI,\n\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t// Support: IE <=8\n\t// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n\t// https://bugs.jquery.com/ticket/4833\n\treturn !rhtml.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( preferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t// Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,\n\t// Safari 4 - 5 only, Opera <=11.6 - 12.x only\n\t// IE/Edge & older browsers don't support the :scope pseudo-class.\n\t// Support: Safari 6.0 only\n\t// Safari 6.0 supports :scope but it's an alias of :root there.\n\tsupport.scope = assert( function( el ) {\n\t\tdocElem.appendChild( el ).appendChild( document.createElement( \"div\" ) );\n\t\treturn typeof el.querySelectorAll !== \"undefined\" &&\n\t\t\t!el.querySelectorAll( \":scope fieldset div\" ).length;\n\t} );\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert( function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute( \"className\" );\n\t} );\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert( function( el ) {\n\t\tel.appendChild( document.createComment( \"\" ) );\n\t\treturn !el.getElementsByTagName( \"*\" ).length;\n\t} );\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[ \"TAG\" ] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[ \"CLASS\" ] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {\n\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert( function( el ) {\n\n\t\t\tvar input;\n\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll( \"[msallowcapture^='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"~=\" );\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t\t// Adding a temporary attribute to the document before the selection works\n\t\t\t// around the issue.\n\t\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\t\tinput = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"name\", \"\" );\n\t\t\tel.appendChild( input );\n\t\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\t\trbuggyQSA.push( \":checked\" );\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t\t}\n\n\t\t\t// Support: Firefox <=3.6 - 5 only\n\t\t\t// Old Firefox doesn't throw on a badly-escaped identifier.\n\t\t\tel.querySelectorAll( \"\\\\\\f\" );\n\t\t\trbuggyQSA.push( \"[\\\\r\\\\n\\\\f]\" );\n\t\t} );\n\n\t\tassert( function( el ) {\n\t\t\tel.innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll( \"[name=d]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll( \":enabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: Opera 10 - 11 only\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll( \"*,:x\" );\n\t\t\trbuggyQSA.push( \",.*:\" );\n\t\t} );\n\t}\n\n\tif ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector ) ) ) ) {\n\n\t\tassert( function( el ) {\n\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t} );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( \"|\" ) );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t) );\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( ( b = b.parentNode ) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a == document || a.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b == document || b.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\treturn a == document ? -1 :\n\t\t\t\tb == document ? 1 :\n\t\t\t\t/* eslint-enable eqeqeq */\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[ i ] === bp[ i ] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[ i ], bp[ i ] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\tap[ i ] == preferredDoc ? -1 :\n\t\t\tbp[ i ] == preferredDoc ? 1 :\n\t\t\t/* eslint-enable eqeqeq */\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t// fragment in IE 9\n\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] ||\n\t\t\t\tmatch[ 5 ] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" ) );\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr[ \"CHILD\" ].test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace +\n\t\t\t\t\t\")\" + className + \"(\" + whitespace + \"|$)\" ) ) && classCache(\n\t\t\t\t\t\tclassName, function( elem ) {\n\t\t\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\t/* eslint-disable max-len */\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t\t/* eslint-enable max-len */\n\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\t\"has\": markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\t\"contains\": markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement &&\n\t\t\t\t( !document.hasFocus || document.hasFocus() ) &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn ( nodeName === \"input\" && !!elem.checked ) ||\n\t\t\t\t( nodeName === \"option\" && !!elem.selected );\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[ \"empty\" ]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\t\"last\": createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\t\"eq\": createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\t\"even\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"odd\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"lt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ?\n\t\t\t\targument + length :\n\t\t\t\targument > length ?\n\t\t\t\t\tlength :\n\t\t\t\t\targument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"gt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos[ \"nth\" ] = Expr.pseudos[ \"eq\" ];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rcombinators.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrim, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] ||\n\t\t\t\t\t\t\t( outerCache[ elem.uniqueID ] = {} );\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = uniqueCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts(\n\t\t\t\tselector || \"*\",\n\t\t\t\tcontext.nodeType ? [ context ] : context,\n\t\t\t\t[]\n\t\t\t),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\ttokens\n\t\t\t\t\t\t.slice( 0, i - 1 )\n\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[ \"TAG\" ]( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching elements by id\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache(\n\t\t\tselector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers )\n\t\t);\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find[ \"ID\" ]( token.matches[ 0 ]\n\t\t\t\t.replace( runescape, funescape ), context ) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[ \"needsContext\" ].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert( function( el ) {\n\tel.innerHTML = \"\";\n\treturn el.firstChild.getAttribute( \"href\" ) === \"#\";\n} ) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert( function( el ) {\n\tel.innerHTML = \"\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n} ) ) {\n\taddHandle( \"value\", function( elem, _name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert( function( el ) {\n\treturn el.getAttribute( \"disabled\" ) == null;\n} ) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\t\tnull;\n\t\t}\n\t} );\n}\n\nreturn Sizzle;\n\n} )( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n}\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (#9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces \";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting or other required elements.\n\tthead: [ 1, \"\", \"
    \" ],\n\tcol: [ 2, \"\", \"
    \" ],\n\ttr: [ 2, \"\", \"
    \" ],\n\ttd: [ 3, \"\", \"
    \" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 - 11+\n// focus() and blur() are asynchronous, except when they are no-op.\n// So expect focus to be synchronous when the element is already active,\n// and blur to be synchronous when the element is not already active.\n// (focus and blur are always synchronous in other supported browsers,\n// this just defines when we can count on it).\nfunction expectSync( elem, type ) {\n\treturn ( elem === safeActiveElement() ) === ( type === \"focus\" );\n}\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", returnTrue );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, expectSync ) {\n\n\t// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !expectSync ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar notAsync, result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\t// Saved data should be false in such cases, but might be a leftover capture object\n\t\t\t\t// from an async native handler (gh-4350)\n\t\t\t\tif ( !saved.length ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t// focus() and blur() are asynchronous\n\t\t\t\t\tnotAsync = expectSync( this, type );\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tif ( saved !== result || notAsync ) {\n\t\t\t\t\t\tdataPriv.set( this, type, false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t// Support: Chrome 86+\n\t\t\t\t\t\t// In Chrome, if an element having a focusout handler is blurred by\n\t\t\t\t\t\t// clicking outside of it, it invokes the handler synchronously. If\n\t\t\t\t\t\t// that handler calls `.remove()` on the element, the data is cleared,\n\t\t\t\t\t\t// leaving `result` undefined. We need to guard against this.\n\t\t\t\t\t\treturn result && result.value;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering the\n\t\t\t\t// native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\n\t\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t\t// Extend with the prototype to reset the above stopImmediatePropagation()\n\t\t\t\t\t\tjQuery.extend( saved[ 0 ], jQuery.Event.prototype ),\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, expectSync );\n\n\t\t\t// Return false to allow normal processing in the caller\n\t\t\treturn false;\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\t// Suppress native focus or blur as it's already being fired\n\t\t// in leverageNative.\n\t\t_default: function() {\n\t\t\treturn true;\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\t//\n\t\t// Support: Firefox 70+\n\t\t// Only Firefox includes border widths\n\t\t// in computed dimensions. (gh-4529)\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n\t\t\t\ttr.style.cssText = \"border:1px solid\";\n\n\t\t\t\t// Support: Chrome 86+\n\t\t\t\t// Height set through cssText does not get applied.\n\t\t\t\t// Computed height then comes back as 0.\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\t// Support: Android 8 Chrome 86+\n\t\t\t\t// In our bodyBackground.html iframe,\n\t\t\t\t// display for all div elements is set to \"inline\",\n\t\t\t\t// which causes a problem only in Android 8 Chrome 86.\n\t\t\t\t// Ensuring the div is display: block\n\t\t\t\t// gets around this issue.\n\t\t\t\ttrChild.style.display = \"block\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderTopWidth, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, #12537)\n\t// .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trcustomProp = /^--/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"gridArea\": true,\n\t\t\"gridColumn\": true,\n\t\t\"gridColumnEnd\": true,\n\t\t\"gridColumnStart\": true,\n\t\t\"gridRow\": true,\n\t\t\"gridRowEnd\": true,\n\t\t\"gridRowStart\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = classesToArray( value );\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\n\t\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"